commit 33f49f020d8bd6bc6edbe32e75fa537d00ccb90f Author: Baer Date: Thu Mar 26 20:37:29 2026 -0600 first commit diff --git a/README.md b/README.md new file mode 100644 index 0000000..e69de29 diff --git a/addons/dialogue_manager/DialogueManager.cs b/addons/dialogue_manager/DialogueManager.cs new file mode 100644 index 0000000..1308133 --- /dev/null +++ b/addons/dialogue_manager/DialogueManager.cs @@ -0,0 +1,532 @@ +using Godot; +using Godot.Collections; +using System; +using System.Linq; +using System.Reflection; +using System.Threading.Tasks; + +#nullable enable + +namespace DialogueManagerRuntime +{ + public enum TranslationSource + { + None, + Guess, + CSV, + PO + } + + public partial class DialogueManager : RefCounted + { + public delegate void DialogueStartedEventHandler(Resource dialogueResource); + public delegate void PassedTitleEventHandler(string title); + public delegate void GotDialogueEventHandler(DialogueLine dialogueLine); + public delegate void MutatedEventHandler(Dictionary mutation); + public delegate void DialogueEndedEventHandler(Resource dialogueResource); + + public static DialogueStartedEventHandler? DialogueStarted; + public static PassedTitleEventHandler? PassedTitle; + public static GotDialogueEventHandler? GotDialogue; + public static MutatedEventHandler? Mutated; + public static DialogueEndedEventHandler? DialogueEnded; + + [Signal] public delegate void ResolvedEventHandler(Variant value); + + private static GodotObject? instance; + public static GodotObject Instance + { + get + { + if (instance == null) + { + instance = Engine.GetSingleton("DialogueManager"); + instance.Connect("bridge_dialogue_started", Callable.From((Resource dialogueResource) => DialogueStarted?.Invoke(dialogueResource))); + } + return instance; + } + } + + + public static Godot.Collections.Array GameStates + { + get => (Godot.Collections.Array)Instance.Get("game_states"); + set => Instance.Set("game_states", value); + } + + + public static bool IncludeSingletons + { + get => (bool)Instance.Get("include_singletons"); + set => Instance.Set("include_singletons", value); + } + + + public static bool IncludeClasses + { + get => (bool)Instance.Get("include_classes"); + set => Instance.Set("include_classes", value); + } + + + public static TranslationSource TranslationSource + { + get => (TranslationSource)(int)Instance.Get("translation_source"); + set => Instance.Set("translation_source", (int)value); + } + + + public static Func GetCurrentScene + { + set => Instance.Set("get_current_scene", Callable.From(value)); + } + + + public static void Prepare(GodotObject instance) + { + instance.Connect("passed_title", Callable.From((string title) => PassedTitle?.Invoke(title))); + instance.Connect("got_dialogue", Callable.From((RefCounted line) => GotDialogue?.Invoke(new DialogueLine(line)))); + instance.Connect("mutated", Callable.From((Dictionary mutation) => Mutated?.Invoke(mutation))); + instance.Connect("dialogue_ended", Callable.From((Resource dialogueResource) => DialogueEnded?.Invoke(dialogueResource))); + } + + + public static async Task GetSingleton() + { + if (instance != null) return instance; + + var tree = Engine.GetMainLoop(); + int x = 0; + + // Try and find the singleton for a few seconds + while (!Engine.HasSingleton("DialogueManager") && x < 300) + { + await tree.ToSignal(tree, SceneTree.SignalName.ProcessFrame); + x++; + } + + // If it times out something is wrong + if (x >= 300) + { + throw new Exception("The DialogueManager singleton is missing."); + } + + instance = Engine.GetSingleton("DialogueManager"); + return instance; + } + + public static Resource CreateResourceFromText(string text) + { + return (Resource)Instance.Call("create_resource_from_text", text); + } + + public static async Task GetNextDialogueLine(Resource dialogueResource, string key = "", Array? extraGameStates = null) + { + var instance = (Node)Instance.Call("_bridge_get_new_instance"); + Prepare(instance); + instance.Call("_bridge_get_next_dialogue_line", dialogueResource, key, extraGameStates ?? new Array()); + var result = await instance.ToSignal(instance, "bridge_get_next_dialogue_line_completed"); + instance.QueueFree(); + + if ((RefCounted)result[0] == null) return null; + + return new DialogueLine((RefCounted)result[0]); + } + + + public static CanvasLayer ShowExampleDialogueBalloon(Resource dialogueResource, string key = "", Array? extraGameStates = null) + { + return (CanvasLayer)Instance.Call("show_example_dialogue_balloon", dialogueResource, key, extraGameStates ?? new Array()); + } + + + public static Node ShowDialogueBalloonScene(string balloonScene, Resource dialogueResource, string key = "", Array? extraGameStates = null) + { + return (Node)Instance.Call("show_dialogue_balloon_scene", balloonScene, dialogueResource, key, extraGameStates ?? new Array()); + } + + public static Node ShowDialogueBalloonScene(PackedScene balloonScene, Resource dialogueResource, string key = "", Array? extraGameStates = null) + { + return (Node)Instance.Call("show_dialogue_balloon_scene", balloonScene, dialogueResource, key, extraGameStates ?? new Array()); + } + + public static Node ShowDialogueBalloonScene(Node balloonScene, Resource dialogueResource, string key = "", Array? extraGameStates = null) + { + return (Node)Instance.Call("show_dialogue_balloon_scene", balloonScene, dialogueResource, key, extraGameStates ?? new Array()); + } + + + public static Node ShowDialogueBalloon(Resource dialogueResource, string key = "", Array? extraGameStates = null) + { + return (Node)Instance.Call("show_dialogue_balloon", dialogueResource, key, extraGameStates ?? new Array()); + } + + + public static Array StaticIdToLineIds(Resource dialogueResource, string staticId) + { + return (Array)Instance.Call("static_id_to_line_ids", dialogueResource, staticId); + } + + + public static string StaticIdToLineId(Resource dialogueResource, string staticId) + { + return (string)Instance.Call("static_id_to_line_id", dialogueResource, staticId); + } + + + public static async void Mutate(Dictionary mutation, Array? extraGameStates = null, bool isInlineMutation = false) + { + Instance.Call("_bridge_mutate", mutation, extraGameStates ?? new Array(), isInlineMutation); + await Instance.ToSignal(Instance, "bridge_mutated"); + } + + + public static Array GetMembersForAutoload(Script script) + { + Array members = new Array(); + + string typeName = script.ResourcePath.GetFile().GetBaseName(); + var matchingTypes = Assembly.GetExecutingAssembly().GetTypes().Where(t => t.Name == typeName); + foreach (var matchingType in matchingTypes) + { + var memberInfos = matchingType.GetMembers(BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.DeclaredOnly); + foreach (var memberInfo in memberInfos) + { + string type; + switch (memberInfo.MemberType) + { + case MemberTypes.Field: + FieldInfo fieldInfo = memberInfo as FieldInfo; + + if (fieldInfo.FieldType.ToString().Contains("EventHandler")) + { + type = "signal"; + } + else if (fieldInfo.IsLiteral) + { + type = "constant"; + } + else + { + type = "property"; + } + break; + case MemberTypes.Method: + type = "method"; + break; + + default: + continue; + } + + members.Add(new Dictionary() { + { "name", memberInfo.Name }, + { "type", type } + }); + } + } + + return members; + } + + + public bool ThingHasMethod(GodotObject thing, string method, Array args) + { + var methodInfos = thing.GetType().GetMethods(BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.DeclaredOnly); + foreach (var methodInfo in methodInfos) + { + if (methodInfo.Name == method && args.Count >= methodInfo.GetParameters().Where(p => !p.HasDefaultValue).Count()) + { + return true; + } + } + + return false; + } + + + public async void ResolveThingMethod(GodotObject thing, string method, Array args) + { + MethodInfo? info = null; + var methodInfos = thing.GetType().GetMethods(BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.DeclaredOnly); + foreach (var methodInfo in methodInfos) + { + if (methodInfo.Name == method && args.Count >= methodInfo.GetParameters().Where(p => !p.HasDefaultValue).Count()) + { + info = methodInfo; + } + } + + if (info == null) return; + +#nullable disable + // Convert the method args to something reflection can handle + ParameterInfo[] argTypes = info.GetParameters(); + object[] _args = new object[argTypes.Length]; + for (int i = 0; i < argTypes.Length; i++) + { + // check if args is assignable from derived type + if (i < args.Count && args[i].Obj != null) + { + if (argTypes[i].ParameterType.IsAssignableFrom(args[i].Obj.GetType())) + { + _args[i] = args[i].Obj; + } + // fallback to assigning primitive types + else + { + _args[i] = Convert.ChangeType(args[i].Obj, argTypes[i].ParameterType); + } + } + else if (argTypes[i].DefaultValue != null) + { + _args[i] = argTypes[i].DefaultValue; + } + } + + // Add a single frame wait in case the method returns before signals can listen + await ToSignal(Engine.GetMainLoop(), SceneTree.SignalName.ProcessFrame); + + // invoke method and handle the result based on return type + object result = info.Invoke(thing, _args); + + if (result is Task taskResult) + { + await taskResult; + try + { + Variant value = (Variant)taskResult.GetType().GetProperty("Result").GetValue(taskResult); + EmitSignal(SignalName.Resolved, value); + } + catch (Exception) + { + EmitSignal(SignalName.Resolved); + } + } + else + { + EmitSignal(SignalName.Resolved, (Variant)result); + } + } +#nullable enable + } + + + public partial class DialogueLine : RefCounted + { + private string id = ""; + public string Id + { + get => id; + set => id = value; + } + + private string type = "dialogue"; + public string Type + { + get => type; + set => type = value; + } + + private string next_id = ""; + public string NextId + { + get => next_id; + set => next_id = value; + } + + private string character = ""; + public string Character + { + get => character; + set => character = value; + } + + private string text = ""; + public string Text + { + get => text; + set => text = value; + } + + private string translation_key = ""; + public string TranslationKey + { + get => translation_key; + set => translation_key = value; + } + + private Array responses = new Array(); + public Array Responses + { + get => responses; + } + + private string? time = null; + public string? Time + { + get => time; + } + + private Dictionary pauses = new Dictionary(); + public Dictionary Pauses + { + get => pauses; + } + + private Dictionary speeds = new Dictionary(); + public Dictionary Speeds + { + get => speeds; + } + + private Array inline_mutations = new Array(); + public Array InlineMutations + { + get => inline_mutations; + } + + private Array concurrent_lines = new Array(); + public Array ConcurrentLines + { + get => concurrent_lines; + } + + private Array extra_game_states = new Array(); + public Array ExtraGameStates + { + get => extra_game_states; + } + + private Array tags = new Array(); + public Array Tags + { + get => tags; + } + + public DialogueLine(RefCounted data) + { + id = (string)data.Get("id"); + type = (string)data.Get("type"); + next_id = (string)data.Get("next_id"); + character = (string)data.Get("character"); + text = (string)data.Get("text"); + translation_key = (string)data.Get("translation_key"); + pauses = (Dictionary)data.Get("pauses"); + speeds = (Dictionary)data.Get("speeds"); + inline_mutations = (Array)data.Get("inline_mutations"); + time = (string)data.Get("time"); + tags = (Array)data.Get("tags"); + + foreach (var concurrent_line_data in (Array)data.Get("concurrent_lines")) + { + concurrent_lines.Add(new DialogueLine(concurrent_line_data)); + } + + foreach (var response in (Array)data.Get("responses")) + { + responses.Add(new DialogueResponse(response)); + } + } + + + public string GetTagValue(string tagName) + { + string wrapped = $"{tagName}="; + foreach (var tag in tags) + { + if (tag.StartsWith(wrapped)) + { + return tag.Substring(wrapped.Length); + } + } + return ""; + } + + public override string ToString() + { + switch (type) + { + case "dialogue": + return $""; + case "mutation": + return ""; + default: + return ""; + } + } + } + + + public partial class DialogueResponse : RefCounted + { + private string next_id = ""; + public string NextId + { + get => next_id; + set => next_id = value; + } + + private bool is_allowed = true; + public bool IsAllowed + { + get => is_allowed; + set => is_allowed = value; + } + + private string condition_as_text = ""; + public string ConditionAsText + { + get => condition_as_text; + set => condition_as_text = value; + } + + private string text = ""; + public string Text + { + get => text; + set => text = value; + } + + private string translation_key = ""; + public string TranslationKey + { + get => translation_key; + set => translation_key = value; + } + + private Array tags = new Array(); + public Array Tags + { + get => tags; + } + + public DialogueResponse(RefCounted data) + { + next_id = (string)data.Get("next_id"); + is_allowed = (bool)data.Get("is_allowed"); + text = (string)data.Get("text"); + translation_key = (string)data.Get("translation_key"); + tags = (Array)data.Get("tags"); + } + + public string GetTagValue(string tagName) + { + string wrapped = $"{tagName}="; + foreach (var tag in tags) + { + if (tag.StartsWith(wrapped)) + { + return tag.Substring(wrapped.Length); + } + } + return ""; + } + + public override string ToString() + { + return $" + + + + + + + + + diff --git a/addons/dialogue_manager/assets/icon.svg.import b/addons/dialogue_manager/assets/icon.svg.import new file mode 100644 index 0000000..3b6fd5e --- /dev/null +++ b/addons/dialogue_manager/assets/icon.svg.import @@ -0,0 +1,38 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d3lr2uas6ax8v" +path="res://.godot/imported/icon.svg-17eb5d3e2a3cfbe59852220758c5b7bd.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogue_manager/assets/icon.svg" +dest_files=["res://.godot/imported/icon.svg-17eb5d3e2a3cfbe59852220758c5b7bd.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogue_manager/assets/responses_menu.svg b/addons/dialogue_manager/assets/responses_menu.svg new file mode 100644 index 0000000..4e4089d --- /dev/null +++ b/addons/dialogue_manager/assets/responses_menu.svg @@ -0,0 +1,52 @@ + + + + + + + + + + diff --git a/addons/dialogue_manager/assets/responses_menu.svg.import b/addons/dialogue_manager/assets/responses_menu.svg.import new file mode 100644 index 0000000..83355fc --- /dev/null +++ b/addons/dialogue_manager/assets/responses_menu.svg.import @@ -0,0 +1,38 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://drjfciwitjm83" +path="res://.godot/imported/responses_menu.svg-87cf63ca685d53616205049572f4eb8f.ctex" +metadata={ +"has_editor_variant": true, +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogue_manager/assets/responses_menu.svg" +dest_files=["res://.godot/imported/responses_menu.svg-87cf63ca685d53616205049572f4eb8f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=true +editor/convert_colors_with_editor_theme=true diff --git a/addons/dialogue_manager/assets/update.svg b/addons/dialogue_manager/assets/update.svg new file mode 100644 index 0000000..a5b80ee --- /dev/null +++ b/addons/dialogue_manager/assets/update.svg @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + diff --git a/addons/dialogue_manager/assets/update.svg.import b/addons/dialogue_manager/assets/update.svg.import new file mode 100644 index 0000000..2d8171a --- /dev/null +++ b/addons/dialogue_manager/assets/update.svg.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d3baj6rygkb3f" +path="res://.godot/imported/update.svg-f1628866ed4eb2e13e3b81f75443687e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/dialogue_manager/assets/update.svg" +dest_files=["res://.godot/imported/update.svg-f1628866ed4eb2e13e3b81f75443687e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/addons/dialogue_manager/compiler/compilation.gd b/addons/dialogue_manager/compiler/compilation.gd new file mode 100644 index 0000000..b55b247 --- /dev/null +++ b/addons/dialogue_manager/compiler/compilation.gd @@ -0,0 +1,1111 @@ +## A single compilation instance of some dialogue. +class_name DMCompilation extends RefCounted + + +#region Compilation locals + + +## A list of file paths that were imported by this file. +var imported_paths: PackedStringArray = [] +## A list of state names from "using" clauses. +var using_states: PackedStringArray = [] +## A map of titles in this file. +var titles: Dictionary = {} +## The first encountered title in this file. +var first_title: String = "" +## A list of character names in this file. +var character_names: PackedStringArray = [] +## A list of any compilation errors. +var errors: Array[Dictionary] = [] +## A map of all compiled lines. +var lines: Dictionary = {} +## A flattened and simplified map of compiled lines for storage in a resource. +var data: Dictionary = {} + + +#endregion + +#region Internal variables + + +# A list of all [RegEx] references +var regex: DMCompilerRegEx = DMCompilerRegEx.new() +# For parsing condition/mutation expressions +var expression_parser: DMExpressionParser = DMExpressionParser.new() + +# A map of titles that came from imported files. +var _imported_titles: Dictionary = {} +# Used to keep track of circular imports. +var _imported_line_map: Dictionary = {} +# The number of imported lines. +var _imported_line_count: int = 0 +# A list of already encountered static line IDs. +var _known_translation_keys: Dictionary = {} +# A noop for retrieving the next line without conditions. +var _first: Callable = func(_s): return true + +# Title jumps are adjusted as they are parsed so any goto lines might need to be adjusted after they are first seen. +var _goto_lines: Dictionary = {} + + +#endregion + +#region Main + + +## Compile some text. +func compile(text: String, path: String = ".") -> Error: + titles = {} + character_names = [] + + parse_line_tree(build_line_tree(inject_imported_files(text + "\n=> END", path))) + + # Convert the compiles lines to a Dictionary so they can be stored. + for id in lines: + var line: DMCompiledLine = lines[id] + data[id] = line.to_data() + + if errors.size() > 0: + return ERR_PARSE_ERROR + + return OK + + +## Inject any imported files +func inject_imported_files(text: String, path: String) -> PackedStringArray: + # Work out imports + var known_imports: Dictionary = {} + + # Include the base file path so that we can get around circular dependencies + known_imports[path.hash()] = "." + + var raw_lines: PackedStringArray = text.split("\n") + + for id in range(0, raw_lines.size()): + var line = raw_lines[id] + if is_import_line(line): + var import_data: Dictionary = extract_import_path_and_name(line) + + if not import_data.has("path"): continue + + var import_hash: int = import_data.path.hash() + if import_data.size() > 0: + # Keep track of titles so we can add imported ones later + if str(import_hash) in _imported_titles.keys(): + add_error(id, 0, DMConstants.ERR_FILE_ALREADY_IMPORTED) + if import_data.prefix in _imported_titles.values(): + add_error(id, 0, DMConstants.ERR_DUPLICATE_IMPORT_NAME) + _imported_titles[str(import_hash)] = import_data.prefix + + # Import the file content + if not known_imports.has(import_hash): + var error: Error = import_content(import_data.path, import_data.prefix, _imported_line_map, known_imports) + if error != OK: + add_error(id, 0, error) + + # Make a map so we can refer compiled lines to where they were imported from + if not _imported_line_map.has(import_hash): + _imported_line_map[import_hash] = { + hash = import_hash, + imported_on_line_number = id, + from_line = 0, + to_line = 0 + } + + var imported_content: String = "" + var cummulative_line_number: int = 0 + for item in _imported_line_map.values(): + item["from_line"] = cummulative_line_number + if known_imports.has(item.hash): + cummulative_line_number += known_imports[item.hash].split("\n").size() + item["to_line"] = cummulative_line_number + if known_imports.has(item.hash): + imported_content += known_imports[item.hash] + "\n" + + if imported_content == "": + _imported_line_count = 0 + return text.split("\n") + else: + _imported_line_count = cummulative_line_number + 1 + # Combine imported lines with the original lines + return (imported_content + "\n" + text).split("\n") + + +## Import content from another dialogue file or return an ERR +func import_content(path: String, prefix: String, imported_line_map: Dictionary, known_imports: Dictionary) -> Error: + if FileAccess.file_exists(path): + var file = FileAccess.open(path, FileAccess.READ) + var content: PackedStringArray = file.get_as_text().strip_edges().split("\n") + + for index in range(0, content.size()): + var line = content[index] + if is_import_line(line): + var import = extract_import_path_and_name(line) + if import.size() > 0: + if not known_imports.has(import.path.hash()): + # Add an empty record into the keys just so we don't end up with cyclic dependencies + known_imports[import.path.hash()] = "" + if import_content(import.path, import.prefix, imported_line_map, known_imports) != OK: + return ERR_LINK_FAILED + + if not imported_line_map.has(import.path.hash()): + # Make a map so we can refer compiled lines to where they were imported from + imported_line_map[import.path.hash()] = { + hash = import.path.hash(), + imported_on_line_number = index, + from_line = 0, + to_line = 0 + } + + _imported_titles[import.prefix] = import.path.hash() + + var origin_hash: int = -1 + for hash_value in known_imports.keys(): + if known_imports[hash_value] == ".": + origin_hash = hash_value + + # Replace any titles or jump points with references to the files they point to (event if they point to their own file) + for i in range(0, content.size()): + var line = content[i] + if line.strip_edges().begins_with("~ "): + var indent: String = "\t".repeat(get_indent(line)) + var title = line.strip_edges().substr(2) + if "/" in line: + var bits = title.split("/") + content[i] = "%s~ %s/%s" % [indent, _imported_titles[bits[0]], bits[1]] + else: + content[i] = "%s~ %s/%s" % [indent, str(path.hash()), title] + + elif "=>< " in line: + var jump: String = line.substr(line.find("=>< ") + "=>< ".length()).strip_edges() + if "/" in jump: + var bits: PackedStringArray = jump.split("/") + var title_hash: int = _imported_titles[bits[0]] + if title_hash == origin_hash: + content[i] = "%s=>< %s" % [line.split("=>< ")[0], bits[1]] + else: + content[i] = "%s=>< %s/%s" % [line.split("=>< ")[0], title_hash, bits[1]] + + elif not jump in ["END", "END!"]: + content[i] = "%s=>< %s/%s" % [line.split("=>< ")[0], str(path.hash()), jump] + + elif "=> " in line: + var jump: String = line.substr(line.find("=> ") + "=> ".length()).strip_edges() + if "/" in jump: + var bits: PackedStringArray = jump.split("/") + var title_hash: int = _imported_titles[bits[0]] + if title_hash == origin_hash: + content[i] = "%s=> %s" % [line.split("=> ")[0], bits[1]] + else: + content[i] = "%s=> %s/%s" % [line.split("=> ")[0], title_hash, bits[1]] + + elif not jump in ["END", "END!"]: + content[i] = "%s=> %s/%s" % [line.split("=> ")[0], str(path.hash()), jump] + + imported_paths.append(path) + known_imports[path.hash()] = "\n".join(content) + "\n=> END\n" + return OK + else: + return ERR_FILE_NOT_FOUND + + +## Build a tree of parent/child relationships +func build_line_tree(raw_lines: PackedStringArray) -> DMTreeLine: + var root: DMTreeLine = DMTreeLine.new("") + var parent_chain: Array[DMTreeLine] = [root] + var previous_line: DMTreeLine + var doc_comments: PackedStringArray = [] + + # Get list of known autoloads + var autoload_names: PackedStringArray = get_autoload_names() + + for i in range(0, raw_lines.size()): + var raw_line: String = raw_lines[i] + var tree_line: DMTreeLine = DMTreeLine.new(str(i - _imported_line_count)) + + tree_line.line_number = i + 1 + tree_line.type = get_line_type(raw_line) + tree_line.text = raw_line.strip_edges() + + # Handle any "using" directives. + if tree_line.type == DMConstants.TYPE_USING: + var using_match: RegExMatch = regex.USING_REGEX.search(raw_line) + if "state" in using_match.names: + var using_state: String = using_match.strings[using_match.names.state].strip_edges() + if not using_state in autoload_names: + add_error(tree_line.line_number, 0, DMConstants.ERR_UNKNOWN_USING) + elif not using_state in using_states: + using_states.append(using_state) + continue + # Ignore import lines because they've already been processed. + elif is_import_line(raw_line): + continue + + tree_line.indent = get_indent(raw_line) + + # Attach doc comments + if raw_line.strip_edges().begins_with("##"): + doc_comments.append(raw_line.replace("##", "").strip_edges()) + elif tree_line.type == DMConstants.TYPE_DIALOGUE: + tree_line.notes = "\n".join(doc_comments) + doc_comments.clear() + + # Empty lines are only kept so that we can work out groupings of things (eg. randomised + # lines). Therefore we only need to keep one empty line in a row even if there + # are multiple. The indent of an empty line is assumed to be the same as the non-empty line + # following it. That way, grouping calculations should work. + if tree_line.type in [DMConstants.TYPE_UNKNOWN, DMConstants.TYPE_COMMENT] and raw_lines.size() > i + 1: + var next_line = raw_lines[i + 1] + if get_line_type(next_line) in [DMConstants.TYPE_UNKNOWN, DMConstants.TYPE_COMMENT]: + continue + else: + tree_line.type = DMConstants.TYPE_UNKNOWN + tree_line.indent = get_indent(next_line) + + # Nothing should be more than a single indent past its parent. + if tree_line.indent > parent_chain.size(): + add_error(tree_line.line_number, tree_line.indent, DMConstants.ERR_INVALID_INDENTATION) + + # Check for indentation changes + if tree_line.indent > parent_chain.size() - 1: + parent_chain.append(previous_line) + elif tree_line.indent < parent_chain.size() - 1: + parent_chain.resize(tree_line.indent + 1) + + # Add any titles to the list of known titles + if tree_line.type == DMConstants.TYPE_TITLE: + var title: String = tree_line.text.substr(2) + if title == "": + add_error(i, 2, DMConstants.ERR_EMPTY_TITLE) + elif titles.has(title): + add_error(i, 2, DMConstants.ERR_DUPLICATE_TITLE) + else: + titles[title] = tree_line.id + if "/" in title: + # Replace the hash title with something human readable. + var bits: PackedStringArray = title.split("/") + if _imported_titles.has(bits[0]): + title = _imported_titles[bits[0]] + "/" + bits[1] + titles[title] = tree_line.id + elif first_title == "" and i >= _imported_line_count: + first_title = tree_line.id + + # Append the current line to the current parent (note: the root is the most basic parent). + var parent: DMTreeLine = parent_chain[parent_chain.size() - 1] + tree_line.parent = weakref(parent) + parent.children.append(tree_line) + + previous_line = tree_line + + return root + + +#endregion + +#region Parsing + + +func parse_line_tree(root: DMTreeLine, parent: DMCompiledLine = null) -> Array[DMCompiledLine]: + var compiled_lines: Array[DMCompiledLine] = [] + + for i in range(0, root.children.size()): + var tree_line: DMTreeLine = root.children[i] + var line: DMCompiledLine = DMCompiledLine.new(tree_line.id, tree_line.type) + + match line.type: + DMConstants.TYPE_UNKNOWN: + line.next_id = get_next_matching_sibling_id(root.children, i, parent, _first) + + DMConstants.TYPE_TITLE: + parse_title_line(tree_line, line, root.children, i, parent) + + DMConstants.TYPE_CONDITION: + parse_condition_line(tree_line, line, root.children, i, parent) + + DMConstants.TYPE_WHILE: + parse_while_line(tree_line, line, root.children, i, parent) + + DMConstants.TYPE_MATCH: + parse_match_line(tree_line, line, root.children, i, parent) + + DMConstants.TYPE_WHEN: + parse_when_line(tree_line, line, root.children, i, parent) + + DMConstants.TYPE_MUTATION: + parse_mutation_line(tree_line, line, root.children, i, parent) + + DMConstants.TYPE_GOTO: + # Extract any weighted random calls before parsing dialogue + if tree_line.text.begins_with("%"): + parse_random_line(tree_line, line, root.children, i, parent) + parse_goto_line(tree_line, line, root.children, i, parent) + + DMConstants.TYPE_RESPONSE: + parse_response_line(tree_line, line, root.children, i, parent) + + DMConstants.TYPE_RANDOM: + parse_random_line(tree_line, line, root.children, i, parent) + + DMConstants.TYPE_DIALOGUE: + # Extract any weighted random calls before parsing dialogue + if tree_line.text.begins_with("%"): + parse_random_line(tree_line, line, root.children, i, parent) + parse_dialogue_line(tree_line, line, root.children, i, parent) + + # Main line map is keyed by ID + lines[line.id] = line + + # Returned lines order is preserved so that it can be used for compiling children + compiled_lines.append(line) + + return compiled_lines + + +## Parse a title and apply it to the given line +func parse_title_line(tree_line: DMTreeLine, line: DMCompiledLine, siblings: Array[DMTreeLine], sibling_index: int, parent: DMCompiledLine) -> Error: + var result: Error = OK + + line.text = tree_line.text.substr(tree_line.text.find("~ ") + 2).strip_edges() + + # Titles can't have numbers as the first letter (unless they are external titles which get replaced with hashes) + if tree_line.line_number >= _imported_line_count and regex.BEGINS_WITH_NUMBER_REGEX.search(line.text): + result = add_error(tree_line.line_number, 2, DMConstants.ERR_TITLE_BEGINS_WITH_NUMBER) + + # Only import titles are allowed to have "/" in them + var valid_title = regex.VALID_TITLE_REGEX.search(line.text.replace("/", "")) + if not valid_title: + result = add_error(tree_line.line_number, 2, DMConstants.ERR_TITLE_INVALID_CHARACTERS) + + line.next_id = get_next_matching_sibling_id(siblings, sibling_index, parent, _first) + + ## Update the titles reference to point to the actual first line + titles[line.text] = line.next_id + + ## Update any lines that point to this title + if _goto_lines.has(line.text): + for goto_line in _goto_lines[line.text]: + goto_line.next_id = line.next_id + + return result + + +## Parse a goto and apply it to the given line. +func parse_goto_line(tree_line: DMTreeLine, line: DMCompiledLine, siblings: Array[DMTreeLine], sibling_index: int, parent: DMCompiledLine) -> Error: + # Work out where this line is jumping to. + var goto_data: DMResolvedGotoData = DMResolvedGotoData.new(tree_line.text, titles) + if goto_data.error: + return add_error(tree_line.line_number, tree_line.indent + 2, goto_data.error) + if goto_data.next_id or goto_data.expression: + line.next_id = goto_data.next_id + line.next_id_expression = goto_data.expression + add_reference_to_title(goto_data.title, line) + + if goto_data.is_snippet: + line.is_snippet = true + line.next_id_after = get_next_matching_sibling_id(siblings, sibling_index, parent, _first) + + return OK + + +## Parse a condition line and apply to the given line +func parse_condition_line(tree_line: DMTreeLine, line: DMCompiledLine, siblings: Array[DMTreeLine], sibling_index: int, parent: DMCompiledLine) -> Error: + # Work out the next IDs before parsing the condition line itself so that the last + # child can inherit from the chain. + + # Find the next conditional sibling that is part of this grouping (if there is one). + for next_sibling: DMTreeLine in siblings.slice(sibling_index + 1): + if not next_sibling.type in [DMConstants.TYPE_UNKNOWN, DMConstants.TYPE_CONDITION]: + break + elif next_sibling.type == DMConstants.TYPE_CONDITION: + if next_sibling.text.begins_with("el"): + line.next_sibling_id = next_sibling.id + break + else: + break + + line.next_id_after = get_next_matching_sibling_id(siblings, sibling_index, parent, func(s: DMTreeLine): + # The next line that isn't a conditional or is a new "if" + return s.type != DMConstants.TYPE_CONDITION or s.text.begins_with("if ") + ) + # Any empty IDs should end the conversation. + if line.next_id_after == DMConstants.ID_NULL: + line.next_id_after = parent.next_id_after if parent != null and parent.next_id_after else DMConstants.ID_END + + # Having no nested body is an immediate failure. + if tree_line.children.size() == 0: + return add_error(tree_line.line_number, tree_line.indent, DMConstants.ERR_INVALID_CONDITION_INDENTATION) + + # Try to parse the conditional expression ("else" has no expression). + if "if " in tree_line.text: + var condition: Dictionary = extract_condition(tree_line.text, false, tree_line.indent) + if condition.has("error"): + return add_error(tree_line.line_number, condition.index, condition.error) + else: + line.expression = condition + + # Parse any nested body lines + parse_children(tree_line, line) + + return OK + + +## Parse a while loop and apply it to the given line. +func parse_while_line(tree_line: DMTreeLine, line: DMCompiledLine, siblings: Array[DMTreeLine], sibling_index: int, parent: DMCompiledLine) -> Error: + line.next_id_after = get_next_matching_sibling_id(siblings, sibling_index, parent, _first) + + # Parse the while condition + var condition: Dictionary = extract_condition(tree_line.text, false, tree_line.indent) + if condition.has("error"): + return add_error(tree_line.line_number, condition.index, condition.error) + else: + line.expression = condition + + # Parse the nested body (it should take care of looping back to this line when it finishes) + parse_children(tree_line, line) + + return OK + + +func parse_match_line(tree_line: DMTreeLine, line: DMCompiledLine, siblings: Array[DMTreeLine], sibling_index: int, parent: DMCompiledLine) -> Error: + var result: Error = OK + + # The next line after is the next sibling + line.next_id_after = get_next_matching_sibling_id(siblings, sibling_index, parent, _first) + + # Extract the condition to match to + var condition: Dictionary = extract_condition(tree_line.text, false, tree_line.indent) + if condition.has("error"): + result = add_error(tree_line.line_number, condition.index, condition.error) + else: + line.expression = condition + + # Match statements should have children + if tree_line.children.size() == 0: + result = add_error(tree_line.line_number, tree_line.indent, DMConstants.ERR_INVALID_CONDITION_INDENTATION) + + # Check that all children are when or else. + for child in tree_line.children: + if child.type == DMConstants.TYPE_WHEN: continue + if child.type == DMConstants.TYPE_UNKNOWN: continue + if child.type == DMConstants.TYPE_CONDITION and child.text.begins_with("else"): continue + + result = add_error(child.line_number, child.indent, DMConstants.ERR_EXPECTED_WHEN_OR_ELSE) + + # Each child should be a "when" or "else". We don't need those lines themselves, just their + # condition and the line they point to if the conditions passes. + var children: Array[DMCompiledLine] = parse_children(tree_line, line) + for child: DMCompiledLine in children: + # "when" cases + if child.type == DMConstants.TYPE_WHEN: + line.siblings.append({ + condition = child.expression, + next_id = child.next_id + }) + # "else" case + elif child.type == DMConstants.TYPE_CONDITION: + if line.siblings.any(func(s): return s.has("is_else")): + result = add_error(child.line_number, child.indent, DMConstants.ERR_ONLY_ONE_ELSE_ALLOWED) + else: + line.siblings.append({ + next_id = child.next_id, + is_else = true + }) + # Remove the line from the list of all lines because we don't need it any more. + lines.erase(child.id) + + return result + + +func parse_when_line(tree_line: DMTreeLine, line: DMCompiledLine, siblings: Array[DMTreeLine], sibling_index: int, parent: DMCompiledLine) -> Error: + var result: Error = OK + + # This when line should be found inside a match line + if parent.type != DMConstants.TYPE_MATCH: + result = add_error(tree_line.line_number, tree_line.indent, DMConstants.ERR_WHEN_MUST_BELONG_TO_MATCH) + + # When lines should have children + if tree_line.children.size() == 0: + result = add_error(tree_line.line_number, tree_line.indent, DMConstants.ERR_INVALID_CONDITION_INDENTATION) + + # The next line after a when is the same as its parent match line + line.next_id_after = parent.next_id_after + + # Extract the condition to match to + var condition: Dictionary = extract_condition(tree_line.text, false, tree_line.indent) + if condition.has("error"): + result = add_error(tree_line.line_number, condition.index, condition.error) + else: + line.expression = condition + + parse_children(tree_line, line) + + return result + + +## Parse a mutation line and apply it to the given line +func parse_mutation_line(tree_line: DMTreeLine, line: DMCompiledLine, siblings: Array[DMTreeLine], sibling_index: int, parent: DMCompiledLine) -> Error: + var mutation: Dictionary = extract_mutation(tree_line.text) + if mutation.has("error"): + return add_error(tree_line.line_number, mutation.index, mutation.error) + else: + line.expression = mutation + + line.next_id = get_next_matching_sibling_id(siblings, sibling_index, parent, _first) + + return OK + + +## Parse a response and apply it to the given line. +func parse_response_line(tree_line: DMTreeLine, line: DMCompiledLine, siblings: Array[DMTreeLine], sibling_index: int, parent: DMCompiledLine) -> Error: + var result: Error = OK + + # Remove the "- " + tree_line.text = tree_line.text.substr(2) + + # Extract the static line ID + var static_line_id: String = extract_static_line_id(tree_line.text) + if static_line_id: + tree_line.text = tree_line.text.replace("[ID:%s]" % [static_line_id], "") + line.translation_key = static_line_id + + # Handle conditional responses and remove them from the prompt text. + if " [if " in tree_line.text: + var condition = extract_condition(tree_line.text, true, tree_line.indent) + if condition.has("error"): + result = add_error(tree_line.line_number, condition.index, condition.error) + else: + line.expression = condition + # Extract just the raw condition text + var found: RegExMatch = regex.WRAPPED_CONDITION_REGEX.search(tree_line.text) + line.expression_text = found.strings[found.names.expression] + + tree_line.text = regex.WRAPPED_CONDITION_REGEX.sub(tree_line.text, "").strip_edges() + + # Find the original response in this group of responses. + var original_response: DMTreeLine = tree_line + for i in range(sibling_index - 1, -1, -1): + if siblings[i].type == DMConstants.TYPE_RESPONSE: + original_response = siblings[i] + elif siblings[i].type != DMConstants.TYPE_UNKNOWN: + break + + # If it's the original response then set up an original line. + if original_response == tree_line: + line.next_id_after = get_next_matching_sibling_id(siblings, sibling_index, parent, (func(s: DMTreeLine): + # The next line that isn't a response. + return not s.type in [DMConstants.TYPE_RESPONSE, DMConstants.TYPE_UNKNOWN] + ), true) + line.responses = [line.id] + # If this line has children then the next ID is the first child. + if tree_line.children.size() > 0: + parse_children(tree_line, line) + # Otherwise use the same ID for after the random group. + else: + line.next_id = line.next_id_after + # Otherwise let the original line know about it. + else: + var original_line: DMCompiledLine = lines[original_response.id] + line.next_id_after = original_line.next_id_after + line.siblings = original_line.siblings + original_line.responses.append(line.id) + # If this line has children then the next ID is the first child. + if tree_line.children.size() > 0: + parse_children(tree_line, line) + # Otherwise use the original line's next ID after. + else: + line.next_id = original_line.next_id_after + + parse_character_and_dialogue(tree_line, line, siblings, sibling_index, parent) + + return OK + + +## Parse a randomised line +func parse_random_line(tree_line: DMTreeLine, line: DMCompiledLine, siblings: Array[DMTreeLine], sibling_index: int, parent: DMCompiledLine) -> Error: + # Find the weight + var weight: float = 1 + var found = regex.WEIGHTED_RANDOM_SIBLINGS_REGEX.search(tree_line.text + " ") + var condition: Dictionary = {} + if found: + if found.names.has("weight"): + weight = found.strings[found.names.weight].to_float() + if found.names.has("condition"): + condition = extract_condition(tree_line.text, true, tree_line.indent) + + # Find the original random sibling. It will be the jump off point. + var original_sibling: DMTreeLine = tree_line + for i in range(sibling_index - 1, -1, -1): + if siblings[i] and siblings[i].is_random: + original_sibling = siblings[i] + else: + break + + var weighted_sibling: Dictionary = { weight = weight, id = line.id, condition = condition } + + # If it's the original sibling then set up an original line. + if original_sibling == tree_line: + line.next_id_after = get_next_matching_sibling_id(siblings, sibling_index, parent, (func(s: DMTreeLine): + # The next line that isn't a randomised line. + # NOTE: DMTreeLine.is_random won't be set at this point so we need to check for the "%" prefix. + return not s.text.begins_with("%") + ), true) + line.siblings = [weighted_sibling] + # If this line has children then the next ID is the first child. + if tree_line.children.size() > 0: + parse_children(tree_line, line) + # Otherwise use the same ID for after the random group. + else: + line.next_id = line.next_id_after + + # Otherwise let the original line know about it. + else: + var original_line: DMCompiledLine = lines[original_sibling.id] + line.next_id_after = original_line.next_id_after + line.siblings = original_line.siblings + original_line.siblings.append(weighted_sibling) + # If this line has children then the next ID is the first child. + if tree_line.children.size() > 0: + parse_children(tree_line, line) + # Otherwise use the original line's next ID after. + else: + line.next_id = original_line.next_id_after + + # Remove the randomise syntax from the line. + tree_line.text = regex.WEIGHTED_RANDOM_SIBLINGS_REGEX.sub(tree_line.text, "") + tree_line.is_random = true + + return OK + + +## Parse some dialogue and apply it to the given line. +func parse_dialogue_line(tree_line: DMTreeLine, line: DMCompiledLine, siblings: Array[DMTreeLine], sibling_index: int, parent: DMCompiledLine) -> Error: + var result: Error = OK + + # Remove escape character + if tree_line.text.begins_with("\\using"): tree_line.text = tree_line.text.substr(1) + if tree_line.text.begins_with("\\if"): tree_line.text = tree_line.text.substr(1) + if tree_line.text.begins_with("\\elif"): tree_line.text = tree_line.text.substr(1) + if tree_line.text.begins_with("\\else"): tree_line.text = tree_line.text.substr(1) + if tree_line.text.begins_with("\\while"): tree_line.text = tree_line.text.substr(1) + if tree_line.text.begins_with("\\match"): tree_line.text = tree_line.text.substr(1) + if tree_line.text.begins_with("\\when"): tree_line.text = tree_line.text.substr(1) + if tree_line.text.begins_with("\\do"): tree_line.text = tree_line.text.substr(1) + if tree_line.text.begins_with("\\set"): tree_line.text = tree_line.text.substr(1) + if tree_line.text.begins_with("\\-"): tree_line.text = tree_line.text.substr(1) + if tree_line.text.begins_with("\\~"): tree_line.text = tree_line.text.substr(1) + if tree_line.text.begins_with("\\=>"): tree_line.text = tree_line.text.substr(1) + if tree_line.text.begins_with("\\%"): tree_line.text = tree_line.text.substr(1) + + # Append any further dialogue + for i in range(0, tree_line.children.size()): + var child: DMTreeLine = tree_line.children[i] + if child.type == DMConstants.TYPE_DIALOGUE: + # Nested dialogue lines cannot have further nested dialogue. + if child.children.size() > 0: + add_error(child.children[0].line_number, child.children[0].indent, DMConstants.ERR_INVALID_INDENTATION) + # Mark this as a dialogue child of another dialogue line. + child.is_nested_dialogue = true + var child_line = DMCompiledLine.new("", DMConstants.TYPE_DIALOGUE) + parse_character_and_dialogue(child, child_line, [], 0, parent) + var child_static_line_id: String = extract_static_line_id(child.text) + if child_line.character != "" or child_static_line_id != "": + add_error(child.line_number, child.indent, DMConstants.ERR_UNEXPECTED_SYNTAX_ON_NESTED_DIALOGUE_LINE) + # Check that only the last child (or none) has a jump reference + if i < tree_line.children.size() - 1 and " =>" in child.text: + add_error(child.line_number, child.indent, DMConstants.ERR_NESTED_DIALOGUE_INVALID_JUMP) + if i == 0 and " =>" in tree_line.text: + add_error(tree_line.line_number, tree_line.indent, DMConstants.ERR_NESTED_DIALOGUE_INVALID_JUMP) + + tree_line.text += "\n" + child.text + elif child.type == DMConstants.TYPE_UNKNOWN: + tree_line.text += "\n" + else: + result = add_error(child.line_number, child.indent, DMConstants.ERR_INVALID_INDENTATION) + + # Extract the static line ID + var static_line_id: String = extract_static_line_id(tree_line.text) + if static_line_id: + tree_line.text = tree_line.text.replace(" [ID:", "[ID:").replace("[ID:%s]" % [static_line_id], "") + line.translation_key = static_line_id + + # Check for simultaneous lines + if tree_line.text.begins_with("| "): + # Jumps are only allowed on the origin line. + if " =>" in tree_line.text: + result = add_error(tree_line.line_number, tree_line.indent, DMConstants.ERR_GOTO_NOT_ALLOWED_ON_CONCURRECT_LINES) + # Check for a valid previous line. + tree_line.text = tree_line.text.substr(2) + var previous_sibling: DMTreeLine = siblings[sibling_index - 1] + if previous_sibling.type != DMConstants.TYPE_DIALOGUE: + result = add_error(tree_line.line_number, tree_line.indent, DMConstants.ERR_CONCURRENT_LINE_WITHOUT_ORIGIN) + else: + # Because the previous line's concurrent_lines array is the same as + # any line before that this doesn't need to check any higher up. + var previous_line: DMCompiledLine = lines[previous_sibling.id] + previous_line.concurrent_lines.append(line.id) + line.concurrent_lines = previous_line.concurrent_lines + + parse_character_and_dialogue(tree_line, line, siblings, sibling_index, parent) + + # Check for any inline expression errors + var resolved_line_data: DMResolvedLineData = DMResolvedLineData.new("") + var bbcodes: Array[Dictionary] = resolved_line_data.find_bbcode_positions_in_string(tree_line.text, true, true) + for bbcode: Dictionary in bbcodes: + var tag: String = bbcode.code + var code: String = bbcode.raw_args + if tag.begins_with("do") or tag.begins_with("set") or tag.begins_with("if"): + var expression: Array = expression_parser.tokenise(code, DMConstants.TYPE_MUTATION, bbcode.start + bbcode.code.length()) + if expression.size() == 0: + add_error(tree_line.line_number, tree_line.indent, DMConstants.ERR_INVALID_EXPRESSION) + elif expression[0].type == DMConstants.TYPE_ERROR: + add_error(tree_line.line_number, tree_line.indent + expression[0].i, expression[0].value) + + # If the line isn't part of a weighted random group then make it point to the next + # available sibling. + if line.next_id == DMConstants.ID_NULL and line.siblings.size() == 0: + line.next_id = get_next_matching_sibling_id(siblings, sibling_index, parent, func(s: DMTreeLine): + # Ignore concurrent lines. + return not s.text.begins_with("| ") + ) + + return result + + +## Parse the character name and dialogue and apply it to a given line. +func parse_character_and_dialogue(tree_line: DMTreeLine, line: DMCompiledLine, siblings: Array[DMTreeLine], sibling_index: int, parent: DMCompiledLine) -> Error: + var result: Error = OK + + var text: String = tree_line.text + + # Attach any doc comments. + line.notes = tree_line.notes + + # Extract tags. + var tag_data: DMResolvedTagData = DMResolvedTagData.new(text) + line.tags = tag_data.tags + text = tag_data.text_without_tags + + # Handle inline gotos and remove them from the prompt text. + if " =><" in text: + # Because of when the return point needs to be known at runtime we need to split + # this line into two (otherwise the return point would be dependent on the balloon). + var goto_data: DMResolvedGotoData = DMResolvedGotoData.new(text, titles) + if goto_data.error: + result = add_error(tree_line.line_number, tree_line.indent + 3, goto_data.error) + if goto_data.next_id or goto_data.expression: + text = goto_data.text_without_goto + var goto_line: DMCompiledLine = DMCompiledLine.new(line.id + ".1", DMConstants.TYPE_GOTO) + goto_line.next_id = goto_data.next_id + line.next_id_expression = goto_data.expression + if line.type == DMConstants.TYPE_RESPONSE: + goto_line.next_id_after = get_next_matching_sibling_id(siblings, sibling_index, parent, func(s: DMTreeLine): + # If this is coming from a response then we want the next non-response line. + return s.type != DMConstants.TYPE_RESPONSE + ) + else: + goto_line.next_id_after = get_next_matching_sibling_id(siblings, sibling_index, parent, _first) + goto_line.is_snippet = true + lines[goto_line.id] = goto_line + line.next_id = goto_line.id + add_reference_to_title(goto_data.title, goto_line) + elif " =>" in text: + var goto_data: DMResolvedGotoData = DMResolvedGotoData.new(text, titles) + if goto_data.error: + result = add_error(tree_line.line_number, tree_line.indent + 2, goto_data.error) + if goto_data.next_id or goto_data.expression: + text = goto_data.text_without_goto + line.next_id = goto_data.next_id + line.next_id_expression = goto_data.expression + add_reference_to_title(goto_data.title, line) + + # Handle the dialogue. + text = text.replace("\\:", "!ESCAPED_COLON!") + if ": " in text: + # If a character was given then split it out. + var bits = Array(text.strip_edges().split(": ")) + line.character = bits.pop_front().strip_edges() + if not line.character in character_names: + character_names.append(line["character"]) + # Character names can have expressions in them. + line.character_replacements = expression_parser.extract_replacements(line.character, tree_line.indent) + for replacement in line.character_replacements: + if replacement.has("error"): + result = add_error(tree_line.line_number, replacement.index, replacement.error) + text = ": ".join(bits).replace("!ESCAPED_COLON!", ":") + else: + line.character = "" + text = text.replace("!ESCAPED_COLON!", ":") + + # Extract any expressions in the dialogue. + line.text_replacements = expression_parser.extract_replacements(text, line.character.length() + 2 + tree_line.indent) + for replacement in line.text_replacements: + if replacement.has("error"): + result = add_error(tree_line.line_number, replacement.index, replacement.error) + + # Replace any newlines. + text = text.replace("\\n", "\n").strip_edges() + + # If there was no manual translation key then just use the text itself (unless this is a + # child dialogue below another dialogue line). + if not tree_line.is_nested_dialogue and line.translation_key == "": + # Show an error if missing translations is enabled + if DMSettings.get_setting(DMSettings.MISSING_TRANSLATIONS_ARE_ERRORS, false): + result = add_error(tree_line.line_number, tree_line.indent, DMConstants.ERR_MISSING_ID) + else: + line.translation_key = text + + line.text = text + + # IDs can't be duplicated for text that doesn't match. + if line.translation_key != "": + if _known_translation_keys.has(line.translation_key) and _known_translation_keys.get(line.translation_key) != line.text: + result = add_error(tree_line.line_number, tree_line.indent, DMConstants.ERR_DUPLICATE_ID) + else: + _known_translation_keys[line.translation_key] = line.text + + return result + + +#endregion + +#region Errors + + +## Add a compilation error to the list. Returns the given error code. +func add_error(line_number: int, column_number: int, error: int) -> Error: + # See if the error was in an imported file + for item in _imported_line_map.values(): + if line_number < item.to_line: + errors.append({ + line_number = item.imported_on_line_number, + column_number = 0, + error = DMConstants.ERR_ERRORS_IN_IMPORTED_FILE, + external_error = error, + external_line_number = line_number + }) + return error + + # Otherwise, it's in this file + errors.append({ + line_number = line_number - _imported_line_count, + column_number = column_number, + error = error + }) + + return error + + +#endregion + +#region Helpers + + +## Get the names of any autoloads in the project. +func get_autoload_names() -> PackedStringArray: + var autoloads: PackedStringArray = [] + + var project = ConfigFile.new() + project.load("res://project.godot") + if project.has_section("autoload"): + return Array(project.get_section_keys("autoload")).filter(func(key): return key != "DialogueManager") + + return autoloads + + +## Check if a line is importing another file. +func is_import_line(text: String) -> bool: + return text.begins_with("import ") and " as " in text + + +## Extract the import information from an import line +func extract_import_path_and_name(line: String) -> Dictionary: + var found: RegExMatch = regex.IMPORT_REGEX.search(line) + if found: + return { + path = found.strings[found.names.path], + prefix = found.strings[found.names.prefix] + } + else: + return {} + + +## Get the indent of a raw line +func get_indent(raw_line: String) -> int: + var tabs: RegExMatch = regex.INDENT_REGEX.search(raw_line) + if tabs: + return tabs.get_string().length() + else: + return 0 + + +## Get the type of a raw line +func get_line_type(raw_line: String) -> String: + raw_line = raw_line.strip_edges() + var text: String = regex.WEIGHTED_RANDOM_SIBLINGS_REGEX.sub(raw_line + " ", "").strip_edges() + + if text.begins_with("import "): + return DMConstants.TYPE_IMPORT + + if text.begins_with("using "): + return DMConstants.TYPE_USING + + if text.begins_with("#"): + return DMConstants.TYPE_COMMENT + + if text.begins_with("~ "): + return DMConstants.TYPE_TITLE + + if text.begins_with("if ") or text.begins_with("elif") or text.begins_with("else"): + return DMConstants.TYPE_CONDITION + + if text.begins_with("while "): + return DMConstants.TYPE_WHILE + + if text.begins_with("match "): + return DMConstants.TYPE_MATCH + + if text.begins_with("when "): + return DMConstants.TYPE_WHEN + + if text.begins_with("do ") or text.begins_with("do! ") or text.begins_with("set "): + return DMConstants.TYPE_MUTATION + + if text.begins_with("=> ") or text.begins_with("=>< "): + return DMConstants.TYPE_GOTO + + if text.begins_with("- "): + return DMConstants.TYPE_RESPONSE + + if raw_line.begins_with("%") and text.is_empty(): + return DMConstants.TYPE_RANDOM + + if not text.is_empty(): + return DMConstants.TYPE_DIALOGUE + + return DMConstants.TYPE_UNKNOWN + + +## Get the next sibling that passes a [Callable] matcher. +func get_next_matching_sibling_id(siblings: Array[DMTreeLine], from_index: int, parent: DMCompiledLine, matcher: Callable, with_empty_lines: bool = false) -> String: + for i in range(from_index + 1, siblings.size()): + var next_sibling: DMTreeLine = siblings[i] + + if not with_empty_lines: + # Ignore empty lines + if not next_sibling or next_sibling.type == DMConstants.TYPE_UNKNOWN: + continue + + if matcher.call(next_sibling): + return next_sibling.id + + # If no next ID can be found then check the parent for where to go next. + if parent != null: + return parent.id if parent.type == DMConstants.TYPE_WHILE else parent.next_id_after + + return DMConstants.ID_NULL + + +## Extract a static line ID from some text. +func extract_static_line_id(text: String) -> String: + # Find a static translation key, eg. [ID:something] + var found: RegExMatch = regex.STATIC_LINE_ID_REGEX.search(text) + if found: + return found.strings[found.names.id] + else: + return "" + + +## Extract a condition (or inline condition) from some text. +func extract_condition(text: String, is_wrapped: bool, index: int) -> Dictionary: + var regex: RegEx = regex.WRAPPED_CONDITION_REGEX if is_wrapped else regex.CONDITION_REGEX + var found: RegExMatch = regex.search(text) + + if found == null: + return { + index = 0, + error = DMConstants.ERR_INCOMPLETE_EXPRESSION + } + + var raw_condition: String = found.strings[found.names.expression] + if raw_condition.ends_with(":"): + raw_condition = raw_condition.substr(0, raw_condition.length() - 1) + + var expression: Array = expression_parser.tokenise(raw_condition, DMConstants.TYPE_CONDITION, index + found.get_start("expression")) + + if expression.size() == 0: + return { + index = index + found.get_start("expression"), + error = DMConstants.ERR_INCOMPLETE_EXPRESSION + } + elif expression[0].type == DMConstants.TYPE_ERROR: + return { + index = expression[0].i, + error = expression[0].value + } + else: + return { + expression = expression + } + + +## Extract a mutation from some text. +func extract_mutation(text: String) -> Dictionary: + var found: RegExMatch = regex.MUTATION_REGEX.search(text) + + if not found: + return { + index = 0, + error = DMConstants.ERR_INCOMPLETE_EXPRESSION + } + + if found.names.has("expression"): + var expression: Array = expression_parser.tokenise(found.strings[found.names.expression], DMConstants.TYPE_MUTATION, found.get_start("expression")) + if expression.size() == 0: + return { + index = found.get_start("expression"), + error = DMConstants.ERR_INCOMPLETE_EXPRESSION + } + elif expression[0].type == DMConstants.TYPE_ERROR: + return { + index = expression[0].i, + error = expression[0].value + } + else: + return { + expression = expression, + is_blocking = not "!" in found.strings[found.names.keyword] + } + + else: + return { + index = found.get_start(), + error = DMConstants.ERR_INCOMPLETE_EXPRESSION + } + + +## Keep track of lines referencing titles because their own next_id might not have been resolved yet. +func add_reference_to_title(title: String, line: DMCompiledLine) -> void: + if title in [DMConstants.ID_END, DMConstants.ID_END_CONVERSATION, DMConstants.ID_NULL]: return + + if not _goto_lines.has(title): + _goto_lines[title] = [] + _goto_lines[title].append(line) + + +## Parse a nested block of child lines +func parse_children(tree_line: DMTreeLine, line: DMCompiledLine) -> Array[DMCompiledLine]: + var children = parse_line_tree(tree_line, line) + if children.size() > 0: + line.next_id = children.front().id + # The last child should jump to the next line after its parent condition group + var last_child: DMCompiledLine = children.back() + if last_child.next_id == DMConstants.ID_NULL: + last_child.next_id = line.next_id_after + if last_child.siblings.size() > 0: + for sibling in last_child.siblings: + lines.get(sibling.id).next_id = last_child.next_id + + return children + + +#endregion diff --git a/addons/dialogue_manager/compiler/compilation.gd.uid b/addons/dialogue_manager/compiler/compilation.gd.uid new file mode 100644 index 0000000..24a13ee --- /dev/null +++ b/addons/dialogue_manager/compiler/compilation.gd.uid @@ -0,0 +1 @@ +uid://dsgpnyqg6cprg diff --git a/addons/dialogue_manager/compiler/compiled_line.gd b/addons/dialogue_manager/compiler/compiled_line.gd new file mode 100644 index 0000000..9e34f09 --- /dev/null +++ b/addons/dialogue_manager/compiler/compiled_line.gd @@ -0,0 +1,161 @@ +## A compiled line of dialogue. +class_name DMCompiledLine extends RefCounted + + +## The ID of the line +var id: String +## The translation key (or static line ID). +var translation_key: String = "" +## The type of line. +var type: String = "" +## The character name. +var character: String = "" +## Any interpolation expressions for the character name. +var character_replacements: Array[Dictionary] = [] +## The text of the line. +var text: String = "" +## Any interpolation expressions for the text. +var text_replacements: Array[Dictionary] = [] +## Any response siblings associated with this line. +var responses: PackedStringArray = [] +## Any randomise or case siblings for this line. +var siblings: Array[Dictionary] = [] +## Any lines said simultaneously. +var concurrent_lines: PackedStringArray = [] +## Any tags on this line. +var tags: PackedStringArray = [] +## The condition or mutation expression for this line. +var expression: Dictionary = {} +## The express as the raw text that was given. +var expression_text: String = "" +## The next sequential line to go to after this line. +var next_id: String = "" +## The next line to go to after this line if it is unknown and compile time. +var next_id_expression: Array[Dictionary] = [] +## Whether this jump line should return after the jump target sequence has ended. +var is_snippet: bool = false +## The ID of the next sibling line. +var next_sibling_id: String = "" +## The ID after this line if it belongs to a block (eg. conditions). +var next_id_after: String = "" +## Any doc comments attached to this line. +var notes: String = "" + + +#region Hooks + + +func _init(initial_id: String, initial_type: String) -> void: + id = initial_id + type = initial_type + + +func _to_string() -> String: + var s: Array = [ + "[%s]" % [type], + "%s:" % [character] if character != "" else null, + text if text != "" else null, + expression if expression.size() > 0 else null, + "[%s]" % [",".join(tags)] if tags.size() > 0 else null, + str(siblings) if siblings.size() > 0 else null, + str(responses) if responses.size() > 0 else null, + "=> END" if "end" in next_id else "=> %s" % [next_id], + "(~> %s)" % [next_sibling_id] if next_sibling_id != "" else null, + "(==> %s)" % [next_id_after] if next_id_after != "" else null, + ].filter(func(item): return item != null) + + return " ".join(s) + + +#endregion + +#region Helpers + + +## Express this line as a [Dictionary] that can be stored in a resource. +func to_data() -> Dictionary: + var d: Dictionary = { + id = id, + type = type, + next_id = next_id + } + + if next_id_expression.size() > 0: + d.next_id_expression = next_id_expression + + match type: + DMConstants.TYPE_CONDITION: + d.condition = expression + if not next_sibling_id.is_empty(): + d.next_sibling_id = next_sibling_id + d.next_id_after = next_id_after + + DMConstants.TYPE_WHILE: + d.condition = expression + d.next_id_after = next_id_after + + DMConstants.TYPE_MATCH: + d.condition = expression + d.next_id_after = next_id_after + d.cases = siblings + + DMConstants.TYPE_MUTATION: + d.mutation = expression + + DMConstants.TYPE_GOTO: + d.is_snippet = is_snippet + d.next_id_after = next_id_after + if not siblings.is_empty(): + d.siblings = siblings + + DMConstants.TYPE_RANDOM: + d.siblings = siblings + + DMConstants.TYPE_RESPONSE: + d.text = text + + if not responses.is_empty(): + d.responses = responses + + if translation_key != text: + d.translation_key = translation_key + if not expression.is_empty(): + d.condition = expression + if not character.is_empty(): + d.character = character + if not character_replacements.is_empty(): + d.character_replacements = character_replacements + if not text_replacements.is_empty(): + d.text_replacements = text_replacements + if not tags.is_empty(): + d.tags = tags + if not notes.is_empty(): + d.notes = notes + if not expression_text.is_empty(): + d.condition_as_text = expression_text + + DMConstants.TYPE_DIALOGUE: + d.text = text + + if translation_key != text: + d.translation_key = translation_key + + if not character.is_empty(): + d.character = character + if not character_replacements.is_empty(): + d.character_replacements = character_replacements + if not text_replacements.is_empty(): + d.text_replacements = text_replacements + if not tags.is_empty(): + d.tags = tags + if not notes.is_empty(): + d.notes = notes + if not siblings.is_empty(): + d.siblings = siblings + if not concurrent_lines.is_empty(): + d.concurrent_lines = concurrent_lines + + return d + + +#endregion diff --git a/addons/dialogue_manager/compiler/compiled_line.gd.uid b/addons/dialogue_manager/compiler/compiled_line.gd.uid new file mode 100644 index 0000000..17ec55e --- /dev/null +++ b/addons/dialogue_manager/compiler/compiled_line.gd.uid @@ -0,0 +1 @@ +uid://dg8j5hudp4210 diff --git a/addons/dialogue_manager/compiler/compiler.gd b/addons/dialogue_manager/compiler/compiler.gd new file mode 100644 index 0000000..a370ef6 --- /dev/null +++ b/addons/dialogue_manager/compiler/compiler.gd @@ -0,0 +1,51 @@ +## A compiler of Dialogue Manager dialogue. +class_name DMCompiler extends RefCounted + + +## Compile a dialogue script. +static func compile_string(text: String, path: String) -> DMCompilerResult: + var compilation: DMCompilation = DMCompilation.new() + compilation.compile(text, path) + + var result: DMCompilerResult = DMCompilerResult.new() + result.imported_paths = compilation.imported_paths + result.using_states = compilation.using_states + result.character_names = compilation.character_names + result.titles = compilation.titles + result.first_title = compilation.first_title + result.errors = compilation.errors + result.lines = compilation.data + result.raw_text = text + + return result + + +## Get the line type of a string. The returned string will match one of the [code]TYPE_[/code] constants of [DMConstants]. +static func get_line_type(text: String) -> String: + var compilation: DMCompilation = DMCompilation.new() + return compilation.get_line_type(text) + + +## Get the static line ID (eg. [code][ID:SOMETHING][/code]) of some text. +static func get_static_line_id(text: String) -> String: + var compilation: DMCompilation = DMCompilation.new() + return compilation.extract_static_line_id(text) + + +## Get the translatable part of a line. +static func extract_translatable_string(text: String) -> String: + var compilation: DMCompilation = DMCompilation.new() + + var tree_line = DMTreeLine.new("") + tree_line.text = text + var line: DMCompiledLine = DMCompiledLine.new("", compilation.get_line_type(text)) + compilation.parse_character_and_dialogue(tree_line, line, [tree_line], 0, null) + + return line.text + + +## Get the known titles in a dialogue script. +static func get_titles_in_text(text: String, path: String) -> Dictionary: + var compilation: DMCompilation = DMCompilation.new() + compilation.build_line_tree(compilation.inject_imported_files(text, path)) + return compilation.titles diff --git a/addons/dialogue_manager/compiler/compiler.gd.uid b/addons/dialogue_manager/compiler/compiler.gd.uid new file mode 100644 index 0000000..e041f10 --- /dev/null +++ b/addons/dialogue_manager/compiler/compiler.gd.uid @@ -0,0 +1 @@ +uid://chtfdmr0cqtp4 diff --git a/addons/dialogue_manager/compiler/compiler_regex.gd b/addons/dialogue_manager/compiler/compiler_regex.gd new file mode 100644 index 0000000..ca10413 --- /dev/null +++ b/addons/dialogue_manager/compiler/compiler_regex.gd @@ -0,0 +1,50 @@ +## A collection of [RegEx] for use by the [DMCompiler]. +class_name DMCompilerRegEx extends RefCounted + + +var IMPORT_REGEX: RegEx = RegEx.create_from_string("import \"(?[^\"]+)\" as (?[a-zA-Z_\\p{Emoji_Presentation}\\p{Han}\\p{Katakana}\\p{Hiragana}\\p{Cyrillic}][a-zA-Z_0-9\\p{Emoji_Presentation}\\p{Han}\\p{Katakana}\\p{Hiragana}\\p{Cyrillic}]+)") +var USING_REGEX: RegEx = RegEx.create_from_string("^using (?.*)$") +var INDENT_REGEX: RegEx = RegEx.create_from_string("^\\t+") +var VALID_TITLE_REGEX: RegEx = RegEx.create_from_string("^[a-zA-Z_0-9\\p{Emoji_Presentation}\\p{Han}\\p{Katakana}\\p{Hiragana}\\p{Cyrillic}][a-zA-Z_0-9\\p{Emoji_Presentation}\\p{Han}\\p{Katakana}\\p{Hiragana}\\p{Cyrillic}]*$") +var BEGINS_WITH_NUMBER_REGEX: RegEx = RegEx.create_from_string("^\\d") +var CONDITION_REGEX: RegEx = RegEx.create_from_string("(if|elif|while|else if|match|when) (?.*)\\:?") +var WRAPPED_CONDITION_REGEX: RegEx = RegEx.create_from_string("\\[if (?.*)\\]") +var MUTATION_REGEX: RegEx = RegEx.create_from_string("(?do|do!|set) (?.*)") +var STATIC_LINE_ID_REGEX: RegEx = RegEx.create_from_string("\\[ID:(?.*?)\\]") +var WEIGHTED_RANDOM_SIBLINGS_REGEX: RegEx = RegEx.create_from_string("^\\%(?[\\d.]+)?( \\[if (?.+?)\\])? ") +var GOTO_REGEX: RegEx = RegEx.create_from_string("=>.*)") + +var INLINE_RANDOM_REGEX: RegEx = RegEx.create_from_string("\\[\\[(?.*?)\\]\\]") +var INLINE_CONDITIONALS_REGEX: RegEx = RegEx.create_from_string("\\[if (?.+?)\\](?.*?)\\[\\/if\\]") + +var TAGS_REGEX: RegEx = RegEx.create_from_string("\\[#(?.*?)\\]") + +var REPLACEMENTS_REGEX: RegEx = RegEx.create_from_string("{{(.*?)}}") + +var ALPHA_NUMERIC: RegEx = RegEx.create_from_string("[^a-zA-Z0-9\\p{Han}\\p{Katakana}\\p{Hiragana}\\p{Cyrillic}]+") + +var TOKEN_DEFINITIONS: Dictionary = { + DMConstants.TOKEN_FUNCTION: RegEx.create_from_string("^[a-zA-Z_\\p{Emoji_Presentation}\\p{Han}\\p{Katakana}\\p{Hiragana}\\p{Cyrillic}][a-zA-Z_0-9\\p{Emoji_Presentation}\\p{Han}\\p{Katakana}\\p{Hiragana}\\p{Cyrillic}]*\\("), + DMConstants.TOKEN_DICTIONARY_REFERENCE: RegEx.create_from_string("^[a-zA-Z_\\p{Emoji_Presentation}\\p{Han}\\p{Katakana}\\p{Hiragana}\\p{Cyrillic}][a-zA-Z_0-9\\p{Emoji_Presentation}\\p{Han}\\p{Katakana}\\p{Hiragana}\\p{Cyrillic}]*\\["), + DMConstants.TOKEN_PARENS_OPEN: RegEx.create_from_string("^\\("), + DMConstants.TOKEN_PARENS_CLOSE: RegEx.create_from_string("^\\)"), + DMConstants.TOKEN_BRACKET_OPEN: RegEx.create_from_string("^\\["), + DMConstants.TOKEN_BRACKET_CLOSE: RegEx.create_from_string("^\\]"), + DMConstants.TOKEN_BRACE_OPEN: RegEx.create_from_string("^\\{"), + DMConstants.TOKEN_BRACE_CLOSE: RegEx.create_from_string("^\\}"), + DMConstants.TOKEN_COLON: RegEx.create_from_string("^:"), + DMConstants.TOKEN_COMPARISON: RegEx.create_from_string("^(==|<=|>=|<|>|!=|in )"), + DMConstants.TOKEN_ASSIGNMENT: RegEx.create_from_string("^(\\+=|\\-=|\\*=|/=|=)"), + DMConstants.TOKEN_NUMBER: RegEx.create_from_string("^\\-?\\d+(\\.\\d+)?"), + DMConstants.TOKEN_OPERATOR: RegEx.create_from_string("^(\\+|\\-|\\*|/|%)"), + DMConstants.TOKEN_COMMA: RegEx.create_from_string("^,"), + DMConstants.TOKEN_NULL_COALESCE: RegEx.create_from_string("^\\?\\."), + DMConstants.TOKEN_DOT: RegEx.create_from_string("^\\."), + DMConstants.TOKEN_STRING: RegEx.create_from_string("^&?(\".*?\"|\'.*?\')"), + DMConstants.TOKEN_NOT: RegEx.create_from_string("^(not( |$)|!)"), + DMConstants.TOKEN_AND_OR: RegEx.create_from_string("^(and|or|&&|\\|\\|)( |$)"), + DMConstants.TOKEN_VARIABLE: RegEx.create_from_string("^[a-zA-Z_\\p{Emoji_Presentation}\\p{Han}\\p{Katakana}\\p{Hiragana}\\p{Cyrillic}][a-zA-Z_0-9\\p{Emoji_Presentation}\\p{Han}\\p{Katakana}\\p{Hiragana}\\p{Cyrillic}]*"), + DMConstants.TOKEN_COMMENT: RegEx.create_from_string("^#.*"), + DMConstants.TOKEN_CONDITION: RegEx.create_from_string("^(if|elif|else)"), + DMConstants.TOKEN_BOOL: RegEx.create_from_string("^(true|false)") +} diff --git a/addons/dialogue_manager/compiler/compiler_regex.gd.uid b/addons/dialogue_manager/compiler/compiler_regex.gd.uid new file mode 100644 index 0000000..bd969df --- /dev/null +++ b/addons/dialogue_manager/compiler/compiler_regex.gd.uid @@ -0,0 +1 @@ +uid://d3tvcrnicjibp diff --git a/addons/dialogue_manager/compiler/compiler_result.gd b/addons/dialogue_manager/compiler/compiler_result.gd new file mode 100644 index 0000000..acbf60f --- /dev/null +++ b/addons/dialogue_manager/compiler/compiler_result.gd @@ -0,0 +1,27 @@ +## The result of using the [DMCompiler] to compile some dialogue. +class_name DMCompilerResult extends RefCounted + + +## Any paths that were imported into the compiled dialogue file. +var imported_paths: PackedStringArray = [] + +## Any "using" directives. +var using_states: PackedStringArray = [] + +## All titles in the file and the line they point to. +var titles: Dictionary = {} + +## The first title in the file. +var first_title: String = "" + +## All character names. +var character_names: PackedStringArray = [] + +## Any compilation errors. +var errors: Array[Dictionary] = [] + +## A map of all compiled lines. +var lines: Dictionary = {} + +## The raw dialogue text. +var raw_text: String = "" diff --git a/addons/dialogue_manager/compiler/compiler_result.gd.uid b/addons/dialogue_manager/compiler/compiler_result.gd.uid new file mode 100644 index 0000000..f1f76fd --- /dev/null +++ b/addons/dialogue_manager/compiler/compiler_result.gd.uid @@ -0,0 +1 @@ +uid://dmk74tknimqvg diff --git a/addons/dialogue_manager/compiler/expression_parser.gd b/addons/dialogue_manager/compiler/expression_parser.gd new file mode 100644 index 0000000..7dfb2af --- /dev/null +++ b/addons/dialogue_manager/compiler/expression_parser.gd @@ -0,0 +1,529 @@ +## A class for parsing a condition/mutation expression for use with the [DMCompiler]. +class_name DMExpressionParser extends RefCounted + + +var include_comments: bool = false + + +# Reference to the common [RegEx] that the parser needs. +var regex: DMCompilerRegEx = DMCompilerRegEx.new() + + +## Break a string down into an expression. +func tokenise(text: String, line_type: String, index: int) -> Array: + var tokens: Array[Dictionary] = [] + var limit: int = 0 + while text.strip_edges() != "" and limit < 1000: + limit += 1 + var found = _find_match(text) + if found.size() > 0: + tokens.append({ + index = index, + type = found.type, + value = found.value + }) + index += found.value.length() + text = found.remaining_text + elif text.begins_with(" "): + index += 1 + text = text.substr(1) + else: + return _build_token_tree_error([], DMConstants.ERR_INVALID_EXPRESSION, index) + + return _build_token_tree(tokens, line_type, "")[0] + + +## Extract any expressions from some text +func extract_replacements(text: String, index: int) -> Array[Dictionary]: + var founds: Array[RegExMatch] = regex.REPLACEMENTS_REGEX.search_all(text) + + if founds == null or founds.size() == 0: + return [] + + var replacements: Array[Dictionary] = [] + for found in founds: + var replacement: Dictionary = {} + var value_in_text: String = found.strings[0].substr(0, found.strings[0].length() - 2).substr(2) + + # If there are closing curlie hard-up against the end of a {{...}} block then check for further + # curlies just outside of the block. + var text_suffix: String = text.substr(found.get_end(0)) + var expression_suffix: String = "" + while text_suffix.begins_with("}"): + expression_suffix += "}" + text_suffix = text_suffix.substr(1) + value_in_text += expression_suffix + + var expression: Array = tokenise(value_in_text, DMConstants.TYPE_DIALOGUE, index + found.get_start(1)) + if expression.size() == 0: + replacement = { + index = index + found.get_start(1), + error = DMConstants.ERR_INCOMPLETE_EXPRESSION + } + elif expression[0].type == DMConstants.TYPE_ERROR: + replacement = { + index = expression[0].i, + error = expression[0].value + } + else: + replacement = { + value_in_text = "{{%s}}" % value_in_text, + expression = expression + } + replacements.append(replacement) + + return replacements + + +#region Helpers + + +# Create a token that represents an error. +func _build_token_tree_error(tree: Array, error: int, index: int) -> Array: + tree.insert(0, { + type = DMConstants.TOKEN_ERROR, + value = error, + i = index + }) + return tree + + +# Convert a list of tokens into an abstract syntax tree. +func _build_token_tree(tokens: Array[Dictionary], line_type: String, expected_close_token: String) -> Array: + var tree: Array[Dictionary] = [] + var limit = 0 + while tokens.size() > 0 and limit < 1000: + limit += 1 + var token = tokens.pop_front() + + var error = _check_next_token(token, tokens, line_type, expected_close_token) + if error != OK: + var error_token: Dictionary = tokens[1] if tokens.size() > 1 else token + return [_build_token_tree_error(tree, error, error_token.index), tokens] + + match token.type: + DMConstants.TOKEN_COMMENT: + if include_comments: + tree.append({ + type = DMConstants.TOKEN_COMMENT, + value = token.value, + i = token.index + }) + + DMConstants.TOKEN_FUNCTION: + var sub_tree = _build_token_tree(tokens, line_type, DMConstants.TOKEN_PARENS_CLOSE) + + if sub_tree[0].size() > 0 and sub_tree[0][0].type == DMConstants.TOKEN_ERROR: + return [_build_token_tree_error(tree, sub_tree[0][0].value, sub_tree[0][0].i), tokens] + + tree.append({ + type = DMConstants.TOKEN_FUNCTION, + # Consume the trailing "(" + function = token.value.substr(0, token.value.length() - 1), + value = _tokens_to_list(sub_tree[0]), + i = token.index + }) + tokens = sub_tree[1] + + DMConstants.TOKEN_DICTIONARY_REFERENCE: + var sub_tree = _build_token_tree(tokens, line_type, DMConstants.TOKEN_BRACKET_CLOSE) + + if sub_tree[0].size() > 0 and sub_tree[0][0].type == DMConstants.TOKEN_ERROR: + return [_build_token_tree_error(tree, sub_tree[0][0].value, sub_tree[0][0].i), tokens] + + var args = _tokens_to_list(sub_tree[0]) + if args.size() != 1: + return [_build_token_tree_error(tree, DMConstants.ERR_INVALID_INDEX, token.index), tokens] + + tree.append({ + type = DMConstants.TOKEN_DICTIONARY_REFERENCE, + # Consume the trailing "[" + variable = token.value.substr(0, token.value.length() - 1), + value = args[0], + i = token.index + }) + tokens = sub_tree[1] + + DMConstants.TOKEN_BRACE_OPEN: + var sub_tree = _build_token_tree(tokens, line_type, DMConstants.TOKEN_BRACE_CLOSE) + + if sub_tree[0].size() > 0 and sub_tree[0][0].type == DMConstants.TOKEN_ERROR: + return [_build_token_tree_error(tree, sub_tree[0][0].value, sub_tree[0][0].i), tokens] + + var t = sub_tree[0] + for i in range(0, t.size() - 2): + # Convert Lua style dictionaries to string keys + if t[i].type == DMConstants.TOKEN_VARIABLE and t[i+1].type == DMConstants.TOKEN_ASSIGNMENT: + t[i].type = DMConstants.TOKEN_STRING + t[i+1].type = DMConstants.TOKEN_COLON + t[i+1].erase("value") + + tree.append({ + type = DMConstants.TOKEN_DICTIONARY, + value = _tokens_to_dictionary(sub_tree[0]), + i = token.index + }) + + tokens = sub_tree[1] + + DMConstants.TOKEN_BRACKET_OPEN: + var sub_tree = _build_token_tree(tokens, line_type, DMConstants.TOKEN_BRACKET_CLOSE) + + if sub_tree[0].size() > 0 and sub_tree[0][0].type == DMConstants.TOKEN_ERROR: + return [_build_token_tree_error(tree, sub_tree[0][0].value, sub_tree[0][0].i), tokens] + + var type = DMConstants.TOKEN_ARRAY + var value = _tokens_to_list(sub_tree[0]) + + # See if this is referencing a nested dictionary value + if tree.size() > 0: + var previous_token = tree[tree.size() - 1] + if previous_token.type in [DMConstants.TOKEN_DICTIONARY_REFERENCE, DMConstants.TOKEN_DICTIONARY_NESTED_REFERENCE]: + type = DMConstants.TOKEN_DICTIONARY_NESTED_REFERENCE + value = value[0] + + tree.append({ + type = type, + value = value, + i = token.index + }) + tokens = sub_tree[1] + + DMConstants.TOKEN_PARENS_OPEN: + var sub_tree = _build_token_tree(tokens, line_type, DMConstants.TOKEN_PARENS_CLOSE) + + if sub_tree[0].size() > 0 and sub_tree[0][0].type == DMConstants.TOKEN_ERROR: + return [_build_token_tree_error(tree, sub_tree[0][0].value, sub_tree[0][0].i), tokens] + + tree.append({ + type = DMConstants.TOKEN_GROUP, + value = sub_tree[0], + i = token.index + }) + tokens = sub_tree[1] + + DMConstants.TOKEN_PARENS_CLOSE, \ + DMConstants.TOKEN_BRACE_CLOSE, \ + DMConstants.TOKEN_BRACKET_CLOSE: + if token.type != expected_close_token: + return [_build_token_tree_error(tree, DMConstants.ERR_UNEXPECTED_CLOSING_BRACKET, token.index), tokens] + + tree.append({ + type = token.type, + i = token.index + }) + + return [tree, tokens] + + DMConstants.TOKEN_NOT: + # Double nots negate each other + if tokens.size() > 0 and tokens.front().type == DMConstants.TOKEN_NOT: + tokens.pop_front() + else: + tree.append({ + type = token.type, + i = token.index + }) + + DMConstants.TOKEN_COMMA, \ + DMConstants.TOKEN_COLON, \ + DMConstants.TOKEN_DOT, \ + DMConstants.TOKEN_NULL_COALESCE: + tree.append({ + type = token.type, + i = token.index + }) + + DMConstants.TOKEN_COMPARISON, \ + DMConstants.TOKEN_ASSIGNMENT, \ + DMConstants.TOKEN_OPERATOR, \ + DMConstants.TOKEN_AND_OR, \ + DMConstants.TOKEN_VARIABLE: + var value = token.value.strip_edges() + if value == "&&": + value = "and" + elif value == "||": + value = "or" + tree.append({ + type = token.type, + value = value, + i = token.index + }) + + DMConstants.TOKEN_STRING: + if token.value.begins_with("&"): + tree.append({ + type = token.type, + value = StringName(token.value.substr(2, token.value.length() - 3)), + i = token.index + }) + else: + tree.append({ + type = token.type, + value = token.value.substr(1, token.value.length() - 2), + i = token.index + }) + + DMConstants.TOKEN_CONDITION: + return [_build_token_tree_error(tree, DMConstants.ERR_UNEXPECTED_CONDITION, token.index), token] + + DMConstants.TOKEN_BOOL: + tree.append({ + type = token.type, + value = token.value.to_lower() == "true", + i = token.index + }) + + DMConstants.TOKEN_NUMBER: + var value = token.value.to_float() if "." in token.value else token.value.to_int() + # If previous token is a number and this one is a negative number then + # inject a minus operator token in between them. + if tree.size() > 0 and token.value.begins_with("-") and tree[tree.size() - 1].type == DMConstants.TOKEN_NUMBER: + tree.append(({ + type = DMConstants.TOKEN_OPERATOR, + value = "-", + i = token.index + })) + tree.append({ + type = token.type, + value = -1 * value, + i = token.index + }) + else: + tree.append({ + type = token.type, + value = value, + i = token.index + }) + + if expected_close_token != "": + var index: int = tokens[0].i if tokens.size() > 0 else 0 + return [_build_token_tree_error(tree, DMConstants.ERR_MISSING_CLOSING_BRACKET, index), tokens] + + return [tree, tokens] + + +# Check the next token to see if it is valid to follow this one. +func _check_next_token(token: Dictionary, next_tokens: Array[Dictionary], line_type: String, expected_close_token: String) -> Error: + var next_token: Dictionary = { type = null } + if next_tokens.size() > 0: + next_token = next_tokens.front() + + # Guard for assigning in a condition. If the assignment token isn't inside a Lua dictionary + # then it's an unexpected assignment in a condition line. + if token.type == DMConstants.TOKEN_ASSIGNMENT and line_type == DMConstants.TYPE_CONDITION and not next_tokens.any(func(t): return t.type == expected_close_token): + return DMConstants.ERR_UNEXPECTED_ASSIGNMENT + + # Special case for a negative number after this one + if token.type == DMConstants.TOKEN_NUMBER and next_token.type == DMConstants.TOKEN_NUMBER and next_token.value.begins_with("-"): + return OK + + var expected_token_types = [] + var unexpected_token_types = [] + match token.type: + DMConstants.TOKEN_FUNCTION, \ + DMConstants.TOKEN_PARENS_OPEN: + unexpected_token_types = [ + null, + DMConstants.TOKEN_COMMA, + DMConstants.TOKEN_COLON, + DMConstants.TOKEN_COMPARISON, + DMConstants.TOKEN_ASSIGNMENT, + DMConstants.TOKEN_OPERATOR, + DMConstants.TOKEN_AND_OR, + DMConstants.TOKEN_DOT + ] + + DMConstants.TOKEN_BRACKET_CLOSE: + unexpected_token_types = [ + DMConstants.TOKEN_NOT, + DMConstants.TOKEN_BOOL, + DMConstants.TOKEN_STRING, + DMConstants.TOKEN_NUMBER, + DMConstants.TOKEN_VARIABLE + ] + + DMConstants.TOKEN_BRACE_OPEN: + expected_token_types = [ + DMConstants.TOKEN_STRING, + DMConstants.TOKEN_VARIABLE, + DMConstants.TOKEN_NUMBER, + DMConstants.TOKEN_BRACE_CLOSE + ] + + DMConstants.TOKEN_PARENS_CLOSE, \ + DMConstants.TOKEN_BRACE_CLOSE: + unexpected_token_types = [ + DMConstants.TOKEN_NOT, + DMConstants.TOKEN_ASSIGNMENT, + DMConstants.TOKEN_BOOL, + DMConstants.TOKEN_STRING, + DMConstants.TOKEN_NUMBER, + DMConstants.TOKEN_VARIABLE + ] + + DMConstants.TOKEN_COMPARISON, \ + DMConstants.TOKEN_OPERATOR, \ + DMConstants.TOKEN_DOT, \ + DMConstants.TOKEN_NULL_COALESCE, \ + DMConstants.TOKEN_NOT, \ + DMConstants.TOKEN_AND_OR, \ + DMConstants.TOKEN_DICTIONARY_REFERENCE: + unexpected_token_types = [ + null, + DMConstants.TOKEN_COMMA, + DMConstants.TOKEN_COLON, + DMConstants.TOKEN_COMPARISON, + DMConstants.TOKEN_ASSIGNMENT, + DMConstants.TOKEN_OPERATOR, + DMConstants.TOKEN_AND_OR, + DMConstants.TOKEN_PARENS_CLOSE, + DMConstants.TOKEN_BRACE_CLOSE, + DMConstants.TOKEN_BRACKET_CLOSE, + DMConstants.TOKEN_DOT + ] + + DMConstants.TOKEN_COMMA: + unexpected_token_types = [ + null, + DMConstants.TOKEN_COMMA, + DMConstants.TOKEN_COLON, + DMConstants.TOKEN_ASSIGNMENT, + DMConstants.TOKEN_OPERATOR, + DMConstants.TOKEN_AND_OR, + DMConstants.TOKEN_PARENS_CLOSE, + DMConstants.TOKEN_BRACE_CLOSE, + DMConstants.TOKEN_BRACKET_CLOSE, + DMConstants.TOKEN_DOT + ] + + DMConstants.TOKEN_COLON: + unexpected_token_types = [ + DMConstants.TOKEN_COMMA, + DMConstants.TOKEN_COLON, + DMConstants.TOKEN_COMPARISON, + DMConstants.TOKEN_ASSIGNMENT, + DMConstants.TOKEN_OPERATOR, + DMConstants.TOKEN_AND_OR, + DMConstants.TOKEN_PARENS_CLOSE, + DMConstants.TOKEN_BRACE_CLOSE, + DMConstants.TOKEN_BRACKET_CLOSE, + DMConstants.TOKEN_DOT + ] + + DMConstants.TOKEN_BOOL, \ + DMConstants.TOKEN_STRING, \ + DMConstants.TOKEN_NUMBER: + unexpected_token_types = [ + DMConstants.TOKEN_NOT, + DMConstants.TOKEN_ASSIGNMENT, + DMConstants.TOKEN_BOOL, + DMConstants.TOKEN_STRING, + DMConstants.TOKEN_NUMBER, + DMConstants.TOKEN_VARIABLE, + DMConstants.TOKEN_FUNCTION, + DMConstants.TOKEN_PARENS_OPEN, + DMConstants.TOKEN_BRACE_OPEN, + DMConstants.TOKEN_BRACKET_OPEN + ] + + DMConstants.TOKEN_VARIABLE: + unexpected_token_types = [ + DMConstants.TOKEN_NOT, + DMConstants.TOKEN_BOOL, + DMConstants.TOKEN_STRING, + DMConstants.TOKEN_NUMBER, + DMConstants.TOKEN_VARIABLE, + DMConstants.TOKEN_FUNCTION, + DMConstants.TOKEN_PARENS_OPEN, + DMConstants.TOKEN_BRACE_OPEN, + DMConstants.TOKEN_BRACKET_OPEN + ] + + if (expected_token_types.size() > 0 and not next_token.type in expected_token_types) \ + or (unexpected_token_types.size() > 0 and next_token.type in unexpected_token_types): + match next_token.type: + null: + return DMConstants.ERR_UNEXPECTED_END_OF_EXPRESSION + + DMConstants.TOKEN_FUNCTION: + return DMConstants.ERR_UNEXPECTED_FUNCTION + + DMConstants.TOKEN_PARENS_OPEN, \ + DMConstants.TOKEN_PARENS_CLOSE: + return DMConstants.ERR_UNEXPECTED_BRACKET + + DMConstants.TOKEN_COMPARISON, \ + DMConstants.TOKEN_ASSIGNMENT, \ + DMConstants.TOKEN_OPERATOR, \ + DMConstants.TOKEN_NOT, \ + DMConstants.TOKEN_AND_OR: + return DMConstants.ERR_UNEXPECTED_OPERATOR + + DMConstants.TOKEN_COMMA: + return DMConstants.ERR_UNEXPECTED_COMMA + DMConstants.TOKEN_COLON: + return DMConstants.ERR_UNEXPECTED_COLON + DMConstants.TOKEN_DOT: + return DMConstants.ERR_UNEXPECTED_DOT + + DMConstants.TOKEN_BOOL: + return DMConstants.ERR_UNEXPECTED_BOOLEAN + DMConstants.TOKEN_STRING: + return DMConstants.ERR_UNEXPECTED_STRING + DMConstants.TOKEN_NUMBER: + return DMConstants.ERR_UNEXPECTED_NUMBER + DMConstants.TOKEN_VARIABLE: + return DMConstants.ERR_UNEXPECTED_VARIABLE + + return DMConstants.ERR_INVALID_EXPRESSION + + return OK + + +# Convert a series of comma separated tokens to an [Array]. +func _tokens_to_list(tokens: Array[Dictionary]) -> Array[Array]: + var list: Array[Array] = [] + var current_item: Array[Dictionary] = [] + for token in tokens: + if token.type == DMConstants.TOKEN_COMMA: + list.append(current_item) + current_item = [] + else: + current_item.append(token) + + if current_item.size() > 0: + list.append(current_item) + + return list + + +# Convert a series of key/value tokens into a [Dictionary] +func _tokens_to_dictionary(tokens: Array[Dictionary]) -> Dictionary: + var dictionary = {} + for i in range(0, tokens.size()): + if tokens[i].type == DMConstants.TOKEN_COLON: + if tokens.size() == i + 2: + dictionary[tokens[i - 1]] = tokens[i + 1] + else: + dictionary[tokens[i - 1]] = { type = DMConstants.TOKEN_GROUP, value = tokens.slice(i + 1), i = tokens[0].i } + + return dictionary + + +# Work out what the next token is from a string. +func _find_match(input: String) -> Dictionary: + for key in regex.TOKEN_DEFINITIONS.keys(): + var regex = regex.TOKEN_DEFINITIONS.get(key) + var found = regex.search(input) + if found: + return { + type = key, + remaining_text = input.substr(found.strings[0].length()), + value = found.strings[0] + } + + return {} + + +#endregion diff --git a/addons/dialogue_manager/compiler/expression_parser.gd.uid b/addons/dialogue_manager/compiler/expression_parser.gd.uid new file mode 100644 index 0000000..0793701 --- /dev/null +++ b/addons/dialogue_manager/compiler/expression_parser.gd.uid @@ -0,0 +1 @@ +uid://dbi4hbar8ubwu diff --git a/addons/dialogue_manager/compiler/resolved_goto_data.gd b/addons/dialogue_manager/compiler/resolved_goto_data.gd new file mode 100644 index 0000000..16bca6f --- /dev/null +++ b/addons/dialogue_manager/compiler/resolved_goto_data.gd @@ -0,0 +1,68 @@ +## Data associated with a dialogue jump/goto line. +class_name DMResolvedGotoData extends RefCounted + + +## The title that was specified +var title: String = "" +## The target line's ID +var next_id: String = "" +## An expression to determine the target line at runtime. +var expression: Array[Dictionary] = [] +## The given line text with the jump syntax removed. +var text_without_goto: String = "" +## Whether this is a jump-and-return style jump. +var is_snippet: bool = false +## A parse error if there was one. +var error: int +## The index in the string where +var index: int = 0 + +# An instance of the compiler [RegEx] list. +var regex: DMCompilerRegEx = DMCompilerRegEx.new() + + +func _init(text: String, titles: Dictionary) -> void: + if not "=> " in text and not "=>< " in text: return + + if "=> " in text: + text_without_goto = text.substr(0, text.find("=> ")).strip_edges() + elif "=>< " in text: + is_snippet = true + text_without_goto = text.substr(0, text.find("=>< ")).strip_edges() + + var found: RegExMatch = regex.GOTO_REGEX.search(text) + if found == null: + return + + title = found.strings[found.names.goto].strip_edges() + index = found.get_start(0) + + if title == "": + error = DMConstants.ERR_UNKNOWN_TITLE + return + + # "=> END!" means end the conversation, ignoring any "=><" chains. + if title == "END!": + next_id = DMConstants.ID_END_CONVERSATION + + # "=> END" means end the current title (and go back to the previous one if there is one + # in the stack) + elif title == "END": + next_id = DMConstants.ID_END + + elif titles.has(title): + next_id = titles.get(title) + elif title.begins_with("{{"): + var expression_parser: DMExpressionParser = DMExpressionParser.new() + var title_expression: Array[Dictionary] = expression_parser.extract_replacements(title, 0) + if title_expression[0].has("error"): + error = title_expression[0].error + else: + expression = title_expression[0].expression + else: + next_id = title + error = DMConstants.ERR_UNKNOWN_TITLE + + +func _to_string() -> String: + return "%s =>%s %s (%s)" % [text_without_goto, "<" if is_snippet else "", title, next_id] diff --git a/addons/dialogue_manager/compiler/resolved_goto_data.gd.uid b/addons/dialogue_manager/compiler/resolved_goto_data.gd.uid new file mode 100644 index 0000000..cb05e08 --- /dev/null +++ b/addons/dialogue_manager/compiler/resolved_goto_data.gd.uid @@ -0,0 +1 @@ +uid://llhl5pt47eoq diff --git a/addons/dialogue_manager/compiler/resolved_line_data.gd b/addons/dialogue_manager/compiler/resolved_line_data.gd new file mode 100644 index 0000000..1d1a716 --- /dev/null +++ b/addons/dialogue_manager/compiler/resolved_line_data.gd @@ -0,0 +1,167 @@ +## Any data associated with inline dialogue BBCodes. +class_name DMResolvedLineData extends RefCounted + +## The line's text +var text: String = "" +## A map of pauses against where they are found in the text. +var pauses: Dictionary = {} +## A map of speed changes against where they are found in the text. +var speeds: Dictionary = {} +## A list of any mutations to run and where they are found in the text. +var mutations: Array[Array] = [] +## A duration reference for the line. Represented as "auto" or a stringified number. +var time: String = "" + + +func _init(line: String) -> void: + text = line + pauses = {} + speeds = {} + mutations = [] + time = "" + + var bbcodes: Array = [] + + # Remove any escaped brackets (ie. "\[") + var escaped_open_brackets: PackedInt32Array = [] + var escaped_close_brackets: PackedInt32Array = [] + for i in range(0, text.length() - 1): + if text.substr(i, 2) == "\\[": + text = text.substr(0, i) + "!" + text.substr(i + 2) + escaped_open_brackets.append(i) + elif text.substr(i, 2) == "\\]": + text = text.substr(0, i) + "!" + text.substr(i + 2) + escaped_close_brackets.append(i) + + # Extract all of the BB codes so that we know the actual text (we could do this easier with + # a RichTextLabel but then we'd need to await idle_frame which is annoying) + var bbcode_positions = find_bbcode_positions_in_string(text) + var accumulaive_length_offset = 0 + for position in bbcode_positions: + # Ignore our own markers + if position.code in ["wait", "speed", "/speed", "do", "do!", "set", "next", "if", "else", "/if"]: + continue + + bbcodes.append({ + bbcode = position.bbcode, + start = position.start, + offset_start = position.start - accumulaive_length_offset + }) + accumulaive_length_offset += position.bbcode.length() + + for bb in bbcodes: + text = text.substr(0, bb.offset_start) + text.substr(bb.offset_start + bb.bbcode.length()) + + # Now find any dialogue markers + var next_bbcode_position = find_bbcode_positions_in_string(text, false) + var limit = 0 + while next_bbcode_position.size() > 0 and limit < 1000: + limit += 1 + + var bbcode = next_bbcode_position[0] + + var index = bbcode.start + var code = bbcode.code + var raw_args = bbcode.raw_args + var args = {} + if code in ["do", "do!", "set"]: + var compilation: DMCompilation = DMCompilation.new() + args["value"] = compilation.extract_mutation("%s %s" % [code, raw_args]) + else: + # Could be something like: + # "=1.0" + # " rate=20 level=10" + if raw_args and raw_args[0] == "=": + raw_args = "value" + raw_args + for pair in raw_args.strip_edges().split(" "): + if "=" in pair: + var bits = pair.split("=") + args[bits[0]] = bits[1] + + match code: + "wait": + if pauses.has(index): + pauses[index] += args.get("value").to_float() + else: + pauses[index] = args.get("value").to_float() + "speed": + speeds[index] = args.get("value").to_float() + "/speed": + speeds[index] = 1.0 + "do", "do!", "set": + mutations.append([index, args.get("value")]) + "next": + time = args.get("value") if args.has("value") else "0" + + # Find any BB codes that are after this index and remove the length from their start + var length = bbcode.bbcode.length() + for bb in bbcodes: + if bb.offset_start > bbcode.start: + bb.offset_start -= length + bb.start -= length + + # Find any escaped brackets after this that need moving + for i in range(0, escaped_open_brackets.size()): + if escaped_open_brackets[i] > bbcode.start: + escaped_open_brackets[i] -= length + for i in range(0, escaped_close_brackets.size()): + if escaped_close_brackets[i] > bbcode.start: + escaped_close_brackets[i] -= length + + text = text.substr(0, index) + text.substr(index + length) + next_bbcode_position = find_bbcode_positions_in_string(text, false) + + # Put the BB Codes back in + for bb in bbcodes: + text = text.insert(bb.start, bb.bbcode) + + # Put the escaped brackets back in + for index in escaped_open_brackets: + text = text.left(index) + "[" + text.right(text.length() - index - 1) + for index in escaped_close_brackets: + text = text.left(index) + "]" + text.right(text.length() - index - 1) + + +func find_bbcode_positions_in_string(string: String, find_all: bool = true, include_conditions: bool = false) -> Array[Dictionary]: + if not "[" in string: return [] + + var positions: Array[Dictionary] = [] + + var open_brace_count: int = 0 + var start: int = 0 + var bbcode: String = "" + var code: String = "" + var is_finished_code: bool = false + for i in range(0, string.length()): + if string[i] == "[": + if open_brace_count == 0: + start = i + bbcode = "" + code = "" + is_finished_code = false + open_brace_count += 1 + + else: + if not is_finished_code and (string[i].to_upper() != string[i] or string[i] == "/" or string[i] == "!"): + code += string[i] + else: + is_finished_code = true + + if open_brace_count > 0: + bbcode += string[i] + + if string[i] == "]": + open_brace_count -= 1 + if open_brace_count == 0 and (include_conditions or not code in ["if", "else", "/if"]): + positions.append({ + bbcode = bbcode, + code = code, + start = start, + end = i, + raw_args = bbcode.substr(code.length() + 1, bbcode.length() - code.length() - 2).strip_edges() + }) + + if not find_all: + return positions + + return positions diff --git a/addons/dialogue_manager/compiler/resolved_line_data.gd.uid b/addons/dialogue_manager/compiler/resolved_line_data.gd.uid new file mode 100644 index 0000000..bbea7d2 --- /dev/null +++ b/addons/dialogue_manager/compiler/resolved_line_data.gd.uid @@ -0,0 +1 @@ +uid://0k6q8kukq0qa diff --git a/addons/dialogue_manager/compiler/resolved_tag_data.gd b/addons/dialogue_manager/compiler/resolved_tag_data.gd new file mode 100644 index 0000000..e926ada --- /dev/null +++ b/addons/dialogue_manager/compiler/resolved_tag_data.gd @@ -0,0 +1,26 @@ +## Tag data associated with a line of dialogue. +class_name DMResolvedTagData extends RefCounted + + +## The list of tags. +var tags: PackedStringArray = [] +## The line with any tag syntax removed. +var text_without_tags: String = "" + +# An instance of the compiler [RegEx]. +var regex: DMCompilerRegEx = DMCompilerRegEx.new() + + +func _init(text: String) -> void: + var resolved_tags: PackedStringArray = [] + var tag_matches: Array[RegExMatch] = regex.TAGS_REGEX.search_all(text) + for tag_match in tag_matches: + text = text.replace(tag_match.get_string(), "") + var tags = tag_match.get_string().replace("[#", "").replace("]", "").replace(", ", ",").split(",") + for tag in tags: + tag = tag.replace("#", "") + if not tag in resolved_tags: + resolved_tags.append(tag) + + tags = resolved_tags + text_without_tags = text diff --git a/addons/dialogue_manager/compiler/resolved_tag_data.gd.uid b/addons/dialogue_manager/compiler/resolved_tag_data.gd.uid new file mode 100644 index 0000000..98c6f51 --- /dev/null +++ b/addons/dialogue_manager/compiler/resolved_tag_data.gd.uid @@ -0,0 +1 @@ +uid://cqai3ikuilqfq diff --git a/addons/dialogue_manager/compiler/tree_line.gd b/addons/dialogue_manager/compiler/tree_line.gd new file mode 100644 index 0000000..667daad --- /dev/null +++ b/addons/dialogue_manager/compiler/tree_line.gd @@ -0,0 +1,46 @@ +## An intermediate representation of a dialogue line before it gets compiled. +class_name DMTreeLine extends RefCounted + + +## The line number where this dialogue was found (after imported files have had their content imported). +var line_number: int = 0 +## The parent [DMTreeLine] of this line. +## This is stored as a Weak Reference so that this RefCounted can elegantly free itself. +## Without it being a Weak Reference, this can easily cause a cyclical reference that keeps this resource alive. +var parent: WeakRef +## The ID of this line. +var id: String +## The type of this line (as a [String] defined in [DMConstants]. +var type: String = "" +## Is this line part of a randomised group? +var is_random: bool = false +## The indent count for this line. +var indent: int = 0 +## The text of this line. +var text: String = "" +## The child [DMTreeLine]s of this line. +var children: Array[DMTreeLine] = [] +## Any doc comments attached to this line. +var notes: String = "" +## Is this a dialogue line that is the child of another dialogue line? +var is_nested_dialogue: bool = false + + +func _init(initial_id: String) -> void: + id = initial_id + + +func _to_string() -> String: + var tabs = [] + tabs.resize(indent) + tabs.fill("\t") + tabs = "".join(tabs) + + return tabs.join([tabs + "{\n", + "\tid: %s\n" % [id], + "\ttype: %s\n" % [type], + "\tis_random: %s\n" % ["true" if is_random else "false"], + "\ttext: %s\n" % [text], + "\tnotes: %s\n" % [notes], + "\tchildren: []\n" if children.size() == 0 else "\tchildren: [\n" + ",\n".join(children.map(func(child): return str(child))) + "]\n", + "}"]) diff --git a/addons/dialogue_manager/compiler/tree_line.gd.uid b/addons/dialogue_manager/compiler/tree_line.gd.uid new file mode 100644 index 0000000..fe1db3a --- /dev/null +++ b/addons/dialogue_manager/compiler/tree_line.gd.uid @@ -0,0 +1 @@ +uid://dsu4i84dpif14 diff --git a/addons/dialogue_manager/components/code_edit.gd b/addons/dialogue_manager/components/code_edit.gd new file mode 100644 index 0000000..6b714de --- /dev/null +++ b/addons/dialogue_manager/components/code_edit.gd @@ -0,0 +1,610 @@ +@tool +class_name DMCodeEdit extends CodeEdit + + +signal active_title_change(title: String) +signal error_clicked(line_number: int) +signal external_file_requested(path: String, title: String) + + +# A link back to the owner `MainView` +var main_view + +# Theme overrides for syntax highlighting, etc +var theme_overrides: Dictionary: + set(value): + theme_overrides = value + + syntax_highlighter = DMSyntaxHighlighter.new() + + # General UI + add_theme_color_override("font_color", theme_overrides.text_color) + add_theme_color_override("background_color", theme_overrides.background_color) + add_theme_color_override("current_line_color", theme_overrides.current_line_color) + add_theme_font_override("font", get_theme_font("source", "EditorFonts")) + add_theme_font_size_override("font_size", theme_overrides.font_size * theme_overrides.scale) + font_size = round(theme_overrides.font_size) + get: + return theme_overrides + +# Any parse errors +var errors: Array: + set(next_errors): + errors = next_errors + for i in range(0, get_line_count()): + var is_error: bool = false + for error in errors: + if error.line_number == i: + is_error = true + mark_line_as_error(i, is_error) + _on_code_edit_caret_changed() + get: + return errors + +# The last selection (if there was one) so we can remember it for refocusing +var last_selected_text: String + +var font_size: int: + set(value): + font_size = value + add_theme_font_size_override("font_size", font_size * theme_overrides.scale) + get: + return font_size + +var WEIGHTED_RANDOM_PREFIX: RegEx = RegEx.create_from_string("^\\%[\\d.]+\\s") + +var compiler_regex: DMCompilerRegEx = DMCompilerRegEx.new() +var _autoloads: Dictionary[String, String] = {} +var _autoload_member_cache: Dictionary[String, Dictionary] = {} + + +func _ready() -> void: + # Add error gutter + add_gutter(0) + set_gutter_type(0, TextEdit.GUTTER_TYPE_ICON) + + # Add comment delimiter + if not has_comment_delimiter("#"): + add_comment_delimiter("#", "", true) + + syntax_highlighter = DMSyntaxHighlighter.new() + + # Keep track of any autoloads + ProjectSettings.settings_changed.connect(_on_project_settings_changed) + _on_project_settings_changed() + + +func _gui_input(event: InputEvent) -> void: + # Handle shortcuts that come from the editor + if event is InputEventKey and event.is_pressed(): + var shortcut: String = Engine.get_meta("DialogueManagerPlugin").get_editor_shortcut(event) + match shortcut: + "toggle_comment": + toggle_comment() + get_viewport().set_input_as_handled() + "delete_line": + delete_current_line() + get_viewport().set_input_as_handled() + "move_up": + move_line(-1) + get_viewport().set_input_as_handled() + "move_down": + move_line(1) + get_viewport().set_input_as_handled() + "text_size_increase": + self.font_size += 1 + get_viewport().set_input_as_handled() + "text_size_decrease": + self.font_size -= 1 + get_viewport().set_input_as_handled() + "text_size_reset": + self.font_size = theme_overrides.font_size + get_viewport().set_input_as_handled() + + elif event is InputEventMouse: + match event.as_text(): + "Ctrl+Mouse Wheel Up", "Command+Mouse Wheel Up": + self.font_size += 1 + get_viewport().set_input_as_handled() + "Ctrl+Mouse Wheel Down", "Command+Mouse Wheel Down": + self.font_size -= 1 + get_viewport().set_input_as_handled() + + +func _can_drop_data(at_position: Vector2, data) -> bool: + if typeof(data) != TYPE_DICTIONARY: return false + if data.type != "files": return false + + var files: PackedStringArray = Array(data.files) + return files.size() > 0 + + +func _drop_data(at_position: Vector2, data) -> void: + var replace_regex: RegEx = RegEx.create_from_string("[^a-zA-Z_0-9]+") + + var files: PackedStringArray = Array(data.files) + for file in files: + # Don't import the file into itself + if file == main_view.current_file_path: continue + + if file.get_extension() == "dialogue": + var path = file.replace("res://", "").replace(".dialogue", "") + # Find the first non-import line in the file to add our import + var lines = text.split("\n") + for i in range(0, lines.size()): + if not lines[i].begins_with("import "): + insert_line_at(i, "import \"%s\" as %s\n" % [file, replace_regex.sub(path, "_", true)]) + set_caret_line(i) + break + else: + var cursor: Vector2 = get_line_column_at_pos(at_position) + if cursor.x > -1 and cursor.y > -1: + set_cursor(cursor) + remove_secondary_carets() + insert_text("\"%s\"" % file, cursor.y, cursor.x) + grab_focus() + + +func _request_code_completion(force: bool) -> void: + var cursor: Vector2 = get_cursor() + var current_line: String = get_line(cursor.y) + + # Match jumps + if ("=> " in current_line or "=>< " in current_line) and (cursor.x > current_line.find("=>")): + var prompt: String = current_line.split("=>")[1] + if prompt.begins_with("< "): + prompt = prompt.substr(2) + else: + prompt = prompt.substr(1) + + if "=> " in current_line: + if matches_prompt(prompt, "end"): + add_code_completion_option(CodeEdit.KIND_CLASS, "END", "END".substr(prompt.length()), theme_overrides.text_color, get_theme_icon("Stop", "EditorIcons")) + if matches_prompt(prompt, "end!"): + add_code_completion_option(CodeEdit.KIND_CLASS, "END!", "END!".substr(prompt.length()), theme_overrides.text_color, get_theme_icon("Stop", "EditorIcons")) + + # Get all titles, including those in imports + for title: String in DMCompiler.get_titles_in_text(text, main_view.current_file_path): + # Ignore any imported titles that aren't resolved to human readable. + if title.to_int() > 0: + continue + + elif "/" in title: + var bits = title.split("/") + if matches_prompt(prompt, bits[0]) or matches_prompt(prompt, bits[1]): + add_code_completion_option(CodeEdit.KIND_CLASS, title, title.substr(prompt.length()), theme_overrides.text_color, get_theme_icon("CombineLines", "EditorIcons")) + elif matches_prompt(prompt, title): + add_code_completion_option(CodeEdit.KIND_CLASS, title, title.substr(prompt.length()), theme_overrides.text_color, get_theme_icon("ArrowRight", "EditorIcons")) + + # Match character names + var name_so_far: String = WEIGHTED_RANDOM_PREFIX.sub(current_line.strip_edges(), "") + if name_so_far != "" and name_so_far[0].to_upper() == name_so_far[0]: + # Only show names starting with that character + var names: PackedStringArray = get_character_names(name_so_far) + if names.size() > 0: + for name in names: + add_code_completion_option(CodeEdit.KIND_CLASS, name + ": ", name.substr(name_so_far.length()) + ": ", theme_overrides.text_color, get_theme_icon("Sprite2D", "EditorIcons")) + + # Match autoloads on mutation lines + for prefix in ["do ", "set ", "if ", "elif ", "else if ", "match ", "when ", "using "]: + if (current_line.strip_edges().begins_with(prefix) and (cursor.x > current_line.find(prefix))): + var expression: String = current_line.substr(0, cursor.x).strip_edges().substr(3) + # Find the last couple of tokens + var possible_prompt: String = expression.reverse() + possible_prompt = possible_prompt.substr(0, possible_prompt.find(" ")) + possible_prompt = possible_prompt.substr(0, possible_prompt.find("(")) + possible_prompt = possible_prompt.reverse() + var segments: PackedStringArray = possible_prompt.split(".").slice(-2) + var auto_completes: Array[Dictionary] = [] + + # Autoloads and state shortcuts + if segments.size() == 1: + var prompt: String = segments[0] + for autoload in _autoloads.keys(): + if matches_prompt(prompt, autoload): + auto_completes.append({ + prompt = prompt, + text = autoload, + type = "script" + }) + for autoload in get_state_shortcuts(): + for member: Dictionary in get_members_for_autoload(autoload): + if matches_prompt(prompt, member.name): + auto_completes.append({ + prompt = prompt, + text = member.name, + type = member.type + }) + + # Members of an autoload + elif segments[0] in _autoloads.keys() and not current_line.strip_edges().begins_with("using "): + var prompt: String = segments[1] + for member: Dictionary in get_members_for_autoload(segments[0]): + if matches_prompt(prompt, member.name): + auto_completes.append({ + prompt = prompt, + text = member.name, + type = member.type + }) + + auto_completes.sort_custom(func(a, b): return a.text < b.text) + + for auto_complete in auto_completes: + var icon: Texture2D + var text: String = auto_complete.text + match auto_complete.type: + "script": + icon = get_theme_icon("Script", "EditorIcons") + "property": + icon = get_theme_icon("MemberProperty", "EditorIcons") + "method": + icon = get_theme_icon("MemberMethod", "EditorIcons") + text += "()" + "signal": + icon = get_theme_icon("MemberSignal", "EditorIcons") + "constant": + icon = get_theme_icon("MemberConstant", "EditorIcons") + var insert: String = text.substr(auto_complete.prompt.length()) + add_code_completion_option(CodeEdit.KIND_CLASS, text, insert, theme_overrides.text_color, icon) + + update_code_completion_options(true) + if get_code_completion_options().size() == 0: + cancel_code_completion() + + +func _filter_code_completion_candidates(candidates: Array) -> Array: + # Not sure why but if this method isn't overridden then all completions are wrapped in quotes. + return candidates + + +func _confirm_code_completion(replace: bool) -> void: + var completion = get_code_completion_option(get_code_completion_selected_index()) + begin_complex_operation() + # Delete any part of the text that we've already typed + if completion.insert_text.length() > 0: + for i in range(0, completion.display_text.length() - completion.insert_text.length()): + backspace() + # Insert the whole match + insert_text_at_caret(completion.display_text) + end_complex_operation() + + if completion.display_text.ends_with("()"): + set_cursor(get_cursor() - Vector2.RIGHT) + + # Close the autocomplete menu on the next tick + call_deferred("cancel_code_completion") + + +#region Helpers + + +# Get the current caret as a Vector2 +func get_cursor() -> Vector2: + return Vector2(get_caret_column(), get_caret_line()) + + +# Set the caret from a Vector2 +func set_cursor(from_cursor: Vector2) -> void: + set_caret_line(from_cursor.y, false) + set_caret_column(from_cursor.x, false) + + +# Check if a prompt is the start of a string without actually being that string +func matches_prompt(prompt: String, matcher: String) -> bool: + return prompt.length() < matcher.length() and matcher.to_lower().begins_with(prompt.to_lower()) + + +func get_state_shortcuts() -> PackedStringArray: + # Get any shortcuts defined in settings + var shortcuts: PackedStringArray = DMSettings.get_setting(DMSettings.STATE_AUTOLOAD_SHORTCUTS, []) + # Check for "using" clauses + for line: String in text.split("\n"): + var found: RegExMatch = compiler_regex.USING_REGEX.search(line) + if found: + shortcuts.append(found.strings[found.names.state]) + # Check for any other script sources + for extra_script_source in DMSettings.get_setting(DMSettings.EXTRA_AUTO_COMPLETE_SCRIPT_SOURCES, []): + shortcuts.append(extra_script_source) + + return shortcuts + + +func get_members_for_autoload(autoload_name: String) -> Array[Dictionary]: + # Debounce method list lookups + if _autoload_member_cache.has(autoload_name) and _autoload_member_cache.get(autoload_name).get("at") > Time.get_ticks_msec() - 5000: + return _autoload_member_cache.get(autoload_name).get("members") + + if not _autoloads.has(autoload_name) and not autoload_name.begins_with("res://") and not autoload_name.begins_with("uid://"): return [] + + var autoload = load(_autoloads.get(autoload_name, autoload_name)) + var script: Script = autoload if autoload is Script else autoload.get_script() + + if not is_instance_valid(script): return [] + + var members: Array[Dictionary] = [] + if script.resource_path.ends_with(".gd"): + for m: Dictionary in script.get_script_method_list(): + if not m.name.begins_with("@"): + members.append({ + name = m.name, + type = "method" + }) + for m: Dictionary in script.get_script_property_list(): + members.append({ + name = m.name, + type = "property" + }) + for m: Dictionary in script.get_script_signal_list(): + members.append({ + name = m.name, + type = "signal" + }) + for c: String in script.get_script_constant_map(): + members.append({ + name = c, + type = "constant" + }) + elif script.resource_path.ends_with(".cs"): + var dotnet = load(Engine.get_meta("DialogueManagerPlugin").get_plugin_path() + "/DialogueManager.cs").new() + for m: Dictionary in dotnet.GetMembersForAutoload(script): + members.append(m) + + _autoload_member_cache[autoload_name] = { + at = Time.get_ticks_msec(), + members = members + } + + return members + + +## Get a list of titles from the current text +func get_titles() -> PackedStringArray: + var titles = PackedStringArray([]) + var lines = text.split("\n") + for line in lines: + if line.strip_edges().begins_with("~ "): + titles.append(line.strip_edges().substr(2)) + + return titles + + +## Work out what the next title above the current line is +func check_active_title() -> void: + var line_number = get_caret_line() + var lines = text.split("\n") + # Look at each line above this one to find the next title line + for i in range(line_number, -1, -1): + if lines[i].begins_with("~ "): + active_title_change.emit(lines[i].replace("~ ", "")) + return + + active_title_change.emit("") + + +# Move the caret line to match a given title +func go_to_title(title: String) -> void: + var lines = text.split("\n") + for i in range(0, lines.size()): + if lines[i].strip_edges() == "~ " + title: + set_caret_line(i) + center_viewport_to_caret() + + +func get_character_names(beginning_with: String) -> PackedStringArray: + var names: PackedStringArray = [] + var lines = text.split("\n") + for line in lines: + if ": " in line: + var name: String = WEIGHTED_RANDOM_PREFIX.sub(line.split(": ")[0].strip_edges(), "") + if not name in names and matches_prompt(beginning_with, name): + names.append(name) + return names + + +# Mark a line as an error or not +func mark_line_as_error(line_number: int, is_error: bool) -> void: + # Lines display counting from 1 but are actually indexed from 0 + line_number -= 1 + + if line_number < 0: return + + if is_error: + set_line_background_color(line_number, theme_overrides.error_line_color) + set_line_gutter_icon(line_number, 0, get_theme_icon("StatusError", "EditorIcons")) + else: + set_line_background_color(line_number, theme_overrides.background_color) + set_line_gutter_icon(line_number, 0, null) + + +# Insert or wrap some bbcode at the caret/selection +func insert_bbcode(open_tag: String, close_tag: String = "") -> void: + if close_tag == "": + insert_text_at_caret(open_tag) + grab_focus() + else: + var selected_text = get_selected_text() + insert_text_at_caret("%s%s%s" % [open_tag, selected_text, close_tag]) + grab_focus() + set_caret_column(get_caret_column() - close_tag.length()) + +# Insert text at current caret position +# Move Caret down 1 line if not => END +func insert_text_at_cursor(text: String) -> void: + if text != "=> END": + insert_text_at_caret(text+"\n") + set_caret_line(get_caret_line()+1) + else: + insert_text_at_caret(text) + grab_focus() + + +# Toggle the selected lines as comments +func toggle_comment() -> void: + begin_complex_operation() + + var comment_delimiter: String = delimiter_comments[0] + var is_first_line: bool = true + var will_comment: bool = true + var selections: Array = [] + var line_offsets: Dictionary = {} + + for caret_index in range(0, get_caret_count()): + var from_line: int = get_caret_line(caret_index) + var from_column: int = get_caret_column(caret_index) + var to_line: int = get_caret_line(caret_index) + var to_column: int = get_caret_column(caret_index) + + if has_selection(caret_index): + from_line = get_selection_from_line(caret_index) + to_line = get_selection_to_line(caret_index) + from_column = get_selection_from_column(caret_index) + to_column = get_selection_to_column(caret_index) + + selections.append({ + from_line = from_line, + from_column = from_column, + to_line = to_line, + to_column = to_column + }) + + for line_number in range(from_line, to_line + 1): + if line_offsets.has(line_number): continue + + var line_text: String = get_line(line_number) + + # The first line determines if we are commenting or uncommentingg + if is_first_line: + is_first_line = false + will_comment = not line_text.strip_edges().begins_with(comment_delimiter) + + # Only comment/uncomment if the current line needs to + if will_comment: + set_line(line_number, comment_delimiter + line_text) + line_offsets[line_number] = 1 + elif line_text.begins_with(comment_delimiter): + set_line(line_number, line_text.substr(comment_delimiter.length())) + line_offsets[line_number] = -1 + else: + line_offsets[line_number] = 0 + + for caret_index in range(0, get_caret_count()): + var selection: Dictionary = selections[caret_index] + select( + selection.from_line, + selection.from_column + line_offsets[selection.from_line], + selection.to_line, + selection.to_column + line_offsets[selection.to_line], + caret_index + ) + set_caret_column(selection.from_column + line_offsets[selection.from_line], false, caret_index) + + end_complex_operation() + + text_set.emit() + text_changed.emit() + + +# Remove the current line +func delete_current_line() -> void: + var cursor = get_cursor() + if get_line_count() == 1: + select_all() + elif cursor.y == 0: + select(0, 0, 1, 0) + else: + select(cursor.y - 1, get_line_width(cursor.y - 1), cursor.y, get_line_width(cursor.y)) + delete_selection() + text_changed.emit() + + +# Move the selected lines up or down +func move_line(offset: int) -> void: + offset = clamp(offset, -1, 1) + + var starting_scroll := scroll_vertical + var cursor = get_cursor() + var reselect: bool = false + var from: int = cursor.y + var to: int = cursor.y + if has_selection(): + reselect = true + from = get_selection_from_line() + to = get_selection_to_line() + + var lines := text.split("\n") + + # Prevent the lines from being out of bounds + if from + offset < 0 or to + offset >= lines.size(): return + + var target_from_index = from - 1 if offset == -1 else to + 1 + var target_to_index = to if offset == -1 else from + var line_to_move = lines[target_from_index] + lines.remove_at(target_from_index) + lines.insert(target_to_index, line_to_move) + + text = "\n".join(lines) + + cursor.y += offset + set_cursor(cursor) + from += offset + to += offset + if reselect: + select(from, 0, to, get_line_width(to)) + + text_changed.emit() + scroll_vertical = starting_scroll + offset + + +#endregion + +#region Signals + + +func _on_project_settings_changed() -> void: + _autoloads = {} + var project = ConfigFile.new() + project.load("res://project.godot") + for autoload in project.get_section_keys("autoload"): + if autoload != "DialogueManager": + _autoloads[autoload] = project.get_value("autoload", autoload).substr(1) + + +func _on_code_edit_symbol_validate(symbol: String) -> void: + if symbol.begins_with("res://") and symbol.ends_with(".dialogue"): + set_symbol_lookup_word_as_valid(true) + return + + for title in get_titles(): + if symbol == title: + set_symbol_lookup_word_as_valid(true) + return + set_symbol_lookup_word_as_valid(false) + + +func _on_code_edit_symbol_lookup(symbol: String, line: int, column: int) -> void: + if symbol.begins_with("res://") and symbol.ends_with(".dialogue"): + external_file_requested.emit(symbol, "") + else: + go_to_title(symbol) + + +func _on_code_edit_text_changed() -> void: + request_code_completion(true) + + +func _on_code_edit_text_set() -> void: + queue_redraw() + + +func _on_code_edit_caret_changed() -> void: + check_active_title() + last_selected_text = get_selected_text() + + +func _on_code_edit_gutter_clicked(line: int, gutter: int) -> void: + var line_errors = errors.filter(func(error): return error.line_number == line) + if line_errors.size() > 0: + error_clicked.emit(line) + + +#endregion diff --git a/addons/dialogue_manager/components/code_edit.gd.uid b/addons/dialogue_manager/components/code_edit.gd.uid new file mode 100644 index 0000000..ab2b9e5 --- /dev/null +++ b/addons/dialogue_manager/components/code_edit.gd.uid @@ -0,0 +1 @@ +uid://djeybvlb332mp diff --git a/addons/dialogue_manager/components/code_edit.tscn b/addons/dialogue_manager/components/code_edit.tscn new file mode 100644 index 0000000..0c25707 --- /dev/null +++ b/addons/dialogue_manager/components/code_edit.tscn @@ -0,0 +1,56 @@ +[gd_scene load_steps=4 format=3 uid="uid://civ6shmka5e8u"] + +[ext_resource type="Script" uid="uid://klpiq4tk3t7a" path="res://addons/dialogue_manager/components/code_edit_syntax_highlighter.gd" id="1_58cfo"] +[ext_resource type="Script" uid="uid://djeybvlb332mp" path="res://addons/dialogue_manager/components/code_edit.gd" id="1_g324i"] + +[sub_resource type="SyntaxHighlighter" id="SyntaxHighlighter_cobxx"] +script = ExtResource("1_58cfo") + +[node name="CodeEdit" type="CodeEdit"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +text = "~ title_thing + +if this = \"that\" or 'this' +Nathan: Something +- Then [if test.thing() == 2.0] => somewhere +- Other => END! + +~ somewhere + +set has_something = true +=> END" +highlight_all_occurrences = true +highlight_current_line = true +draw_tabs = true +syntax_highlighter = SubResource("SyntaxHighlighter_cobxx") +scroll_past_end_of_file = true +minimap_draw = true +symbol_lookup_on_click = true +line_folding = true +gutters_draw_line_numbers = true +gutters_draw_fold_gutter = true +delimiter_strings = Array[String](["\" \""]) +delimiter_comments = Array[String](["#"]) +code_completion_enabled = true +code_completion_prefixes = Array[String]([">", "<"]) +indent_automatic = true +auto_brace_completion_enabled = true +auto_brace_completion_highlight_matching = true +auto_brace_completion_pairs = { +"\"": "\"", +"(": ")", +"[": "]", +"{": "}" +} +script = ExtResource("1_g324i") + +[connection signal="caret_changed" from="." to="." method="_on_code_edit_caret_changed"] +[connection signal="gutter_clicked" from="." to="." method="_on_code_edit_gutter_clicked"] +[connection signal="symbol_lookup" from="." to="." method="_on_code_edit_symbol_lookup"] +[connection signal="symbol_validate" from="." to="." method="_on_code_edit_symbol_validate"] +[connection signal="text_changed" from="." to="." method="_on_code_edit_text_changed"] +[connection signal="text_set" from="." to="." method="_on_code_edit_text_set"] diff --git a/addons/dialogue_manager/components/code_edit_syntax_highlighter.gd b/addons/dialogue_manager/components/code_edit_syntax_highlighter.gd new file mode 100644 index 0000000..3f4e0d9 --- /dev/null +++ b/addons/dialogue_manager/components/code_edit_syntax_highlighter.gd @@ -0,0 +1,231 @@ +@tool +class_name DMSyntaxHighlighter extends SyntaxHighlighter + + +var regex: DMCompilerRegEx = DMCompilerRegEx.new() +var compilation: DMCompilation = DMCompilation.new() +var expression_parser = DMExpressionParser.new() + +var cache: Dictionary = {} + + +func _clear_highlighting_cache() -> void: + cache.clear() + + +func _get_line_syntax_highlighting(line: int) -> Dictionary: + expression_parser.include_comments = true + + var colors: Dictionary = {} + var text_edit: TextEdit = get_text_edit() + var text: String = text_edit.get_line(line) + + # Prevent an error from popping up while developing + if not is_instance_valid(text_edit) or text_edit.theme_overrides.is_empty(): + return colors + + # Disable this, as well as the line at the bottom of this function to remove the cache. + if text in cache: + return cache[text] + + var theme: Dictionary = text_edit.theme_overrides + + var index: int = 0 + + match DMCompiler.get_line_type(text): + DMConstants.TYPE_USING: + colors[index] = { color = theme.conditions_color } + colors[index + "using ".length()] = { color = theme.text_color } + + DMConstants.TYPE_IMPORT: + colors[index] = { color = theme.conditions_color } + var import: RegExMatch = regex.IMPORT_REGEX.search(text) + if import: + colors[index + import.get_start("path") - 1] = { color = theme.strings_color } + colors[index + import.get_end("path") + 1] = { color = theme.conditions_color } + colors[index + import.get_start("prefix")] = { color = theme.text_color } + + DMConstants.TYPE_COMMENT: + colors[index] = { color = theme.comments_color } + + DMConstants.TYPE_TITLE: + colors[index] = { color = theme.titles_color } + + DMConstants.TYPE_CONDITION, DMConstants.TYPE_WHILE, DMConstants.TYPE_MATCH, DMConstants.TYPE_WHEN: + colors[0] = { color = theme.conditions_color } + index = text.find(" ") + if index > -1: + var expression: Array = expression_parser.tokenise(text.substr(index), DMConstants.TYPE_CONDITION, 0) + if expression.size() == 0: + colors[index] = { color = theme.critical_color } + else: + _highlight_expression(expression, colors, index) + + DMConstants.TYPE_MUTATION: + colors[0] = { color = theme.mutations_color } + index = text.find(" ") + var expression: Array = expression_parser.tokenise(text.substr(index), DMConstants.TYPE_MUTATION, 0) + if expression.size() == 0: + colors[index] = { color = theme.critical_color } + else: + _highlight_expression(expression, colors, index) + + DMConstants.TYPE_GOTO: + if text.strip_edges().begins_with("%"): + colors[index] = { color = theme.symbols_color } + index = text.find(" ") + _highlight_goto(text, colors, index) + + DMConstants.TYPE_RANDOM: + colors[index] = { color = theme.symbols_color } + + DMConstants.TYPE_DIALOGUE, DMConstants.TYPE_RESPONSE: + if text.strip_edges().begins_with("%"): + colors[index] = { color = theme.symbols_color } + index = text.find(" ", text.find("%")) + colors[index] = { color = theme.text_color.lerp(theme.symbols_color, 0.5) } + + var dialogue_text: String = text.substr(index, text.find("=>")) + + # Highlight character name (but ignore ":" within line ID reference) + var split_index: int = dialogue_text.replace("\\:", "??").find(":") + if text.substr(split_index - 3, 3) != "[ID": + colors[index + split_index + 1] = { color = theme.text_color } + else: + # If there's no character name then just highlight the text as dialogue. + colors[index] = { color = theme.text_color } + + # Interpolation + var replacements: Array[RegExMatch] = regex.REPLACEMENTS_REGEX.search_all(dialogue_text) + for replacement: RegExMatch in replacements: + var expression_text: String = replacement.get_string().substr(0, replacement.get_string().length() - 2).substr(2) + var expression: Array = expression_parser.tokenise(expression_text, DMConstants.TYPE_MUTATION, replacement.get_start()) + var expression_index: int = index + replacement.get_start() + colors[expression_index] = { color = theme.symbols_color } + if expression.size() == 0 or expression[0].type == DMConstants.TYPE_ERROR: + colors[expression_index] = { color = theme.critical_color } + else: + _highlight_expression(expression, colors, index + 2) + colors[expression_index + expression_text.length() + 2] = { color = theme.symbols_color } + colors[expression_index + expression_text.length() + 4] = { color = theme.text_color } + # Tags (and inline mutations) + var resolved_line_data: DMResolvedLineData = DMResolvedLineData.new("") + var bbcodes: Array[Dictionary] = resolved_line_data.find_bbcode_positions_in_string(dialogue_text, true, true) + for bbcode: Dictionary in bbcodes: + var tag: String = bbcode.code + var code: String = bbcode.raw_args + if code.begins_with("["): + colors[index + bbcode.start] = { color = theme.symbols_color } + colors[index + bbcode.start + 2] = { color = theme.text_color } + var pipe_cursor: int = code.find("|") + while pipe_cursor > -1: + colors[index + bbcode.start + pipe_cursor + 1] = { color = theme.symbols_color } + colors[index + bbcode.start + pipe_cursor + 2] = { color = theme.text_color } + pipe_cursor = code.find("|", pipe_cursor + 1) + colors[index + bbcode.end - 1] = { color = theme.symbols_color } + colors[index + bbcode.end + 1] = { color = theme.text_color } + else: + colors[index + bbcode.start] = { color = theme.symbols_color } + if tag.begins_with("do") or tag.begins_with("set") or tag.begins_with("if"): + if tag.begins_with("if"): + colors[index + bbcode.start + 1] = { color = theme.conditions_color } + else: + colors[index + bbcode.start + 1] = { color = theme.mutations_color } + var expression: Array = expression_parser.tokenise(code, DMConstants.TYPE_MUTATION, bbcode.start + bbcode.code.length()) + if expression.size() == 0 or expression[0].type == DMConstants.TYPE_ERROR: + colors[index + bbcode.start + tag.length() + 1] = { color = theme.critical_color } + else: + _highlight_expression(expression, colors, index + 2) + # else and closing if have no expression + elif tag.begins_with("else") or tag.begins_with("/if"): + colors[index + bbcode.start + 1] = { color = theme.conditions_color } + colors[index + bbcode.end] = { color = theme.symbols_color } + colors[index + bbcode.end + 1] = { color = theme.text_color } + # Jumps + if "=> " in text or "=>< " in text: + _highlight_goto(text, colors, index) + + # Order the dictionary keys to prevent CodeEdit from having issues + var ordered_colors: Dictionary = {} + var ordered_keys: Array = colors.keys() + ordered_keys.sort() + for key_index: int in ordered_keys: + ordered_colors[key_index] = colors[key_index] + + cache[text] = ordered_colors + return ordered_colors + + +func _highlight_expression(tokens: Array, colors: Dictionary, index: int) -> int: + var theme: Dictionary = get_text_edit().theme_overrides + var last_index: int = index + for token: Dictionary in tokens: + last_index = token.i + match token.type: + DMConstants.TOKEN_COMMENT: + colors[index + token.i] = { color = theme.comments_color } + + DMConstants.TOKEN_CONDITION, DMConstants.TOKEN_AND_OR: + colors[index + token.i] = { color = theme.conditions_color } + + DMConstants.TOKEN_VARIABLE: + if token.value in ["true", "false"]: + colors[index + token.i] = { color = theme.conditions_color } + else: + colors[index + token.i] = { color = theme.members_color } + + DMConstants.TOKEN_OPERATOR, DMConstants.TOKEN_COLON, \ + DMConstants.TOKEN_COMMA, DMConstants.TOKEN_DOT, DMConstants.TOKEN_NULL_COALESCE, \ + DMConstants.TOKEN_NUMBER, DMConstants.TOKEN_ASSIGNMENT: + colors[index + token.i] = { color = theme.symbols_color } + + DMConstants.TOKEN_STRING: + colors[index + token.i] = { color = theme.strings_color } + + DMConstants.TOKEN_FUNCTION: + colors[index + token.i] = { color = theme.mutations_color } + colors[index + token.i + token.function.length()] = { color = theme.symbols_color } + for parameter: Array in token.value: + last_index = _highlight_expression(parameter, colors, index) + DMConstants.TOKEN_PARENS_CLOSE: + colors[index + token.i] = { color = theme.symbols_color } + + DMConstants.TOKEN_DICTIONARY_REFERENCE: + colors[index + token.i] = { color = theme.members_color } + colors[index + token.i + token.variable.length()] = { color = theme.symbols_color } + last_index = _highlight_expression(token.value, colors, index) + DMConstants.TOKEN_ARRAY: + colors[index + token.i] = { color = theme.symbols_color } + for item: Array in token.value: + last_index = _highlight_expression(item, colors, index) + DMConstants.TOKEN_BRACKET_CLOSE: + colors[index + token.i] = { color = theme.symbols_color } + + DMConstants.TOKEN_DICTIONARY: + colors[index + token.i] = { color = theme.symbols_color } + last_index = _highlight_expression(token.value.keys() + token.value.values(), colors, index) + DMConstants.TOKEN_BRACE_CLOSE: + colors[index + token.i] = { color = theme.symbols_color } + last_index += 1 + + DMConstants.TOKEN_GROUP: + last_index = _highlight_expression(token.value, colors, index) + + return last_index + + +func _highlight_goto(text: String, colors: Dictionary, index: int) -> int: + var theme: Dictionary = get_text_edit().theme_overrides + var goto_data: DMResolvedGotoData = DMResolvedGotoData.new(text, {}) + colors[goto_data.index] = { color = theme.jumps_color } + if "{{" in text: + index = text.find("{{", goto_data.index) + var last_index: int = 0 + if goto_data.error: + colors[index + 2] = { color = theme.critical_color } + else: + last_index = _highlight_expression(goto_data.expression, colors, index) + index = text.find("}}", index + last_index) + colors[index] = { color = theme.jumps_color } + + return index diff --git a/addons/dialogue_manager/components/code_edit_syntax_highlighter.gd.uid b/addons/dialogue_manager/components/code_edit_syntax_highlighter.gd.uid new file mode 100644 index 0000000..9bad8cc --- /dev/null +++ b/addons/dialogue_manager/components/code_edit_syntax_highlighter.gd.uid @@ -0,0 +1 @@ +uid://klpiq4tk3t7a diff --git a/addons/dialogue_manager/components/download_update_panel.gd b/addons/dialogue_manager/components/download_update_panel.gd new file mode 100644 index 0000000..e67a93f --- /dev/null +++ b/addons/dialogue_manager/components/download_update_panel.gd @@ -0,0 +1,84 @@ +@tool +extends Control + + +signal failed() +signal updated(updated_to_version: String) + + +const DialogueConstants = preload("../constants.gd") + +const TEMP_FILE_NAME = "user://temp.zip" + + +@onready var logo: TextureRect = %Logo +@onready var label: Label = $VBox/Label +@onready var http_request: HTTPRequest = $HTTPRequest +@onready var download_button: Button = %DownloadButton + +var next_version_release: Dictionary: + set(value): + next_version_release = value + label.text = DialogueConstants.translate(&"update.is_available_for_download") % value.tag_name.substr(1) + get: + return next_version_release + + +func _ready() -> void: + $VBox/Center/DownloadButton.text = DialogueConstants.translate(&"update.download_update") + $VBox/Center2/NotesButton.text = DialogueConstants.translate(&"update.release_notes") + + +### Signals + + +func _on_download_button_pressed() -> void: + # Safeguard the actual dialogue manager repo from accidentally updating itself + if FileAccess.file_exists("res://tests/test_basic_dialogue.gd"): + prints("You can't update the addon from within itself.") + failed.emit() + return + + http_request.request(next_version_release.zipball_url) + download_button.disabled = true + download_button.text = DialogueConstants.translate(&"update.downloading") + + +func _on_http_request_request_completed(result: int, response_code: int, headers: PackedStringArray, body: PackedByteArray) -> void: + if result != HTTPRequest.RESULT_SUCCESS: + failed.emit() + return + + # Save the downloaded zip + var zip_file: FileAccess = FileAccess.open(TEMP_FILE_NAME, FileAccess.WRITE) + zip_file.store_buffer(body) + zip_file.close() + + OS.move_to_trash(ProjectSettings.globalize_path("res://addons/dialogue_manager")) + + var zip_reader: ZIPReader = ZIPReader.new() + zip_reader.open(TEMP_FILE_NAME) + var files: PackedStringArray = zip_reader.get_files() + + var base_path = files[1] + # Remove archive folder + files.remove_at(0) + # Remove assets folder + files.remove_at(0) + + for path in files: + var new_file_path: String = path.replace(base_path, "") + if path.ends_with("/"): + DirAccess.make_dir_recursive_absolute("res://addons/%s" % new_file_path) + else: + var file: FileAccess = FileAccess.open("res://addons/%s" % new_file_path, FileAccess.WRITE) + file.store_buffer(zip_reader.read_file(path)) + + zip_reader.close() + DirAccess.remove_absolute(TEMP_FILE_NAME) + + updated.emit(next_version_release.tag_name.substr(1)) + + +func _on_notes_button_pressed() -> void: + OS.shell_open(next_version_release.html_url) diff --git a/addons/dialogue_manager/components/download_update_panel.gd.uid b/addons/dialogue_manager/components/download_update_panel.gd.uid new file mode 100644 index 0000000..7910ab4 --- /dev/null +++ b/addons/dialogue_manager/components/download_update_panel.gd.uid @@ -0,0 +1 @@ +uid://kpwo418lb2t2 diff --git a/addons/dialogue_manager/components/download_update_panel.tscn b/addons/dialogue_manager/components/download_update_panel.tscn new file mode 100644 index 0000000..540abd3 --- /dev/null +++ b/addons/dialogue_manager/components/download_update_panel.tscn @@ -0,0 +1,60 @@ +[gd_scene load_steps=3 format=3 uid="uid://qdxrxv3c3hxk"] + +[ext_resource type="Script" uid="uid://kpwo418lb2t2" path="res://addons/dialogue_manager/components/download_update_panel.gd" id="1_4tm1k"] +[ext_resource type="Texture2D" uid="uid://d3baj6rygkb3f" path="res://addons/dialogue_manager/assets/update.svg" id="2_4o2m6"] + +[node name="DownloadUpdatePanel" type="Control"] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_4tm1k") + +[node name="HTTPRequest" type="HTTPRequest" parent="."] + +[node name="VBox" type="VBoxContainer" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = -1.0 +offset_top = 9.0 +offset_right = -1.0 +offset_bottom = 9.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 10 + +[node name="Logo" type="TextureRect" parent="VBox"] +unique_name_in_owner = true +clip_contents = true +custom_minimum_size = Vector2(300, 80) +layout_mode = 2 +texture = ExtResource("2_4o2m6") +stretch_mode = 5 + +[node name="Label" type="Label" parent="VBox"] +layout_mode = 2 +text = "v1.2.3 is available for download." +horizontal_alignment = 1 + +[node name="Center" type="CenterContainer" parent="VBox"] +layout_mode = 2 + +[node name="DownloadButton" type="Button" parent="VBox/Center"] +unique_name_in_owner = true +layout_mode = 2 +text = "Download update" + +[node name="Center2" type="CenterContainer" parent="VBox"] +layout_mode = 2 + +[node name="NotesButton" type="LinkButton" parent="VBox/Center2"] +layout_mode = 2 +text = "Read release notes" + +[connection signal="request_completed" from="HTTPRequest" to="." method="_on_http_request_request_completed"] +[connection signal="pressed" from="VBox/Center/DownloadButton" to="." method="_on_download_button_pressed"] +[connection signal="pressed" from="VBox/Center2/NotesButton" to="." method="_on_notes_button_pressed"] diff --git a/addons/dialogue_manager/components/editor_property/editor_property.gd b/addons/dialogue_manager/components/editor_property/editor_property.gd new file mode 100644 index 0000000..5deef65 --- /dev/null +++ b/addons/dialogue_manager/components/editor_property/editor_property.gd @@ -0,0 +1,48 @@ +@tool +extends EditorProperty + + +const DialoguePropertyEditorControl = preload("./editor_property_control.tscn") + + +var editor_plugin: EditorPlugin + +var control = DialoguePropertyEditorControl.instantiate() +var current_value: Resource +var is_updating: bool = false + + +func _init() -> void: + add_child(control) + + control.resource = current_value + + control.pressed.connect(_on_button_pressed) + control.resource_changed.connect(_on_resource_changed) + + +func _update_property() -> void: + var next_value = get_edited_object()[get_edited_property()] + + # The resource might have been deleted elsewhere so check that it's not in a weird state + if is_instance_valid(next_value) and not next_value.resource_path.ends_with(".dialogue"): + emit_changed(get_edited_property(), null) + return + + if next_value == current_value: return + + is_updating = true + current_value = next_value + control.resource = current_value + is_updating = false + + +### Signals + + +func _on_button_pressed() -> void: + editor_plugin.edit(current_value) + + +func _on_resource_changed(next_resource: Resource) -> void: + emit_changed(get_edited_property(), next_resource) diff --git a/addons/dialogue_manager/components/editor_property/editor_property.gd.uid b/addons/dialogue_manager/components/editor_property/editor_property.gd.uid new file mode 100644 index 0000000..283cc43 --- /dev/null +++ b/addons/dialogue_manager/components/editor_property/editor_property.gd.uid @@ -0,0 +1 @@ +uid://nyypeje1a036 diff --git a/addons/dialogue_manager/components/editor_property/editor_property_control.gd b/addons/dialogue_manager/components/editor_property/editor_property_control.gd new file mode 100644 index 0000000..d063d0e --- /dev/null +++ b/addons/dialogue_manager/components/editor_property/editor_property_control.gd @@ -0,0 +1,147 @@ +@tool +extends HBoxContainer + + +signal pressed() +signal resource_changed(next_resource: Resource) + + +const ITEM_NEW = 100 +const ITEM_QUICK_LOAD = 200 +const ITEM_LOAD = 201 +const ITEM_EDIT = 300 +const ITEM_CLEAR = 301 +const ITEM_FILESYSTEM = 400 + + +@onready var button: Button = $ResourceButton +@onready var menu_button: Button = $MenuButton +@onready var menu: PopupMenu = $Menu +@onready var quick_open_dialog: ConfirmationDialog = $QuickOpenDialog +@onready var files_list = $QuickOpenDialog/FilesList +@onready var new_dialog: FileDialog = $NewDialog +@onready var open_dialog: FileDialog = $OpenDialog + +var editor_plugin: EditorPlugin + +var resource: Resource: + set(next_resource): + resource = next_resource + if button: + button.resource = resource + get: + return resource + +var is_waiting_for_file: bool = false +var quick_selected_file: String = "" + + +func _ready() -> void: + menu_button.icon = get_theme_icon("GuiDropdown", "EditorIcons") + editor_plugin = Engine.get_meta("DialogueManagerPlugin") + + +func build_menu() -> void: + menu.clear() + + menu.add_icon_item(editor_plugin._get_plugin_icon(), "New Dialogue", ITEM_NEW) + menu.add_separator() + menu.add_icon_item(get_theme_icon("Load", "EditorIcons"), "Quick Load", ITEM_QUICK_LOAD) + menu.add_icon_item(get_theme_icon("Load", "EditorIcons"), "Load", ITEM_LOAD) + if resource: + menu.add_icon_item(get_theme_icon("Edit", "EditorIcons"), "Edit", ITEM_EDIT) + menu.add_icon_item(get_theme_icon("Clear", "EditorIcons"), "Clear", ITEM_CLEAR) + menu.add_separator() + menu.add_item("Show in FileSystem", ITEM_FILESYSTEM) + + menu.size = Vector2.ZERO + + +### Signals + + +func _on_new_dialog_file_selected(path: String) -> void: + editor_plugin.main_view.new_file(path) + is_waiting_for_file = false + if Engine.get_meta("DMCache").has_file(path): + resource_changed.emit(load(path)) + else: + var next_resource: Resource = await editor_plugin.import_plugin.compiled_resource + next_resource.resource_path = path + resource_changed.emit(next_resource) + + +func _on_open_dialog_file_selected(file: String) -> void: + resource_changed.emit(load(file)) + + +func _on_file_dialog_canceled() -> void: + is_waiting_for_file = false + + +func _on_resource_button_pressed() -> void: + if is_instance_valid(resource): + EditorInterface.call_deferred("edit_resource", resource) + else: + build_menu() + menu.position = get_viewport().position + Vector2i( + button.global_position.x + button.size.x - menu.size.x, + 2 + menu_button.global_position.y + button.size.y + ) + menu.popup() + + +func _on_resource_button_resource_dropped(next_resource: Resource) -> void: + resource_changed.emit(next_resource) + + +func _on_menu_button_pressed() -> void: + build_menu() + menu.position = get_viewport().position + Vector2i( + menu_button.global_position.x + menu_button.size.x - menu.size.x, + 2 + menu_button.global_position.y + menu_button.size.y + ) + menu.popup() + + +func _on_menu_id_pressed(id: int) -> void: + match id: + ITEM_NEW: + is_waiting_for_file = true + new_dialog.popup_centered() + + ITEM_QUICK_LOAD: + quick_selected_file = "" + files_list.files = Engine.get_meta("DMCache").get_files() + if resource: + files_list.select_file(resource.resource_path) + quick_open_dialog.popup_centered() + files_list.focus_filter() + + ITEM_LOAD: + is_waiting_for_file = true + open_dialog.popup_centered() + + ITEM_EDIT: + EditorInterface.call_deferred("edit_resource", resource) + + ITEM_CLEAR: + resource_changed.emit(null) + + ITEM_FILESYSTEM: + var file_system = EditorInterface.get_file_system_dock() + file_system.navigate_to_path(resource.resource_path) + + +func _on_files_list_file_double_clicked(file_path: String) -> void: + resource_changed.emit(load(file_path)) + quick_open_dialog.hide() + + +func _on_files_list_file_selected(file_path: String) -> void: + quick_selected_file = file_path + + +func _on_quick_open_dialog_confirmed() -> void: + if quick_selected_file != "": + resource_changed.emit(load(quick_selected_file)) diff --git a/addons/dialogue_manager/components/editor_property/editor_property_control.gd.uid b/addons/dialogue_manager/components/editor_property/editor_property_control.gd.uid new file mode 100644 index 0000000..aab7d8d --- /dev/null +++ b/addons/dialogue_manager/components/editor_property/editor_property_control.gd.uid @@ -0,0 +1 @@ +uid://dooe2pflnqtve diff --git a/addons/dialogue_manager/components/editor_property/editor_property_control.tscn b/addons/dialogue_manager/components/editor_property/editor_property_control.tscn new file mode 100644 index 0000000..7cb02e8 --- /dev/null +++ b/addons/dialogue_manager/components/editor_property/editor_property_control.tscn @@ -0,0 +1,58 @@ +[gd_scene load_steps=4 format=3 uid="uid://ycn6uaj7dsrh"] + +[ext_resource type="Script" uid="uid://dooe2pflnqtve" path="res://addons/dialogue_manager/components/editor_property/editor_property_control.gd" id="1_het12"] +[ext_resource type="PackedScene" uid="uid://b16uuqjuof3n5" path="res://addons/dialogue_manager/components/editor_property/resource_button.tscn" id="2_hh3d4"] +[ext_resource type="PackedScene" uid="uid://dnufpcdrreva3" path="res://addons/dialogue_manager/components/files_list.tscn" id="3_l8fp6"] + +[node name="PropertyEditorButton" type="HBoxContainer"] +offset_right = 40.0 +offset_bottom = 40.0 +size_flags_horizontal = 3 +theme_override_constants/separation = 0 +script = ExtResource("1_het12") + +[node name="ResourceButton" parent="." instance=ExtResource("2_hh3d4")] +layout_mode = 2 +text = "" +text_overrun_behavior = 3 +clip_text = true + +[node name="MenuButton" type="Button" parent="."] +layout_mode = 2 + +[node name="Menu" type="PopupMenu" parent="."] + +[node name="QuickOpenDialog" type="ConfirmationDialog" parent="."] +title = "Find Dialogue Resource" +size = Vector2i(400, 600) +min_size = Vector2i(400, 600) +ok_button_text = "Open" + +[node name="FilesList" parent="QuickOpenDialog" instance=ExtResource("3_l8fp6")] + +[node name="NewDialog" type="FileDialog" parent="."] +size = Vector2i(900, 750) +min_size = Vector2i(900, 750) +dialog_hide_on_ok = true +filters = PackedStringArray("*.dialogue ; Dialogue") + +[node name="OpenDialog" type="FileDialog" parent="."] +title = "Open a File" +size = Vector2i(900, 750) +min_size = Vector2i(900, 750) +ok_button_text = "Open" +dialog_hide_on_ok = true +file_mode = 0 +filters = PackedStringArray("*.dialogue ; Dialogue") + +[connection signal="pressed" from="ResourceButton" to="." method="_on_resource_button_pressed"] +[connection signal="resource_dropped" from="ResourceButton" to="." method="_on_resource_button_resource_dropped"] +[connection signal="pressed" from="MenuButton" to="." method="_on_menu_button_pressed"] +[connection signal="id_pressed" from="Menu" to="." method="_on_menu_id_pressed"] +[connection signal="confirmed" from="QuickOpenDialog" to="." method="_on_quick_open_dialog_confirmed"] +[connection signal="file_double_clicked" from="QuickOpenDialog/FilesList" to="." method="_on_files_list_file_double_clicked"] +[connection signal="file_selected" from="QuickOpenDialog/FilesList" to="." method="_on_files_list_file_selected"] +[connection signal="canceled" from="NewDialog" to="." method="_on_file_dialog_canceled"] +[connection signal="file_selected" from="NewDialog" to="." method="_on_new_dialog_file_selected"] +[connection signal="canceled" from="OpenDialog" to="." method="_on_file_dialog_canceled"] +[connection signal="file_selected" from="OpenDialog" to="." method="_on_open_dialog_file_selected"] diff --git a/addons/dialogue_manager/components/editor_property/resource_button.gd b/addons/dialogue_manager/components/editor_property/resource_button.gd new file mode 100644 index 0000000..5ba33dc --- /dev/null +++ b/addons/dialogue_manager/components/editor_property/resource_button.gd @@ -0,0 +1,48 @@ +@tool +extends Button + + +signal resource_dropped(next_resource: Resource) + + +var resource: Resource: + set(next_resource): + resource = next_resource + if resource: + icon = Engine.get_meta("DialogueManagerPlugin")._get_plugin_icon() + text = resource.resource_path.get_file().replace(".dialogue", "") + else: + icon = null + text = "" + get: + return resource + + +func _notification(what: int) -> void: + match what: + NOTIFICATION_DRAG_BEGIN: + var data = get_viewport().gui_get_drag_data() + if typeof(data) == TYPE_DICTIONARY and data.type == "files" and data.files.size() > 0 and data.files[0].ends_with(".dialogue"): + add_theme_stylebox_override("normal", get_theme_stylebox("focus", "LineEdit")) + add_theme_stylebox_override("hover", get_theme_stylebox("focus", "LineEdit")) + + NOTIFICATION_DRAG_END: + self.resource = resource + remove_theme_stylebox_override("normal") + remove_theme_stylebox_override("hover") + + +func _can_drop_data(at_position: Vector2, data) -> bool: + if typeof(data) != TYPE_DICTIONARY: return false + if data.type != "files": return false + + var files: PackedStringArray = Array(data.files).filter(func(f): return f.get_extension() == "dialogue") + return files.size() > 0 + + +func _drop_data(at_position: Vector2, data) -> void: + var files: PackedStringArray = Array(data.files).filter(func(f): return f.get_extension() == "dialogue") + + if files.size() == 0: return + + resource_dropped.emit(load(files[0])) diff --git a/addons/dialogue_manager/components/editor_property/resource_button.gd.uid b/addons/dialogue_manager/components/editor_property/resource_button.gd.uid new file mode 100644 index 0000000..b1b9d26 --- /dev/null +++ b/addons/dialogue_manager/components/editor_property/resource_button.gd.uid @@ -0,0 +1 @@ +uid://damhqta55t67c diff --git a/addons/dialogue_manager/components/editor_property/resource_button.tscn b/addons/dialogue_manager/components/editor_property/resource_button.tscn new file mode 100644 index 0000000..691e527 --- /dev/null +++ b/addons/dialogue_manager/components/editor_property/resource_button.tscn @@ -0,0 +1,9 @@ +[gd_scene load_steps=2 format=3 uid="uid://b16uuqjuof3n5"] + +[ext_resource type="Script" uid="uid://damhqta55t67c" path="res://addons/dialogue_manager/components/editor_property/resource_button.gd" id="1_7u2i7"] + +[node name="ResourceButton" type="Button"] +offset_right = 8.0 +offset_bottom = 8.0 +size_flags_horizontal = 3 +script = ExtResource("1_7u2i7") diff --git a/addons/dialogue_manager/components/errors_panel.gd b/addons/dialogue_manager/components/errors_panel.gd new file mode 100644 index 0000000..0b72d37 --- /dev/null +++ b/addons/dialogue_manager/components/errors_panel.gd @@ -0,0 +1,85 @@ +@tool +extends HBoxContainer + + +signal error_pressed(line_number) + + +const DialogueConstants = preload("../constants.gd") + + +@onready var error_button: Button = $ErrorButton +@onready var next_button: Button = $NextButton +@onready var count_label: Label = $CountLabel +@onready var previous_button: Button = $PreviousButton + +## The index of the current error being shown +var error_index: int = 0: + set(next_error_index): + error_index = wrap(next_error_index, 0, errors.size()) + show_error() + get: + return error_index + +## The list of all errors +var errors: Array = []: + set(next_errors): + errors = next_errors + self.error_index = 0 + get: + return errors + + +func _ready() -> void: + apply_theme() + hide() + + +## Set up colors and icons +func apply_theme() -> void: + error_button.add_theme_color_override("font_color", get_theme_color("error_color", "Editor")) + error_button.add_theme_color_override("font_hover_color", get_theme_color("error_color", "Editor")) + error_button.icon = get_theme_icon("StatusError", "EditorIcons") + previous_button.icon = get_theme_icon("ArrowLeft", "EditorIcons") + next_button.icon = get_theme_icon("ArrowRight", "EditorIcons") + + +## Move the error index to match a given line +func show_error_for_line_number(line_number: int) -> void: + for i in range(0, errors.size()): + if errors[i].line_number == line_number: + self.error_index = i + + +## Show the current error +func show_error() -> void: + if errors.size() == 0: + hide() + else: + show() + count_label.text = DialogueConstants.translate(&"n_of_n").format({ index = error_index + 1, total = errors.size() }) + var error = errors[error_index] + error_button.text = DialogueConstants.translate(&"errors.line_and_message").format({ line = error.line_number, column = error.column_number, message = DialogueConstants.get_error_message(error.error) }) + if error.has("external_error"): + error_button.text += " " + DialogueConstants.get_error_message(error.external_error) + + +### Signals + + +func _on_errors_panel_theme_changed() -> void: + apply_theme() + + +func _on_error_button_pressed() -> void: + error_pressed.emit(errors[error_index].line_number, errors[error_index].column_number) + + +func _on_previous_button_pressed() -> void: + self.error_index -= 1 + _on_error_button_pressed() + + +func _on_next_button_pressed() -> void: + self.error_index += 1 + _on_error_button_pressed() diff --git a/addons/dialogue_manager/components/errors_panel.gd.uid b/addons/dialogue_manager/components/errors_panel.gd.uid new file mode 100644 index 0000000..c305a80 --- /dev/null +++ b/addons/dialogue_manager/components/errors_panel.gd.uid @@ -0,0 +1 @@ +uid://d2l8nlb6hhrfp diff --git a/addons/dialogue_manager/components/errors_panel.tscn b/addons/dialogue_manager/components/errors_panel.tscn new file mode 100644 index 0000000..0b653cc --- /dev/null +++ b/addons/dialogue_manager/components/errors_panel.tscn @@ -0,0 +1,56 @@ +[gd_scene load_steps=4 format=3 uid="uid://cs8pwrxr5vxix"] + +[ext_resource type="Script" uid="uid://d2l8nlb6hhrfp" path="res://addons/dialogue_manager/components/errors_panel.gd" id="1_nfm3c"] + +[sub_resource type="Image" id="Image_w0gko"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 128, 128, 4, 255, 128, 128, 4, 255, 128, 128, 4, 255, 128, 128, 4, 255, 128, 128, 4, 255, 128, 128, 4, 255, 128, 128, 4, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 131, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 131, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 131, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 128, 128, 4, 255, 128, 128, 4, 255, 128, 128, 4, 255, 128, 128, 4, 255, 128, 128, 4, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 93, 93, 55, 255, 97, 97, 58, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 97, 97, 42, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 98, 98, 47, 255, 97, 97, 42, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 93, 93, 233, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 94, 94, 46, 255, 93, 93, 236, 255, 93, 93, 233, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 93, 93, 252, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_s6fxl"] +image = SubResource("Image_w0gko") + +[node name="ErrorsPanel" type="HBoxContainer"] +visible = false +offset_right = 1024.0 +offset_bottom = 600.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_nfm3c") +metadata/_edit_layout_mode = 1 + +[node name="ErrorButton" type="Button" parent="."] +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_colors/font_hover_color = Color(0, 0, 0, 1) +theme_override_constants/h_separation = 3 +icon = SubResource("ImageTexture_s6fxl") +flat = true +alignment = 0 +text_overrun_behavior = 4 + +[node name="Spacer" type="Control" parent="."] +custom_minimum_size = Vector2(40, 0) +layout_mode = 2 + +[node name="PreviousButton" type="Button" parent="."] +layout_mode = 2 +icon = SubResource("ImageTexture_s6fxl") +flat = true + +[node name="CountLabel" type="Label" parent="."] +layout_mode = 2 + +[node name="NextButton" type="Button" parent="."] +layout_mode = 2 +icon = SubResource("ImageTexture_s6fxl") +flat = true + +[connection signal="pressed" from="ErrorButton" to="." method="_on_error_button_pressed"] +[connection signal="pressed" from="PreviousButton" to="." method="_on_previous_button_pressed"] +[connection signal="pressed" from="NextButton" to="." method="_on_next_button_pressed"] diff --git a/addons/dialogue_manager/components/files_list.gd b/addons/dialogue_manager/components/files_list.gd new file mode 100644 index 0000000..31f6158 --- /dev/null +++ b/addons/dialogue_manager/components/files_list.gd @@ -0,0 +1,150 @@ +@tool +extends VBoxContainer + + +signal file_selected(file_path: String) +signal file_popup_menu_requested(at_position: Vector2) +signal file_double_clicked(file_path: String) +signal file_middle_clicked(file_path: String) + + +const DialogueConstants = preload("../constants.gd") + +const MODIFIED_SUFFIX = "(*)" + + +@export var icon: Texture2D + +@onready var filter_edit: LineEdit = $FilterEdit +@onready var list: ItemList = $List + +var file_map: Dictionary = {} + +var current_file_path: String = "" +var last_selected_file_path: String = "" + +var files: PackedStringArray = []: + set(next_files): + files = next_files + files.sort() + update_file_map() + apply_filter() + get: + return files + +var unsaved_files: Array[String] = [] + +var filter: String = "": + set(next_filter): + filter = next_filter + apply_filter() + get: + return filter + + +func _ready() -> void: + apply_theme() + + filter_edit.placeholder_text = DialogueConstants.translate(&"files_list.filter") + + +func focus_filter() -> void: + filter_edit.grab_focus() + + +func select_file(file: String) -> void: + list.deselect_all() + for i in range(0, list.get_item_count()): + var item_text = list.get_item_text(i).replace(MODIFIED_SUFFIX, "") + if item_text == get_nice_file(file, item_text.count("/") + 1): + list.select(i) + last_selected_file_path = file + + +func mark_file_as_unsaved(file: String, is_unsaved: bool) -> void: + if not file in unsaved_files and is_unsaved: + unsaved_files.append(file) + elif file in unsaved_files and not is_unsaved: + unsaved_files.erase(file) + apply_filter() + + +func update_file_map() -> void: + file_map = {} + for file in files: + var nice_file: String = get_nice_file(file) + + # See if a value with just the file name is already in the map + for key in file_map.keys(): + if file_map[key] == nice_file: + var bit_count = nice_file.count("/") + 2 + + var existing_nice_file = get_nice_file(key, bit_count) + nice_file = get_nice_file(file, bit_count) + + while nice_file == existing_nice_file: + bit_count += 1 + existing_nice_file = get_nice_file(key, bit_count) + nice_file = get_nice_file(file, bit_count) + + file_map[key] = existing_nice_file + + file_map[file] = nice_file + + +func get_nice_file(file_path: String, path_bit_count: int = 1) -> String: + var bits = file_path.replace("res://", "").replace(".dialogue", "").split("/") + bits = bits.slice(-path_bit_count) + return "/".join(bits) + + +func apply_filter() -> void: + list.clear() + for file in file_map.keys(): + if filter == "" or filter.to_lower() in file.to_lower(): + var nice_file = file_map[file] + if file in unsaved_files: + nice_file += MODIFIED_SUFFIX + var new_id := list.add_item(nice_file) + list.set_item_icon(new_id, icon) + + select_file(current_file_path) + + +func apply_theme() -> void: + if is_instance_valid(filter_edit): + filter_edit.right_icon = get_theme_icon("Search", "EditorIcons") + if is_instance_valid(list): + list.add_theme_stylebox_override("panel", get_theme_stylebox("panel", "Panel")) + + +### Signals + + +func _on_theme_changed() -> void: + apply_theme() + + +func _on_filter_edit_text_changed(new_text: String) -> void: + self.filter = new_text + + +func _on_list_item_clicked(index: int, at_position: Vector2, mouse_button_index: int) -> void: + var item_text = list.get_item_text(index).replace(MODIFIED_SUFFIX, "") + var file = file_map.find_key(item_text) + + if mouse_button_index == MOUSE_BUTTON_LEFT or mouse_button_index == MOUSE_BUTTON_RIGHT: + select_file(file) + file_selected.emit(file) + if mouse_button_index == MOUSE_BUTTON_RIGHT: + file_popup_menu_requested.emit(at_position) + + if mouse_button_index == MOUSE_BUTTON_MIDDLE: + file_middle_clicked.emit(file) + + +func _on_list_item_activated(index: int) -> void: + var item_text = list.get_item_text(index).replace(MODIFIED_SUFFIX, "") + var file = file_map.find_key(item_text) + select_file(file) + file_double_clicked.emit(file) diff --git a/addons/dialogue_manager/components/files_list.gd.uid b/addons/dialogue_manager/components/files_list.gd.uid new file mode 100644 index 0000000..2a1089a --- /dev/null +++ b/addons/dialogue_manager/components/files_list.gd.uid @@ -0,0 +1 @@ +uid://dqa4a4wwoo0aa diff --git a/addons/dialogue_manager/components/files_list.tscn b/addons/dialogue_manager/components/files_list.tscn new file mode 100644 index 0000000..c9e862b --- /dev/null +++ b/addons/dialogue_manager/components/files_list.tscn @@ -0,0 +1,29 @@ +[gd_scene load_steps=3 format=3 uid="uid://dnufpcdrreva3"] + +[ext_resource type="Script" uid="uid://dqa4a4wwoo0aa" path="res://addons/dialogue_manager/components/files_list.gd" id="1_cytii"] +[ext_resource type="Texture2D" uid="uid://d3lr2uas6ax8v" path="res://addons/dialogue_manager/assets/icon.svg" id="2_3ijx1"] + +[node name="FilesList" type="VBoxContainer"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_vertical = 3 +script = ExtResource("1_cytii") +icon = ExtResource("2_3ijx1") + +[node name="FilterEdit" type="LineEdit" parent="."] +layout_mode = 2 +placeholder_text = "Filter files" +clear_button_enabled = true + +[node name="List" type="ItemList" parent="."] +layout_mode = 2 +size_flags_vertical = 3 +allow_rmb_select = true + +[connection signal="theme_changed" from="." to="." method="_on_theme_changed"] +[connection signal="text_changed" from="FilterEdit" to="." method="_on_filter_edit_text_changed"] +[connection signal="item_activated" from="List" to="." method="_on_list_item_activated"] +[connection signal="item_clicked" from="List" to="." method="_on_list_item_clicked"] diff --git a/addons/dialogue_manager/components/find_in_files.gd b/addons/dialogue_manager/components/find_in_files.gd new file mode 100644 index 0000000..de64b71 --- /dev/null +++ b/addons/dialogue_manager/components/find_in_files.gd @@ -0,0 +1,229 @@ +@tool +extends Control + +signal result_selected(path: String, cursor: Vector2, length: int) + + +const DialogueConstants = preload("../constants.gd") + + +@export var main_view: Control +@export var code_edit: CodeEdit + +@onready var input: LineEdit = %Input +@onready var search_button: Button = %SearchButton +@onready var match_case_button: CheckBox = %MatchCaseButton +@onready var replace_toggle: CheckButton = %ReplaceToggle +@onready var replace_container: VBoxContainer = %ReplaceContainer +@onready var replace_input: LineEdit = %ReplaceInput +@onready var replace_selected_button: Button = %ReplaceSelectedButton +@onready var replace_all_button: Button = %ReplaceAllButton +@onready var results_container: VBoxContainer = %ResultsContainer +@onready var result_template: HBoxContainer = %ResultTemplate + +var current_results: Dictionary = {}: + set(value): + current_results = value + update_results_view() + if current_results.size() == 0: + replace_selected_button.disabled = true + replace_all_button.disabled = true + else: + replace_selected_button.disabled = false + replace_all_button.disabled = false + get: + return current_results + +var selections: PackedStringArray = [] + + +func prepare() -> void: + input.grab_focus() + + var template_label = result_template.get_node("Label") + template_label.get_theme_stylebox(&"focus").bg_color = code_edit.theme_overrides.current_line_color + template_label.add_theme_font_override(&"normal_font", code_edit.get_theme_font(&"font")) + + replace_toggle.set_pressed_no_signal(false) + replace_container.hide() + + $VBoxContainer/HBoxContainer/FindContainer/Label.text = DialogueConstants.translate(&"search.find") + input.placeholder_text = DialogueConstants.translate(&"search.placeholder") + input.text = "" + search_button.text = DialogueConstants.translate(&"search.find_all") + match_case_button.text = DialogueConstants.translate(&"search.match_case") + replace_toggle.text = DialogueConstants.translate(&"search.toggle_replace") + $VBoxContainer/HBoxContainer/ReplaceContainer/ReplaceLabel.text = DialogueConstants.translate(&"search.replace_with") + replace_input.placeholder_text = DialogueConstants.translate(&"search.replace_placeholder") + replace_input.text = "" + replace_all_button.text = DialogueConstants.translate(&"search.replace_all") + replace_selected_button.text = DialogueConstants.translate(&"search.replace_selected") + + selections.clear() + self.current_results = {} + +#region helpers + + +func update_results_view() -> void: + for child in results_container.get_children(): + child.queue_free() + + for path in current_results.keys(): + var path_label: Label = Label.new() + path_label.text = path + # Show open files + if main_view.open_buffers.has(path): + path_label.text += "(*)" + results_container.add_child(path_label) + for path_result in current_results.get(path): + var result_item: HBoxContainer = result_template.duplicate() + + var checkbox: CheckBox = result_item.get_node("CheckBox") as CheckBox + var key: String = get_selection_key(path, path_result) + checkbox.toggled.connect(func(is_pressed): + if is_pressed: + if not selections.has(key): + selections.append(key) + else: + if selections.has(key): + selections.remove_at(selections.find(key)) + ) + checkbox.set_pressed_no_signal(selections.has(key)) + checkbox.visible = replace_toggle.button_pressed + + var result_label: RichTextLabel = result_item.get_node("Label") as RichTextLabel + var colors: Dictionary = code_edit.theme_overrides + var highlight: String = "" + if replace_toggle.button_pressed: + var matched_word: String = "[bgcolor=" + colors.critical_color.to_html() + "][color=" + colors.text_color.to_html() + "]" + path_result.matched_text + "[/color][/bgcolor]" + highlight = "[s]" + matched_word + "[/s][bgcolor=" + colors.notice_color.to_html() + "][color=" + colors.text_color.to_html() + "]" + replace_input.text + "[/color][/bgcolor]" + else: + highlight = "[bgcolor=" + colors.notice_color.to_html() + "][color=" + colors.text_color.to_html() + "]" + path_result.matched_text + "[/color][/bgcolor]" + var text: String = path_result.text.substr(0, path_result.index) + highlight + path_result.text.substr(path_result.index + path_result.query.length()) + result_label.text = "%s: %s" % [str(path_result.line).lpad(4), text] + result_label.gui_input.connect(func(event): + if event is InputEventMouseButton and (event as InputEventMouseButton).button_index == MOUSE_BUTTON_LEFT and (event as InputEventMouseButton).double_click: + result_selected.emit(path, Vector2(path_result.index, path_result.line), path_result.query.length()) + ) + + results_container.add_child(result_item) + + +func find_in_files() -> Dictionary: + var results: Dictionary = {} + + var q: String = input.text + var cache = Engine.get_meta("DMCache") + var file: FileAccess + for path in cache.get_files(): + var path_results: Array = [] + var lines: PackedStringArray = [] + + if main_view.open_buffers.has(path): + lines = main_view.open_buffers.get(path).text.split("\n") + else: + file = FileAccess.open(path, FileAccess.READ) + lines = file.get_as_text().split("\n") + + for i in range(0, lines.size()): + var index: int = find_in_line(lines[i], q) + while index > -1: + path_results.append({ + line = i, + index = index, + text = lines[i], + matched_text = lines[i].substr(index, q.length()), + query = q + }) + index = find_in_line(lines[i], q, index + q.length()) + + if file != null and file.is_open(): + file.close() + + if path_results.size() > 0: + results[path] = path_results + + return results + + +func get_selection_key(path: String, path_result: Dictionary) -> String: + return "%s-%d-%d" % [path, path_result.line, path_result.index] + + +func find_in_line(line: String, query: String, from_index: int = 0) -> int: + if match_case_button.button_pressed: + return line.find(query, from_index) + else: + return line.findn(query, from_index) + + +func replace_results(only_selected: bool) -> void: + var file: FileAccess + var lines: PackedStringArray = [] + for path in current_results: + if main_view.open_buffers.has(path): + lines = main_view.open_buffers.get(path).text.split("\n") + else: + file = FileAccess.open(path, FileAccess.READ_WRITE) + lines = file.get_as_text().split("\n") + + # Read the results in reverse because we're going to be modifying them as we go + var path_results: Array = current_results.get(path).duplicate() + path_results.reverse() + for path_result in path_results: + var key: String = get_selection_key(path, path_result) + if not only_selected or (only_selected and selections.has(key)): + lines[path_result.line] = lines[path_result.line].substr(0, path_result.index) + replace_input.text + lines[path_result.line].substr(path_result.index + path_result.matched_text.length()) + + var replaced_text: String = "\n".join(lines) + if file != null and file.is_open(): + file.seek(0) + file.store_string(replaced_text) + file.close() + else: + main_view.open_buffers.get(path).text = replaced_text + if main_view.current_file_path == path: + code_edit.text = replaced_text + + current_results = find_in_files() + + +#endregion + +#region signals + + +func _on_search_button_pressed() -> void: + selections.clear() + self.current_results = find_in_files() + + +func _on_input_text_submitted(new_text: String) -> void: + _on_search_button_pressed() + + +func _on_replace_toggle_toggled(toggled_on: bool) -> void: + replace_container.visible = toggled_on + if toggled_on: + replace_input.grab_focus() + update_results_view() + + +func _on_replace_input_text_changed(new_text: String) -> void: + update_results_view() + + +func _on_replace_selected_button_pressed() -> void: + replace_results(true) + + +func _on_replace_all_button_pressed() -> void: + replace_results(false) + + +func _on_match_case_button_toggled(toggled_on: bool) -> void: + _on_search_button_pressed() + + +#endregion diff --git a/addons/dialogue_manager/components/find_in_files.gd.uid b/addons/dialogue_manager/components/find_in_files.gd.uid new file mode 100644 index 0000000..380a491 --- /dev/null +++ b/addons/dialogue_manager/components/find_in_files.gd.uid @@ -0,0 +1 @@ +uid://q368fmxxa8sd diff --git a/addons/dialogue_manager/components/find_in_files.tscn b/addons/dialogue_manager/components/find_in_files.tscn new file mode 100644 index 0000000..97fca24 --- /dev/null +++ b/addons/dialogue_manager/components/find_in_files.tscn @@ -0,0 +1,139 @@ +[gd_scene load_steps=3 format=3 uid="uid://0n7hwviyyly4"] + +[ext_resource type="Script" uid="uid://q368fmxxa8sd" path="res://addons/dialogue_manager/components/find_in_files.gd" id="1_3xicy"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_owohg"] +bg_color = Color(0.266667, 0.278431, 0.352941, 0.243137) +corner_detail = 1 + +[node name="FindInFiles" type="Control"] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +script = ExtResource("1_3xicy") + +[node name="VBoxContainer" type="VBoxContainer" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer"] +layout_mode = 2 + +[node name="FindContainer" type="VBoxContainer" parent="VBoxContainer/HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="Label" type="Label" parent="VBoxContainer/HBoxContainer/FindContainer"] +layout_mode = 2 +text = "Find:" + +[node name="Input" type="LineEdit" parent="VBoxContainer/HBoxContainer/FindContainer"] +unique_name_in_owner = true +layout_mode = 2 +clear_button_enabled = true + +[node name="FindToolbar" type="HBoxContainer" parent="VBoxContainer/HBoxContainer/FindContainer"] +layout_mode = 2 + +[node name="SearchButton" type="Button" parent="VBoxContainer/HBoxContainer/FindContainer/FindToolbar"] +unique_name_in_owner = true +layout_mode = 2 +text = "Find all..." + +[node name="MatchCaseButton" type="CheckBox" parent="VBoxContainer/HBoxContainer/FindContainer/FindToolbar"] +unique_name_in_owner = true +layout_mode = 2 +text = "Match case" + +[node name="Control" type="Control" parent="VBoxContainer/HBoxContainer/FindContainer/FindToolbar"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="ReplaceToggle" type="CheckButton" parent="VBoxContainer/HBoxContainer/FindContainer/FindToolbar"] +unique_name_in_owner = true +layout_mode = 2 +text = "Replace" + +[node name="ReplaceContainer" type="VBoxContainer" parent="VBoxContainer/HBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="ReplaceLabel" type="Label" parent="VBoxContainer/HBoxContainer/ReplaceContainer"] +layout_mode = 2 +text = "Replace with:" + +[node name="ReplaceInput" type="LineEdit" parent="VBoxContainer/HBoxContainer/ReplaceContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +clear_button_enabled = true + +[node name="ReplaceToolbar" type="HBoxContainer" parent="VBoxContainer/HBoxContainer/ReplaceContainer"] +layout_mode = 2 + +[node name="ReplaceSelectedButton" type="Button" parent="VBoxContainer/HBoxContainer/ReplaceContainer/ReplaceToolbar"] +unique_name_in_owner = true +layout_mode = 2 +text = "Replace selected" + +[node name="ReplaceAllButton" type="Button" parent="VBoxContainer/HBoxContainer/ReplaceContainer/ReplaceToolbar"] +unique_name_in_owner = true +layout_mode = 2 +text = "Replace all" + +[node name="VBoxContainer" type="VBoxContainer" parent="VBoxContainer"] +layout_mode = 2 + +[node name="ReplaceToolbar" type="HBoxContainer" parent="VBoxContainer/VBoxContainer"] +layout_mode = 2 + +[node name="ScrollContainer" type="ScrollContainer" parent="VBoxContainer"] +layout_mode = 2 +size_flags_vertical = 3 +follow_focus = true + +[node name="ResultsContainer" type="VBoxContainer" parent="VBoxContainer/ScrollContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme_override_constants/separation = 0 + +[node name="ResultTemplate" type="HBoxContainer" parent="."] +unique_name_in_owner = true +layout_mode = 0 +offset_left = 155.0 +offset_top = -74.0 +offset_right = 838.0 +offset_bottom = -51.0 + +[node name="CheckBox" type="CheckBox" parent="ResultTemplate"] +layout_mode = 2 + +[node name="Label" type="RichTextLabel" parent="ResultTemplate"] +layout_mode = 2 +size_flags_horizontal = 3 +focus_mode = 2 +theme_override_styles/focus = SubResource("StyleBoxFlat_owohg") +bbcode_enabled = true +text = "Result" +fit_content = true +scroll_active = false + +[connection signal="text_submitted" from="VBoxContainer/HBoxContainer/FindContainer/Input" to="." method="_on_input_text_submitted"] +[connection signal="pressed" from="VBoxContainer/HBoxContainer/FindContainer/FindToolbar/SearchButton" to="." method="_on_search_button_pressed"] +[connection signal="toggled" from="VBoxContainer/HBoxContainer/FindContainer/FindToolbar/MatchCaseButton" to="." method="_on_match_case_button_toggled"] +[connection signal="toggled" from="VBoxContainer/HBoxContainer/FindContainer/FindToolbar/ReplaceToggle" to="." method="_on_replace_toggle_toggled"] +[connection signal="text_changed" from="VBoxContainer/HBoxContainer/ReplaceContainer/ReplaceInput" to="." method="_on_replace_input_text_changed"] +[connection signal="pressed" from="VBoxContainer/HBoxContainer/ReplaceContainer/ReplaceToolbar/ReplaceSelectedButton" to="." method="_on_replace_selected_button_pressed"] +[connection signal="pressed" from="VBoxContainer/HBoxContainer/ReplaceContainer/ReplaceToolbar/ReplaceAllButton" to="." method="_on_replace_all_button_pressed"] diff --git a/addons/dialogue_manager/components/search_and_replace.gd b/addons/dialogue_manager/components/search_and_replace.gd new file mode 100644 index 0000000..ceb4028 --- /dev/null +++ b/addons/dialogue_manager/components/search_and_replace.gd @@ -0,0 +1,218 @@ +@tool +extends VBoxContainer + + +signal open_requested() +signal close_requested() + + +const DialogueConstants = preload("../constants.gd") + + +@onready var input: LineEdit = $Search/Input +@onready var result_label: Label = $Search/ResultLabel +@onready var previous_button: Button = $Search/PreviousButton +@onready var next_button: Button = $Search/NextButton +@onready var match_case_button: CheckBox = $Search/MatchCaseCheckBox +@onready var replace_check_button: CheckButton = $Search/ReplaceCheckButton +@onready var replace_panel: HBoxContainer = $Replace +@onready var replace_input: LineEdit = $Replace/Input +@onready var replace_button: Button = $Replace/ReplaceButton +@onready var replace_all_button: Button = $Replace/ReplaceAllButton + +# The code edit we will be affecting (for some reason exporting this didn't work) +var code_edit: CodeEdit: + set(next_code_edit): + code_edit = next_code_edit + code_edit.gui_input.connect(_on_text_edit_gui_input) + code_edit.text_changed.connect(_on_text_edit_text_changed) + get: + return code_edit + +var results: Array = [] +var result_index: int = -1: + set(next_result_index): + result_index = next_result_index + if results.size() > 0: + var r = results[result_index] + code_edit.set_caret_line(r[0]) + code_edit.select(r[0], r[1], r[0], r[1] + r[2]) + else: + result_index = -1 + if is_instance_valid(code_edit): + code_edit.deselect() + + result_label.text = DialogueConstants.translate(&"n_of_n").format({ index = result_index + 1, total = results.size() }) + get: + return result_index + + +func _ready() -> void: + apply_theme() + + input.placeholder_text = DialogueConstants.translate(&"search.placeholder") + previous_button.tooltip_text = DialogueConstants.translate(&"search.previous") + next_button.tooltip_text = DialogueConstants.translate(&"search.next") + match_case_button.text = DialogueConstants.translate(&"search.match_case") + $Search/ReplaceCheckButton.text = DialogueConstants.translate(&"search.toggle_replace") + replace_button.text = DialogueConstants.translate(&"search.replace") + replace_all_button.text = DialogueConstants.translate(&"search.replace_all") + $Replace/ReplaceLabel.text = DialogueConstants.translate(&"search.replace_with") + + self.result_index = -1 + + replace_panel.hide() + replace_button.disabled = true + replace_all_button.disabled = true + + hide() + + +func focus_line_edit() -> void: + input.grab_focus() + input.select_all() + + +func apply_theme() -> void: + if is_instance_valid(previous_button): + previous_button.icon = get_theme_icon("ArrowLeft", "EditorIcons") + if is_instance_valid(next_button): + next_button.icon = get_theme_icon("ArrowRight", "EditorIcons") + + +# Find text in the code +func search(text: String = "", default_result_index: int = 0) -> void: + results.clear() + + if text == "": + text = input.text + + var lines = code_edit.text.split("\n") + for line_number in range(0, lines.size()): + var line = lines[line_number] + + var column = find_in_line(line, text, 0) + while column > -1: + results.append([line_number, column, text.length()]) + column = find_in_line(line, text, column + 1) + + if results.size() > 0: + replace_button.disabled = false + replace_all_button.disabled = false + else: + replace_button.disabled = true + replace_all_button.disabled = true + + self.result_index = clamp(default_result_index, 0, results.size() - 1) + + +# Find text in a string and match case if requested +func find_in_line(line: String, text: String, from_index: int = 0) -> int: + if match_case_button.button_pressed: + return line.find(text, from_index) + else: + return line.findn(text, from_index) + + +#region Signals + + +func _on_text_edit_gui_input(event: InputEvent) -> void: + if event is InputEventKey and event.is_pressed(): + match event.as_text(): + "Ctrl+F", "Command+F": + open_requested.emit() + get_viewport().set_input_as_handled() + "Ctrl+Shift+R", "Command+Shift+R": + replace_check_button.set_pressed(true) + open_requested.emit() + get_viewport().set_input_as_handled() + + +func _on_text_edit_text_changed() -> void: + results.clear() + + +func _on_search_and_replace_theme_changed() -> void: + apply_theme() + + +func _on_input_text_changed(new_text: String) -> void: + search(new_text) + + +func _on_previous_button_pressed() -> void: + self.result_index = wrapi(result_index - 1, 0, results.size()) + + +func _on_next_button_pressed() -> void: + self.result_index = wrapi(result_index + 1, 0, results.size()) + + +func _on_search_and_replace_visibility_changed() -> void: + if is_instance_valid(input): + if visible: + input.grab_focus() + var selection = code_edit.get_selected_text() + if input.text == "" and selection != "": + input.text = selection + search(selection) + else: + search() + else: + input.text = "" + + +func _on_input_gui_input(event: InputEvent) -> void: + if event is InputEventKey and event.is_pressed(): + match event.as_text(): + "Enter": + search(input.text) + "Escape": + emit_signal("close_requested") + + +func _on_replace_button_pressed() -> void: + if result_index == -1: return + + # Replace the selection at result index + var r: Array = results[result_index] + code_edit.begin_complex_operation() + var lines: PackedStringArray = code_edit.text.split("\n") + var line: String = lines[r[0]] + line = line.substr(0, r[1]) + replace_input.text + line.substr(r[1] + r[2]) + lines[r[0]] = line + code_edit.text = "\n".join(lines) + code_edit.end_complex_operation() + code_edit.text_changed.emit() + + search(input.text, result_index) + + +func _on_replace_all_button_pressed() -> void: + if match_case_button.button_pressed: + code_edit.text = code_edit.text.replace(input.text, replace_input.text) + else: + code_edit.text = code_edit.text.replacen(input.text, replace_input.text) + search() + code_edit.text_changed.emit() + + +func _on_replace_check_button_toggled(button_pressed: bool) -> void: + replace_panel.visible = button_pressed + if button_pressed: + replace_input.grab_focus() + + +func _on_input_focus_entered() -> void: + if results.size() == 0: + search() + else: + self.result_index = result_index + + +func _on_match_case_check_box_toggled(button_pressed: bool) -> void: + search() + + +#endregion diff --git a/addons/dialogue_manager/components/search_and_replace.gd.uid b/addons/dialogue_manager/components/search_and_replace.gd.uid new file mode 100644 index 0000000..66ec826 --- /dev/null +++ b/addons/dialogue_manager/components/search_and_replace.gd.uid @@ -0,0 +1 @@ +uid://cijsmjkq21cdq diff --git a/addons/dialogue_manager/components/search_and_replace.tscn b/addons/dialogue_manager/components/search_and_replace.tscn new file mode 100644 index 0000000..52721c4 --- /dev/null +++ b/addons/dialogue_manager/components/search_and_replace.tscn @@ -0,0 +1,87 @@ +[gd_scene load_steps=2 format=3 uid="uid://gr8nakpbrhby"] + +[ext_resource type="Script" uid="uid://cijsmjkq21cdq" path="res://addons/dialogue_manager/components/search_and_replace.gd" id="1_8oj1f"] + +[node name="SearchAndReplace" type="VBoxContainer"] +visible = false +anchors_preset = 10 +anchor_right = 1.0 +offset_bottom = 31.0 +grow_horizontal = 2 +size_flags_horizontal = 3 +script = ExtResource("1_8oj1f") + +[node name="Search" type="HBoxContainer" parent="."] +layout_mode = 2 + +[node name="Input" type="LineEdit" parent="Search"] +layout_mode = 2 +size_flags_horizontal = 3 +placeholder_text = "Text to search for" +metadata/_edit_use_custom_anchors = true + +[node name="MatchCaseCheckBox" type="CheckBox" parent="Search"] +layout_mode = 2 +text = "Match case" + +[node name="VSeparator" type="VSeparator" parent="Search"] +layout_mode = 2 + +[node name="PreviousButton" type="Button" parent="Search"] +layout_mode = 2 +tooltip_text = "Previous" +flat = true + +[node name="ResultLabel" type="Label" parent="Search"] +layout_mode = 2 +text = "0 of 0" + +[node name="NextButton" type="Button" parent="Search"] +layout_mode = 2 +tooltip_text = "Next" +flat = true + +[node name="VSeparator2" type="VSeparator" parent="Search"] +layout_mode = 2 + +[node name="ReplaceCheckButton" type="CheckButton" parent="Search"] +layout_mode = 2 +text = "Replace" + +[node name="Replace" type="HBoxContainer" parent="."] +visible = false +layout_mode = 2 + +[node name="ReplaceLabel" type="Label" parent="Replace"] +layout_mode = 2 +text = "Replace with:" + +[node name="Input" type="LineEdit" parent="Replace"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="ReplaceButton" type="Button" parent="Replace"] +layout_mode = 2 +disabled = true +text = "Replace" +flat = true + +[node name="ReplaceAllButton" type="Button" parent="Replace"] +layout_mode = 2 +disabled = true +text = "Replace all" +flat = true + +[connection signal="theme_changed" from="." to="." method="_on_search_and_replace_theme_changed"] +[connection signal="visibility_changed" from="." to="." method="_on_search_and_replace_visibility_changed"] +[connection signal="focus_entered" from="Search/Input" to="." method="_on_input_focus_entered"] +[connection signal="gui_input" from="Search/Input" to="." method="_on_input_gui_input"] +[connection signal="text_changed" from="Search/Input" to="." method="_on_input_text_changed"] +[connection signal="toggled" from="Search/MatchCaseCheckBox" to="." method="_on_match_case_check_box_toggled"] +[connection signal="pressed" from="Search/PreviousButton" to="." method="_on_previous_button_pressed"] +[connection signal="pressed" from="Search/NextButton" to="." method="_on_next_button_pressed"] +[connection signal="toggled" from="Search/ReplaceCheckButton" to="." method="_on_replace_check_button_toggled"] +[connection signal="focus_entered" from="Replace/Input" to="." method="_on_input_focus_entered"] +[connection signal="gui_input" from="Replace/Input" to="." method="_on_input_gui_input"] +[connection signal="pressed" from="Replace/ReplaceButton" to="." method="_on_replace_button_pressed"] +[connection signal="pressed" from="Replace/ReplaceAllButton" to="." method="_on_replace_all_button_pressed"] diff --git a/addons/dialogue_manager/components/title_list.gd b/addons/dialogue_manager/components/title_list.gd new file mode 100644 index 0000000..67cdcf0 --- /dev/null +++ b/addons/dialogue_manager/components/title_list.gd @@ -0,0 +1,69 @@ +@tool +extends VBoxContainer + +signal title_selected(title: String) + + +const DialogueConstants = preload("../constants.gd") + + +@onready var filter_edit: LineEdit = $FilterEdit +@onready var list: ItemList = $List + +var titles: PackedStringArray: + set(next_titles): + titles = next_titles + apply_filter() + get: + return titles + +var filter: String: + set(next_filter): + filter = next_filter + apply_filter() + get: + return filter + + +func _ready() -> void: + apply_theme() + + filter_edit.placeholder_text = DialogueConstants.translate(&"titles_list.filter") + + +func select_title(title: String) -> void: + list.deselect_all() + for i in range(0, list.get_item_count()): + if list.get_item_text(i) == title.strip_edges(): + list.select(i) + + +func apply_filter() -> void: + list.clear() + for title in titles: + if filter == "" or filter.to_lower() in title.to_lower(): + list.add_item(title.strip_edges()) + + +func apply_theme() -> void: + if is_instance_valid(filter_edit): + filter_edit.right_icon = get_theme_icon("Search", "EditorIcons") + if is_instance_valid(list): + list.add_theme_stylebox_override("panel", get_theme_stylebox("panel", "Panel")) + + +### Signals + + +func _on_theme_changed() -> void: + apply_theme() + + +func _on_filter_edit_text_changed(new_text: String) -> void: + self.filter = new_text + + +func _on_list_item_clicked(index: int, at_position: Vector2, mouse_button_index: int) -> void: + if mouse_button_index == MOUSE_BUTTON_LEFT: + var title = list.get_item_text(index) + title_selected.emit(title) diff --git a/addons/dialogue_manager/components/title_list.gd.uid b/addons/dialogue_manager/components/title_list.gd.uid new file mode 100644 index 0000000..325ca61 --- /dev/null +++ b/addons/dialogue_manager/components/title_list.gd.uid @@ -0,0 +1 @@ +uid://d0k2wndjj0ifm diff --git a/addons/dialogue_manager/components/title_list.tscn b/addons/dialogue_manager/components/title_list.tscn new file mode 100644 index 0000000..ac2b983 --- /dev/null +++ b/addons/dialogue_manager/components/title_list.tscn @@ -0,0 +1,27 @@ +[gd_scene load_steps=2 format=3 uid="uid://ctns6ouwwd68i"] + +[ext_resource type="Script" uid="uid://d0k2wndjj0ifm" path="res://addons/dialogue_manager/components/title_list.gd" id="1_5qqmd"] + +[node name="TitleList" type="VBoxContainer"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +script = ExtResource("1_5qqmd") + +[node name="FilterEdit" type="LineEdit" parent="."] +layout_mode = 2 +placeholder_text = "Filter titles" +clear_button_enabled = true + +[node name="List" type="ItemList" parent="."] +layout_mode = 2 +size_flags_vertical = 3 +allow_reselect = true + +[connection signal="theme_changed" from="." to="." method="_on_theme_changed"] +[connection signal="text_changed" from="FilterEdit" to="." method="_on_filter_edit_text_changed"] +[connection signal="item_clicked" from="List" to="." method="_on_list_item_clicked"] diff --git a/addons/dialogue_manager/components/update_button.gd b/addons/dialogue_manager/components/update_button.gd new file mode 100644 index 0000000..cf3f1b9 --- /dev/null +++ b/addons/dialogue_manager/components/update_button.gd @@ -0,0 +1,125 @@ +@tool +extends Button + +const DialogueConstants = preload("../constants.gd") +const DialogueSettings = preload("../settings.gd") + +const REMOTE_RELEASES_URL = "https://api.github.com/repos/nathanhoad/godot_dialogue_manager/releases" + + +@onready var http_request: HTTPRequest = $HTTPRequest +@onready var download_dialog: AcceptDialog = $DownloadDialog +@onready var download_update_panel = $DownloadDialog/DownloadUpdatePanel +@onready var needs_reload_dialog: AcceptDialog = $NeedsReloadDialog +@onready var update_failed_dialog: AcceptDialog = $UpdateFailedDialog +@onready var timer: Timer = $Timer + +var needs_reload: bool = false + +# A lambda that gets called just before refreshing the plugin. Return false to stop the reload. +var on_before_refresh: Callable = func(): return true + + +func _ready() -> void: + hide() + apply_theme() + + # Check for updates on GitHub + check_for_update() + + # Check again every few hours + timer.start(60 * 60 * 12) + + +# Convert a version number to an actually comparable number +func version_to_number(version: String) -> int: + var bits = version.split(".") + return bits[0].to_int() * 1000000 + bits[1].to_int() * 1000 + bits[2].to_int() + + +func apply_theme() -> void: + var color: Color = get_theme_color("success_color", "Editor") + + if needs_reload: + color = get_theme_color("error_color", "Editor") + icon = get_theme_icon("Reload", "EditorIcons") + add_theme_color_override("icon_normal_color", color) + add_theme_color_override("icon_focus_color", color) + add_theme_color_override("icon_hover_color", color) + + add_theme_color_override("font_color", color) + add_theme_color_override("font_focus_color", color) + add_theme_color_override("font_hover_color", color) + + +func check_for_update() -> void: + if DialogueSettings.get_user_value("check_for_updates", true): + http_request.request(REMOTE_RELEASES_URL) + + +### Signals + + +func _on_http_request_request_completed(result: int, response_code: int, headers: PackedStringArray, body: PackedByteArray) -> void: + if result != HTTPRequest.RESULT_SUCCESS: return + + var current_version: String = Engine.get_meta("DialogueManagerPlugin").get_version() + + # Work out the next version from the releases information on GitHub + var response = JSON.parse_string(body.get_string_from_utf8()) + if typeof(response) != TYPE_ARRAY: return + + # GitHub releases are in order of creation, not order of version + var versions = (response as Array).filter(func(release): + var version: String = release.tag_name.substr(1) + var major_version: int = version.split(".")[0].to_int() + var current_major_version: int = current_version.split(".")[0].to_int() + return major_version == current_major_version and version_to_number(version) > version_to_number(current_version) + ) + if versions.size() > 0: + download_update_panel.next_version_release = versions[0] + text = DialogueConstants.translate(&"update.available").format({ version = versions[0].tag_name.substr(1) }) + show() + + +func _on_update_button_pressed() -> void: + if needs_reload: + var will_refresh = on_before_refresh.call() + if will_refresh: + EditorInterface.restart_editor(true) + else: + var scale: float = EditorInterface.get_editor_scale() + download_dialog.min_size = Vector2(300, 250) * scale + download_dialog.popup_centered() + + +func _on_download_dialog_close_requested() -> void: + download_dialog.hide() + + +func _on_download_update_panel_updated(updated_to_version: String) -> void: + download_dialog.hide() + + needs_reload_dialog.dialog_text = DialogueConstants.translate(&"update.needs_reload") + needs_reload_dialog.ok_button_text = DialogueConstants.translate(&"update.reload_ok_button") + needs_reload_dialog.cancel_button_text = DialogueConstants.translate(&"update.reload_cancel_button") + needs_reload_dialog.popup_centered() + + needs_reload = true + text = DialogueConstants.translate(&"update.reload_project") + apply_theme() + + +func _on_download_update_panel_failed() -> void: + download_dialog.hide() + update_failed_dialog.dialog_text = DialogueConstants.translate(&"update.failed") + update_failed_dialog.popup_centered() + + +func _on_needs_reload_dialog_confirmed() -> void: + EditorInterface.restart_editor(true) + + +func _on_timer_timeout() -> void: + if not needs_reload: + check_for_update() diff --git a/addons/dialogue_manager/components/update_button.gd.uid b/addons/dialogue_manager/components/update_button.gd.uid new file mode 100644 index 0000000..9981132 --- /dev/null +++ b/addons/dialogue_manager/components/update_button.gd.uid @@ -0,0 +1 @@ +uid://cr1tt12dh5ecr diff --git a/addons/dialogue_manager/components/update_button.tscn b/addons/dialogue_manager/components/update_button.tscn new file mode 100644 index 0000000..6cff347 --- /dev/null +++ b/addons/dialogue_manager/components/update_button.tscn @@ -0,0 +1,42 @@ +[gd_scene load_steps=3 format=3 uid="uid://co8yl23idiwbi"] + +[ext_resource type="Script" uid="uid://cr1tt12dh5ecr" path="res://addons/dialogue_manager/components/update_button.gd" id="1_d2tpb"] +[ext_resource type="PackedScene" uid="uid://qdxrxv3c3hxk" path="res://addons/dialogue_manager/components/download_update_panel.tscn" id="2_iwm7r"] + +[node name="UpdateButton" type="Button"] +visible = false +offset_right = 8.0 +offset_bottom = 8.0 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_colors/font_hover_color = Color(0, 0, 0, 1) +theme_override_colors/font_focus_color = Color(0, 0, 0, 1) +text = "v2.9.0 available" +flat = true +script = ExtResource("1_d2tpb") + +[node name="HTTPRequest" type="HTTPRequest" parent="."] + +[node name="DownloadDialog" type="AcceptDialog" parent="."] +title = "Download update" +size = Vector2i(400, 300) +unresizable = true +min_size = Vector2i(300, 250) +ok_button_text = "Close" + +[node name="DownloadUpdatePanel" parent="DownloadDialog" instance=ExtResource("2_iwm7r")] + +[node name="UpdateFailedDialog" type="AcceptDialog" parent="."] +dialog_text = "You have been updated to version 2.4.3" + +[node name="NeedsReloadDialog" type="ConfirmationDialog" parent="."] + +[node name="Timer" type="Timer" parent="."] +wait_time = 14400.0 + +[connection signal="pressed" from="." to="." method="_on_update_button_pressed"] +[connection signal="request_completed" from="HTTPRequest" to="." method="_on_http_request_request_completed"] +[connection signal="close_requested" from="DownloadDialog" to="." method="_on_download_dialog_close_requested"] +[connection signal="failed" from="DownloadDialog/DownloadUpdatePanel" to="." method="_on_download_update_panel_failed"] +[connection signal="updated" from="DownloadDialog/DownloadUpdatePanel" to="." method="_on_download_update_panel_updated"] +[connection signal="confirmed" from="NeedsReloadDialog" to="." method="_on_needs_reload_dialog_confirmed"] +[connection signal="timeout" from="Timer" to="." method="_on_timer_timeout"] diff --git a/addons/dialogue_manager/constants.gd b/addons/dialogue_manager/constants.gd new file mode 100644 index 0000000..fe85ecc --- /dev/null +++ b/addons/dialogue_manager/constants.gd @@ -0,0 +1,226 @@ +class_name DMConstants extends RefCounted + + +const USER_CONFIG_PATH = "user://dialogue_manager_user_config.json" +const CACHE_PATH = "user://dialogue_manager_cache.json" + + +enum MutationBehaviour { + Wait, + DoNotWait, + Skip +} + +enum TranslationSource { + None, + Guess, + CSV, + PO +} + +# Token types + +const TOKEN_FUNCTION = &"function" +const TOKEN_DICTIONARY_REFERENCE = &"dictionary_reference" +const TOKEN_DICTIONARY_NESTED_REFERENCE = &"dictionary_nested_reference" +const TOKEN_GROUP = &"group" +const TOKEN_ARRAY = &"array" +const TOKEN_DICTIONARY = &"dictionary" +const TOKEN_PARENS_OPEN = &"parens_open" +const TOKEN_PARENS_CLOSE = &"parens_close" +const TOKEN_BRACKET_OPEN = &"bracket_open" +const TOKEN_BRACKET_CLOSE = &"bracket_close" +const TOKEN_BRACE_OPEN = &"brace_open" +const TOKEN_BRACE_CLOSE = &"brace_close" +const TOKEN_COLON = &"colon" +const TOKEN_COMPARISON = &"comparison" +const TOKEN_ASSIGNMENT = &"assignment" +const TOKEN_OPERATOR = &"operator" +const TOKEN_COMMA = &"comma" +const TOKEN_NULL_COALESCE = &"null_coalesce" +const TOKEN_DOT = &"dot" +const TOKEN_CONDITION = &"condition" +const TOKEN_BOOL = &"bool" +const TOKEN_NOT = &"not" +const TOKEN_AND_OR = &"and_or" +const TOKEN_STRING = &"string" +const TOKEN_NUMBER = &"number" +const TOKEN_VARIABLE = &"variable" +const TOKEN_COMMENT = &"comment" + +const TOKEN_VALUE = &"value" +const TOKEN_ERROR = &"error" + +# Line types + +const TYPE_UNKNOWN = &"" +const TYPE_IMPORT = &"import" +const TYPE_USING = &"using" +const TYPE_COMMENT = &"comment" +const TYPE_RESPONSE = &"response" +const TYPE_TITLE = &"title" +const TYPE_CONDITION = &"condition" +const TYPE_WHILE = &"while" +const TYPE_MATCH = &"match" +const TYPE_WHEN = &"when" +const TYPE_MUTATION = &"mutation" +const TYPE_GOTO = &"goto" +const TYPE_DIALOGUE = &"dialogue" +const TYPE_RANDOM = &"random" +const TYPE_ERROR = &"error" + +# Line IDs + +const ID_NULL = &"" +const ID_ERROR = &"error" +const ID_ERROR_INVALID_TITLE = &"invalid title" +const ID_ERROR_TITLE_HAS_NO_BODY = &"title has no body" +const ID_END = &"end" +const ID_END_CONVERSATION = &"end!" + +# Errors + +const ERR_ERRORS_IN_IMPORTED_FILE = 100 +const ERR_FILE_ALREADY_IMPORTED = 101 +const ERR_DUPLICATE_IMPORT_NAME = 102 +const ERR_EMPTY_TITLE = 103 +const ERR_DUPLICATE_TITLE = 104 +const ERR_TITLE_INVALID_CHARACTERS = 106 +const ERR_UNKNOWN_TITLE = 107 +const ERR_INVALID_TITLE_REFERENCE = 108 +const ERR_TITLE_REFERENCE_HAS_NO_CONTENT = 109 +const ERR_INVALID_EXPRESSION = 110 +const ERR_UNEXPECTED_CONDITION = 111 +const ERR_DUPLICATE_ID = 112 +const ERR_MISSING_ID = 113 +const ERR_INVALID_INDENTATION = 114 +const ERR_INVALID_CONDITION_INDENTATION = 115 +const ERR_INCOMPLETE_EXPRESSION = 116 +const ERR_INVALID_EXPRESSION_FOR_VALUE = 117 +const ERR_UNKNOWN_LINE_SYNTAX = 118 +const ERR_TITLE_BEGINS_WITH_NUMBER = 119 +const ERR_UNEXPECTED_END_OF_EXPRESSION = 120 +const ERR_UNEXPECTED_FUNCTION = 121 +const ERR_UNEXPECTED_BRACKET = 122 +const ERR_UNEXPECTED_CLOSING_BRACKET = 123 +const ERR_MISSING_CLOSING_BRACKET = 124 +const ERR_UNEXPECTED_OPERATOR = 125 +const ERR_UNEXPECTED_COMMA = 126 +const ERR_UNEXPECTED_COLON = 127 +const ERR_UNEXPECTED_DOT = 128 +const ERR_UNEXPECTED_BOOLEAN = 129 +const ERR_UNEXPECTED_STRING = 130 +const ERR_UNEXPECTED_NUMBER = 131 +const ERR_UNEXPECTED_VARIABLE = 132 +const ERR_INVALID_INDEX = 133 +const ERR_UNEXPECTED_ASSIGNMENT = 134 +const ERR_UNKNOWN_USING = 135 +const ERR_EXPECTED_WHEN_OR_ELSE = 136 +const ERR_ONLY_ONE_ELSE_ALLOWED = 137 +const ERR_WHEN_MUST_BELONG_TO_MATCH = 138 +const ERR_CONCURRENT_LINE_WITHOUT_ORIGIN = 139 +const ERR_GOTO_NOT_ALLOWED_ON_CONCURRECT_LINES = 140 +const ERR_UNEXPECTED_SYNTAX_ON_NESTED_DIALOGUE_LINE = 141 +const ERR_NESTED_DIALOGUE_INVALID_JUMP = 142 + + +## Get the error message +static func get_error_message(error: int) -> String: + match error: + ERR_ERRORS_IN_IMPORTED_FILE: + return translate(&"errors.import_errors") + ERR_FILE_ALREADY_IMPORTED: + return translate(&"errors.already_imported") + ERR_DUPLICATE_IMPORT_NAME: + return translate(&"errors.duplicate_import") + ERR_EMPTY_TITLE: + return translate(&"errors.empty_title") + ERR_DUPLICATE_TITLE: + return translate(&"errors.duplicate_title") + ERR_TITLE_INVALID_CHARACTERS: + return translate(&"errors.invalid_title_string") + ERR_TITLE_BEGINS_WITH_NUMBER: + return translate(&"errors.invalid_title_number") + ERR_UNKNOWN_TITLE: + return translate(&"errors.unknown_title") + ERR_INVALID_TITLE_REFERENCE: + return translate(&"errors.jump_to_invalid_title") + ERR_TITLE_REFERENCE_HAS_NO_CONTENT: + return translate(&"errors.title_has_no_content") + ERR_INVALID_EXPRESSION: + return translate(&"errors.invalid_expression") + ERR_UNEXPECTED_CONDITION: + return translate(&"errors.unexpected_condition") + ERR_DUPLICATE_ID: + return translate(&"errors.duplicate_id") + ERR_MISSING_ID: + return translate(&"errors.missing_id") + ERR_INVALID_INDENTATION: + return translate(&"errors.invalid_indentation") + ERR_INVALID_CONDITION_INDENTATION: + return translate(&"errors.condition_has_no_content") + ERR_INCOMPLETE_EXPRESSION: + return translate(&"errors.incomplete_expression") + ERR_INVALID_EXPRESSION_FOR_VALUE: + return translate(&"errors.invalid_expression_for_value") + ERR_FILE_NOT_FOUND: + return translate(&"errors.file_not_found") + ERR_UNEXPECTED_END_OF_EXPRESSION: + return translate(&"errors.unexpected_end_of_expression") + ERR_UNEXPECTED_FUNCTION: + return translate(&"errors.unexpected_function") + ERR_UNEXPECTED_BRACKET: + return translate(&"errors.unexpected_bracket") + ERR_UNEXPECTED_CLOSING_BRACKET: + return translate(&"errors.unexpected_closing_bracket") + ERR_MISSING_CLOSING_BRACKET: + return translate(&"errors.missing_closing_bracket") + ERR_UNEXPECTED_OPERATOR: + return translate(&"errors.unexpected_operator") + ERR_UNEXPECTED_COMMA: + return translate(&"errors.unexpected_comma") + ERR_UNEXPECTED_COLON: + return translate(&"errors.unexpected_colon") + ERR_UNEXPECTED_DOT: + return translate(&"errors.unexpected_dot") + ERR_UNEXPECTED_BOOLEAN: + return translate(&"errors.unexpected_boolean") + ERR_UNEXPECTED_STRING: + return translate(&"errors.unexpected_string") + ERR_UNEXPECTED_NUMBER: + return translate(&"errors.unexpected_number") + ERR_UNEXPECTED_VARIABLE: + return translate(&"errors.unexpected_variable") + ERR_INVALID_INDEX: + return translate(&"errors.invalid_index") + ERR_UNEXPECTED_ASSIGNMENT: + return translate(&"errors.unexpected_assignment") + ERR_UNKNOWN_USING: + return translate(&"errors.unknown_using") + ERR_EXPECTED_WHEN_OR_ELSE: + return translate(&"errors.expected_when_or_else") + ERR_ONLY_ONE_ELSE_ALLOWED: + return translate(&"errors.only_one_else_allowed") + ERR_WHEN_MUST_BELONG_TO_MATCH: + return translate(&"errors.when_must_belong_to_match") + ERR_CONCURRENT_LINE_WITHOUT_ORIGIN: + return translate(&"errors.concurrent_line_without_origin") + ERR_GOTO_NOT_ALLOWED_ON_CONCURRECT_LINES: + return translate(&"errors.goto_not_allowed_on_concurrect_lines") + ERR_UNEXPECTED_SYNTAX_ON_NESTED_DIALOGUE_LINE: + return translate(&"errors.unexpected_syntax_on_nested_dialogue_line") + ERR_NESTED_DIALOGUE_INVALID_JUMP: + return translate(&"errors.err_nested_dialogue_invalid_jump") + + return translate(&"errors.unknown") + + +static func translate(string: String) -> String: + var base_path = new().get_script().resource_path.get_base_dir() + + var language: String = TranslationServer.get_tool_locale() + var translations_path: String = "%s/l10n/%s.po" % [base_path, language] + var fallback_translations_path: String = "%s/l10n/%s.po" % [base_path, TranslationServer.get_tool_locale().substr(0, 2)] + var en_translations_path: String = "%s/l10n/en.po" % base_path + var translations: Translation = load(translations_path if FileAccess.file_exists(translations_path) else (fallback_translations_path if FileAccess.file_exists(fallback_translations_path) else en_translations_path)) + return translations.get_message(string) diff --git a/addons/dialogue_manager/constants.gd.uid b/addons/dialogue_manager/constants.gd.uid new file mode 100644 index 0000000..f431917 --- /dev/null +++ b/addons/dialogue_manager/constants.gd.uid @@ -0,0 +1 @@ +uid://b1oarbmjtyesf diff --git a/addons/dialogue_manager/dialogue_label.gd b/addons/dialogue_manager/dialogue_label.gd new file mode 100644 index 0000000..da07b45 --- /dev/null +++ b/addons/dialogue_manager/dialogue_label.gd @@ -0,0 +1,232 @@ +@icon("./assets/icon.svg") + +@tool + +## A RichTextLabel specifically for use with [b]Dialogue Manager[/b] dialogue. +class_name DialogueLabel extends RichTextLabel + + +## Emitted for each letter typed out. +signal spoke(letter: String, letter_index: int, speed: float) + +## Emitted when typing paused for a `[wait]` +signal paused_typing(duration: float) + +## Emitted when the player skips the typing of dialogue. +signal skipped_typing() + +## Emitted when typing finishes. +signal finished_typing() + + +# The action to press to skip typing. +@export var skip_action: StringName = &"ui_cancel" + +## The speed with which the text types out. +@export var seconds_per_step: float = 0.02 + +## Automatically have a brief pause when these characters are encountered. +@export var pause_at_characters: String = ".?!" + +## Don't auto pause if the character after the pause is one of these. +@export var skip_pause_at_character_if_followed_by: String = ")\"" + +## Don't auto pause after these abbreviations (only if "." is in `pause_at_characters`).[br] +## Abbreviations are limitted to 5 characters in length [br] +## Does not support multi-period abbreviations (ex. "p.m.") +@export var skip_pause_at_abbreviations: PackedStringArray = ["Mr", "Mrs", "Ms", "Dr", "etc", "eg", "ex"] + +## The amount of time to pause when exposing a character present in `pause_at_characters`. +@export var seconds_per_pause_step: float = 0.3 + +var _already_mutated_indices: PackedInt32Array = [] + + +## The current line of dialogue. +var dialogue_line: + set(next_dialogue_line): + dialogue_line = next_dialogue_line + custom_minimum_size = Vector2.ZERO + text = "" + text = dialogue_line.text + get: + return dialogue_line + +## Whether the label is currently typing itself out. +var is_typing: bool = false: + set(value): + var is_finished: bool = is_typing != value and value == false + is_typing = value + if is_finished: + finished_typing.emit() + get: + return is_typing + +var _last_wait_index: int = -1 +var _last_mutation_index: int = -1 +var _waiting_seconds: float = 0 +var _is_awaiting_mutation: bool = false + + +func _process(delta: float) -> void: + if self.is_typing: + # Type out text + if visible_ratio < 1: + # See if we are waiting + if _waiting_seconds > 0: + _waiting_seconds = _waiting_seconds - delta + # If we are no longer waiting then keep typing + if _waiting_seconds <= 0: + _type_next(delta, _waiting_seconds) + else: + # Make sure any mutations at the end of the line get run + _mutate_inline_mutations(get_total_character_count()) + self.is_typing = false + + +func _unhandled_input(event: InputEvent) -> void: + # Note: this will no longer be reached if using Dialogue Manager > 2.32.2. To make skip handling + # simpler (so all of mouse/keyboard/joypad are together) it is now the responsibility of the + # dialogue balloon. + if self.is_typing and visible_ratio < 1 and InputMap.has_action(skip_action) and event.is_action_pressed(skip_action): + get_viewport().set_input_as_handled() + skip_typing() + + +## Start typing out the text +func type_out() -> void: + text = dialogue_line.text + visible_characters = 0 + visible_ratio = 0 + _waiting_seconds = 0 + _last_wait_index = -1 + _last_mutation_index = -1 + _already_mutated_indices.clear() + + self.is_typing = true + + # Allow typing listeners a chance to connect + await get_tree().process_frame + + if get_total_character_count() == 0: + self.is_typing = false + elif seconds_per_step == 0: + _mutate_remaining_mutations() + visible_characters = get_total_character_count() + self.is_typing = false + + +## Stop typing out the text and jump right to the end +func skip_typing() -> void: + _mutate_remaining_mutations() + visible_characters = get_total_character_count() + self.is_typing = false + skipped_typing.emit() + + +# Type out the next character(s) +func _type_next(delta: float, seconds_needed: float) -> void: + if _is_awaiting_mutation: return + + if visible_characters == get_total_character_count(): + return + + if _last_mutation_index != visible_characters: + _last_mutation_index = visible_characters + _mutate_inline_mutations(visible_characters) + if _is_awaiting_mutation: return + + var additional_waiting_seconds: float = _get_pause(visible_characters) + + # Pause on characters like "." + if _should_auto_pause(): + additional_waiting_seconds += seconds_per_pause_step + + # Pause at literal [wait] directives + if _last_wait_index != visible_characters and additional_waiting_seconds > 0: + _last_wait_index = visible_characters + _waiting_seconds += additional_waiting_seconds + paused_typing.emit(_get_pause(visible_characters)) + else: + visible_characters += 1 + if visible_characters <= get_total_character_count(): + spoke.emit(get_parsed_text()[visible_characters - 1], visible_characters - 1, _get_speed(visible_characters)) + # See if there's time to type out some more in this frame + seconds_needed += seconds_per_step * (1.0 / _get_speed(visible_characters)) + if seconds_needed > delta: + _waiting_seconds += seconds_needed + else: + _type_next(delta, seconds_needed) + + +# Get the pause for the current typing position if there is one +func _get_pause(at_index: int) -> float: + return dialogue_line.pauses.get(at_index, 0) + + +# Get the speed for the current typing position +func _get_speed(at_index: int) -> float: + var speed: float = 1 + for index in dialogue_line.speeds: + if index > at_index: + return speed + speed = dialogue_line.speeds[index] + return speed + + +# Run any inline mutations that haven't been run yet +func _mutate_remaining_mutations() -> void: + for i in range(visible_characters, get_total_character_count() + 1): + _mutate_inline_mutations(i) + + +# Run any mutations at the current typing position +func _mutate_inline_mutations(index: int) -> void: + for inline_mutation in dialogue_line.inline_mutations: + # inline mutations are an array of arrays in the form of [character index, resolvable function] + if inline_mutation[0] > index: + return + if inline_mutation[0] == index and not _already_mutated_indices.has(index): + _is_awaiting_mutation = true + # The DialogueManager can't be referenced directly here so we need to get it by its path + await Engine.get_singleton("DialogueManager")._mutate(inline_mutation[1], dialogue_line.extra_game_states, true) + _is_awaiting_mutation = false + + _already_mutated_indices.append(index) + + +# Determine if the current autopause character at the cursor should qualify to pause typing. +func _should_auto_pause() -> bool: + if visible_characters == 0: return false + + var parsed_text: String = get_parsed_text() + + # Avoid outofbounds when the label auto-translates and the text changes to one shorter while typing out + # Note: visible characters can be larger than parsed_text after a translation event + if visible_characters >= parsed_text.length(): return false + + # Ignore pause characters if they are next to a non-pause character + if parsed_text[visible_characters] in skip_pause_at_character_if_followed_by.split(): + return false + + # Ignore "." if it's between two numbers + if visible_characters > 3 and parsed_text[visible_characters - 1] == ".": + var possible_number: String = parsed_text.substr(visible_characters - 2, 3) + if str(float(possible_number)).pad_decimals(1) == possible_number: + return false + + # Ignore "." if it's used in an abbreviation + # Note: does NOT support multi-period abbreviations (ex. p.m.) + if "." in pause_at_characters and parsed_text[visible_characters - 1] == ".": + for abbreviation in skip_pause_at_abbreviations: + if visible_characters >= abbreviation.length(): + var previous_characters: String = parsed_text.substr(visible_characters - abbreviation.length() - 1, abbreviation.length()) + if previous_characters == abbreviation: + return false + + # Ignore two non-"." characters next to each other + var other_pause_characters: PackedStringArray = pause_at_characters.replace(".", "").split() + if visible_characters > 1 and parsed_text[visible_characters - 1] in other_pause_characters and parsed_text[visible_characters] in other_pause_characters: + return false + + return parsed_text[visible_characters - 1] in pause_at_characters.split() diff --git a/addons/dialogue_manager/dialogue_label.gd.uid b/addons/dialogue_manager/dialogue_label.gd.uid new file mode 100644 index 0000000..6bf86b1 --- /dev/null +++ b/addons/dialogue_manager/dialogue_label.gd.uid @@ -0,0 +1 @@ +uid://g32um0mltv5d diff --git a/addons/dialogue_manager/dialogue_label.tscn b/addons/dialogue_manager/dialogue_label.tscn new file mode 100644 index 0000000..0095933 --- /dev/null +++ b/addons/dialogue_manager/dialogue_label.tscn @@ -0,0 +1,19 @@ +[gd_scene load_steps=2 format=3 uid="uid://ckvgyvclnwggo"] + +[ext_resource type="Script" uid="uid://g32um0mltv5d" path="res://addons/dialogue_manager/dialogue_label.gd" id="1_cital"] + +[node name="DialogueLabel" type="RichTextLabel"] +anchors_preset = 10 +anchor_right = 1.0 +grow_horizontal = 2 +mouse_filter = 1 +bbcode_enabled = true +fit_content = true +scroll_active = false +shortcut_keys_enabled = false +meta_underlined = false +hint_underlined = false +deselect_on_focus_loss_enabled = false +visible_characters_behavior = 1 +script = ExtResource("1_cital") +skip_pause_at_abbreviations = PackedStringArray("Mr", "Mrs", "Ms", "Dr", "etc", "eg", "ex") diff --git a/addons/dialogue_manager/dialogue_line.gd b/addons/dialogue_manager/dialogue_line.gd new file mode 100644 index 0000000..7213854 --- /dev/null +++ b/addons/dialogue_manager/dialogue_line.gd @@ -0,0 +1,99 @@ +## A line of dialogue returned from [code]DialogueManager[/code]. +class_name DialogueLine extends RefCounted + + +## The ID of this line +var id: String + +## The internal type of this dialogue object. One of [code]TYPE_DIALOGUE[/code] or [code]TYPE_MUTATION[/code] +var type: String = DMConstants.TYPE_DIALOGUE + +## The next line ID after this line. +var next_id: String = "" + +## The character name that is saying this line. +var character: String = "" + +## A dictionary of variable replacements fo the character name. Generally for internal use only. +var character_replacements: Array[Dictionary] = [] + +## The dialogue being spoken. +var text: String = "" + +## A dictionary of replacements for the text. Generally for internal use only. +var text_replacements: Array[Dictionary] = [] + +## The key to use for translating this line. +var translation_key: String = "" + +## A map for when and for how long to pause while typing out the dialogue text. +var pauses: Dictionary = {} + +## A map for speed changes when typing out the dialogue text. +var speeds: Dictionary = {} + +## A map of any mutations to run while typing out the dialogue text. +var inline_mutations: Array[Array] = [] + +## A list of responses attached to this line of dialogue. +var responses: Array = [] + +## A list of lines that are spoken simultaneously with this one. +var concurrent_lines: Array[DialogueLine] = [] + +## A list of any extra game states to check when resolving variables and mutations. +var extra_game_states: Array = [] + +## How long to show this line before advancing to the next. Either a float (of seconds), [code]"auto"[/code], or [code]null[/code]. +var time: String = "" + +## Any #tags that were included in the line +var tags: PackedStringArray = [] + +## The mutation details if this is a mutation line (where [code]type == TYPE_MUTATION[/code]). +var mutation: Dictionary = {} + +## The conditions to check before including this line in the flow of dialogue. If failed the line will be skipped over. +var conditions: Dictionary = {} + + +func _init(data: Dictionary = {}) -> void: + if data.size() > 0: + id = data.id + next_id = data.next_id + type = data.type + extra_game_states = data.get("extra_game_states", []) + + match type: + DMConstants.TYPE_DIALOGUE: + character = data.character + character_replacements = data.get("character_replacements", [] as Array[Dictionary]) + text = data.text + text_replacements = data.get("text_replacements", [] as Array[Dictionary]) + translation_key = data.get("translation_key", data.text) + pauses = data.get("pauses", {}) + speeds = data.get("speeds", {}) + inline_mutations = data.get("inline_mutations", [] as Array[Array]) + time = data.get("time", "") + tags = data.get("tags", []) + concurrent_lines = data.get("concurrent_lines", [] as Array[DialogueLine]) + + DMConstants.TYPE_MUTATION: + mutation = data.mutation + + +func _to_string() -> String: + match type: + DMConstants.TYPE_DIALOGUE: + return "" % [character, text] + DMConstants.TYPE_MUTATION: + return "" + return "" + + +func get_tag_value(tag_name: String) -> String: + var wrapped := "%s=" % tag_name + for t in tags: + if t.begins_with(wrapped): + return t.replace(wrapped, "").strip_edges() + return "" diff --git a/addons/dialogue_manager/dialogue_line.gd.uid b/addons/dialogue_manager/dialogue_line.gd.uid new file mode 100644 index 0000000..7ec7029 --- /dev/null +++ b/addons/dialogue_manager/dialogue_line.gd.uid @@ -0,0 +1 @@ +uid://rhuq0eyf8ar2 diff --git a/addons/dialogue_manager/dialogue_manager.gd b/addons/dialogue_manager/dialogue_manager.gd new file mode 100644 index 0000000..1e84ea1 --- /dev/null +++ b/addons/dialogue_manager/dialogue_manager.gd @@ -0,0 +1,1461 @@ +extends Node + +const DialogueResource = preload("./dialogue_resource.gd") +const DialogueLine = preload("./dialogue_line.gd") +const DialogueResponse = preload("./dialogue_response.gd") + +const DMConstants = preload("./constants.gd") +const Builtins = preload("./utilities/builtins.gd") +const DMSettings = preload("./settings.gd") +const DMCompiler = preload("./compiler/compiler.gd") +const DMCompilerResult = preload("./compiler/compiler_result.gd") +const DMResolvedLineData = preload("./compiler/resolved_line_data.gd") + + +## Emitted when a dialogue balloon is created and dialogue starts +signal dialogue_started(resource: DialogueResource) + +## Emitted when a title is encountered while traversing dialogue, usually when jumping from a +## goto line +signal passed_title(title: String) + +## Emitted when a line of dialogue is encountered. +signal got_dialogue(line: DialogueLine) + +## Emitted when a mutation is encountered. +signal mutated(mutation: Dictionary) + +## Emitted when some dialogue has reached the end. +signal dialogue_ended(resource: DialogueResource) + +## Used internally. +signal bridge_get_next_dialogue_line_completed(line: DialogueLine) + +## Used internally +signal bridge_dialogue_started(resource: DialogueResource) + +## Used inernally +signal bridge_mutated() + + +## The list of globals that dialogue can query +var game_states: Array = [] + +## Allow dialogue to call singletons +var include_singletons: bool = true + +## Allow dialogue to call static methods/properties on classes +var include_classes: bool = true + +## Manage translation behaviour +var translation_source: DMConstants.TranslationSource = DMConstants.TranslationSource.Guess + +## Used to resolve the current scene. Override if your game manages the current scene itself. +var get_current_scene: Callable = func(): + var current_scene: Node = Engine.get_main_loop().current_scene + if current_scene == null: + current_scene = Engine.get_main_loop().root.get_child(Engine.get_main_loop().root.get_child_count() - 1) + return current_scene + +var _has_loaded_autoloads: bool = false +var _autoloads: Dictionary = {} + +var _node_properties: Array = [] +var _method_info_cache: Dictionary = {} + +var _dotnet_dialogue_manager: RefCounted + + +func _ready() -> void: + # Cache the known Node2D properties + _node_properties = ["Script Variables"] + var temp_node: Node2D = Node2D.new() + for property in temp_node.get_property_list(): + _node_properties.append(property.name) + temp_node.free() + + # Make the dialogue manager available as a singleton + if not Engine.has_singleton("DialogueManager"): + Engine.register_singleton("DialogueManager", self) + + +## Step through lines and run any mutations until we either hit some dialogue or the end of the conversation +func get_next_dialogue_line(resource: DialogueResource, key: String = "", extra_game_states: Array = [], mutation_behaviour: DMConstants.MutationBehaviour = DMConstants.MutationBehaviour.Wait) -> DialogueLine: + # You have to provide a valid dialogue resource + if resource == null: + assert(false, DMConstants.translate(&"runtime.no_resource")) + if resource.lines.size() == 0: + assert(false, DMConstants.translate(&"runtime.no_content").format({ file_path = resource.resource_path })) + + # Inject any "using" states into the game_states + for state_name in resource.using_states: + var autoload = Engine.get_main_loop().root.get_node_or_null(state_name) + if autoload == null: + printerr(DMConstants.translate(&"runtime.unknown_autoload").format({ autoload = state_name })) + else: + extra_game_states = [autoload] + extra_game_states + + # Inject "self" into the extra game states. + extra_game_states = [{ "self": resource }] + extra_game_states + + # Get the line data + var dialogue: DialogueLine = await get_line(resource, key, extra_game_states) + + # If our dialogue is nothing then we hit the end + if not _is_valid(dialogue): + dialogue_ended.emit.call_deferred(resource) + return null + + # Run the mutation if it is one + if dialogue.type == DMConstants.TYPE_MUTATION: + var actual_next_id: String = dialogue.next_id.split("|")[0] + match mutation_behaviour: + DMConstants.MutationBehaviour.Wait: + await _mutate(dialogue.mutation, extra_game_states) + DMConstants.MutationBehaviour.DoNotWait: + _mutate(dialogue.mutation, extra_game_states) + DMConstants.MutationBehaviour.Skip: + pass + if actual_next_id in [DMConstants.ID_END_CONVERSATION, DMConstants.ID_NULL, null]: + # End the conversation + dialogue_ended.emit.call_deferred(resource) + return null + else: + return await get_next_dialogue_line(resource, dialogue.next_id, extra_game_states, mutation_behaviour) + else: + got_dialogue.emit(dialogue) + return dialogue + + +## Get a line by its ID +func get_line(resource: DialogueResource, key: String, extra_game_states: Array) -> DialogueLine: + key = key.strip_edges() + + # See if we were given a stack instead of just the one key + var stack: Array = key.split("|") + key = stack.pop_front() + var id_trail: String = "" if stack.size() == 0 else "|" + "|".join(stack) + + # Key is blank so just use the first title (or start of file) + if key == null or key == "": + if resource.first_title.is_empty(): + key = resource.lines.keys()[0] + else: + key = resource.first_title + + # See if we just ended the conversation + if key in [DMConstants.ID_END, DMConstants.ID_NULL, null]: + if stack.size() > 0: + return await get_line(resource, "|".join(stack), extra_game_states) + else: + return null + elif key == DMConstants.ID_END_CONVERSATION: + return null + + # See if it is a title + if key.begins_with("~ "): + key = key.substr(2) + if resource.titles.has(key): + key = resource.titles.get(key) + + if key in resource.titles.values(): + passed_title.emit(resource.titles.find_key(key)) + + if not resource.lines.has(key): + assert(false, DMConstants.translate(&"errors.key_not_found").format({ key = key })) + + var data: Dictionary = resource.lines.get(key) + + # If next_id is an expression we need to resolve it. + if data.has(&"next_id_expression"): + data.next_id = await _resolve(data.next_id_expression, extra_game_states) + + # This title key points to another title key so we should jump there instead + if data.type == DMConstants.TYPE_TITLE and data.next_id in resource.titles.values(): + return await get_line(resource, data.next_id + id_trail, extra_game_states) + + # Handle match statements + if data.type == DMConstants.TYPE_MATCH: + var value = await _resolve_condition_value(data, extra_game_states) + var else_cases: Array[Dictionary] = data.cases.filter(func(s): return s.has("is_else")) + var else_case: Dictionary = {} if else_cases.size() == 0 else else_cases.front() + var next_id: String = "" + for case in data.cases: + if case == else_case: + continue + elif await _check_case_value(value, case, extra_game_states): + next_id = case.next_id + break + # Nothing matched so check for else case + if next_id == "": + if not else_case.is_empty(): + next_id = else_case.next_id + else: + next_id = data.next_id_after + return await get_line(resource, next_id + id_trail, extra_game_states) + + # Check for weighted random lines. + if data.has(&"siblings"): + # Only count siblings that pass their condition (if they have one). + var successful_siblings: Array = data.siblings.filter(func(sibling): return not sibling.has("condition") or await _check_condition(sibling, extra_game_states)) + var target_weight: float = randf_range(0, successful_siblings.reduce(func(total, sibling): return total + sibling.weight, 0)) + var cummulative_weight: float = 0 + for sibling in successful_siblings: + if target_weight < cummulative_weight + sibling.weight: + data = resource.lines.get(sibling.id) + break + else: + cummulative_weight += sibling.weight + + # If this line is blank and it's the last line then check for returning snippets. + if data.type in [DMConstants.TYPE_COMMENT, DMConstants.TYPE_UNKNOWN]: + if data.next_id in [DMConstants.ID_END, DMConstants.ID_NULL, null]: + if stack.size() > 0: + return await get_line(resource, "|".join(stack), extra_game_states) + else: + return null + else: + return await get_line(resource, data.next_id + id_trail, extra_game_states) + + # If the line is a random block then go to the start of the block. + elif data.type == DMConstants.TYPE_RANDOM: + data = resource.lines.get(data.next_id) + + # Check conditions. + elif data.type in [DMConstants.TYPE_CONDITION, DMConstants.TYPE_WHILE]: + # "else" will have no actual condition. + if await _check_condition(data, extra_game_states): + return await get_line(resource, data.next_id + id_trail, extra_game_states) + elif data.has("next_sibling_id") and not data.next_sibling_id.is_empty(): + return await get_line(resource, data.next_sibling_id + id_trail, extra_game_states) + else: + return await get_line(resource, data.next_id_after + id_trail, extra_game_states) + + # Evaluate jumps. + elif data.type == DMConstants.TYPE_GOTO: + if data.is_snippet and not id_trail.begins_with("|" + data.next_id_after): + id_trail = "|" + data.next_id_after + id_trail + return await get_line(resource, data.next_id + id_trail, extra_game_states) + + elif data.type == DMConstants.TYPE_DIALOGUE: + if not data.has(&"id"): + data.id = key + + # Set up a line object. + var line: DialogueLine = await create_dialogue_line(data, extra_game_states) + + # If the jump point somehow has no content then just end. + if not line: return null + + # Find any simultaneously said lines. + if data.has(&"concurrent_lines"): + # If the list includes this line then it isn't the origin line so ignore it. + if not data.concurrent_lines.has(data.id): + # Resolve IDs to their actual lines. + for line_id: String in data.concurrent_lines: + line.concurrent_lines.append(await get_line(resource, line_id, extra_game_states)) + + # If we are the first of a list of responses then get the other ones. + if data.type == DMConstants.TYPE_RESPONSE: + # Note: For some reason C# has occasional issues with using the responses property directly + # so instead we use set and get here. + line.set(&"responses", await _get_responses(data.get(&"responses", []), resource, id_trail, extra_game_states)) + return line + + # Inject the next node's responses if they have any. + if resource.lines.has(line.next_id): + var next_line: Dictionary = resource.lines.get(line.next_id) + + # If the response line is marked as a title then make sure to emit the passed_title signal. + if line.next_id in resource.titles.values(): + passed_title.emit(resource.titles.find_key(line.next_id)) + + # If the responses come from a snippet then we need to come back here afterwards. + if next_line.type == DMConstants.TYPE_GOTO and next_line.is_snippet and not id_trail.begins_with("|" + next_line.next_id_after): + id_trail = "|" + next_line.next_id_after + id_trail + + # If the next line is a title then check where it points to see if that is a set of responses. + while [DMConstants.TYPE_TITLE, DMConstants.TYPE_GOTO].has(next_line.type) and resource.lines.has(next_line.next_id): + next_line = resource.lines.get(next_line.next_id) + + if next_line != null and next_line.type == DMConstants.TYPE_RESPONSE: + # Note: For some reason C# has occasional issues with using the responses property directly + # so instead we use set and get here. + line.set(&"responses", await _get_responses(next_line.get(&"responses", []), resource, id_trail, extra_game_states)) + + line.next_id = "|".join(stack) if line.next_id == DMConstants.ID_NULL else line.next_id + id_trail + return line + +## Replace any variables, etc in the text. +func get_resolved_line_data(data: Dictionary, extra_game_states: Array = []) -> DMResolvedLineData: + var text: String = translate(data) + + # Resolve variables + for replacement in data.get(&"text_replacements", [] as Array[Dictionary]): + var value = await _resolve(replacement.expression.duplicate(true), extra_game_states) + var index: int = text.find(replacement.value_in_text) + if index == -1: + # The replacement wasn't found but maybe the regular quotes have been replaced + # by special quotes while translating. + index = text.replace("“", "\"").replace("”", "\"").find(replacement.value_in_text) + if index > -1: + text = text.substr(0, index) + str(value) + text.substr(index + replacement.value_in_text.length()) + + var compilation: DMCompilation = DMCompilation.new() + + # Resolve random groups + for found in compilation.regex.INLINE_RANDOM_REGEX.search_all(text): + var options = found.get_string(&"options").split(&"|") + text = text.replace(&"[[%s]]" % found.get_string(&"options"), options[randi_range(0, options.size() - 1)]) + + # Do a pass on the markers to find any conditionals + var markers: DMResolvedLineData = DMResolvedLineData.new(text) + + # Resolve any conditionals and update marker positions as needed + if data.type == DMConstants.TYPE_DIALOGUE: + var resolved_text: String = markers.text + var conditionals: Array[RegExMatch] = compilation.regex.INLINE_CONDITIONALS_REGEX.search_all(resolved_text) + var replacements: Array = [] + for conditional in conditionals: + var condition_raw: String = conditional.strings[conditional.names.condition] + var body: String = conditional.strings[conditional.names.body] + var body_else: String = "" + if &"[else]" in body: + var bits = body.split(&"[else]") + body = bits[0] + body_else = bits[1] + var condition: Dictionary = compilation.extract_condition("if " + condition_raw, false, 0) + # If the condition fails then use the else of "" + if not await _check_condition({ condition = condition }, extra_game_states): + body = body_else + replacements.append({ + start = conditional.get_start(), + end = conditional.get_end(), + string = conditional.get_string(), + body = body + }) + + for i in range(replacements.size() - 1, -1, -1): + var r: Dictionary = replacements[i] + resolved_text = resolved_text.substr(0, r.start) + r.body + resolved_text.substr(r.end, 9999) + # Move any other markers now that the text has changed + var offset: int = r.end - r.start - r.body.length() + for key in [&"pauses", &"speeds", &"time"]: + if markers.get(key) == null: continue + var marker = markers.get(key) + var next_marker: Dictionary = {} + for index in marker: + if index < r.start: + next_marker[index] = marker[index] + elif index > r.start: + next_marker[index - offset] = marker[index] + markers.set(key, next_marker) + var mutations: Array[Array] = markers.mutations + var next_mutations: Array[Array] = [] + for mutation in mutations: + var index = mutation[0] + if index < r.start: + next_mutations.append(mutation) + elif index > r.start: + next_mutations.append([index - offset, mutation[1]]) + markers.mutations = next_mutations + + markers.text = resolved_text + + return markers + + +## Replace any variables, etc in the character name +func get_resolved_character(data: Dictionary, extra_game_states: Array = []) -> String: + var character: String = data.get(&"character", "") + + # Resolve variables + for replacement in data.get(&"character_replacements", []): + var value = await _resolve(replacement.expression.duplicate(true), extra_game_states) + var index: int = character.find(replacement.value_in_text) + if index > -1: + character = character.substr(0, index) + str(value) + character.substr(index + replacement.value_in_text.length()) + + # Resolve random groups + var random_regex: RegEx = RegEx.new() + random_regex.compile("\\[\\[(?.*?)\\]\\]") + for found in random_regex.search_all(character): + var options = found.get_string(&"options").split("|") + character = character.replace("[[%s]]" % found.get_string(&"options"), options[randi_range(0, options.size() - 1)]) + + return character + + +## Generate a dialogue resource on the fly from some text +func create_resource_from_text(text: String) -> Resource: + var result: DMCompilerResult = DMCompiler.compile_string(text, "") + + if result.errors.size() > 0: + printerr(DMConstants.translate(&"runtime.errors").format({ count = result.errors.size() })) + for error in result.errors: + printerr(DMConstants.translate(&"runtime.error_detail").format({ + line = error.line_number + 1, + message = DMConstants.get_error_message(error.error) + })) + assert(false, DMConstants.translate(&"runtime.errors_see_details").format({ count = result.errors.size() })) + + var resource: DialogueResource = DialogueResource.new() + resource.using_states = result.using_states + resource.titles = result.titles + resource.first_title = result.first_title + resource.character_names = result.character_names + resource.lines = result.lines + resource.raw_text = text + + return resource + + +#region Balloon helpers + + +## Show the example balloon +func show_example_dialogue_balloon(resource: DialogueResource, title: String = "", extra_game_states: Array = []) -> CanvasLayer: + var balloon: Node = load(_get_example_balloon_path()).instantiate() + _start_balloon.call_deferred(balloon, resource, title, extra_game_states) + return balloon + + +## Show the configured dialogue balloon +func show_dialogue_balloon(resource: DialogueResource, title: String = "", extra_game_states: Array = []) -> Node: + var balloon_path: String = DMSettings.get_setting(DMSettings.BALLOON_PATH, _get_example_balloon_path()) + if not ResourceLoader.exists(balloon_path): + balloon_path = _get_example_balloon_path() + return show_dialogue_balloon_scene(balloon_path, resource, title, extra_game_states) + + +## Show a given balloon scene +func show_dialogue_balloon_scene(balloon_scene, resource: DialogueResource, title: String = "", extra_game_states: Array = []) -> Node: + if balloon_scene is String: + balloon_scene = load(balloon_scene) + if balloon_scene is PackedScene: + balloon_scene = balloon_scene.instantiate() + + var balloon: Node = balloon_scene + _start_balloon.call_deferred(balloon, resource, title, extra_game_states) + return balloon + + +## Resolve a static line ID to an actual line ID +func static_id_to_line_id(resource: DialogueResource, static_id: String) -> String: + var ids = static_id_to_line_ids(resource, static_id) + if ids.size() == 0: return "" + return ids[0] + + +## Resolve a static line ID to any actual line IDs that match +func static_id_to_line_ids(resource: DialogueResource, static_id: String) -> PackedStringArray: + return resource.lines.values().filter(func(l): return l.get(&"translation_key", "") == static_id).map(func(l): return l.id) + + +# Call "start" on the given balloon. +func _start_balloon(balloon: Node, resource: DialogueResource, title: String, extra_game_states: Array) -> void: + get_current_scene.call().add_child(balloon) + + if balloon.has_method(&"start"): + balloon.start(resource, title, extra_game_states) + elif balloon.has_method(&"Start"): + balloon.Start(resource, title, extra_game_states) + else: + assert(false, DMConstants.translate(&"runtime.dialogue_balloon_missing_start_method")) + + dialogue_started.emit(resource) + bridge_dialogue_started.emit(resource) + + +# Get the path to the example balloon +func _get_example_balloon_path() -> String: + var is_small_window: bool = ProjectSettings.get_setting("display/window/size/viewport_width") < 400 + var balloon_path: String = "/example_balloon/small_example_balloon.tscn" if is_small_window else "/example_balloon/example_balloon.tscn" + return get_script().resource_path.get_base_dir() + balloon_path + + +#endregion + +#region dotnet bridge + + +func _get_dotnet_dialogue_manager() -> RefCounted: + if not is_instance_valid(_dotnet_dialogue_manager): + _dotnet_dialogue_manager = load(get_script().resource_path.get_base_dir() + "/DialogueManager.cs").new() + return _dotnet_dialogue_manager + + +func _bridge_get_new_instance() -> Node: + # For some reason duplicating the node with its signals doesn't work so we have to copy them over manually + var instance = new() + for s: Dictionary in dialogue_started.get_connections(): + instance.dialogue_started.connect(s.callable) + for s: Dictionary in passed_title.get_connections(): + instance.passed_title.connect(s.callable) + for s: Dictionary in got_dialogue.get_connections(): + instance.got_dialogue.connect(s.callable) + for s: Dictionary in mutated.get_connections(): + instance.mutated.connect(s.callable) + for s: Dictionary in dialogue_ended.get_connections(): + instance.dialogue_ended.connect(s.callable) + instance.get_current_scene = get_current_scene + return instance + + +func _bridge_get_next_dialogue_line(resource: DialogueResource, key: String, extra_game_states: Array = []) -> void: + # dotnet needs at least one await tick of the signal gets called too quickly + await Engine.get_main_loop().process_frame + + var line = await get_next_dialogue_line(resource, key, extra_game_states) + bridge_get_next_dialogue_line_completed.emit(line) + + +func _bridge_mutate(mutation: Dictionary, extra_game_states: Array, is_inline_mutation: bool = false) -> void: + await _mutate(mutation, extra_game_states, is_inline_mutation) + bridge_mutated.emit() + + +#endregion + +#region Internal helpers + + +# Show a message or crash with error +func show_error_for_missing_state_value(message: String, will_show: bool = true) -> void: + if not will_show: return + + if DMSettings.get_setting(DMSettings.IGNORE_MISSING_STATE_VALUES, false): + push_error(message) + elif will_show: + # If you're here then you're missing a method or property in your game state. The error + # message down in the debugger will give you some more information. + assert(false, message) + + +# Translate a string +func translate(data: Dictionary) -> String: + if TranslationServer.get_loaded_locales().size() == 0 or translation_source == DMConstants.TranslationSource.None: + return data.text + + var translation_key: String = data.get(&"translation_key", data.text) + + if translation_key == "" or translation_key == data.text: + return tr(data.text) + else: + # Line IDs work slightly differently depending on whether the translation came from a + # CSV or a PO file. CSVs use the line ID (or the line itself) as the translatable string + # whereas POs use the ID as context and the line itself as the translatable string. + match translation_source: + DMConstants.TranslationSource.PO: + return tr(data.text, StringName(translation_key)) + + DMConstants.TranslationSource.CSV: + return tr(translation_key) + + DMConstants.TranslationSource.Guess: + var translation_files: Array = ProjectSettings.get_setting(&"internationalization/locale/translations") + if translation_files.filter(func(f: String): return f.get_extension() in [&"po", &"mo"]).size() > 0: + # Assume PO + return tr(data.text, StringName(translation_key)) + else: + # Assume CSV + return tr(translation_key) + + return tr(translation_key) + + +# Create a line of dialogue +func create_dialogue_line(data: Dictionary, extra_game_states: Array) -> DialogueLine: + match data.type: + DMConstants.TYPE_DIALOGUE: + var resolved_data: DMResolvedLineData = await get_resolved_line_data(data, extra_game_states) + return DialogueLine.new({ + id = data.get(&"id", ""), + type = DMConstants.TYPE_DIALOGUE, + next_id = data.next_id, + character = await get_resolved_character(data, extra_game_states), + character_replacements = data.get(&"character_replacements", [] as Array[Dictionary]), + text = resolved_data.text, + text_replacements = data.get(&"text_replacements", [] as Array[Dictionary]), + translation_key = data.get(&"translation_key", data.text), + pauses = resolved_data.pauses, + speeds = resolved_data.speeds, + inline_mutations = resolved_data.mutations, + time = resolved_data.time, + tags = data.get(&"tags", []), + extra_game_states = extra_game_states + }) + + DMConstants.TYPE_RESPONSE: + return DialogueLine.new({ + id = data.get(&"id", ""), + type = DMConstants.TYPE_RESPONSE, + next_id = data.next_id, + tags = data.get(&"tags", []), + extra_game_states = extra_game_states + }) + + DMConstants.TYPE_MUTATION: + return DialogueLine.new({ + id = data.get(&"id", ""), + type = DMConstants.TYPE_MUTATION, + next_id = data.next_id, + mutation = data.mutation, + extra_game_states = extra_game_states + }) + + return null + + +# Create a response +func create_response(data: Dictionary, extra_game_states: Array) -> DialogueResponse: + var resolved_data: DMResolvedLineData = await get_resolved_line_data(data, extra_game_states) + return DialogueResponse.new({ + id = data.get(&"id", ""), + type = DMConstants.TYPE_RESPONSE, + next_id = data.next_id, + is_allowed = data.is_allowed, + condition_as_text = data.get(&"condition_as_text", ""), + character = await get_resolved_character(data, extra_game_states), + character_replacements = data.get(&"character_replacements", [] as Array[Dictionary]), + text = resolved_data.text, + text_replacements = data.get(&"text_replacements", [] as Array[Dictionary]), + tags = data.get(&"tags", []), + translation_key = data.get(&"translation_key", data.text), + }) + + +# Get the current game states +func _get_game_states(extra_game_states: Array) -> Array: + if not _has_loaded_autoloads: + _has_loaded_autoloads = true + # Add any autoloads to a generic state so we can refer to them by name + for child in Engine.get_main_loop().root.get_children(): + # Ignore the dialogue manager + if child.name == &"DialogueManager": continue + # Ignore the current main scene + if Engine.get_main_loop().current_scene and child.name == Engine.get_main_loop().current_scene.name: continue + # Add the node to our known autoloads + _autoloads[child.name] = child + game_states = [_autoloads] + # Add any other state shortcuts from settings + for node_name in DMSettings.get_setting(DMSettings.STATE_AUTOLOAD_SHORTCUTS, ""): + var state: Node = Engine.get_main_loop().root.get_node_or_null(NodePath(node_name)) + if state: + game_states.append(state) + + var current_scene: Node = get_current_scene.call() + var unique_states: Array = [] + for state in extra_game_states + [current_scene] + game_states: + if state != null and not unique_states.has(state): + unique_states.append(state) + return unique_states + + +# Check if a condition is met +func _check_condition(data: Dictionary, extra_game_states: Array) -> bool: + return bool(await _resolve_condition_value(data, extra_game_states)) + + +# Resolve a condition's expression value +func _resolve_condition_value(data: Dictionary, extra_game_states: Array) -> Variant: + if data.get(&"condition", null) == null: return true + if data.condition.is_empty(): return true + + return await _resolve(data.condition.expression.duplicate(true), extra_game_states) + + +# Check if a match value matches a case value +func _check_case_value(match_value: Variant, data: Dictionary, extra_game_states: Array) -> bool: + if data.get(&"condition", null) == null: return true + if data.condition.is_empty(): return true + + var expression: Array[Dictionary] = data.condition.expression.duplicate(true) + + # Check for multiple values + var expressions_to_check: Array = [] + var previous_comma_index: int = 0 + for i in range(0, expression.size()): + if expression[i].type == DMConstants.TOKEN_COMMA: + expressions_to_check.append(expression.slice(previous_comma_index, i)) + previous_comma_index = i + 1 + elif i == expression.size() - 1: + expressions_to_check.append(expression.slice(previous_comma_index)) + + for expression_to_check in expressions_to_check: + # If the when is a comparison when insert the match value as the first value to compare to + var already_compared: bool = false + if expression_to_check[0].type == DMConstants.TOKEN_COMPARISON: + expression_to_check.insert(0, { + type = DMConstants.TOKEN_VALUE, + value = match_value + }) + already_compared = true + + var resolved_value = await _resolve(expression_to_check, extra_game_states) + if (already_compared and resolved_value) or match_value == resolved_value: + return true + + return false + + +# Make a change to game state or run a method +func _mutate(mutation: Dictionary, extra_game_states: Array, is_inline_mutation: bool = false) -> void: + var expression: Array[Dictionary] = mutation.expression + + # Handle built in mutations + if expression[0].type == DMConstants.TOKEN_FUNCTION and expression[0].function in [&"wait", &"Wait", &"debug", &"Debug"]: + var args: Array = await _resolve_each(expression[0].value, extra_game_states) + match expression[0].function: + &"wait", &"Wait": + mutated.emit(mutation.merged({ is_inline = is_inline_mutation })) + await Engine.get_main_loop().create_timer(float(args[0])).timeout + return + + &"debug", &"Debug": + prints("Debug:", args) + await Engine.get_main_loop().process_frame + + # Or pass through to the resolver + else: + if not _mutation_contains_assignment(mutation.expression) and not is_inline_mutation: + mutated.emit(mutation.merged({ is_inline = is_inline_mutation })) + + if mutation.get("is_blocking", true): + await _resolve(mutation.expression.duplicate(true), extra_game_states) + return + else: + _resolve(mutation.expression.duplicate(true), extra_game_states) + + # Wait one frame to give the dialogue handler a chance to yield + await Engine.get_main_loop().process_frame + + +# Check if a mutation contains an assignment token. +func _mutation_contains_assignment(mutation: Array) -> bool: + for token in mutation: + if token.type == DMConstants.TOKEN_ASSIGNMENT: + return true + return false + + +# Replace an array of line IDs with their response prompts +func _get_responses(ids: Array, resource: DialogueResource, id_trail: String, extra_game_states: Array) -> Array[DialogueResponse]: + var responses: Array[DialogueResponse] = [] + for id in ids: + var data: Dictionary = resource.lines.get(id).duplicate(true) + data.is_allowed = await _check_condition(data, extra_game_states) + var response: DialogueResponse = await create_response(data, extra_game_states) + response.next_id += id_trail + responses.append(response) + + return responses + + +# Get a value on the current scene or game state +func _get_state_value(property: String, extra_game_states: Array): + # Special case for static primitive calls + if property == "Color": + return Color() + elif property == "Vector2": + return Vector2.ZERO + elif property == "Vector3": + return Vector3.ZERO + elif property == "Vector4": + return Vector4.ZERO + elif property == "Quaternion": + return Quaternion() + + var expression = Expression.new() + if expression.parse(property) != OK: + assert(false, DMConstants.translate(&"runtime.invalid_expression").format({ expression = property, error = expression.get_error_text() })) + + # Warn about possible name collisions + _warn_about_state_name_collisions(property, extra_game_states) + + for state in _get_game_states(extra_game_states): + if typeof(state) == TYPE_DICTIONARY: + if state.has(property): + return state.get(property) + else: + var result = expression.execute([], state, false) + if not expression.has_execute_failed(): + return result + + if include_singletons and Engine.has_singleton(property): + return Engine.get_singleton(property) + + if include_classes: + for class_data in ProjectSettings.get_global_class_list(): + if class_data.get(&"class") == property: + return load(class_data.path).new() + + show_error_for_missing_state_value(DMConstants.translate(&"runtime.property_not_found").format({ property = property, states = _get_state_shortcut_names(extra_game_states) })) + + +# Print warnings for top-level state name collisions. +func _warn_about_state_name_collisions(target_key: String, extra_game_states: Array) -> void: + # Don't run the check if this is a release build + if not OS.is_debug_build(): return + # Also don't run if the setting is off + if not DMSettings.get_setting(DMSettings.WARN_ABOUT_METHOD_PROPERTY_OR_SIGNAL_NAME_CONFLICTS, false): return + + # Get the list of state shortcuts. + var state_shortcuts: Array = [] + for node_name in DMSettings.get_setting(DMSettings.STATE_AUTOLOAD_SHORTCUTS, ""): + var state: Node = Engine.get_main_loop().root.get_node_or_null(NodePath(node_name)) + if state: + state_shortcuts.append(state) + + # Check any top level names for a collision + var states_with_key: Array = [] + for state in extra_game_states + [get_current_scene.call()] + state_shortcuts: + if state is Dictionary: + if state.keys().has(target_key): + states_with_key.append("Dictionary") + else: + var script: Script = (state as Object).get_script() + if script == null: + continue + + for method in script.get_script_method_list(): + if method.name == target_key and not states_with_key.has(state.name): + states_with_key.append(state.name) + break + + for property in script.get_script_property_list(): + if property.name == target_key and not states_with_key.has(state.name): + states_with_key.append(state.name) + break + + for signal_info in script.get_script_signal_list(): + if signal_info.name == target_key and not states_with_key.has(state.name): + states_with_key.append(state.name) + break + + if states_with_key.size() > 1: + push_warning(DMConstants.translate(&"runtime.top_level_states_share_name").format({ states = ", ".join(states_with_key), key = target_key })) + + +# Set a value on the current scene or game state +func _set_state_value(property: String, value, extra_game_states: Array) -> void: + for state in _get_game_states(extra_game_states): + if typeof(state) == TYPE_DICTIONARY: + if state.has(property): + state[property] = value + return + elif _thing_has_property(state, property): + state.set(property, value) + return + + if property.to_snake_case() != property: + show_error_for_missing_state_value(DMConstants.translate(&"runtime.property_not_found_missing_export").format({ property = property, states = _get_state_shortcut_names(extra_game_states) })) + else: + show_error_for_missing_state_value(DMConstants.translate(&"runtime.property_not_found").format({ property = property, states = _get_state_shortcut_names(extra_game_states) })) + + +# Get the list of state shortcut names +func _get_state_shortcut_names(extra_game_states: Array) -> String: + var states = _get_game_states(extra_game_states) + states.erase(_autoloads) + return ", ".join(states.map(func(s): return "\"%s\"" % (s.name if "name" in s else s))) + + +# Resolve an array of expressions. +func _resolve_each(array: Array, extra_game_states: Array) -> Array: + var results: Array = [] + for item in array: + if not item[0].type in [DMConstants.TOKEN_BRACE_CLOSE, DMConstants.TOKEN_BRACKET_CLOSE, DMConstants.TOKEN_PARENS_CLOSE]: + results.append(await _resolve(item.duplicate(true), extra_game_states)) + return results + + +# Collapse any expressions +func _resolve(tokens: Array, extra_game_states: Array): + var i: int = 0 + var limit: int = 0 + + # Handle groups first + for token in tokens: + if token.type == DMConstants.TOKEN_GROUP: + token.type = DMConstants.TOKEN_VALUE + token.value = await _resolve(token.value, extra_game_states) + + # Then variables/methods + i = 0 + limit = 0 + while i < tokens.size() and limit < 1000: + limit += 1 + var token: Dictionary = tokens[i] + + if token.type == DMConstants.TOKEN_NULL_COALESCE: + var caller: Dictionary = tokens[i - 1] + if caller.value == null: + # If the caller is null then the method/property is also null + caller.type = DMConstants.TOKEN_VALUE + caller.value = null + tokens.remove_at(i + 1) + tokens.remove_at(i) + else: + token.type = DMConstants.TOKEN_DOT + + elif token.type == DMConstants.TOKEN_FUNCTION: + var function_name: String = token.function + var args = await _resolve_each(token.value, extra_game_states) + if tokens[i - 1].type == DMConstants.TOKEN_DOT: + # If we are calling a deeper function then we need to collapse the + # value into the thing we are calling the function on + var caller: Dictionary = tokens[i - 2] + if Builtins.is_supported(caller.value): + caller.type = DMConstants.TOKEN_VALUE + caller.value = Builtins.resolve_method(caller.value, function_name, args) + tokens.remove_at(i) + tokens.remove_at(i - 1) + i -= 2 + elif _thing_has_method(caller.value, function_name, args): + caller.type = DMConstants.TOKEN_VALUE + caller.value = await _resolve_thing_method(caller.value, function_name, args) + tokens.remove_at(i) + tokens.remove_at(i - 1) + i -= 2 + else: + show_error_for_missing_state_value(DMConstants.translate(&"runtime.method_not_callable").format({ method = function_name, object = str(caller.value) })) + else: + var found: bool = false + match function_name: + &"str": + token.type = DMConstants.TOKEN_VALUE + token.value = str(args[0]) + found = true + &"Vector2": + token.type = DMConstants.TOKEN_VALUE + token.value = Vector2(args[0], args[1]) + found = true + &"Vector2i": + token.type = DMConstants.TOKEN_VALUE + token.value = Vector2i(args[0], args[1]) + found = true + &"Vector3": + token.type = DMConstants.TOKEN_VALUE + token.value = Vector3(args[0], args[1], args[2]) + found = true + &"Vector3i": + token.type = DMConstants.TOKEN_VALUE + token.value = Vector3i(args[0], args[1], args[2]) + found = true + &"Vector4": + token.type = DMConstants.TOKEN_VALUE + token.value = Vector4(args[0], args[1], args[2], args[3]) + found = true + &"Vector4i": + token.type = DMConstants.TOKEN_VALUE + token.value = Vector4i(args[0], args[1], args[2], args[3]) + found = true + &"Quaternion": + token.type = DMConstants.TOKEN_VALUE + token.value = Quaternion(args[0], args[1], args[2], args[3]) + found = true + &"Callable": + token.type = DMConstants.TOKEN_VALUE + match args.size(): + 0: + token.value = Callable() + 1: + token.value = Callable(args[0]) + 2: + token.value = Callable(args[0], args[1]) + found = true + &"Color": + token.type = DMConstants.TOKEN_VALUE + match args.size(): + 0: + token.value = Color() + 1: + token.value = Color(args[0]) + 2: + token.value = Color(args[0], args[1]) + 3: + token.value = Color(args[0], args[1], args[2]) + 4: + token.value = Color(args[0], args[1], args[2], args[3]) + found = true + &"load", &"Load": + token.type = DMConstants.TOKEN_VALUE + token.value = load(args[0]) + found = true + &"roll_dice", &"RollDice": + token.type = DMConstants.TOKEN_VALUE + token.value = randi_range(1, args[0]) + found = true + _: + # Check for top level name conflicts + _warn_about_state_name_collisions(function_name, extra_game_states) + + for state in _get_game_states(extra_game_states): + if _thing_has_method(state, function_name, args): + token.type = DMConstants.TOKEN_VALUE + token.value = await _resolve_thing_method(state, function_name, args) + found = true + break + + show_error_for_missing_state_value(DMConstants.translate(&"runtime.method_not_found").format({ + method = args[0] if function_name in ["call", "call_deferred"] else function_name, + states = _get_state_shortcut_names(extra_game_states) + }), not found) + + elif token.type == DMConstants.TOKEN_DICTIONARY_REFERENCE: + var value + if i > 0 and tokens[i - 1].type == DMConstants.TOKEN_DOT: + # If we are deep referencing then we need to get the parent object. + # `parent.value` is the actual object and `token.variable` is the name of + # the property within it. + value = tokens[i - 2].value[token.variable] + # Clean up the previous tokens + token.erase("variable") + tokens.remove_at(i - 1) + tokens.remove_at(i - 2) + i -= 2 + else: + # Otherwise we can just get this variable as a normal state reference + value = _get_state_value(token.variable, extra_game_states) + + var index = await _resolve(token.value, extra_game_states) + if typeof(value) == TYPE_DICTIONARY: + if tokens.size() > i + 1 and tokens[i + 1].type == DMConstants.TOKEN_ASSIGNMENT: + # If the next token is an assignment then we need to leave this as a reference + # so that it can be resolved once everything ahead of it has been resolved + token.type = "dictionary" + token.value = value + token.key = index + else: + if value.has(index): + token.type = DMConstants.TOKEN_VALUE + token.value = value[index] + else: + show_error_for_missing_state_value(DMConstants.translate(&"runtime.key_not_found").format({ key = str(index), dictionary = token.variable })) + elif typeof(value) == TYPE_ARRAY: + if tokens.size() > i + 1 and tokens[i + 1].type == DMConstants.TOKEN_ASSIGNMENT: + # If the next token is an assignment then we need to leave this as a reference + # so that it can be resolved once everything ahead of it has been resolved + token.type = "array" + token.value = value + token.key = index + else: + if index >= 0 and index < value.size(): + token.type = DMConstants.TOKEN_VALUE + token.value = value[index] + else: + show_error_for_missing_state_value(DMConstants.translate(&"runtime.array_index_out_of_bounds").format({ index = index, array = token.variable })) + + elif token.type == DMConstants.TOKEN_DICTIONARY_NESTED_REFERENCE: + var dictionary: Dictionary = tokens[i - 1] + var index = await _resolve(token.value, extra_game_states) + var value = dictionary.value + if typeof(value) == TYPE_DICTIONARY: + if tokens.size() > i + 1 and tokens[i + 1].type == DMConstants.TOKEN_ASSIGNMENT: + # If the next token is an assignment then we need to leave this as a reference + # so that it can be resolved once everything ahead of it has been resolved + dictionary.type = "dictionary" + dictionary.key = index + dictionary.value = value + tokens.remove_at(i) + i -= 1 + else: + if dictionary.value.has(index): + dictionary.value = value.get(index) + tokens.remove_at(i) + i -= 1 + else: + show_error_for_missing_state_value(DMConstants.translate(&"runtime.key_not_found").format({ key = str(index), dictionary = value })) + elif typeof(value) == TYPE_ARRAY: + if tokens.size() > i + 1 and tokens[i + 1].type == DMConstants.TOKEN_ASSIGNMENT: + # If the next token is an assignment then we need to leave this as a reference + # so that it can be resolved once everything ahead of it has been resolved + dictionary.type = "array" + dictionary.value = value + dictionary.key = index + tokens.remove_at(i) + i -= 1 + else: + if index >= 0 and index < value.size(): + dictionary.value = value[index] + tokens.remove_at(i) + i -= 1 + else: + show_error_for_missing_state_value(DMConstants.translate(&"runtime.array_index_out_of_bounds").format({ index = index, array = value })) + + elif token.type == DMConstants.TOKEN_ARRAY: + token.type = DMConstants.TOKEN_VALUE + token.value = await _resolve_each(token.value, extra_game_states) + + elif token.type == DMConstants.TOKEN_DICTIONARY: + token.type = DMConstants.TOKEN_VALUE + var dictionary = {} + for key in token.value.keys(): + var resolved_key = await _resolve([key], extra_game_states) + var preresolved_value = token.value.get(key) + if typeof(preresolved_value) != TYPE_ARRAY: + preresolved_value = [preresolved_value] + var resolved_value = await _resolve(preresolved_value, extra_game_states) + dictionary[resolved_key] = resolved_value + token.value = dictionary + + elif token.type == DMConstants.TOKEN_VARIABLE or token.type == DMConstants.TOKEN_NUMBER: + if str(token.value) == "null": + token.type = DMConstants.TOKEN_VALUE + token.value = null + elif str(token.value) == "self": + token.type = DMConstants.TOKEN_VALUE + token.value = extra_game_states[0].self + elif tokens[i - 1].type == DMConstants.TOKEN_DOT: + var caller: Dictionary = tokens[i - 2] + var property = token.value + if tokens.size() > i + 1 and tokens[i + 1].type == DMConstants.TOKEN_ASSIGNMENT: + # If the next token is an assignment then we need to leave this as a reference + # so that it can be resolved once everything ahead of it has been resolved + caller.type = "property" + caller.property = property + else: + # If we are requesting a deeper property then we need to collapse the + # value into the thing we are referencing from + caller.type = DMConstants.TOKEN_VALUE + if Builtins.is_supported(caller.value): + caller.value = Builtins.resolve_property(caller.value, property) + else: + caller.value = caller.value.get(property) + tokens.remove_at(i) + tokens.remove_at(i - 1) + i -= 2 + elif tokens.size() > i + 1 and tokens[i + 1].type == DMConstants.TOKEN_ASSIGNMENT: + # It's a normal variable but we will be assigning to it so don't resolve + # it until everything after it has been resolved + token.type = "variable" + else: + if token.type == DMConstants.TOKEN_NUMBER: + token.type = DMConstants.TOKEN_VALUE + token.value = token.value + else: + token.type = DMConstants.TOKEN_VALUE + token.value = _get_state_value(str(token.value), extra_game_states) + + i += 1 + + # Then multiply and divide + i = 0 + limit = 0 + while i < tokens.size() and limit < 1000: + limit += 1 + var token: Dictionary = tokens[i] + if token.type == DMConstants.TOKEN_OPERATOR and token.value in ["*", "/", "%"]: + token.type = DMConstants.TOKEN_VALUE + token.value = _apply_operation(token.value, tokens[i - 1].value, tokens[i + 1].value) + tokens.remove_at(i + 1) + tokens.remove_at(i - 1) + i -= 1 + i += 1 + + if limit >= 1000: + assert(false, DMConstants.translate(&"runtime.something_went_wrong")) + + # Then addition and subtraction + i = 0 + limit = 0 + while i < tokens.size() and limit < 1000: + limit += 1 + var token: Dictionary = tokens[i] + if token.type == DMConstants.TOKEN_OPERATOR and token.value in ["+", "-"]: + token.type = DMConstants.TOKEN_VALUE + token.value = _apply_operation(token.value, tokens[i - 1].value, tokens[i + 1].value) + tokens.remove_at(i + 1) + tokens.remove_at(i - 1) + i -= 1 + i += 1 + + if limit >= 1000: + assert(false, DMConstants.translate(&"runtime.something_went_wrong")) + + # Then negations + i = 0 + limit = 0 + while i < tokens.size() and limit < 1000: + limit += 1 + var token: Dictionary = tokens[i] + if token.type == DMConstants.TOKEN_NOT: + token.type = DMConstants.TOKEN_VALUE + token.value = not tokens[i + 1].value + tokens.remove_at(i + 1) + i -= 1 + i += 1 + + if limit >= 1000: + assert(false, DMConstants.translate(&"runtime.something_went_wrong")) + + # Then comparisons + i = 0 + limit = 0 + while i < tokens.size() and limit < 1000: + limit += 1 + var token: Dictionary = tokens[i] + if token.type == DMConstants.TOKEN_COMPARISON: + token.type = DMConstants.TOKEN_VALUE + token.value = _compare(token.value, tokens[i - 1].value, tokens[i + 1].value) + tokens.remove_at(i + 1) + tokens.remove_at(i - 1) + i -= 1 + i += 1 + + if limit >= 1000: + assert(false, DMConstants.translate(&"runtime.something_went_wrong")) + + # Then and/or + i = 0 + limit = 0 + while i < tokens.size() and limit < 1000: + limit += 1 + var token: Dictionary = tokens[i] + if token.type == DMConstants.TOKEN_AND_OR: + token.type = DMConstants.TOKEN_VALUE + token.value = _apply_operation(token.value, tokens[i - 1].value, tokens[i + 1].value) + tokens.remove_at(i + 1) + tokens.remove_at(i - 1) + i -= 1 + i += 1 + + if limit >= 1000: + assert(false, DMConstants.translate(&"runtime.something_went_wrong")) + + # Lastly, resolve any assignments + i = 0 + limit = 0 + while i < tokens.size() and limit < 1000: + limit += 1 + var token: Dictionary = tokens[i] + if token.type == DMConstants.TOKEN_ASSIGNMENT: + var lhs: Dictionary = tokens[i - 1] + var value + + match lhs.type: + &"variable": + value = _apply_operation(token.value, _get_state_value(lhs.value, extra_game_states), tokens[i + 1].value) + _set_state_value(lhs.value, value, extra_game_states) + &"property": + value = _apply_operation(token.value, lhs.value.get(lhs.property), tokens[i + 1].value) + if typeof(lhs.value) == TYPE_DICTIONARY: + lhs.value[lhs.property] = value + else: + lhs.value.set(lhs.property, value) + &"dictionary": + value = _apply_operation(token.value, lhs.value.get(lhs.key, null), tokens[i + 1].value) + lhs.value[lhs.key] = value + &"array": + show_error_for_missing_state_value( + DMConstants.translate(&"runtime.array_index_out_of_bounds").format({ index = lhs.key, array = lhs.value }), + lhs.key >= lhs.value.size() + ) + value = _apply_operation(token.value, lhs.value[lhs.key], tokens[i + 1].value) + lhs.value[lhs.key] = value + _: + show_error_for_missing_state_value(DMConstants.translate(&"runtime.left_hand_size_cannot_be_assigned_to")) + + token.type = DMConstants.TOKEN_VALUE + token.value = value + tokens.remove_at(i + 1) + tokens.remove_at(i - 1) + i -= 1 + i += 1 + + if limit >= 1000: + assert(false, DMConstants.translate(&"runtime.something_went_wrong")) + + return tokens[0].value + + +# Compare two values. +func _compare(operator: String, first_value, second_value) -> bool: + match operator: + &"in": + if first_value == null or second_value == null: + return false + else: + return first_value in second_value + &"<": + if first_value == null: + return true + elif second_value == null: + return false + else: + return first_value < second_value + &">": + if first_value == null: + return false + elif second_value == null: + return true + else: + return first_value > second_value + &"<=": + if first_value == null: + return true + elif second_value == null: + return false + else: + return first_value <= second_value + &">=": + if first_value == null: + return false + elif second_value == null: + return true + else: + return first_value >= second_value + &"==": + if first_value == null: + if typeof(second_value) == TYPE_BOOL: + return second_value == false + else: + return second_value == null + else: + return first_value == second_value + &"!=": + if first_value == null: + if typeof(second_value) == TYPE_BOOL: + return second_value == true + else: + return second_value != null + else: + return first_value != second_value + + return false + + +# Apply an operation from one value to another. +func _apply_operation(operator: String, first_value, second_value): + match operator: + &"=": + return second_value + &"+", &"+=": + return first_value + second_value + &"-", &"-=": + return first_value - second_value + &"/", &"/=": + return first_value / second_value + &"*", &"*=": + return first_value * second_value + &"%": + return first_value % second_value + &"and": + return first_value and second_value + &"or": + return first_value or second_value + + assert(false, DMConstants.translate(&"runtime.unknown_operator")) + + +# Check if a dialogue line contains meaningful information. +func _is_valid(line: DialogueLine) -> bool: + if line == null: + return false + if line.type == DMConstants.TYPE_MUTATION and line.mutation == null: + return false + if line.type == DMConstants.TYPE_RESPONSE and line.get(&"responses").size() == 0: + return false + return true + + +# Check that a thing has a given method. +func _thing_has_method(thing, method: String, args: Array) -> bool: + if not is_instance_valid(thing): + return false + + if Builtins.is_supported(thing, method): + return thing != _autoloads + elif thing is Dictionary: + return false + + if method in [&"call", &"call_deferred"]: + return thing.has_method(args[0]) + + if method == &"emit_signal": + return thing.has_signal(args[0]) + + if thing.has_method(method): + return true + + if thing.get_script() and thing.get_script().resource_path.ends_with(".cs"): + # If we get this far then the method might be a C# method with a Task return type + return _get_dotnet_dialogue_manager().ThingHasMethod(thing, method, args) + + return false + + +# Check if a given property exists +func _thing_has_property(thing: Object, property: String) -> bool: + if thing == null: + return false + + for p in thing.get_property_list(): + if _node_properties.has(p.name): + # Ignore any properties on the base Node + continue + if p.name == property: + return true + + return false + + +func _get_method_info_for(thing: Variant, method: String, args: Array) -> Dictionary: + # Use the thing instance id as a key for the caching dictionary. + var thing_instance_id: int = thing.get_instance_id() + if not _method_info_cache.has(thing_instance_id): + var methods: Dictionary = {} + for m in thing.get_method_list(): + methods["%s:%d" % [m.name, m.args.size()]] = m + if not methods.has(m.name): + methods[m.name] = m + _method_info_cache[thing_instance_id] = methods + + var methods: Dictionary = _method_info_cache.get(thing_instance_id, {}) + var method_key: String = "%s:%d" % [method, args.size()] + if methods.has(method_key): + return methods.get(method_key) + else: + return methods.get(method) + + +func _resolve_thing_method(thing, method: String, args: Array): + if Builtins.is_supported(thing): + var result = Builtins.resolve_method(thing, method, args) + if not Builtins.has_resolve_method_failed(): + return result + + if thing.has_method(method): + # Try to convert any literals to the right type + var method_info: Dictionary = _get_method_info_for(thing, method, args) + var method_args: Array = method_info.args + if method_info.flags & METHOD_FLAG_VARARG == 0 and method_args.size() < args.size(): + assert(false, DMConstants.translate(&"runtime.expected_n_got_n_args").format({ expected = method_args.size(), method = method, received = args.size()})) + for i in range(0, min(method_args.size(), args.size())): + var m: Dictionary = method_args[i] + var to_type: int = typeof(args[i]) + if m.type == TYPE_ARRAY: + match m.hint_string: + &"String": + to_type = TYPE_PACKED_STRING_ARRAY + &"int": + to_type = TYPE_PACKED_INT64_ARRAY + &"float": + to_type = TYPE_PACKED_FLOAT64_ARRAY + &"Vector2": + to_type = TYPE_PACKED_VECTOR2_ARRAY + &"Vector3": + to_type = TYPE_PACKED_VECTOR3_ARRAY + _: + if m.hint_string != "": + assert(false, DMConstants.translate(&"runtime.unsupported_array_type").format({ type = m.hint_string})) + if typeof(args[i]) != to_type: + args[i] = convert(args[i], to_type) + + return await thing.callv(method, args) + + # If we get here then it's probably a C# method with a Task return type + var dotnet_dialogue_manager = _get_dotnet_dialogue_manager() + dotnet_dialogue_manager.ResolveThingMethod(thing, method, args) + return await dotnet_dialogue_manager.Resolved diff --git a/addons/dialogue_manager/dialogue_manager.gd.uid b/addons/dialogue_manager/dialogue_manager.gd.uid new file mode 100644 index 0000000..d10762e --- /dev/null +++ b/addons/dialogue_manager/dialogue_manager.gd.uid @@ -0,0 +1 @@ +uid://c3rodes2l3gxb diff --git a/addons/dialogue_manager/dialogue_resource.gd b/addons/dialogue_manager/dialogue_resource.gd new file mode 100644 index 0000000..29ade7b --- /dev/null +++ b/addons/dialogue_manager/dialogue_resource.gd @@ -0,0 +1,42 @@ +@tool +@icon("./assets/icon.svg") + +## A collection of dialogue lines for use with [code]DialogueManager[/code]. +class_name DialogueResource extends Resource + + +const DialogueLine = preload("./dialogue_line.gd") + +## A list of state shortcuts +@export var using_states: PackedStringArray = [] + +## A map of titles and the lines they point to. +@export var titles: Dictionary = {} + +## A list of character names. +@export var character_names: PackedStringArray = [] + +## The first title in the file. +@export var first_title: String = "" + +## A map of the encoded lines of dialogue. +@export var lines: Dictionary = {} + +## raw version of the text +@export var raw_text: String + + +## Get the next printable line of dialogue, starting from a referenced line ([code]title[/code] can +## be a title string or a stringified line number). Runs any mutations along the way and then returns +## the first dialogue line encountered. +func get_next_dialogue_line(title: String = "", extra_game_states: Array = [], mutation_behaviour: DMConstants.MutationBehaviour = DMConstants.MutationBehaviour.Wait) -> DialogueLine: + return await Engine.get_singleton("DialogueManager").get_next_dialogue_line(self, title, extra_game_states, mutation_behaviour) + + +## Get the list of any titles found in the file. +func get_titles() -> PackedStringArray: + return titles.keys() + + +func _to_string() -> String: + return "" % [",".join(titles.keys())] diff --git a/addons/dialogue_manager/dialogue_resource.gd.uid b/addons/dialogue_manager/dialogue_resource.gd.uid new file mode 100644 index 0000000..27b95d0 --- /dev/null +++ b/addons/dialogue_manager/dialogue_resource.gd.uid @@ -0,0 +1 @@ +uid://dbs4435dsf3ry diff --git a/addons/dialogue_manager/dialogue_response.gd b/addons/dialogue_manager/dialogue_response.gd new file mode 100644 index 0000000..479b81c --- /dev/null +++ b/addons/dialogue_manager/dialogue_response.gd @@ -0,0 +1,63 @@ +## A response to a line of dialogue, usualy attached to a [code]DialogueLine[/code]. +class_name DialogueResponse extends RefCounted + + +## The ID of this response +var id: String + +## The internal type of this dialogue object, always set to [code]TYPE_RESPONSE[/code]. +var type: String = DMConstants.TYPE_RESPONSE + +## The next line ID to use if this response is selected by the player. +var next_id: String = "" + +## [code]true[/code] if the condition of this line was met. +var is_allowed: bool = true + +## The original condition text. +var condition_as_text: String = "" + +## A character (depending on the "characters in responses" behaviour setting). +var character: String = "" + +## A dictionary of varialbe replaces for the character name. Generally for internal use only. +var character_replacements: Array[Dictionary] = [] + +## The prompt for this response. +var text: String = "" + +## A dictionary of variable replaces for the text. Generally for internal use only. +var text_replacements: Array[Dictionary] = [] + +## Any #tags +var tags: PackedStringArray = [] + +## The key to use for translating the text. +var translation_key: String = "" + + +func _init(data: Dictionary = {}) -> void: + if data.size() > 0: + id = data.id + type = data.type + next_id = data.next_id + is_allowed = data.is_allowed + character = data.character + character_replacements = data.character_replacements + text = data.text + text_replacements = data.text_replacements + tags = data.tags + translation_key = data.translation_key + condition_as_text = data.condition_as_text + + +func _to_string() -> String: + return "" % text + + +func get_tag_value(tag_name: String) -> String: + var wrapped := "%s=" % tag_name + for t in tags: + if t.begins_with(wrapped): + return t.replace(wrapped, "").strip_edges() + return "" diff --git a/addons/dialogue_manager/dialogue_response.gd.uid b/addons/dialogue_manager/dialogue_response.gd.uid new file mode 100644 index 0000000..9b4532a --- /dev/null +++ b/addons/dialogue_manager/dialogue_response.gd.uid @@ -0,0 +1 @@ +uid://cm0xpfeywpqid diff --git a/addons/dialogue_manager/dialogue_responses_menu.gd b/addons/dialogue_manager/dialogue_responses_menu.gd new file mode 100644 index 0000000..cd66ae5 --- /dev/null +++ b/addons/dialogue_manager/dialogue_responses_menu.gd @@ -0,0 +1,143 @@ +@icon("./assets/responses_menu.svg") + +## A [Container] for dialogue responses provided by [b]Dialogue Manager[/b]. +class_name DialogueResponsesMenu extends Container + + +## Emitted when a response is selected. +signal response_selected(response) + + +## Optionally specify a control to duplicate for each response +@export var response_template: Control + +## The action for accepting a response (is possibly overridden by parent dialogue balloon). +@export var next_action: StringName = &"" + +## Hide any responses where [code]is_allowed[/code] is false +@export var hide_failed_responses: bool = false + +## The list of dialogue responses. +var responses: Array = []: + get: + return responses + set(value): + responses = value + + # Remove any current items + for item in get_children(): + if item == response_template: continue + + remove_child(item) + item.queue_free() + + # Add new items + if responses.size() > 0: + for response in responses: + if hide_failed_responses and not response.is_allowed: continue + + var item: Control + if is_instance_valid(response_template): + item = response_template.duplicate(DUPLICATE_GROUPS | DUPLICATE_SCRIPTS | DUPLICATE_SIGNALS) + item.show() + else: + item = Button.new() + item.name = "Response%d" % get_child_count() + if not response.is_allowed: + item.name = item.name + &"Disallowed" + item.disabled = true + + # If the item has a response property then use that + if "response" in item: + item.response = response + # Otherwise assume we can just set the text + else: + item.text = response.text + + item.set_meta("response", response) + + add_child(item) + + _configure_focus() + + +func _ready() -> void: + visibility_changed.connect(func(): + if visible and get_menu_items().size() > 0: + var first_item: Control = get_menu_items()[0] + if first_item.is_inside_tree(): + first_item.grab_focus() + ) + + if is_instance_valid(response_template): + response_template.hide() + + +## Get the selectable items in the menu. +func get_menu_items() -> Array: + var items: Array = [] + for child in get_children(): + if not child.visible: continue + if "Disallowed" in child.name: continue + items.append(child) + + return items + + +#region Internal + + +# Prepare the menu for keyboard and mouse navigation. +func _configure_focus() -> void: + var items = get_menu_items() + for i in items.size(): + var item: Control = items[i] + + item.focus_mode = Control.FOCUS_ALL + + item.focus_neighbor_left = item.get_path() + item.focus_neighbor_right = item.get_path() + + if i == 0: + item.focus_neighbor_top = item.get_path() + item.focus_previous = item.get_path() + else: + item.focus_neighbor_top = items[i - 1].get_path() + item.focus_previous = items[i - 1].get_path() + + if i == items.size() - 1: + item.focus_neighbor_bottom = item.get_path() + item.focus_next = item.get_path() + else: + item.focus_neighbor_bottom = items[i + 1].get_path() + item.focus_next = items[i + 1].get_path() + + item.mouse_entered.connect(_on_response_mouse_entered.bind(item)) + item.gui_input.connect(_on_response_gui_input.bind(item, item.get_meta("response"))) + + items[0].grab_focus() + + +#endregion + +#region Signals + + +func _on_response_mouse_entered(item: Control) -> void: + if "Disallowed" in item.name: return + + item.grab_focus() + + +func _on_response_gui_input(event: InputEvent, item: Control, response) -> void: + if "Disallowed" in item.name: return + + if event is InputEventMouseButton and event.is_pressed() and event.button_index == MOUSE_BUTTON_LEFT: + get_viewport().set_input_as_handled() + response_selected.emit(response) + elif event.is_action_pressed(&"ui_accept" if next_action.is_empty() else next_action) and item in get_menu_items(): + get_viewport().set_input_as_handled() + response_selected.emit(response) + + +#endregion diff --git a/addons/dialogue_manager/dialogue_responses_menu.gd.uid b/addons/dialogue_manager/dialogue_responses_menu.gd.uid new file mode 100644 index 0000000..0ae73d9 --- /dev/null +++ b/addons/dialogue_manager/dialogue_responses_menu.gd.uid @@ -0,0 +1 @@ +uid://bb52rsfwhkxbn diff --git a/addons/dialogue_manager/editor_translation_parser_plugin.gd b/addons/dialogue_manager/editor_translation_parser_plugin.gd new file mode 100644 index 0000000..137ab70 --- /dev/null +++ b/addons/dialogue_manager/editor_translation_parser_plugin.gd @@ -0,0 +1,53 @@ +class_name DMTranslationParserPlugin extends EditorTranslationParserPlugin + + +## Cached result of parsing a dialogue file. +var data: DMCompilerResult +## List of characters that were added. +var translated_character_names: PackedStringArray = [] +var translated_lines: Array[Dictionary] = [] + + +func _parse_file(path: String) -> Array[PackedStringArray]: + var msgs: Array[PackedStringArray] = [] + var file: FileAccess = FileAccess.open(path, FileAccess.READ) + var text: String = file.get_as_text() + + data = DMCompiler.compile_string(text, path) + + var known_keys: PackedStringArray = PackedStringArray([]) + + # Add all character names if settings ask for it + if DMSettings.get_setting(DMSettings.INCLUDE_CHARACTERS_IN_TRANSLATABLE_STRINGS_LIST, true): + translated_character_names = [] as Array[DialogueLine] + for character_name: String in data.character_names: + if character_name in known_keys: continue + + known_keys.append(character_name) + + translated_character_names.append(character_name) + msgs.append(PackedStringArray([character_name.replace('"', '\"'), "dialogue", "", DMConstants.translate("translation_plugin.character_name")])) + + # Add all dialogue lines and responses + var dialogue: Dictionary = data.lines + for key: String in dialogue.keys(): + var line: Dictionary = dialogue.get(key) + + if not line.type in [DMConstants.TYPE_DIALOGUE, DMConstants.TYPE_RESPONSE]: continue + + var translation_key: String = line.get(&"translation_key", line.text) + + if translation_key in known_keys: continue + + known_keys.append(translation_key) + translated_lines.append(line) + if translation_key == line.text: + msgs.append(PackedStringArray([line.text.replace('"', '\"'), "", "", line.get("notes", "")])) + else: + msgs.append(PackedStringArray([line.text.replace('"', '\"'), line.translation_key.replace('"', '\"'), "", line.get("notes", "")])) + + return msgs + + +func _get_recognized_extensions() -> PackedStringArray: + return ["dialogue"] diff --git a/addons/dialogue_manager/editor_translation_parser_plugin.gd.uid b/addons/dialogue_manager/editor_translation_parser_plugin.gd.uid new file mode 100644 index 0000000..22ddbe9 --- /dev/null +++ b/addons/dialogue_manager/editor_translation_parser_plugin.gd.uid @@ -0,0 +1 @@ +uid://c6bya881h1egb diff --git a/addons/dialogue_manager/example_balloon/ExampleBalloon.cs b/addons/dialogue_manager/example_balloon/ExampleBalloon.cs new file mode 100644 index 0000000..980f067 --- /dev/null +++ b/addons/dialogue_manager/example_balloon/ExampleBalloon.cs @@ -0,0 +1,223 @@ +using Godot; +using Godot.Collections; + +namespace DialogueManagerRuntime +{ + public partial class ExampleBalloon : CanvasLayer + { + [Export] public string NextAction = "ui_accept"; + [Export] public string SkipAction = "ui_cancel"; + + + Control balloon; + RichTextLabel characterLabel; + RichTextLabel dialogueLabel; + VBoxContainer responsesMenu; + + Resource resource; + Array temporaryGameStates = new Array(); + bool isWaitingForInput = false; + bool willHideBalloon = false; + + DialogueLine dialogueLine; + DialogueLine DialogueLine + { + get => dialogueLine; + set + { + if (value == null) + { + QueueFree(); + return; + } + + dialogueLine = value; + ApplyDialogueLine(); + } + } + + Timer MutationCooldown = new Timer(); + + + public override void _Ready() + { + balloon = GetNode("%Balloon"); + characterLabel = GetNode("%CharacterLabel"); + dialogueLabel = GetNode("%DialogueLabel"); + responsesMenu = GetNode("%ResponsesMenu"); + + balloon.Hide(); + + balloon.GuiInput += (@event) => + { + if ((bool)dialogueLabel.Get("is_typing")) + { + bool mouseWasClicked = @event is InputEventMouseButton && (@event as InputEventMouseButton).ButtonIndex == MouseButton.Left && @event.IsPressed(); + bool skipButtonWasPressed = @event.IsActionPressed(SkipAction); + if (mouseWasClicked || skipButtonWasPressed) + { + GetViewport().SetInputAsHandled(); + dialogueLabel.Call("skip_typing"); + return; + } + } + + if (!isWaitingForInput) return; + if (dialogueLine.Responses.Count > 0) return; + + GetViewport().SetInputAsHandled(); + + if (@event is InputEventMouseButton && @event.IsPressed() && (@event as InputEventMouseButton).ButtonIndex == MouseButton.Left) + { + Next(dialogueLine.NextId); + } + else if (@event.IsActionPressed(NextAction) && GetViewport().GuiGetFocusOwner() == balloon) + { + Next(dialogueLine.NextId); + } + }; + + if (string.IsNullOrEmpty((string)responsesMenu.Get("next_action"))) + { + responsesMenu.Set("next_action", NextAction); + } + responsesMenu.Connect("response_selected", Callable.From((DialogueResponse response) => + { + Next(response.NextId); + })); + + + // Hide the balloon when a mutation is running + MutationCooldown.Timeout += () => + { + if (willHideBalloon) + { + willHideBalloon = false; + balloon.Hide(); + } + }; + AddChild(MutationCooldown); + + DialogueManager.Mutated += OnMutated; + } + + + public override void _ExitTree() + { + DialogueManager.Mutated -= OnMutated; + } + + + public override void _UnhandledInput(InputEvent @event) + { + // Only the balloon is allowed to handle input while it's showing + GetViewport().SetInputAsHandled(); + } + + + public override async void _Notification(int what) + { + // Detect a change of locale and update the current dialogue line to show the new language + if (what == NotificationTranslationChanged && IsInstanceValid(dialogueLabel)) + { + float visibleRatio = dialogueLabel.VisibleRatio; + DialogueLine = await DialogueManager.GetNextDialogueLine(resource, DialogueLine.Id, temporaryGameStates); + if (visibleRatio < 1.0f) + { + dialogueLabel.Call("skip_typing"); + } + } + } + + + public async void Start(Resource dialogueResource, string title, Array extraGameStates = null) + { + temporaryGameStates = new Array { this } + (extraGameStates ?? new Array()); + isWaitingForInput = false; + resource = dialogueResource; + + DialogueLine = await DialogueManager.GetNextDialogueLine(resource, title, temporaryGameStates); + } + + + public async void Next(string nextId) + { + DialogueLine = await DialogueManager.GetNextDialogueLine(resource, nextId, temporaryGameStates); + } + + + #region Helpers + + + private async void ApplyDialogueLine() + { + MutationCooldown.Stop(); + + isWaitingForInput = false; + balloon.FocusMode = Control.FocusModeEnum.All; + balloon.GrabFocus(); + + // Set up the character name + characterLabel.Visible = !string.IsNullOrEmpty(dialogueLine.Character); + characterLabel.Text = Tr(dialogueLine.Character, "dialogue"); + + // Set up the dialogue + dialogueLabel.Hide(); + dialogueLabel.Set("dialogue_line", dialogueLine); + + // Set up the responses + responsesMenu.Hide(); + responsesMenu.Set("responses", dialogueLine.Responses); + + // Type out the text + balloon.Show(); + willHideBalloon = false; + dialogueLabel.Show(); + if (!string.IsNullOrEmpty(dialogueLine.Text)) + { + dialogueLabel.Call("type_out"); + await ToSignal(dialogueLabel, "finished_typing"); + } + + // Wait for input + if (dialogueLine.Responses.Count > 0) + { + balloon.FocusMode = Control.FocusModeEnum.None; + responsesMenu.Show(); + } + else if (!string.IsNullOrEmpty(dialogueLine.Time)) + { + float time = 0f; + if (!float.TryParse(dialogueLine.Time, out time)) + { + time = dialogueLine.Text.Length * 0.02f; + } + await ToSignal(GetTree().CreateTimer(time), "timeout"); + Next(dialogueLine.NextId); + } + else + { + isWaitingForInput = true; + balloon.FocusMode = Control.FocusModeEnum.All; + balloon.GrabFocus(); + } + } + + + #endregion + + + #region signals + + + private void OnMutated(Dictionary _mutation) + { + isWaitingForInput = false; + willHideBalloon = true; + MutationCooldown.Start(0.1f); + } + + + #endregion + } +} diff --git a/addons/dialogue_manager/example_balloon/ExampleBalloon.cs.uid b/addons/dialogue_manager/example_balloon/ExampleBalloon.cs.uid new file mode 100644 index 0000000..4b3783a --- /dev/null +++ b/addons/dialogue_manager/example_balloon/ExampleBalloon.cs.uid @@ -0,0 +1 @@ +uid://5b3w40kwakl3 diff --git a/addons/dialogue_manager/example_balloon/example_balloon.gd b/addons/dialogue_manager/example_balloon/example_balloon.gd new file mode 100644 index 0000000..c7e6d9a --- /dev/null +++ b/addons/dialogue_manager/example_balloon/example_balloon.gd @@ -0,0 +1,176 @@ +class_name DialogueManagerExampleBalloon extends CanvasLayer +## A basic dialogue balloon for use with Dialogue Manager. + +## The action to use for advancing the dialogue +@export var next_action: StringName = &"ui_accept" + +## The action to use to skip typing the dialogue +@export var skip_action: StringName = &"ui_cancel" + +## The dialogue resource +var resource: DialogueResource + +## Temporary game states +var temporary_game_states: Array = [] + +## See if we are waiting for the player +var is_waiting_for_input: bool = false + +## See if we are running a long mutation and should hide the balloon +var will_hide_balloon: bool = false + +## A dictionary to store any ephemeral variables +var locals: Dictionary = {} + +var _locale: String = TranslationServer.get_locale() + +## The current line +var dialogue_line: DialogueLine: + set(value): + if value: + dialogue_line = value + apply_dialogue_line() + else: + # The dialogue has finished so close the balloon + queue_free() + get: + return dialogue_line + +## A cooldown timer for delaying the balloon hide when encountering a mutation. +var mutation_cooldown: Timer = Timer.new() + +## The base balloon anchor +@onready var balloon: Control = %Balloon + +## The label showing the name of the currently speaking character +@onready var character_label: RichTextLabel = %CharacterLabel + +## The label showing the currently spoken dialogue +@onready var dialogue_label: DialogueLabel = %DialogueLabel + +## The menu of responses +@onready var responses_menu: DialogueResponsesMenu = %ResponsesMenu + + +func _ready() -> void: + balloon.hide() + Engine.get_singleton("DialogueManager").mutated.connect(_on_mutated) + + # If the responses menu doesn't have a next action set, use this one + if responses_menu.next_action.is_empty(): + responses_menu.next_action = next_action + + mutation_cooldown.timeout.connect(_on_mutation_cooldown_timeout) + add_child(mutation_cooldown) + + +func _unhandled_input(_event: InputEvent) -> void: + # Only the balloon is allowed to handle input while it's showing + get_viewport().set_input_as_handled() + + +func _notification(what: int) -> void: + ## Detect a change of locale and update the current dialogue line to show the new language + if what == NOTIFICATION_TRANSLATION_CHANGED and _locale != TranslationServer.get_locale() and is_instance_valid(dialogue_label): + _locale = TranslationServer.get_locale() + var visible_ratio = dialogue_label.visible_ratio + self.dialogue_line = await resource.get_next_dialogue_line(dialogue_line.id) + if visible_ratio < 1: + dialogue_label.skip_typing() + + +## Start some dialogue +func start(dialogue_resource: DialogueResource, title: String, extra_game_states: Array = []) -> void: + temporary_game_states = [self] + extra_game_states + is_waiting_for_input = false + resource = dialogue_resource + self.dialogue_line = await resource.get_next_dialogue_line(title, temporary_game_states) + + +## Apply any changes to the balloon given a new [DialogueLine]. +func apply_dialogue_line() -> void: + mutation_cooldown.stop() + + is_waiting_for_input = false + balloon.focus_mode = Control.FOCUS_ALL + balloon.grab_focus() + + character_label.visible = not dialogue_line.character.is_empty() + character_label.text = tr(dialogue_line.character, "dialogue") + + dialogue_label.hide() + dialogue_label.dialogue_line = dialogue_line + + responses_menu.hide() + responses_menu.responses = dialogue_line.responses + + # Show our balloon + balloon.show() + will_hide_balloon = false + + dialogue_label.show() + if not dialogue_line.text.is_empty(): + dialogue_label.type_out() + await dialogue_label.finished_typing + + # Wait for input + if dialogue_line.responses.size() > 0: + balloon.focus_mode = Control.FOCUS_NONE + responses_menu.show() + elif dialogue_line.time != "": + var time = dialogue_line.text.length() * 0.02 if dialogue_line.time == "auto" else dialogue_line.time.to_float() + await get_tree().create_timer(time).timeout + next(dialogue_line.next_id) + else: + is_waiting_for_input = true + balloon.focus_mode = Control.FOCUS_ALL + balloon.grab_focus() + + +## Go to the next line +func next(next_id: String) -> void: + self.dialogue_line = await resource.get_next_dialogue_line(next_id, temporary_game_states) + + +#region Signals + + +func _on_mutation_cooldown_timeout() -> void: + if will_hide_balloon: + will_hide_balloon = false + balloon.hide() + + +func _on_mutated(_mutation: Dictionary) -> void: + is_waiting_for_input = false + will_hide_balloon = true + mutation_cooldown.start(0.1) + + +func _on_balloon_gui_input(event: InputEvent) -> void: + # See if we need to skip typing of the dialogue + if dialogue_label.is_typing: + var mouse_was_clicked: bool = event is InputEventMouseButton and event.button_index == MOUSE_BUTTON_LEFT and event.is_pressed() + var skip_button_was_pressed: bool = event.is_action_pressed(skip_action) + if mouse_was_clicked or skip_button_was_pressed: + get_viewport().set_input_as_handled() + dialogue_label.skip_typing() + return + + if not is_waiting_for_input: return + if dialogue_line.responses.size() > 0: return + + # When there are no response options the balloon itself is the clickable thing + get_viewport().set_input_as_handled() + + if event is InputEventMouseButton and event.is_pressed() and event.button_index == MOUSE_BUTTON_LEFT: + next(dialogue_line.next_id) + elif event.is_action_pressed(next_action) and get_viewport().gui_get_focus_owner() == balloon: + next(dialogue_line.next_id) + + +func _on_responses_menu_response_selected(response: DialogueResponse) -> void: + next(response.next_id) + + +#endregion diff --git a/addons/dialogue_manager/example_balloon/example_balloon.gd.uid b/addons/dialogue_manager/example_balloon/example_balloon.gd.uid new file mode 100644 index 0000000..6327f9b --- /dev/null +++ b/addons/dialogue_manager/example_balloon/example_balloon.gd.uid @@ -0,0 +1 @@ +uid://d1wt4ma6055l8 diff --git a/addons/dialogue_manager/example_balloon/example_balloon.tscn b/addons/dialogue_manager/example_balloon/example_balloon.tscn new file mode 100644 index 0000000..91d8a7d --- /dev/null +++ b/addons/dialogue_manager/example_balloon/example_balloon.tscn @@ -0,0 +1,149 @@ +[gd_scene load_steps=9 format=3 uid="uid://73jm5qjy52vq"] + +[ext_resource type="Script" uid="uid://d1wt4ma6055l8" path="res://addons/dialogue_manager/example_balloon/example_balloon.gd" id="1_36de5"] +[ext_resource type="PackedScene" uid="uid://ckvgyvclnwggo" path="res://addons/dialogue_manager/dialogue_label.tscn" id="2_a8ve6"] +[ext_resource type="Script" uid="uid://bb52rsfwhkxbn" path="res://addons/dialogue_manager/dialogue_responses_menu.gd" id="3_72ixx"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_spyqn"] +bg_color = Color(0, 0, 0, 1) +border_width_left = 3 +border_width_top = 3 +border_width_right = 3 +border_width_bottom = 3 +border_color = Color(0.329412, 0.329412, 0.329412, 1) +corner_radius_top_left = 5 +corner_radius_top_right = 5 +corner_radius_bottom_right = 5 +corner_radius_bottom_left = 5 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ri4m3"] +bg_color = Color(0.121569, 0.121569, 0.121569, 1) +border_width_left = 3 +border_width_top = 3 +border_width_right = 3 +border_width_bottom = 3 +border_color = Color(1, 1, 1, 1) +corner_radius_top_left = 5 +corner_radius_top_right = 5 +corner_radius_bottom_right = 5 +corner_radius_bottom_left = 5 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_e0njw"] +bg_color = Color(0, 0, 0, 1) +border_width_left = 3 +border_width_top = 3 +border_width_right = 3 +border_width_bottom = 3 +border_color = Color(0.6, 0.6, 0.6, 1) +corner_radius_top_left = 5 +corner_radius_top_right = 5 +corner_radius_bottom_right = 5 +corner_radius_bottom_left = 5 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_uy0d5"] +bg_color = Color(0, 0, 0, 1) +border_width_left = 3 +border_width_top = 3 +border_width_right = 3 +border_width_bottom = 3 +corner_radius_top_left = 5 +corner_radius_top_right = 5 +corner_radius_bottom_right = 5 +corner_radius_bottom_left = 5 + +[sub_resource type="Theme" id="Theme_qq3yp"] +default_font_size = 20 +Button/styles/disabled = SubResource("StyleBoxFlat_spyqn") +Button/styles/focus = SubResource("StyleBoxFlat_ri4m3") +Button/styles/hover = SubResource("StyleBoxFlat_e0njw") +Button/styles/normal = SubResource("StyleBoxFlat_e0njw") +MarginContainer/constants/margin_bottom = 15 +MarginContainer/constants/margin_left = 30 +MarginContainer/constants/margin_right = 30 +MarginContainer/constants/margin_top = 15 +Panel/styles/panel = SubResource("StyleBoxFlat_uy0d5") + +[node name="ExampleBalloon" type="CanvasLayer"] +layer = 100 +script = ExtResource("1_36de5") + +[node name="Balloon" type="Control" parent="."] +unique_name_in_owner = true +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme = SubResource("Theme_qq3yp") + +[node name="Panel" type="Panel" parent="Balloon"] +clip_children = 2 +layout_mode = 1 +anchors_preset = 12 +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = 21.0 +offset_top = -183.0 +offset_right = -19.0 +offset_bottom = -19.0 +grow_horizontal = 2 +grow_vertical = 0 +mouse_filter = 1 + +[node name="Dialogue" type="MarginContainer" parent="Balloon/Panel"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="VBoxContainer" type="VBoxContainer" parent="Balloon/Panel/Dialogue"] +layout_mode = 2 + +[node name="CharacterLabel" type="RichTextLabel" parent="Balloon/Panel/Dialogue/VBoxContainer"] +unique_name_in_owner = true +modulate = Color(1, 1, 1, 0.501961) +layout_mode = 2 +mouse_filter = 1 +bbcode_enabled = true +text = "Character" +fit_content = true +scroll_active = false + +[node name="DialogueLabel" parent="Balloon/Panel/Dialogue/VBoxContainer" instance=ExtResource("2_a8ve6")] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 3 +text = "Dialogue..." + +[node name="Responses" type="MarginContainer" parent="Balloon"] +layout_mode = 1 +anchors_preset = 7 +anchor_left = 0.5 +anchor_top = 1.0 +anchor_right = 0.5 +anchor_bottom = 1.0 +offset_left = -147.0 +offset_top = -558.0 +offset_right = 494.0 +offset_bottom = -154.0 +grow_horizontal = 2 +grow_vertical = 0 + +[node name="ResponsesMenu" type="VBoxContainer" parent="Balloon/Responses" node_paths=PackedStringArray("response_template")] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 8 +theme_override_constants/separation = 2 +script = ExtResource("3_72ixx") +response_template = NodePath("ResponseExample") + +[node name="ResponseExample" type="Button" parent="Balloon/Responses/ResponsesMenu"] +layout_mode = 2 +text = "Response example" + +[connection signal="gui_input" from="Balloon" to="." method="_on_balloon_gui_input"] +[connection signal="response_selected" from="Balloon/Responses/ResponsesMenu" to="." method="_on_responses_menu_response_selected"] diff --git a/addons/dialogue_manager/example_balloon/small_example_balloon.tscn b/addons/dialogue_manager/example_balloon/small_example_balloon.tscn new file mode 100644 index 0000000..c4d2145 --- /dev/null +++ b/addons/dialogue_manager/example_balloon/small_example_balloon.tscn @@ -0,0 +1,174 @@ +[gd_scene load_steps=10 format=3 uid="uid://13s5spsk34qu"] + +[ext_resource type="Script" uid="uid://d1wt4ma6055l8" path="res://addons/dialogue_manager/example_balloon/example_balloon.gd" id="1_s2gbs"] +[ext_resource type="PackedScene" uid="uid://ckvgyvclnwggo" path="res://addons/dialogue_manager/dialogue_label.tscn" id="2_hfvdi"] +[ext_resource type="Script" uid="uid://bb52rsfwhkxbn" path="res://addons/dialogue_manager/dialogue_responses_menu.gd" id="3_1j1j0"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_235ry"] +content_margin_left = 6.0 +content_margin_top = 3.0 +content_margin_right = 6.0 +content_margin_bottom = 3.0 +bg_color = Color(0.0666667, 0.0666667, 0.0666667, 1) +border_width_left = 1 +border_width_top = 1 +border_width_right = 1 +border_width_bottom = 1 +border_color = Color(0.345098, 0.345098, 0.345098, 1) +corner_radius_top_left = 3 +corner_radius_top_right = 3 +corner_radius_bottom_right = 3 +corner_radius_bottom_left = 3 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ufjut"] +content_margin_left = 6.0 +content_margin_top = 3.0 +content_margin_right = 6.0 +content_margin_bottom = 3.0 +bg_color = Color(0.227451, 0.227451, 0.227451, 1) +border_width_left = 1 +border_width_top = 1 +border_width_right = 1 +border_width_bottom = 1 +border_color = Color(1, 1, 1, 1) +corner_radius_top_left = 3 +corner_radius_top_right = 3 +corner_radius_bottom_right = 3 +corner_radius_bottom_left = 3 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_fcbqo"] +content_margin_left = 6.0 +content_margin_top = 3.0 +content_margin_right = 6.0 +content_margin_bottom = 3.0 +bg_color = Color(0.0666667, 0.0666667, 0.0666667, 1) +border_width_left = 1 +border_width_top = 1 +border_width_right = 1 +border_width_bottom = 1 +corner_radius_top_left = 3 +corner_radius_top_right = 3 +corner_radius_bottom_right = 3 +corner_radius_bottom_left = 3 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_t6i7a"] +content_margin_left = 6.0 +content_margin_top = 3.0 +content_margin_right = 6.0 +content_margin_bottom = 3.0 +bg_color = Color(0.0666667, 0.0666667, 0.0666667, 1) +border_width_left = 1 +border_width_top = 1 +border_width_right = 1 +border_width_bottom = 1 +corner_radius_top_left = 3 +corner_radius_top_right = 3 +corner_radius_bottom_right = 3 +corner_radius_bottom_left = 3 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_uy0d5"] +bg_color = Color(0, 0, 0, 1) +border_width_left = 1 +border_width_top = 1 +border_width_right = 1 +border_width_bottom = 1 +corner_radius_top_left = 3 +corner_radius_top_right = 3 +corner_radius_bottom_right = 3 +corner_radius_bottom_left = 3 + +[sub_resource type="Theme" id="Theme_qq3yp"] +default_font_size = 8 +Button/styles/disabled = SubResource("StyleBoxFlat_235ry") +Button/styles/focus = SubResource("StyleBoxFlat_ufjut") +Button/styles/hover = SubResource("StyleBoxFlat_fcbqo") +Button/styles/normal = SubResource("StyleBoxFlat_t6i7a") +MarginContainer/constants/margin_bottom = 4 +MarginContainer/constants/margin_left = 8 +MarginContainer/constants/margin_right = 8 +MarginContainer/constants/margin_top = 4 +Panel/styles/panel = SubResource("StyleBoxFlat_uy0d5") + +[node name="ExampleBalloon" type="CanvasLayer"] +layer = 100 +script = ExtResource("1_s2gbs") + +[node name="Balloon" type="Control" parent="."] +unique_name_in_owner = true +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme = SubResource("Theme_qq3yp") + +[node name="Panel" type="Panel" parent="Balloon"] +clip_children = 2 +layout_mode = 1 +anchors_preset = 12 +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = 3.0 +offset_top = -62.0 +offset_right = -4.0 +offset_bottom = -4.0 +grow_horizontal = 2 +grow_vertical = 0 +mouse_filter = 1 + +[node name="Dialogue" type="MarginContainer" parent="Balloon/Panel"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="VBoxContainer" type="VBoxContainer" parent="Balloon/Panel/Dialogue"] +layout_mode = 2 + +[node name="CharacterLabel" type="RichTextLabel" parent="Balloon/Panel/Dialogue/VBoxContainer"] +unique_name_in_owner = true +modulate = Color(1, 1, 1, 0.501961) +layout_mode = 2 +mouse_filter = 1 +bbcode_enabled = true +text = "Character" +fit_content = true +scroll_active = false + +[node name="DialogueLabel" parent="Balloon/Panel/Dialogue/VBoxContainer" instance=ExtResource("2_hfvdi")] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 3 +text = "Dialogue..." + +[node name="Responses" type="MarginContainer" parent="Balloon"] +layout_mode = 1 +anchors_preset = 7 +anchor_left = 0.5 +anchor_top = 1.0 +anchor_right = 0.5 +anchor_bottom = 1.0 +offset_left = -124.0 +offset_top = -218.0 +offset_right = 125.0 +offset_bottom = -50.0 +grow_horizontal = 2 +grow_vertical = 0 + +[node name="ResponsesMenu" type="VBoxContainer" parent="Balloon/Responses"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 8 +theme_override_constants/separation = 2 +script = ExtResource("3_1j1j0") + +[node name="ResponseExample" type="Button" parent="Balloon/Responses/ResponsesMenu"] +layout_mode = 2 +text = "Response Example" + +[connection signal="gui_input" from="Balloon" to="." method="_on_balloon_gui_input"] +[connection signal="response_selected" from="Balloon/Responses/ResponsesMenu" to="." method="_on_responses_menu_response_selected"] diff --git a/addons/dialogue_manager/export_plugin.gd b/addons/dialogue_manager/export_plugin.gd new file mode 100644 index 0000000..ef65500 --- /dev/null +++ b/addons/dialogue_manager/export_plugin.gd @@ -0,0 +1,26 @@ +class_name DMExportPlugin extends EditorExportPlugin + +const IGNORED_PATHS = [ + "/assets", + "/components", + "/views", + "inspector_plugin", + "test_scene" +] + + +func _get_name() -> String: + return "Dialogue Manager Export Plugin" + + +func _export_file(path: String, type: String, features: PackedStringArray) -> void: + var plugin_path: String = Engine.get_meta("DialogueManagerPlugin").get_plugin_path() + + # Ignore any editor stuff + for ignored_path: String in IGNORED_PATHS: + if path.begins_with(plugin_path + ignored_path): + skip() + + # Ignore C# stuff it not using dotnet + if path.begins_with(plugin_path) and not DMSettings.check_for_dotnet_solution() and path.ends_with(".cs"): + skip() diff --git a/addons/dialogue_manager/export_plugin.gd.uid b/addons/dialogue_manager/export_plugin.gd.uid new file mode 100644 index 0000000..efaa0c6 --- /dev/null +++ b/addons/dialogue_manager/export_plugin.gd.uid @@ -0,0 +1 @@ +uid://sa55ra11ji2q diff --git a/addons/dialogue_manager/import_plugin.gd b/addons/dialogue_manager/import_plugin.gd new file mode 100644 index 0000000..9c4ad78 --- /dev/null +++ b/addons/dialogue_manager/import_plugin.gd @@ -0,0 +1,110 @@ +@tool +class_name DMImportPlugin extends EditorImportPlugin + + +signal compiled_resource(resource: Resource) + + +const COMPILER_VERSION = 15 + + +func _get_importer_name() -> String: + return "dialogue_manager" + + +func _get_format_version() -> int: + return COMPILER_VERSION + + +func _get_visible_name() -> String: + return "Dialogue" + + +func _get_import_order() -> int: + return -1000 + + +func _get_priority() -> float: + return 1000.0 + + +func _get_resource_type(): + return "Resource" + + +func _get_recognized_extensions() -> PackedStringArray: + return PackedStringArray(["dialogue"]) + + +func _get_save_extension(): + return "tres" + + +func _get_preset_count() -> int: + return 0 + + +func _get_preset_name(preset_index: int) -> String: + return "Unknown" + + +func _get_import_options(path: String, preset_index: int) -> Array: + # When the options array is empty there is a misleading error on export + # that actually means nothing so let's just have an invisible option. + return [{ + name = "defaults", + default_value = true + }] + + +func _get_option_visibility(path: String, option_name: StringName, options: Dictionary) -> bool: + return false + + +func _import(source_file: String, save_path: String, options: Dictionary, platform_variants: Array[String], gen_files: Array[String]) -> Error: + var cache = Engine.get_meta("DMCache") + + # Get the raw file contents + if not FileAccess.file_exists(source_file): return ERR_FILE_NOT_FOUND + + var file: FileAccess = FileAccess.open(source_file, FileAccess.READ) + var raw_text: String = file.get_as_text() + + cache.file_content_changed.emit(source_file, raw_text) + + # Compile the text + var result: DMCompilerResult = DMCompiler.compile_string(raw_text, source_file) + if result.errors.size() > 0: + printerr("%d errors found in %s" % [result.errors.size(), source_file]) + cache.add_errors_to_file(source_file, result.errors) + return OK + + # Get the current addon version + var config: ConfigFile = ConfigFile.new() + config.load("res://addons/dialogue_manager/plugin.cfg") + var version: String = config.get_value("plugin", "version") + + # Save the results to a resource + var resource: DialogueResource = DialogueResource.new() + resource.set_meta("dialogue_manager_version", version) + + resource.using_states = result.using_states + resource.titles = result.titles + resource.first_title = result.first_title + resource.character_names = result.character_names + resource.lines = result.lines + resource.raw_text = result.raw_text + + # Clear errors and possibly trigger any cascade recompiles + cache.add_file(source_file, result) + + var err: Error = ResourceSaver.save(resource, "%s.%s" % [save_path, _get_save_extension()]) + + compiled_resource.emit(resource) + + # Recompile any dependencies + var dependent_paths: PackedStringArray = cache.get_dependent_paths_for_reimport(source_file) + for path in dependent_paths: + append_import_external_resource(path) + + return err diff --git a/addons/dialogue_manager/import_plugin.gd.uid b/addons/dialogue_manager/import_plugin.gd.uid new file mode 100644 index 0000000..e98bfab --- /dev/null +++ b/addons/dialogue_manager/import_plugin.gd.uid @@ -0,0 +1 @@ +uid://dhwpj6ed8soyq diff --git a/addons/dialogue_manager/inspector_plugin.gd b/addons/dialogue_manager/inspector_plugin.gd new file mode 100644 index 0000000..366c1f3 --- /dev/null +++ b/addons/dialogue_manager/inspector_plugin.gd @@ -0,0 +1,21 @@ +@tool +class_name DMInspectorPlugin extends EditorInspectorPlugin + + +const DialogueEditorProperty = preload("./components/editor_property/editor_property.gd") + + +func _can_handle(object) -> bool: + if object is GDScript: return false + if not object is Node: return false + if "name" in object and object.name == "Dialogue Manager": return false + return true + + +func _parse_property(object: Object, type, name: String, hint_type, hint_string: String, usage_flags: int, wide: bool) -> bool: + if hint_string == "DialogueResource" or ("dialogue" in name.to_lower() and hint_string == "Resource"): + var property_editor = DialogueEditorProperty.new() + add_property_editor(name, property_editor) + return true + + return false diff --git a/addons/dialogue_manager/inspector_plugin.gd.uid b/addons/dialogue_manager/inspector_plugin.gd.uid new file mode 100644 index 0000000..00c8db8 --- /dev/null +++ b/addons/dialogue_manager/inspector_plugin.gd.uid @@ -0,0 +1 @@ +uid://0x31sbqbikov diff --git a/addons/dialogue_manager/l10n/en.po b/addons/dialogue_manager/l10n/en.po new file mode 100644 index 0000000..9ada34e --- /dev/null +++ b/addons/dialogue_manager/l10n/en.po @@ -0,0 +1,433 @@ +msgid "" +msgstr "" +"Project-Id-Version: Dialogue Manager\n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: en\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 3.2.2\n" + +msgid "start_a_new_file" +msgstr "Start a new file" + +msgid "open_a_file" +msgstr "Open a file" + +msgid "open.open" +msgstr "Open..." + +msgid "open.quick_open" +msgstr "Quick open..." + +msgid "open.no_recent_files" +msgstr "No recent files" + +msgid "open.clear_recent_files" +msgstr "Clear recent files" + +msgid "save_all_files" +msgstr "Save all files" + +msgid "all" +msgstr "All" + +msgid "find_in_files" +msgstr "Find in files..." + +msgid "test_dialogue" +msgstr "Test dialogue from start of file" + +msgid "test_dialogue_from_line" +msgstr "Test dialogue from current line" + +msgid "search_for_text" +msgstr "Search for text" + +msgid "insert" +msgstr "Insert" + +msgid "translations" +msgstr "Translations" + +msgid "sponsor" +msgstr "Sponsor" + +msgid "show_support" +msgstr "Support Dialogue Manager" + +msgid "docs" +msgstr "Docs" + +msgid "insert.wave_bbcode" +msgstr "Wave BBCode" + +msgid "insert.shake_bbcode" +msgstr "Shake BBCode" + +msgid "insert.typing_pause" +msgstr "Typing pause" + +msgid "insert.typing_speed_change" +msgstr "Typing speed change" + +msgid "insert.auto_advance" +msgstr "Auto advance" + +msgid "insert.templates" +msgstr "Templates" + +msgid "insert.title" +msgstr "Title" + +msgid "insert.dialogue" +msgstr "Dialogue" + +msgid "insert.response" +msgstr "Response" + +msgid "insert.random_lines" +msgstr "Random lines" + +msgid "insert.random_text" +msgstr "Random text" + +msgid "insert.actions" +msgstr "Actions" + +msgid "insert.jump" +msgstr "Jump to title" + +msgid "insert.end_dialogue" +msgstr "End dialogue" + +msgid "generate_line_ids" +msgstr "Generate line IDs" + +msgid "save_characters_to_csv" +msgstr "Save character names to CSV..." + +msgid "save_to_csv" +msgstr "Save lines to CSV..." + +msgid "import_from_csv" +msgstr "Import line changes from CSV..." + +msgid "confirm_close" +msgstr "Save changes to '{path}'?" + +msgid "confirm_close.save" +msgstr "Save changes" + +msgid "confirm_close.discard" +msgstr "Discard" + +msgid "buffer.save" +msgstr "Save" + +msgid "buffer.save_as" +msgstr "Save as..." + +msgid "buffer.close" +msgstr "Close" + +msgid "buffer.close_all" +msgstr "Close all" + +msgid "buffer.close_other_files" +msgstr "Close other files" + +msgid "buffer.copy_file_path" +msgstr "Copy file path" + +msgid "buffer.show_in_filesystem" +msgstr "Show in FileSystem" + +msgid "n_of_n" +msgstr "{index} of {total}" + +msgid "search.find" +msgstr "Find:" + +msgid "search.find_all" +msgstr "Find all..." + +msgid "search.placeholder" +msgstr "Text to search for" + +msgid "search.replace_placeholder" +msgstr "Text to replace it with" + +msgid "search.replace_selected" +msgstr "Replace selected" + +msgid "search.previous" +msgstr "Previous" + +msgid "search.next" +msgstr "Next" + +msgid "search.match_case" +msgstr "Match case" + +msgid "search.toggle_replace" +msgstr "Replace" + +msgid "search.replace_with" +msgstr "Replace with:" + +msgid "search.replace" +msgstr "Replace" + +msgid "search.replace_all" +msgstr "Replace all" + +msgid "files_list.filter" +msgstr "Filter files" + +msgid "titles_list.filter" +msgstr "Filter titles" + +msgid "errors.key_not_found" +msgstr "Key \"{key}\" not found." + +msgid "errors.line_and_message" +msgstr "Error at {line}, {column}: {message}" + +msgid "errors_in_script" +msgstr "You have errors in your script. Fix them and then try again." + +msgid "errors_with_build" +msgstr "You need to fix dialogue errors before you can run your game." + +msgid "errors.import_errors" +msgstr "There are errors in this imported file." + +msgid "errors.already_imported" +msgstr "File already imported." + +msgid "errors.duplicate_import" +msgstr "Duplicate import name." + +msgid "errors.unknown_using" +msgstr "Unknown autoload in using statement." + +msgid "errors.empty_title" +msgstr "Titles cannot be empty." + +msgid "errors.duplicate_title" +msgstr "There is already a title with that name." + +msgid "errors.invalid_title_string" +msgstr "Titles can only contain alphanumeric characters and numbers." + +msgid "errors.invalid_title_number" +msgstr "Titles cannot begin with a number." + +msgid "errors.unknown_title" +msgstr "Unknown title." + +msgid "errors.jump_to_invalid_title" +msgstr "This jump is pointing to an invalid title." + +msgid "errors.title_has_no_content" +msgstr "That title has no content. Maybe change this to a \"=> END\"." + +msgid "errors.invalid_expression" +msgstr "Expression is invalid." + +msgid "errors.unexpected_condition" +msgstr "Unexpected condition." + +msgid "errors.duplicate_id" +msgstr "This ID is already on another line." + +msgid "errors.missing_id" +msgstr "This line is missing an ID." + +msgid "errors.invalid_indentation" +msgstr "Invalid indentation." + +msgid "errors.condition_has_no_content" +msgstr "A condition line needs an indented line below it." + +msgid "errors.incomplete_expression" +msgstr "Incomplete expression." + +msgid "errors.invalid_expression_for_value" +msgstr "Invalid expression for value." + +msgid "errors.file_not_found" +msgstr "File not found." + +msgid "errors.unexpected_end_of_expression" +msgstr "Unexpected end of expression." + +msgid "errors.unexpected_function" +msgstr "Unexpected function." + +msgid "errors.unexpected_bracket" +msgstr "Unexpected bracket." + +msgid "errors.unexpected_closing_bracket" +msgstr "Unexpected closing bracket." + +msgid "errors.missing_closing_bracket" +msgstr "Missing closing bracket." + +msgid "errors.unexpected_operator" +msgstr "Unexpected operator." + +msgid "errors.unexpected_comma" +msgstr "Unexpected comma." + +msgid "errors.unexpected_colon" +msgstr "Unexpected colon." + +msgid "errors.unexpected_dot" +msgstr "Unexpected dot." + +msgid "errors.unexpected_boolean" +msgstr "Unexpected boolean." + +msgid "errors.unexpected_string" +msgstr "Unexpected string." + +msgid "errors.unexpected_number" +msgstr "Unexpected number." + +msgid "errors.unexpected_variable" +msgstr "Unexpected variable." + +msgid "errors.invalid_index" +msgstr "Invalid index." + +msgid "errors.unexpected_assignment" +msgstr "Unexpected assignment." + +msgid "errors.expected_when_or_else" +msgstr "Expecting a when or an else case." + +msgid "errors.only_one_else_allowed" +msgstr "Only one else case is allowed per match." + +msgid "errors.when_must_belong_to_match" +msgstr "When statements can only appear as children of match statements." + +msgid "errors.concurrent_line_without_origin" +msgstr "Concurrent lines need an origin line that doesn't start with \"| \"." + +msgid "errors.goto_not_allowed_on_concurrect_lines" +msgstr "Goto references are not allowed on concurrent dialogue lines." + +msgid "errors.unexpected_syntax_on_nested_dialogue_line" +msgstr "Nested dialogue lines may only contain dialogue." + +msgid "errors.err_nested_dialogue_invalid_jump" +msgstr "Only the last line of nested dialogue is allowed to include a jump." + +msgid "errors.unknown" +msgstr "Unknown syntax." + +msgid "update.available" +msgstr "v{version} available" + +msgid "update.is_available_for_download" +msgstr "Version %s is available for download!" + +msgid "update.downloading" +msgstr "Downloading..." + +msgid "update.download_update" +msgstr "Download update" + +msgid "update.needs_reload" +msgstr "The project needs to be reloaded to install the update." + +msgid "update.reload_ok_button" +msgstr "Reload project" + +msgid "update.reload_cancel_button" +msgstr "Do it later" + +msgid "update.reload_project" +msgstr "Reload project" + +msgid "update.release_notes" +msgstr "Read release notes" + +msgid "update.success" +msgstr "Dialogue Manager is now v{version}." + +msgid "update.failed" +msgstr "There was a problem downloading the update." + +msgid "runtime.no_resource" +msgstr "No dialogue resource provided." + +msgid "runtime.no_content" +msgstr "\"{file_path}\" has no content." + +msgid "runtime.errors" +msgstr "You have {count} errors in your dialogue text." + +msgid "runtime.error_detail" +msgstr "Line {line}: {message}" + +msgid "runtime.errors_see_details" +msgstr "You have {count} errors in your dialogue text. See Output for details." + +msgid "runtime.invalid_expression" +msgstr "\"{expression}\" is not a valid expression: {error}" + +msgid "runtime.array_index_out_of_bounds" +msgstr "Index {index} out of bounds of array \"{array}\"." + +msgid "runtime.left_hand_size_cannot_be_assigned_to" +msgstr "Left hand side of expression cannot be assigned to." + +msgid "runtime.key_not_found" +msgstr "Key \"{key}\" not found in dictionary \"{dictionary}\"" + +msgid "runtime.property_not_found" +msgstr "\"{property}\" not found. States with directly referenceable properties/methods/signals include {states}. Autoloads need to be referenced by their name to use their properties." + +msgid "runtime.property_not_found_missing_export" +msgstr "\"{property}\" not found. You might need to add an [Export] decorator. States with directly referenceable properties/methods/signals include {states}. Autoloads need to be referenced by their name to use their properties." + +msgid "runtime.method_not_found" +msgstr "Method \"{method}\" not found. States with directly referenceable properties/methods/signals include {states}. Autoloads need to be referenced by their name to use their properties." + +msgid "runtime.signal_not_found" +msgstr "Signal \"{signal_name}\" not found. States with directly referenceable properties/methods/signals include {states}. Autoloads need to be referenced by their name to use their properties." + +msgid "runtime.method_not_callable" +msgstr "\"{method}\" is not a callable method on \"{object}\"" + +msgid "runtime.unknown_operator" +msgstr "Unknown operator." + +msgid "runtime.unknown_autoload" +msgstr "\"{autoload}\" doesn't appear to be a valid autoload." + +msgid "runtime.something_went_wrong" +msgstr "Something went wrong." + +msgid "runtime.expected_n_got_n_args" +msgstr "\"{method}\" was called with {received} arguments but it only has {expected}." + +msgid "runtime.unsupported_array_type" +msgstr "Array[{type}] isn't supported in mutations. Use Array as a type instead." + +msgid "runtime.dialogue_balloon_missing_start_method" +msgstr "Your dialogue balloon is missing a \"start\" or \"Start\" method." + +msgid "runtime.top_level_states_share_name" +msgstr "Multiple top-level states ({states}) share method/property/signal name \"{key}\". Only the first occurance is accessible to dialogue." + +msgid "translation_plugin.character_name" +msgstr "Character name" \ No newline at end of file diff --git a/addons/dialogue_manager/l10n/es.po b/addons/dialogue_manager/l10n/es.po new file mode 100644 index 0000000..ef604e1 --- /dev/null +++ b/addons/dialogue_manager/l10n/es.po @@ -0,0 +1,378 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: Dialogue Manager\n" +"POT-Creation-Date: 2024-02-25 20:58\n" +"PO-Revision-Date: 2024-02-25 20:58\n" +"Last-Translator: you \n" +"Language-Team: Spanish \n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +msgid "start_a_new_file" +msgstr "Crear un nuevo archivo" + +msgid "open_a_file" +msgstr "Abrir un archivo" + +msgid "open.open" +msgstr "Abrir..." + +msgid "open.no_recent_files" +msgstr "No hay archivos recientes" + +msgid "open.clear_recent_files" +msgstr "Limpiar archivos recientes" + +msgid "save_all_files" +msgstr "Guardar todos los archivos" + +msgid "test_dialogue" +msgstr "Diálogo de prueba" + +msgid "search_for_text" +msgstr "Buscar texto" + +msgid "insert" +msgstr "Insertar" + +msgid "translations" +msgstr "Traducciones" + +msgid "show_support" +msgstr "Contribuye con Dialogue Manager" + +msgid "docs" +msgstr "Docs" + +msgid "insert.wave_bbcode" +msgstr "BBCode ondulado" + +msgid "insert.shake_bbcode" +msgstr "BBCode agitado" + +msgid "insert.typing_pause" +msgstr "Pausa de escritura" + +msgid "insert.typing_speed_change" +msgstr "Cambiar la velocidad de escritura" + +msgid "insert.auto_advance" +msgstr "Avance automático" + +msgid "insert.templates" +msgstr "Plantillas" + +msgid "insert.title" +msgstr "Título" + +msgid "insert.dialogue" +msgstr "Diálogo" + +msgid "insert.response" +msgstr "Respuesta" + +msgid "insert.random_lines" +msgstr "Líneas aleatorias" + +msgid "insert.random_text" +msgstr "Texto aleatorio" + +msgid "insert.actions" +msgstr "Acciones" + +msgid "insert.jump" +msgstr "Ir al título" + +msgid "insert.end_dialogue" +msgstr "Finalizar diálogo" + +msgid "generate_line_ids" +msgstr "Generar IDs de línea" + +msgid "save_characters_to_csv" +msgstr "Guardar los nombres de los personajes en un archivo CSV..." + +msgid "save_to_csv" +msgstr "Guardar líneas en CSV..." + +msgid "import_from_csv" +msgstr "Importar cambios de línea desde CSV..." + +msgid "confirm_close" +msgstr "¿Guardar los cambios en '{path}'?" + +msgid "confirm_close.save" +msgstr "Guardar cambios" + +msgid "confirm_close.discard" +msgstr "Descartar" + +msgid "buffer.save" +msgstr "Guardar" + +msgid "buffer.save_as" +msgstr "Guardar como..." + +msgid "buffer.close" +msgstr "Cerrar" + +msgid "buffer.close_all" +msgstr "Cerrar todo" + +msgid "buffer.close_other_files" +msgstr "Cerrar otros archivos" + +msgid "buffer.copy_file_path" +msgstr "Copiar la ruta del archivo" + +msgid "buffer.show_in_filesystem" +msgstr "Mostrar en el sistema de archivos" + +msgid "n_of_n" +msgstr "{index} de {total}" + +msgid "search.previous" +msgstr "Anterior" + +msgid "search.next" +msgstr "Siguiente" + +msgid "search.match_case" +msgstr "Coincidir mayúsculas/minúsculas" + +msgid "search.toggle_replace" +msgstr "Reemplazar" + +msgid "search.replace_with" +msgstr "Reemplazar con:" + +msgid "search.replace" +msgstr "Reemplazar" + +msgid "search.replace_all" +msgstr "Reemplazar todo" + +msgid "files_list.filter" +msgstr "Filtrar archivos" + +msgid "titles_list.filter" +msgstr "Filtrar títulos" + +msgid "errors.key_not_found" +msgstr "La tecla \"{key}\" no se encuentra." + +msgid "errors.line_and_message" +msgstr "Error en {line}, {column}: {message}" + +msgid "errors_in_script" +msgstr "Tienes errores en tu guion. Corrígelos y luego inténtalo de nuevo." + +msgid "errors_with_build" +msgstr "Debes corregir los errores de diálogo antes de poder ejecutar tu juego." + +msgid "errors.import_errors" +msgstr "Hay errores en este archivo importado." + +msgid "errors.already_imported" +msgstr "Archivo ya importado." + +msgid "errors.duplicate_import" +msgstr "Nombre de importación duplicado." + +msgid "errors.unknown_using" +msgstr "Autoload desconocida en la declaración de uso." + +msgid "errors.empty_title" +msgstr "Los títulos no pueden estar vacíos." + +msgid "errors.duplicate_title" +msgstr "Ya hay un título con ese nombre." + +msgid "errors.nested_title" +msgstr "Los títulos no pueden tener sangría." + +msgid "errors.invalid_title_string" +msgstr "Los títulos solo pueden contener caracteres alfanuméricos y números." + +msgid "errors.invalid_title_number" +msgstr "Los títulos no pueden empezar con un número." + +msgid "errors.unknown_title" +msgstr "Título desconocido." + +msgid "errors.jump_to_invalid_title" +msgstr "Este salto está apuntando a un título inválido." + +msgid "errors.title_has_no_content" +msgstr "Ese título no tiene contenido. Quizá cambiarlo a \"=> FIN\"." + +msgid "errors.invalid_expression" +msgstr "La expresión es inválida." + +msgid "errors.unexpected_condition" +msgstr "Condición inesperada." + +msgid "errors.duplicate_id" +msgstr "Este ID ya está en otra línea." + +msgid "errors.missing_id" +msgstr "Esta línea está sin ID." + +msgid "errors.invalid_indentation" +msgstr "Sangría no válida." + +msgid "errors.condition_has_no_content" +msgstr "Una línea de condición necesita una línea sangrada debajo de ella." + +msgid "errors.incomplete_expression" +msgstr "Expresión incompleta." + +msgid "errors.invalid_expression_for_value" +msgstr "Expresión no válida para valor." + +msgid "errors.file_not_found" +msgstr "Archivo no encontrado." + +msgid "errors.unexpected_end_of_expression" +msgstr "Fin de expresión inesperado." + +msgid "errors.unexpected_function" +msgstr "Función inesperada." + +msgid "errors.unexpected_bracket" +msgstr "Corchete inesperado." + +msgid "errors.unexpected_closing_bracket" +msgstr "Bracket de cierre inesperado." + +msgid "errors.missing_closing_bracket" +msgstr "Falta cerrar corchete." + +msgid "errors.unexpected_operator" +msgstr "Operador inesperado." + +msgid "errors.unexpected_comma" +msgstr "Coma inesperada." + +msgid "errors.unexpected_colon" +msgstr "Dos puntos inesperados" + +msgid "errors.unexpected_dot" +msgstr "Punto inesperado." + +msgid "errors.unexpected_boolean" +msgstr "Booleano inesperado." + +msgid "errors.unexpected_string" +msgstr "String inesperado." + +msgid "errors.unexpected_number" +msgstr "Número inesperado." + +msgid "errors.unexpected_variable" +msgstr "Variable inesperada." + +msgid "errors.invalid_index" +msgstr "Índice no válido." + +msgid "errors.unexpected_assignment" +msgstr "Asignación inesperada." + +msgid "errors.unknown" +msgstr "Sintaxis desconocida." + +msgid "update.available" +msgstr "v{version} disponible" + +msgid "update.is_available_for_download" +msgstr "¡La versión %s ya está disponible para su descarga!" + +msgid "update.downloading" +msgstr "Descargando..." + +msgid "update.download_update" +msgstr "Descargar actualización" + +msgid "update.needs_reload" +msgstr "El proyecto debe ser recargado para instalar la actualización." + +msgid "update.reload_ok_button" +msgstr "Recargar proyecto" + +msgid "update.reload_cancel_button" +msgstr "Hazlo más tarde" + +msgid "update.reload_project" +msgstr "Recargar proyecto" + +msgid "update.release_notes" +msgstr "Leer las notas de la versión" + +msgid "update.success" +msgstr "El Gestor de Diálogo ahora es v{versión}." + +msgid "update.failed" +msgstr "Hubo un problema al descargar la actualización." + +msgid "runtime.no_resource" +msgstr "Recurso de diálogo no proporcionado." + +msgid "runtime.no_content" +msgstr "\"{file_path}\" no tiene contenido." + +msgid "runtime.errors" +msgstr "Tienes {count} errores en tu diálogo de texto." + +msgid "runtime.error_detail" +msgstr "Línea {line}: {message}" + +msgid "runtime.errors_see_details" +msgstr "Tienes {count} errores en tu texto de diálogo. Consulta la salida para más detalles." + +msgid "runtime.invalid_expression" +msgstr "\"{expression}\" no es una expresión válida: {error}" + +msgid "runtime.array_index_out_of_bounds" +msgstr "Índice {index} fuera de los límites del array \"{array}\"." + +msgid "runtime.left_hand_size_cannot_be_assigned_to" +msgstr "El lado izquierdo de la expresión no se puede asignar." + +msgid "runtime.key_not_found" +msgstr "Clave \"{key}\" no encontrada en el diccionario \"{dictionary}\"" + +msgid "runtime.property_not_found" +msgstr "\"{property}\" no es una propiedad en ningún estado del juego ({states})." + +msgid "runtime.property_not_found_missing_export" +msgstr "\"{property}\" no es una propiedad en ningún estado del juego ({states}). Es posible que necesites añadir un decorador [Export]." + +msgid "runtime.method_not_found" +msgstr "\"{method}\" no es un método en ningún estado del juego ({states})" + +msgid "runtime.signal_not_found" +msgstr "\"{signal_name}\" no es una señal en ningún estado del juego ({states})" + +msgid "runtime.method_not_callable" +msgstr "\"{method}\" no es un método llamable en \"{object}\"" + +msgid "runtime.unknown_operator" +msgstr "Operador desconocido." + +msgid "runtime.unknown_autoload" +msgstr "\"{autoload}\" parece no ser un autoload válido." + +msgid "runtime.something_went_wrong" +msgstr "Algo salió mal." + +msgid "runtime.expected_n_got_n_args" +msgstr "El método \"{method}\" se llamó con {received} argumentos, pero solo tiene {expected}." + +msgid "runtime.unsupported_array_type" +msgstr "Array[{type}] no está soportado en mutaciones. Utiliza Array como tipo en su lugar." + +msgid "runtime.dialogue_balloon_missing_start_method" +msgstr "Tu globo de diálogo no tiene un método \"start\" o \"Start\"." diff --git a/addons/dialogue_manager/l10n/translations.pot b/addons/dialogue_manager/l10n/translations.pot new file mode 100644 index 0000000..e49728d --- /dev/null +++ b/addons/dialogue_manager/l10n/translations.pot @@ -0,0 +1,423 @@ +msgid "" +msgstr "" +"Project-Id-Version: Dialogue Manager\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8-bit\n" + +msgid "start_a_new_file" +msgstr "" + +msgid "open_a_file" +msgstr "" + +msgid "open.open" +msgstr "" + +msgid "open.quick_open" +msgstr "" + +msgid "open.no_recent_files" +msgstr "" + +msgid "open.clear_recent_files" +msgstr "" + +msgid "save_all_files" +msgstr "" + +msgid "all" +msgstr "" + +msgid "find_in_files" +msgstr "" + +msgid "test_dialogue" +msgstr "" + +msgid "test_dialogue_from_line" +msgstr "" + +msgid "search_for_text" +msgstr "" + +msgid "insert" +msgstr "" + +msgid "translations" +msgstr "" + +msgid "sponsor" +msgstr "" + +msgid "show_support" +msgstr "" + +msgid "docs" +msgstr "" + +msgid "insert.wave_bbcode" +msgstr "" + +msgid "insert.shake_bbcode" +msgstr "" + +msgid "insert.typing_pause" +msgstr "" + +msgid "insert.typing_speed_change" +msgstr "" + +msgid "insert.auto_advance" +msgstr "" + +msgid "insert.templates" +msgstr "" + +msgid "insert.title" +msgstr "" + +msgid "insert.dialogue" +msgstr "" + +msgid "insert.response" +msgstr "" + +msgid "insert.random_lines" +msgstr "" + +msgid "insert.random_text" +msgstr "" + +msgid "insert.actions" +msgstr "" + +msgid "insert.jump" +msgstr "" + +msgid "insert.end_dialogue" +msgstr "" + +msgid "generate_line_ids" +msgstr "" + +msgid "save_to_csv" +msgstr "" + +msgid "import_from_csv" +msgstr "" + +msgid "confirm_close" +msgstr "" + +msgid "confirm_close.save" +msgstr "" + +msgid "confirm_close.discard" +msgstr "" + +msgid "buffer.save" +msgstr "" + +msgid "buffer.save_as" +msgstr "" + +msgid "buffer.close" +msgstr "" + +msgid "buffer.close_all" +msgstr "" + +msgid "buffer.close_other_files" +msgstr "" + +msgid "buffer.copy_file_path" +msgstr "" + +msgid "buffer.show_in_filesystem" +msgstr "" + +msgid "n_of_n" +msgstr "" + +msgid "search.find" +msgstr "" + +msgid "search.find_all" +msgstr "" + +msgid "search.placeholder" +msgstr "" + +msgid "search.replace_placeholder" +msgstr "" + +msgid "search.replace_selected" +msgstr "" + +msgid "search.previous" +msgstr "" + +msgid "search.next" +msgstr "" + +msgid "search.match_case" +msgstr "" + +msgid "search.toggle_replace" +msgstr "" + +msgid "search.replace_with" +msgstr "" + +msgid "search.replace" +msgstr "" + +msgid "search.replace_all" +msgstr "" + +msgid "files_list.filter" +msgstr "" + +msgid "titles_list.filter" +msgstr "" + +msgid "errors.key_not_found" +msgstr "" + +msgid "errors.line_and_message" +msgstr "" + +msgid "errors_in_script" +msgstr "" + +msgid "errors_with_build" +msgstr "" + +msgid "errors.import_errors" +msgstr "" + +msgid "errors.already_imported" +msgstr "" + +msgid "errors.duplicate_import" +msgstr "" + +msgid "errors.unknown_using" +msgstr "" + +msgid "errors.empty_title" +msgstr "" + +msgid "errors.duplicate_title" +msgstr "" + +msgid "errors.invalid_title_string" +msgstr "" + +msgid "errors.invalid_title_number" +msgstr "" + +msgid "errors.unknown_title" +msgstr "" + +msgid "errors.jump_to_invalid_title" +msgstr "" + +msgid "errors.title_has_no_content" +msgstr "" + +msgid "errors.invalid_expression" +msgstr "" + +msgid "errors.unexpected_condition" +msgstr "" + +msgid "errors.duplicate_id" +msgstr "" + +msgid "errors.missing_id" +msgstr "" + +msgid "errors.invalid_indentation" +msgstr "" + +msgid "errors.condition_has_no_content" +msgstr "" + +msgid "errors.incomplete_expression" +msgstr "" + +msgid "errors.invalid_expression_for_value" +msgstr "" + +msgid "errors.file_not_found" +msgstr "" + +msgid "errors.unexpected_end_of_expression" +msgstr "" + +msgid "errors.unexpected_function" +msgstr "" + +msgid "errors.unexpected_bracket" +msgstr "" + +msgid "errors.unexpected_closing_bracket" +msgstr "" + +msgid "errors.missing_closing_bracket" +msgstr "" + +msgid "errors.unexpected_operator" +msgstr "" + +msgid "errors.unexpected_comma" +msgstr "" + +msgid "errors.unexpected_colon" +msgstr "" + +msgid "errors.unexpected_dot" +msgstr "" + +msgid "errors.unexpected_boolean" +msgstr "" + +msgid "errors.unexpected_string" +msgstr "" + +msgid "errors.unexpected_number" +msgstr "" + +msgid "errors.unexpected_variable" +msgstr "" + +msgid "errors.invalid_index" +msgstr "" + +msgid "errors.unexpected_assignment" +msgstr "" + +msgid "errors.expected_when_or_else" +msgstr "" + +msgid "errors.only_one_else_allowed" +msgstr "" + +msgid "errors.when_must_belong_to_match" +msgstr "" + +msgid "errors.concurrent_line_without_origin" +msgstr "" + +msgid "errors.goto_not_allowed_on_concurrect_lines" +msgstr "" + +msgid "errors.unexpected_syntax_on_nested_dialogue_line" +msgstr "" + +msgid "errors.err_nested_dialogue_invalid_jump" +msgstr "" + +msgid "errors.unknown" +msgstr "" + +msgid "update.available" +msgstr "" + +msgid "update.is_available_for_download" +msgstr "" + +msgid "update.downloading" +msgstr "" + +msgid "update.download_update" +msgstr "" + +msgid "update.needs_reload" +msgstr "" + +msgid "update.reload_ok_button" +msgstr "" + +msgid "update.reload_cancel_button" +msgstr "" + +msgid "update.reload_project" +msgstr "" + +msgid "update.release_notes" +msgstr "" + +msgid "update.success" +msgstr "" + +msgid "update.failed" +msgstr "" + +msgid "runtime.no_resource" +msgstr "" + +msgid "runtime.no_content" +msgstr "" + +msgid "runtime.errors" +msgstr "" + +msgid "runtime.error_detail" +msgstr "" + +msgid "runtime.errors_see_details" +msgstr "" + +msgid "runtime.invalid_expression" +msgstr "" + +msgid "runtime.array_index_out_of_bounds" +msgstr "" + +msgid "runtime.left_hand_size_cannot_be_assigned_to" +msgstr "" + +msgid "runtime.key_not_found" +msgstr "" + +msgid "runtime.property_not_found" +msgstr "" + +msgid "runtime.property_not_found_missing_export" +msgstr "" + +msgid "runtime.method_not_found" +msgstr "" + +msgid "runtime.signal_not_found" +msgstr "" + +msgid "runtime.method_not_callable" +msgstr "" + +msgid "runtime.unknown_operator" +msgstr "" + +msgid "runtime.unknown_autoload" +msgstr "" + +msgid "runtime.something_went_wrong" +msgstr "" + +msgid "runtime.expected_n_got_n_args" +msgstr "" + +msgid "runtime.unsupported_array_type" +msgstr "" + +msgid "runtime.dialogue_balloon_missing_start_method" +msgstr "" + +msgid "runtime.top_level_states_share_name" +msgstr "" + +msgid "translation_plugin.character_name" +msgstr "" \ No newline at end of file diff --git a/addons/dialogue_manager/l10n/uk.po b/addons/dialogue_manager/l10n/uk.po new file mode 100644 index 0000000..1c1ae12 --- /dev/null +++ b/addons/dialogue_manager/l10n/uk.po @@ -0,0 +1,429 @@ +msgid "" +msgstr "" +"Project-Id-Version: Dialogue Manager\n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: uk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 3.2.2\n" + +msgid "start_a_new_file" +msgstr "Створити новий файл" + +msgid "open_a_file" +msgstr "Відкрити файл" + +msgid "open.open" +msgstr "Відкрити..." + +msgid "open.quick_open" +msgstr "Швидко відкрити..." + +msgid "open.no_recent_files" +msgstr "Жодних недавніх файлів" + +msgid "open.clear_recent_files" +msgstr "Очистити недавні файли" + +msgid "save_all_files" +msgstr "Зберегти всі файли" + +msgid "find_in_files" +msgstr "Знайти у файлах..." + +msgid "test_dialogue" +msgstr "Протестувати діалог з початку файлу" + +msgid "test_dialogue_from_line" +msgstr "Протестувати діалог з поточного рядка" + +msgid "search_for_text" +msgstr "Пошук тексту" + +msgid "insert" +msgstr "Вставити" + +msgid "translations" +msgstr "Переклади" + +msgid "sponsor" +msgstr "Спонсор" + +msgid "show_support" +msgstr "Підтримка Dialogue Manager" + +msgid "docs" +msgstr "Документація" + +msgid "insert.wave_bbcode" +msgstr "Хвиля BBCode" + +msgid "insert.shake_bbcode" +msgstr "Тряска BBCode" + +msgid "insert.typing_pause" +msgstr "Пауза друку" + +msgid "insert.typing_speed_change" +msgstr "Зміна швидкості друку" + +msgid "insert.auto_advance" +msgstr "Автоматичне просування" + +msgid "insert.templates" +msgstr "Шаблони" + +msgid "insert.title" +msgstr "Заголовок" + +msgid "insert.dialogue" +msgstr "Діалог" + +msgid "insert.response" +msgstr "Відповідь" + +msgid "insert.random_lines" +msgstr "Випадкові рядки" + +msgid "insert.random_text" +msgstr "Випадковий текст" + +msgid "insert.actions" +msgstr "Дії" + +msgid "insert.jump" +msgstr "Перейти до заголовку" + +msgid "insert.end_dialogue" +msgstr "Кінець діалогу" + +msgid "generate_line_ids" +msgstr "Згенерувати ідентифікатори рядків" + +msgid "save_characters_to_csv" +msgstr "Зберегти імена персонажів в CSV..." + +msgid "save_to_csv" +msgstr "Зберегти рядки в CSV..." + +msgid "import_from_csv" +msgstr "Імпортувати зміни рядків з CSV..." + +msgid "confirm_close" +msgstr "Зберегти зміни до «{path}»?" + +msgid "confirm_close.save" +msgstr "Зберегти зміни" + +msgid "confirm_close.discard" +msgstr "Скасувати" + +msgid "buffer.save" +msgstr "Зберегти" + +msgid "buffer.save_as" +msgstr "Зберегти як..." + +msgid "buffer.close" +msgstr "Закрити" + +msgid "buffer.close_all" +msgstr "Закрити все" + +msgid "buffer.close_other_files" +msgstr "Закрити інші файли" + +msgid "buffer.copy_file_path" +msgstr "Копіювати шлях файлу" + +msgid "buffer.show_in_filesystem" +msgstr "Показати у файловій системі" + +msgid "n_of_n" +msgstr "{index} з {total}" + +msgid "search.find" +msgstr "Знайти:" + +msgid "search.find_all" +msgstr "Знайти всі..." + +msgid "search.placeholder" +msgstr "Текст для пошуку" + +msgid "search.replace_placeholder" +msgstr "Текст для заміни" + +msgid "search.replace_selected" +msgstr "Замінити вибране" + +msgid "search.previous" +msgstr "Назад" + +msgid "search.next" +msgstr "Далі" + +msgid "search.match_case" +msgstr "Збіг регістру" + +msgid "search.toggle_replace" +msgstr "Замінити" + +msgid "search.replace_with" +msgstr "Замінити на:" + +msgid "search.replace" +msgstr "Замінити" + +msgid "search.replace_all" +msgstr "Замінити все" + +msgid "files_list.filter" +msgstr "Фільтр файлів" + +msgid "titles_list.filter" +msgstr "Фільтр заголовків" + +msgid "errors.key_not_found" +msgstr "Ключ «{key}» не знайдено." + +msgid "errors.line_and_message" +msgstr "Помилка в {line}, {column}: {message}" + +msgid "errors_in_script" +msgstr "У вашому скрипті є помилки. Виправте їх і спробуйте ще раз." + +msgid "errors_with_build" +msgstr "Вам потрібно виправити помилки в діалогах, перш ніж ви зможете запустити гру." + +msgid "errors.import_errors" +msgstr "В імпортованому файлі є помилки." + +msgid "errors.already_imported" +msgstr "Файл уже імпортовано." + +msgid "errors.duplicate_import" +msgstr "Дублювання назви імпорту." + +msgid "errors.unknown_using" +msgstr "Невідоме автозавантаження в операторі «using»." + +msgid "errors.empty_title" +msgstr "Заголовки не можуть бути порожніми." + +msgid "errors.duplicate_title" +msgstr "Заголовок з такою назвою уже є." + +msgid "errors.invalid_title_string" +msgstr "Заголовки можуть містити лише алфавітно-цифрові символи та цифри." + +msgid "errors.invalid_title_number" +msgstr "Заголовки не можуть починатися з цифри." + +msgid "errors.unknown_title" +msgstr "Невідомий заголовок." + +msgid "errors.jump_to_invalid_title" +msgstr "Цей перехід вказує на недійсний заголовок." + +msgid "errors.title_has_no_content" +msgstr "Цей заголовок не має змісту. Можливо, варто змінити його на «=> END»." + +msgid "errors.invalid_expression" +msgstr "Вираз є недійсним." + +msgid "errors.unexpected_condition" +msgstr "Несподівана умова." + +msgid "errors.duplicate_id" +msgstr "Цей ідентифікатор уже є на іншому рядку." + +msgid "errors.missing_id" +msgstr "У цьому рядку відсутній ідентифікатор." + +msgid "errors.invalid_indentation" +msgstr "Неправильний відступ." + +msgid "errors.condition_has_no_content" +msgstr "Рядок умови потребує відступу під ним." + +msgid "errors.incomplete_expression" +msgstr "Незавершений вираз." + +msgid "errors.invalid_expression_for_value" +msgstr "Недійсний вираз для значення." + +msgid "errors.file_not_found" +msgstr "Файл не знайдено." + +msgid "errors.unexpected_end_of_expression" +msgstr "Несподіваний кінець виразу." + +msgid "errors.unexpected_function" +msgstr "Несподівана функція." + +msgid "errors.unexpected_bracket" +msgstr "Несподівана дужка." + +msgid "errors.unexpected_closing_bracket" +msgstr "Несподівана закриваюча дужка." + +msgid "errors.missing_closing_bracket" +msgstr "Відсутня закриваюча дужка." + +msgid "errors.unexpected_operator" +msgstr "Несподіваний оператор." + +msgid "errors.unexpected_comma" +msgstr "Несподівана кома." + +msgid "errors.unexpected_colon" +msgstr "Несподівана двокрапка." + +msgid "errors.unexpected_dot" +msgstr "Несподівана крапка." + +msgid "errors.unexpected_boolean" +msgstr "Несподіваний логічний вираз." + +msgid "errors.unexpected_string" +msgstr "Несподіваний рядок." + +msgid "errors.unexpected_number" +msgstr "Несподіване число." + +msgid "errors.unexpected_variable" +msgstr "Несподівана змінна." + +msgid "errors.invalid_index" +msgstr "Недійсний індекс." + +msgid "errors.unexpected_assignment" +msgstr "Несподіване призначення." + +msgid "errors.expected_when_or_else" +msgstr "Очікувався випадок «when» або «else»." + +msgid "errors.only_one_else_allowed" +msgstr "Для кожного «match» допускається лише один випадок «else»." + +msgid "errors.when_must_belong_to_match" +msgstr "Оператори «when» можуть з’являтися лише як дочірні операторів «match»." + +msgid "errors.concurrent_line_without_origin" +msgstr "Паралельні рядки потребують початкового рядка, який не починається з «|»." + +msgid "errors.goto_not_allowed_on_concurrect_lines" +msgstr "У паралельних діалогових рядках не допускаються Goto посилання." + +msgid "errors.unexpected_syntax_on_nested_dialogue_line" +msgstr "Вкладені рядки діалогу можуть містити лише діалог." + +msgid "errors.err_nested_dialogue_invalid_jump" +msgstr "Лише останній рядок вкладеного діалогу може містити перехід." + +msgid "errors.unknown" +msgstr "Невідомий синтаксис." + +msgid "update.available" +msgstr "Доступна версія {version}" + +msgid "update.is_available_for_download" +msgstr "Версія %s доступна для завантаження!" + +msgid "update.downloading" +msgstr "Завантаження..." + +msgid "update.download_update" +msgstr "Завантажити оновлення" + +msgid "update.needs_reload" +msgstr "Щоб установити оновлення, проєкт потрібно перезавантажити." + +msgid "update.reload_ok_button" +msgstr "Перезавантажити проєкт" + +msgid "update.reload_cancel_button" +msgstr "Пізніше" + +msgid "update.reload_project" +msgstr "Перезавантажити проєкт" + +msgid "update.release_notes" +msgstr "Читати зміни оновлення" + +msgid "update.success" +msgstr "Dialogue Manager тепер з версією {version}." + +msgid "update.failed" +msgstr "Виникла проблема із завантаженням оновлення." + +msgid "runtime.no_resource" +msgstr "Ресурс для діалогу не надано." + +msgid "runtime.no_content" +msgstr "«{file_path}» не має вмісту." + +msgid "runtime.errors" +msgstr "У тексті діалогу було виявлено помилки ({count})." + +msgid "runtime.error_detail" +msgstr "Рядок {line}: {message}" + +msgid "runtime.errors_see_details" +msgstr "У тексті діалогу було виявлено помилки ({count}). Див. детальніше у розділі «Вивід»." + +msgid "runtime.invalid_expression" +msgstr "«{expression}» не є допустимим виразом: {error}" + +msgid "runtime.array_index_out_of_bounds" +msgstr "Індекс {index} виходить за межі масиву «{array}»." + +msgid "runtime.left_hand_size_cannot_be_assigned_to" +msgstr "Ліва частина виразу не може бути призначена." + +msgid "runtime.key_not_found" +msgstr "Ключ «{key}» не знайдено у словнику «{dictionary}»" + +msgid "runtime.property_not_found" +msgstr "«{property}» не знайдено. Стани з безпосередньо доступними властивостями/методами/сигналами включають {states}. На автозавантаження потрібно посилатися за їхніми назвами для використання їхніх властивостей." + +msgid "runtime.property_not_found_missing_export" +msgstr "«{property}» не знайдено. Можливо, вам слід додати декоратор «[Export]». Стани з безпосередньо доступними властивостями/методами/сигналами включають {states}. На автозавантаження потрібно посилатися за їхніми назвами для використання їхніх властивостей." + +msgid "runtime.method_not_found" +msgstr "Метод «{method}» не знайдено. Стани з безпосередньо доступними властивостями/методами/сигналами включають {states}. На автозавантаження потрібно посилатися за їхніми назвами для використання їхніх властивостей." + +msgid "runtime.signal_not_found" +msgstr "Сигнал «{signal_name}» не знайдено. Стани з безпосередньо доступними властивостями/методами/сигналами включають {states}. На автозавантаження потрібно посилатися за їхніми назвами для використання їхніх властивостей." + +msgid "runtime.method_not_callable" +msgstr "«{method}» не є методом, який можна викликати в «{object}»" + +msgid "runtime.unknown_operator" +msgstr "Невідомий оператор." + +msgid "runtime.unknown_autoload" +msgstr "Схоже, «{autoload}» не є дійсним автозавантаженням." + +msgid "runtime.something_went_wrong" +msgstr "Щось пішло не так." + +msgid "runtime.expected_n_got_n_args" +msgstr "«{method}» було викликано з аргументами «{received}», але воно має лише «{expected}»." + +msgid "runtime.unsupported_array_type" +msgstr "Array[{type}] не підтримується у модифікаціях. Натомість використовуйте Array як тип." + +msgid "runtime.dialogue_balloon_missing_start_method" +msgstr "У вашій кулі діалогу відсутній метод «start» або «Start»." + +msgid "runtime.top_level_states_share_name" +msgstr "Кілька станів верхнього рівня ({states}) мають спільну назву методу/властивості/сигналу «{key}». Для діалогу доступний лише перший випадок." + +msgid "translation_plugin.character_name" +msgstr "Ім’я персонажа" diff --git a/addons/dialogue_manager/l10n/zh.po b/addons/dialogue_manager/l10n/zh.po new file mode 100644 index 0000000..bafd1d5 --- /dev/null +++ b/addons/dialogue_manager/l10n/zh.po @@ -0,0 +1,378 @@ +msgid "" +msgstr "" +"Project-Id-Version: Dialogue Manager\n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: penghao123456、憨憨羊の宇航鸽鸽、ABShinri\n" +"Language: zh\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 3.4\n" + +msgid "start_a_new_file" +msgstr "创建新文件" + +msgid "open_a_file" +msgstr "打开已有文件" + +msgid "open.open" +msgstr "打开……" + +msgid "open.no_recent_files" +msgstr "无历史记录" + +msgid "open.clear_recent_files" +msgstr "清空历史记录" + +msgid "save_all_files" +msgstr "保存所有文件" + +msgid "find_in_files" +msgstr "在文件中查找" + +msgid "test_dialogue" +msgstr "测试对话" + +msgid "search_for_text" +msgstr "查找……" + +msgid "insert" +msgstr "插入" + +msgid "translations" +msgstr "翻译" + +msgid "show_support" +msgstr "支持 Dialogue Manager" + +msgid "docs" +msgstr "文档" + +msgid "insert.wave_bbcode" +msgstr "波浪效果" + +msgid "insert.shake_bbcode" +msgstr "抖动效果" + +msgid "insert.typing_pause" +msgstr "输入间隔" + +msgid "insert.typing_speed_change" +msgstr "输入速度变更" + +msgid "insert.auto_advance" +msgstr "自动切行" + +msgid "insert.templates" +msgstr "模板" + +msgid "insert.title" +msgstr "标题" + +msgid "insert.dialogue" +msgstr "对话" + +msgid "insert.response" +msgstr "回复选项" + +msgid "insert.random_lines" +msgstr "随机行" + +msgid "insert.random_text" +msgstr "随机文本" + +msgid "insert.actions" +msgstr "操作" + +msgid "insert.jump" +msgstr "标题间跳转" + +msgid "insert.end_dialogue" +msgstr "结束对话" + +msgid "generate_line_ids" +msgstr "生成行 ID" + +msgid "save_characters_to_csv" +msgstr "保存角色到 CSV" + +msgid "save_to_csv" +msgstr "生成 CSV" + +msgid "import_from_csv" +msgstr "从 CSV 导入" + +msgid "confirm_close" +msgstr "是否要保存到“{path}”?" + +msgid "confirm_close.save" +msgstr "保存" + +msgid "confirm_close.discard" +msgstr "不保存" + +msgid "buffer.save" +msgstr "保存" + +msgid "buffer.save_as" +msgstr "另存为……" + +msgid "buffer.close" +msgstr "关闭" + +msgid "buffer.close_all" +msgstr "全部关闭" + +msgid "buffer.close_other_files" +msgstr "关闭其他文件" + +msgid "buffer.copy_file_path" +msgstr "复制文件路径" + +msgid "buffer.show_in_filesystem" +msgstr "在 Godot 侧边栏中显示" + +msgid "n_of_n" +msgstr "第{index}个,共{total}个" + +msgid "search.find" +msgstr "查找:" + +msgid "search.find_all" +msgstr "查找全部..." + +msgid "search.placeholder" +msgstr "请输入查找的内容" + +msgid "search.replace_placeholder" +msgstr "请输入替换的内容" + +msgid "search.replace_selected" +msgstr "替换勾选" + +msgid "search.previous" +msgstr "查找上一个" + +msgid "search.next" +msgstr "查找下一个" + +msgid "search.match_case" +msgstr "大小写敏感" + +msgid "search.toggle_replace" +msgstr "替换" + +msgid "search.replace_with" +msgstr "替换为" + +msgid "search.replace" +msgstr "替换" + +msgid "search.replace_all" +msgstr "全部替换" + +msgid "files_list.filter" +msgstr "查找文件" + +msgid "titles_list.filter" +msgstr "查找标题" + +msgid "errors.key_not_found" +msgstr "键“{key}”未找到" + +msgid "errors.line_and_message" +msgstr "第{line}行第{colume}列发生错误:{message}" + +msgid "errors_in_script" +msgstr "你的脚本中存在错误。请修复错误,然后重试。" + +msgid "errors_with_build" +msgstr "请先解决 Dialogue 中的错误。" + +msgid "errors.import_errors" +msgstr "被导入的文件存在问题。" + +msgid "errors.already_imported" +msgstr "文件已被导入。" + +msgid "errors.duplicate_import" +msgstr "导入名不能重复。" + +msgid "errors.empty_title" +msgstr "标题名不能为空。" + +msgid "errors.duplicate_title" +msgstr "标题名不能重复。" + +msgid "errors.invalid_title_string" +msgstr "标题名无效。" + +msgid "errors.invalid_title_number" +msgstr "标题不能以数字开始。" + +msgid "errors.unknown_title" +msgstr "标题未定义。" + +msgid "errors.jump_to_invalid_title" +msgstr "标题名无效。" + +msgid "errors.title_has_no_content" +msgstr "目标标题为空。请替换为“=> END”。" + +msgid "errors.invalid_expression" +msgstr "表达式无效。" + +msgid "errors.unexpected_condition" +msgstr "未知条件。" + +msgid "errors.duplicate_id" +msgstr "ID 重复。" + +msgid "errors.missing_id" +msgstr "ID 不存在。" + +msgid "errors.invalid_indentation" +msgstr "缩进无效。" + +msgid "errors.condition_has_no_content" +msgstr "条件下方不能为空。" + +msgid "errors.incomplete_expression" +msgstr "不完整的表达式。" + +msgid "errors.invalid_expression_for_value" +msgstr "无效的赋值表达式。" + +msgid "errors.file_not_found" +msgstr "文件不存在。" + +msgid "errors.unexpected_end_of_expression" +msgstr "表达式 end 不应存在。" + +msgid "errors.unexpected_function" +msgstr "函数不应存在。" + +msgid "errors.unexpected_bracket" +msgstr "方括号不应存在。" + +msgid "errors.unexpected_closing_bracket" +msgstr "方括号不应存在。" + +msgid "errors.missing_closing_bracket" +msgstr "闭方括号不存在。" + +msgid "errors.unexpected_operator" +msgstr "操作符不应存在。" + +msgid "errors.unexpected_comma" +msgstr "逗号不应存在。" + +msgid "errors.unexpected_colon" +msgstr "冒号不应存在。" + +msgid "errors.unexpected_dot" +msgstr "句号不应存在。" + +msgid "errors.unexpected_boolean" +msgstr "布尔值不应存在。" + +msgid "errors.unexpected_string" +msgstr "字符串不应存在。" + +msgid "errors.unexpected_number" +msgstr "数字不应存在。" + +msgid "errors.unexpected_variable" +msgstr "标识符不应存在。" + +msgid "errors.invalid_index" +msgstr "索引无效。" + +msgid "errors.unexpected_assignment" +msgstr "不应在条件判断中使用 = ,应使用 == 。" + +msgid "errors.unknown" +msgstr "语法错误。" + +msgid "update.available" +msgstr "v{version} 更新可用。" + +msgid "update.is_available_for_download" +msgstr "v%s 已经可以下载。" + +msgid "update.downloading" +msgstr "正在下载更新……" + +msgid "update.download_update" +msgstr "下载" + +msgid "update.needs_reload" +msgstr "需要重新加载项目以应用更新。" + +msgid "update.reload_ok_button" +msgstr "重新加载" + +msgid "update.reload_cancel_button" +msgstr "暂不重新加载" + +msgid "update.reload_project" +msgstr "重新加载" + +msgid "update.release_notes" +msgstr "查看发行注记" + +msgid "update.success" +msgstr "v{version} 已成功安装并应用。" + +msgid "update.failed" +msgstr "更新失败。" + +msgid "runtime.no_resource" +msgstr "找不到资源。" + +msgid "runtime.no_content" +msgstr "资源“{file_path}”为空。" + +msgid "runtime.errors" +msgstr "文件中存在{errrors}个错误。" + +msgid "runtime.error_detail" +msgstr "第{index}行:{message}" + +msgid "runtime.errors_see_details" +msgstr "文件中存在{errrors}个错误。请查看调试输出。" + +msgid "runtime.invalid_expression" +msgstr "表达式“{expression}”无效:{error}" + +msgid "runtime.array_index_out_of_bounds" +msgstr "数组索引“{index}”越界。(数组名:“{array}”)" + +msgid "runtime.left_hand_size_cannot_be_assigned_to" +msgstr "表达式左侧的变量无法被赋值。" + +msgid "runtime.key_not_found" +msgstr "键“{key}”在字典“{dictionary}”中不存在。" + +msgid "runtime.property_not_found" +msgstr "“{property}”不存在。(全局变量:{states})" + +msgid "runtime.property_not_found_missing_export" +msgstr "“{property}”不存在。(全局变量:{states})你可能需要添加一个修饰词 [Export]。" + +msgid "runtime.method_not_found" +msgstr "“{method}”不存在。(全局变量:{states})" + +msgid "runtime.signal_not_found" +msgstr "“{sighal_name}”不存在。(全局变量:{states})" + +msgid "runtime.method_not_callable" +msgstr "{method}不是对象“{object}”上的函数。" + +msgid "runtime.unknown_operator" +msgstr "未知操作符。" + +msgid "runtime.something_went_wrong" +msgstr "有什么出错了。" diff --git a/addons/dialogue_manager/l10n/zh_TW.po b/addons/dialogue_manager/l10n/zh_TW.po new file mode 100644 index 0000000..e20feee --- /dev/null +++ b/addons/dialogue_manager/l10n/zh_TW.po @@ -0,0 +1,378 @@ +msgid "" +msgstr "" +"Project-Id-Version: Dialogue Manager\n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: 憨憨羊の宇航鴿鴿、ABShinri\n" +"Language: zh_TW\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 3.4\n" + +msgid "start_a_new_file" +msgstr "創建新檔案" + +msgid "open_a_file" +msgstr "開啟已有檔案" + +msgid "open.open" +msgstr "開啟……" + +msgid "open.no_recent_files" +msgstr "無歷史記錄" + +msgid "open.clear_recent_files" +msgstr "清空歷史記錄" + +msgid "save_all_files" +msgstr "儲存所有檔案" + +msgid "find_in_files" +msgstr "在檔案中查找" + +msgid "test_dialogue" +msgstr "測試對話" + +msgid "search_for_text" +msgstr "搜尋……" + +msgid "insert" +msgstr "插入" + +msgid "translations" +msgstr "翻譯" + +msgid "show_support" +msgstr "支援 Dialogue Manager" + +msgid "docs" +msgstr "文檔" + +msgid "insert.wave_bbcode" +msgstr "波浪特效" + +msgid "insert.shake_bbcode" +msgstr "震動特效" + +msgid "insert.typing_pause" +msgstr "輸入間隔" + +msgid "insert.typing_speed_change" +msgstr "輸入速度變更" + +msgid "insert.auto_advance" +msgstr "自動切行" + +msgid "insert.templates" +msgstr "模板" + +msgid "insert.title" +msgstr "標題" + +msgid "insert.dialogue" +msgstr "對話" + +msgid "insert.response" +msgstr "回覆選項" + +msgid "insert.random_lines" +msgstr "隨機行" + +msgid "insert.random_text" +msgstr "隨機文本" + +msgid "insert.actions" +msgstr "操作" + +msgid "insert.jump" +msgstr "標題間跳轉" + +msgid "insert.end_dialogue" +msgstr "結束對話" + +msgid "generate_line_ids" +msgstr "生成行 ID" + +msgid "save_characters_to_csv" +msgstr "保存角色到 CSV" + +msgid "save_to_csv" +msgstr "生成 CSV" + +msgid "import_from_csv" +msgstr "從 CSV 匯入" + +msgid "confirm_close" +msgstr "是否要儲存到“{path}”?" + +msgid "confirm_close.save" +msgstr "儲存" + +msgid "confirm_close.discard" +msgstr "不儲存" + +msgid "buffer.save" +msgstr "儲存" + +msgid "buffer.save_as" +msgstr "儲存爲……" + +msgid "buffer.close" +msgstr "關閉" + +msgid "buffer.close_all" +msgstr "全部關閉" + +msgid "buffer.close_other_files" +msgstr "關閉其他檔案" + +msgid "buffer.copy_file_path" +msgstr "複製檔案位置" + +msgid "buffer.show_in_filesystem" +msgstr "在 Godot 側邊欄中顯示" + +msgid "n_of_n" +msgstr "第{index}個,共{total}個" + +msgid "search.find" +msgstr "搜尋:" + +msgid "search.find_all" +msgstr "搜尋全部..." + +msgid "search.placeholder" +msgstr "請輸入搜尋的內容" + +msgid "search.replace_placeholder" +msgstr "請輸入替換的內容" + +msgid "search.replace_selected" +msgstr "替換勾選" + +msgid "search.previous" +msgstr "搜尋上一個" + +msgid "search.next" +msgstr "搜尋下一個" + +msgid "search.match_case" +msgstr "大小寫敏感" + +msgid "search.toggle_replace" +msgstr "替換" + +msgid "search.replace_with" +msgstr "替換爲" + +msgid "search.replace" +msgstr "替換" + +msgid "search.replace_all" +msgstr "全部替換" + +msgid "files_list.filter" +msgstr "搜尋檔案" + +msgid "titles_list.filter" +msgstr "搜尋標題" + +msgid "errors.key_not_found" +msgstr "鍵“{key}”未找到" + +msgid "errors.line_and_message" +msgstr "第{line}行第{colume}列發生錯誤:{message}" + +msgid "errors_in_script" +msgstr "你的腳本中存在錯誤。請修復錯誤,然後重試。" + +msgid "errors_with_build" +msgstr "請先解決 Dialogue 中的錯誤。" + +msgid "errors.import_errors" +msgstr "被匯入的檔案存在問題。" + +msgid "errors.already_imported" +msgstr "檔案已被匯入。" + +msgid "errors.duplicate_import" +msgstr "匯入名不能重複。" + +msgid "errors.empty_title" +msgstr "標題名不能爲空。" + +msgid "errors.duplicate_title" +msgstr "標題名不能重複。" + +msgid "errors.invalid_title_string" +msgstr "標題名無效。" + +msgid "errors.invalid_title_number" +msgstr "標題不能以數字開始。" + +msgid "errors.unknown_title" +msgstr "標題未定義。" + +msgid "errors.jump_to_invalid_title" +msgstr "標題名無效。" + +msgid "errors.title_has_no_content" +msgstr "目標標題爲空。請替換爲“=> END”。" + +msgid "errors.invalid_expression" +msgstr "表達式無效。" + +msgid "errors.unexpected_condition" +msgstr "未知條件。" + +msgid "errors.duplicate_id" +msgstr "ID 重複。" + +msgid "errors.missing_id" +msgstr "ID 不存在。" + +msgid "errors.invalid_indentation" +msgstr "縮進無效。" + +msgid "errors.condition_has_no_content" +msgstr "條件下方不能爲空。" + +msgid "errors.incomplete_expression" +msgstr "不完整的表達式。" + +msgid "errors.invalid_expression_for_value" +msgstr "無效的賦值表達式。" + +msgid "errors.file_not_found" +msgstr "檔案不存在。" + +msgid "errors.unexpected_end_of_expression" +msgstr "表達式 end 不應存在。" + +msgid "errors.unexpected_function" +msgstr "函數不應存在。" + +msgid "errors.unexpected_bracket" +msgstr "方括號不應存在。" + +msgid "errors.unexpected_closing_bracket" +msgstr "方括號不應存在。" + +msgid "errors.missing_closing_bracket" +msgstr "閉方括號不存在。" + +msgid "errors.unexpected_operator" +msgstr "操作符不應存在。" + +msgid "errors.unexpected_comma" +msgstr "逗號不應存在。" + +msgid "errors.unexpected_colon" +msgstr "冒號不應存在。" + +msgid "errors.unexpected_dot" +msgstr "句號不應存在。" + +msgid "errors.unexpected_boolean" +msgstr "布爾值不應存在。" + +msgid "errors.unexpected_string" +msgstr "字符串不應存在。" + +msgid "errors.unexpected_number" +msgstr "數字不應存在。" + +msgid "errors.unexpected_variable" +msgstr "標識符不應存在。" + +msgid "errors.invalid_index" +msgstr "索引無效。" + +msgid "errors.unexpected_assignment" +msgstr "不應在條件判斷中使用 = ,應使用 == 。" + +msgid "errors.unknown" +msgstr "語法錯誤。" + +msgid "update.available" +msgstr "v{version} 更新可用。" + +msgid "update.is_available_for_download" +msgstr "v%s 已經可以下載。" + +msgid "update.downloading" +msgstr "正在下載更新……" + +msgid "update.download_update" +msgstr "下載" + +msgid "update.needs_reload" +msgstr "需要重新加載項目以套用更新。" + +msgid "update.reload_ok_button" +msgstr "重新加載" + +msgid "update.reload_cancel_button" +msgstr "暫不重新加載" + +msgid "update.reload_project" +msgstr "重新加載" + +msgid "update.release_notes" +msgstr "查看發行註記" + +msgid "update.success" +msgstr "v{version} 已成功安裝並套用。" + +msgid "update.failed" +msgstr "更新失敗。" + +msgid "runtime.no_resource" +msgstr "找不到資源。" + +msgid "runtime.no_content" +msgstr "資源“{file_path}”爲空。" + +msgid "runtime.errors" +msgstr "檔案中存在{errrors}個錯誤。" + +msgid "runtime.error_detail" +msgstr "第{index}行:{message}" + +msgid "runtime.errors_see_details" +msgstr "檔案中存在{errrors}個錯誤。請查看調試輸出。" + +msgid "runtime.invalid_expression" +msgstr "表達式“{expression}”無效:{error}" + +msgid "runtime.array_index_out_of_bounds" +msgstr "數組索引“{index}”越界。(數組名:“{array}”)" + +msgid "runtime.left_hand_size_cannot_be_assigned_to" +msgstr "表達式左側的變量無法被賦值。" + +msgid "runtime.key_not_found" +msgstr "鍵“{key}”在字典“{dictionary}”中不存在。" + +msgid "runtime.property_not_found" +msgstr "“{property}”不存在。(全局變量:{states})" + +msgid "runtime.method_not_found" +msgstr "“{method}”不存在。(全局變量:{states})" + +msgid "runtime.signal_not_found" +msgstr "“{sighal_name}”不存在。(全局變量:{states})" + +msgid "runtime.property_not_found_missing_export" +msgstr "“{property}”不存在。(全局變量:{states})你可能需要添加一個修飾詞 [Export]。" + +msgid "runtime.method_not_callable" +msgstr "{method}不是對象“{object}”上的函數。" + +msgid "runtime.unknown_operator" +msgstr "未知操作符。" + +msgid "runtime.something_went_wrong" +msgstr "有什麼出錯了。" diff --git a/addons/dialogue_manager/plugin.cfg b/addons/dialogue_manager/plugin.cfg new file mode 100644 index 0000000..28abe72 --- /dev/null +++ b/addons/dialogue_manager/plugin.cfg @@ -0,0 +1,7 @@ +[plugin] + +name="Dialogue Manager" +description="A powerful nonlinear dialogue system" +author="Nathan Hoad" +version="3.6.1" +script="plugin.gd" diff --git a/addons/dialogue_manager/plugin.cfg.uid b/addons/dialogue_manager/plugin.cfg.uid new file mode 100644 index 0000000..312d0cf --- /dev/null +++ b/addons/dialogue_manager/plugin.cfg.uid @@ -0,0 +1 @@ +uid://hrny2utekhei diff --git a/addons/dialogue_manager/plugin.gd b/addons/dialogue_manager/plugin.gd new file mode 100644 index 0000000..8e6e03b --- /dev/null +++ b/addons/dialogue_manager/plugin.gd @@ -0,0 +1,430 @@ +@tool +extends EditorPlugin + + +const MainView = preload("./views/main_view.tscn") + + +var import_plugin: DMImportPlugin +var export_plugin: DMExportPlugin +var inspector_plugin: DMInspectorPlugin +var translation_parser_plugin: DMTranslationParserPlugin +var main_view +var dialogue_cache: DMCache + + +func _enable_plugin() -> void: + add_autoload_singleton("DialogueManager", get_plugin_path() + "/dialogue_manager.gd") + + +func _disable_plugin() -> void: + remove_autoload_singleton("DialogueManager") + + +func _enter_tree() -> void: + if Engine.is_editor_hint(): + Engine.set_meta("DialogueManagerPlugin", self) + + DMSettings.prepare() + + dialogue_cache = DMCache.new() + Engine.set_meta("DMCache", dialogue_cache) + + import_plugin = DMImportPlugin.new() + add_import_plugin(import_plugin) + + export_plugin = DMExportPlugin.new() + add_export_plugin(export_plugin) + + inspector_plugin = DMInspectorPlugin.new() + add_inspector_plugin(inspector_plugin) + + translation_parser_plugin = DMTranslationParserPlugin.new() + add_translation_parser_plugin(translation_parser_plugin) + + main_view = MainView.instantiate() + EditorInterface.get_editor_main_screen().add_child(main_view) + _make_visible(false) + main_view.add_child(dialogue_cache) + + _update_localization() + + EditorInterface.get_file_system_dock().files_moved.connect(_on_files_moved) + EditorInterface.get_file_system_dock().file_removed.connect(_on_file_removed) + + add_tool_menu_item("Create copy of dialogue example balloon...", _copy_dialogue_balloon) + + # Automatically swap the script on the example balloon depending on if dotnet is being used. + if not FileAccess.file_exists("res://tests/test_basic_dialogue.gd"): + var plugin_path: String = get_plugin_path() + var balloon_file_names: PackedStringArray = ["example_balloon.tscn", "small_example_balloon.tscn"] + for balloon_file_name: String in balloon_file_names: + var balloon_path: String = plugin_path + "/example_balloon/" + balloon_file_name + var balloon_content: String = FileAccess.get_file_as_string(balloon_path) + if "example_balloon.gd" in balloon_content and DMSettings.check_for_dotnet_solution(): + balloon_content = balloon_content \ + # Replace script path with the C# one + .replace("example_balloon.gd", "ExampleBalloon.cs") \ + # Replace script UID with the C# one + .replace(ResourceUID.id_to_text(ResourceLoader.get_resource_uid(plugin_path + "/example_balloon/example_balloon.gd")), ResourceUID.id_to_text(ResourceLoader.get_resource_uid(plugin_path + "/example_balloon/ExampleBalloon.cs"))) + var balloon_file: FileAccess = FileAccess.open(balloon_path, FileAccess.WRITE) + balloon_file.store_string(balloon_content) + balloon_file.close() + elif "ExampleBalloon.cs" in balloon_content and not DMSettings.check_for_dotnet_solution(): + balloon_content = balloon_content \ + # Replace script path with the GDScript one + .replace("ExampleBalloon.cs", "example_balloon.gd") \ + # Replace script UID with the GDScript one + .replace(ResourceUID.id_to_text(ResourceLoader.get_resource_uid(plugin_path + "/example_balloon/ExampleBalloon.cs")), ResourceUID.id_to_text(ResourceLoader.get_resource_uid(plugin_path + "/example_balloon/example_balloon.gd"))) + var balloon_file: FileAccess = FileAccess.open(balloon_path, FileAccess.WRITE) + balloon_file.store_string(balloon_content) + balloon_file.close() + + # Automatically make any changes to the known custom balloon if there is one. + var balloon_path: String = DMSettings.get_setting(DMSettings.BALLOON_PATH, "") + if balloon_path != "" and FileAccess.file_exists(balloon_path): + var is_small_window: bool = ProjectSettings.get_setting("display/window/size/viewport_width") < 400 + var example_balloon_file_name: String = "small_example_balloon.tscn" if is_small_window else "example_balloon.tscn" + var example_balloon_path: String = get_plugin_path() + "/example_balloon/" + example_balloon_file_name + + var contents: String = FileAccess.get_file_as_string(balloon_path) + var has_changed: bool = false + + # Make sure the current balloon has a UID unique from the example balloon's + var example_balloon_uid: String = ResourceUID.id_to_text(ResourceLoader.get_resource_uid(example_balloon_path)) + var balloon_uid: String = ResourceUID.id_to_text(ResourceLoader.get_resource_uid(balloon_path)) + if example_balloon_uid == balloon_uid: + var new_balloon_uid: String = ResourceUID.id_to_text(ResourceUID.create_id()) + contents = contents.replace(example_balloon_uid, new_balloon_uid) + has_changed = true + + # Make sure the example balloon copy has the correct renaming of the responses menu + if "reponses" in contents: + contents = contents.replace("reponses", "responses") + has_changed = true + + # Save any changes + if has_changed: + var balloon_file: FileAccess = FileAccess.open(balloon_path, FileAccess.WRITE) + balloon_file.store_string(contents) + balloon_file.close() + + +func _exit_tree() -> void: + remove_import_plugin(import_plugin) + import_plugin = null + + remove_export_plugin(export_plugin) + export_plugin = null + + remove_inspector_plugin(inspector_plugin) + inspector_plugin = null + + remove_translation_parser_plugin(translation_parser_plugin) + translation_parser_plugin = null + + if is_instance_valid(main_view): + main_view.queue_free() + + Engine.remove_meta("DialogueManagerPlugin") + Engine.remove_meta("DMCache") + + EditorInterface.get_file_system_dock().files_moved.disconnect(_on_files_moved) + EditorInterface.get_file_system_dock().file_removed.disconnect(_on_file_removed) + + remove_tool_menu_item("Create copy of dialogue example balloon...") + + +func _has_main_screen() -> bool: + return true + + +func _make_visible(next_visible: bool) -> void: + if is_instance_valid(main_view): + main_view.visible = next_visible + + +func _get_plugin_name() -> String: + return "Dialogue" + + +func _get_plugin_icon() -> Texture2D: + return load(get_plugin_path() + "/assets/icon.svg") + + +func _handles(object) -> bool: + var editor_settings: EditorSettings = EditorInterface.get_editor_settings() + var external_editor: String = editor_settings.get_setting("text_editor/external/exec_path") + var use_external_editor: bool = editor_settings.get_setting("text_editor/external/use_external_editor") and external_editor != "" + if object is DialogueResource and use_external_editor and DMSettings.get_user_value("open_in_external_editor", false): + var project_path: String = ProjectSettings.globalize_path("res://") + var file_path: String = ProjectSettings.globalize_path(object.resource_path) + OS.create_process(external_editor, [project_path, file_path]) + return false + + return object is DialogueResource + + +func _edit(object) -> void: + if is_instance_valid(main_view) and is_instance_valid(object): + main_view.open_resource(object) + + +func _apply_changes() -> void: + if is_instance_valid(main_view): + main_view.apply_changes() + _update_localization() + + +func _save_external_data() -> void: + if dialogue_cache != null: + dialogue_cache.reimport_files() + + +func _build() -> bool: + # If this is the dotnet Godot then we need to check if the solution file exists + DMSettings.check_for_dotnet_solution() + + # Ignore errors in other files if we are just running the test scene + if DMSettings.get_user_value("is_running_test_scene", true): return true + + if dialogue_cache != null: + dialogue_cache.reimport_files() + + var files_with_errors = dialogue_cache.get_files_with_errors() + if files_with_errors.size() > 0: + for dialogue_file in files_with_errors: + push_error("You have %d error(s) in %s" % [dialogue_file.errors.size(), dialogue_file.path]) + EditorInterface.edit_resource(load(files_with_errors[0].path)) + main_view.show_build_error_dialog() + return false + + return true + + +## Get the shortcuts used by the plugin +func get_editor_shortcuts() -> Dictionary: + var shortcuts: Dictionary = { + toggle_comment = [ + _create_event("Ctrl+K"), + _create_event("Ctrl+Slash") + ], + delete_line = [ + _create_event("Ctrl+Shift+K") + ], + move_up = [ + _create_event("Alt+Up") + ], + move_down = [ + _create_event("Alt+Down") + ], + save = [ + _create_event("Ctrl+Alt+S") + ], + close_file = [ + _create_event("Ctrl+W") + ], + find_in_files = [ + _create_event("Ctrl+Shift+F") + ], + + run_test_scene = [ + _create_event("Ctrl+F5") + ], + text_size_increase = [ + _create_event("Ctrl+Equal") + ], + text_size_decrease = [ + _create_event("Ctrl+Minus") + ], + text_size_reset = [ + _create_event("Ctrl+0") + ] + } + + var paths = EditorInterface.get_editor_paths() + var settings + if FileAccess.file_exists(paths.get_config_dir() + "/editor_settings-4.3.tres"): + settings = load(paths.get_config_dir() + "/editor_settings-4.3.tres") + elif FileAccess.file_exists(paths.get_config_dir() + "/editor_settings-4.tres"): + settings = load(paths.get_config_dir() + "/editor_settings-4.tres") + else: + return shortcuts + + for s in settings.get("shortcuts"): + for key in shortcuts: + if s.name == "script_text_editor/%s" % key or s.name == "script_editor/%s" % key: + shortcuts[key] = [] + for event in s.shortcuts: + if event is InputEventKey: + shortcuts[key].append(event) + + return shortcuts + + +func _create_event(string: String) -> InputEventKey: + var event: InputEventKey = InputEventKey.new() + var bits = string.split("+") + event.keycode = OS.find_keycode_from_string(bits[bits.size() - 1]) + event.shift_pressed = bits.has("Shift") + event.alt_pressed = bits.has("Alt") + if bits.has("Ctrl") or bits.has("Command"): + event.command_or_control_autoremap = true + return event + + +## Get the editor shortcut that matches an event +func get_editor_shortcut(event: InputEventKey) -> String: + var shortcuts: Dictionary = get_editor_shortcuts() + for key in shortcuts: + for shortcut in shortcuts.get(key, []): + if event.as_text().split(" ")[0] == shortcut.as_text().split(" ")[0]: + return key + return "" + + +## Get the current version +func get_version() -> String: + var config: ConfigFile = ConfigFile.new() + config.load(get_plugin_path() + "/plugin.cfg") + return config.get_value("plugin", "version") + + +## Get the current path of the plugin +func get_plugin_path() -> String: + return get_script().resource_path.get_base_dir() + + +## Update references to a moved file +func update_import_paths(from_path: String, to_path: String) -> void: + dialogue_cache.move_file_path(from_path, to_path) + + # Reopen the file if it's already open + if main_view.current_file_path == from_path: + if to_path == "": + main_view.close_file(from_path) + else: + main_view.current_file_path = "" + main_view.open_file(to_path) + + # Update any other files that import the moved file + var dependents = dialogue_cache.get_files_with_dependency(from_path) + for dependent in dependents: + dependent.dependencies.remove_at(dependent.dependencies.find(from_path)) + dependent.dependencies.append(to_path) + + # Update the live buffer + if main_view.current_file_path == dependent.path: + main_view.code_edit.text = main_view.code_edit.text.replace(from_path, to_path) + main_view.open_buffers[main_view.current_file_path].pristine_text = main_view.code_edit.text + + # Open the file and update the path + var file: FileAccess = FileAccess.open(dependent.path, FileAccess.READ) + var text = file.get_as_text().replace(from_path, to_path) + file.close() + + file = FileAccess.open(dependent.path, FileAccess.WRITE) + file.store_string(text) + file.close() + + +func _update_localization() -> void: + var dialogue_files = dialogue_cache.get_files() + + # Add any new files to POT generation + var files_for_pot: PackedStringArray = ProjectSettings.get_setting("internationalization/locale/translations_pot_files", []) + var files_for_pot_changed: bool = false + for path in dialogue_files: + if not files_for_pot.has(path): + files_for_pot.append(path) + files_for_pot_changed = true + + # Remove any POT references that don't exist any more + for i in range(files_for_pot.size() - 1, -1, -1): + var file_for_pot: String = files_for_pot[i] + if file_for_pot.get_extension() == "dialogue" and not dialogue_files.has(file_for_pot): + files_for_pot.remove_at(i) + files_for_pot_changed = true + + # Update project settings if POT changed + if files_for_pot_changed: + ProjectSettings.set_setting("internationalization/locale/translations_pot_files", files_for_pot) + ProjectSettings.save() + + +### Callbacks + + +func _copy_dialogue_balloon() -> void: + var scale: float = EditorInterface.get_editor_scale() + var directory_dialog: FileDialog = FileDialog.new() + var label: Label = Label.new() + label.text = "Dialogue balloon files will be copied into chosen directory." + directory_dialog.get_vbox().add_child(label) + directory_dialog.file_mode = FileDialog.FILE_MODE_OPEN_DIR + directory_dialog.min_size = Vector2(600, 500) * scale + directory_dialog.dir_selected.connect(func(path): + var plugin_path: String = get_plugin_path() + var is_dotnet: bool = DMSettings.check_for_dotnet_solution() + + var balloon_path: String = path + ("/Balloon.tscn" if is_dotnet else "/balloon.tscn") + var balloon_script_path: String = path + ("/DialogueBalloon.cs" if is_dotnet else "/balloon.gd") + + # Copy the balloon scene file and change the script reference + var is_small_window: bool = ProjectSettings.get_setting("display/window/size/viewport_width") < 400 + var example_balloon_file_name: String = "small_example_balloon.tscn" if is_small_window else "example_balloon.tscn" + var example_balloon_path: String = plugin_path + "/example_balloon/" + example_balloon_file_name + var example_balloon_script_file_name: String = "ExampleBalloon.cs" if is_dotnet else "example_balloon.gd" + var example_balloon_script_uid: String = ResourceUID.id_to_text(ResourceLoader.get_resource_uid(plugin_path + "/example_balloon/example_balloon.gd")) + var example_balloon_uid: String = ResourceUID.id_to_text(ResourceLoader.get_resource_uid(example_balloon_path)) + + # Copy the script file + var file: FileAccess = FileAccess.open(plugin_path + "/example_balloon/" + example_balloon_script_file_name, FileAccess.READ) + var file_contents: String = file.get_as_text() + if is_dotnet: + file_contents = file_contents.replace("class ExampleBalloon", "class DialogueBalloon") + else: + file_contents = file_contents.replace("class_name DialogueManagerExampleBalloon ", "") + file = FileAccess.open(balloon_script_path, FileAccess.WRITE) + file.store_string(file_contents) + file.close() + var new_balloon_script_uid_raw: int = ResourceUID.create_id() + ResourceUID.add_id(new_balloon_script_uid_raw, balloon_script_path) + var new_balloon_script_uid: String = ResourceUID.id_to_text(new_balloon_script_uid_raw) + + # Save the new balloon + file_contents = FileAccess.get_file_as_string(example_balloon_path) + if "example_balloon.gd" in file_contents: + file_contents = file_contents.replace(plugin_path + "/example_balloon/example_balloon.gd", balloon_script_path) + else: + file_contents = file_contents.replace(plugin_path + "/example_balloon/ExampleBalloon.cs", balloon_script_path) + var new_balloon_uid: String = ResourceUID.id_to_text(ResourceUID.create_id()) + file_contents = file_contents.replace(example_balloon_uid, new_balloon_uid).replace(example_balloon_script_uid, new_balloon_script_uid) + file = FileAccess.open(balloon_path, FileAccess.WRITE) + file.store_string(file_contents) + file.close() + + EditorInterface.get_resource_filesystem().scan() + EditorInterface.get_file_system_dock().call_deferred("navigate_to_path", balloon_path) + + DMSettings.set_setting(DMSettings.BALLOON_PATH, balloon_path) + + directory_dialog.queue_free() + ) + EditorInterface.get_base_control().add_child(directory_dialog) + directory_dialog.popup_centered() + + +### Signals + + +func _on_files_moved(old_file: String, new_file: String) -> void: + update_import_paths(old_file, new_file) + DMSettings.move_recent_file(old_file, new_file) + + +func _on_file_removed(file: String) -> void: + update_import_paths(file, "") + if is_instance_valid(main_view): + main_view.close_file(file) + _update_localization() diff --git a/addons/dialogue_manager/plugin.gd.uid b/addons/dialogue_manager/plugin.gd.uid new file mode 100644 index 0000000..40573b0 --- /dev/null +++ b/addons/dialogue_manager/plugin.gd.uid @@ -0,0 +1 @@ +uid://bpv426rpvrafa diff --git a/addons/dialogue_manager/settings.gd b/addons/dialogue_manager/settings.gd new file mode 100644 index 0000000..5aac7d4 --- /dev/null +++ b/addons/dialogue_manager/settings.gd @@ -0,0 +1,330 @@ +@tool +class_name DMSettings extends Node + + +#region Editor + + + +## Wrap lines in the dialogue editor. +const WRAP_LONG_LINES = "editor/wrap_long_lines" +## The template to start new dialogue files with. +const NEW_FILE_TEMPLATE = "editor/new_file_template" + +## Show lines without statis IDs as errors. +const MISSING_TRANSLATIONS_ARE_ERRORS = "editor/translations/missing_translations_are_errors" +## Include character names in the list of translatable strings. +const INCLUDE_CHARACTERS_IN_TRANSLATABLE_STRINGS_LIST = "editor/translations/include_characters_in_translatable_strings_list" +## The default locale to use when exporting CSVs +const DEFAULT_CSV_LOCALE = "editor/translations/default_csv_locale" +## Any extra CSV locales to append to the exported translation CSV +const EXTRA_CSV_LOCALES = "editor/translations/extra_csv_locales" +## Includes a "_character" column in CSV exports. +const INCLUDE_CHARACTER_IN_TRANSLATION_EXPORTS = "editor/translations/include_character_in_translation_exports" +## Includes a "_notes" column in CSV exports +const INCLUDE_NOTES_IN_TRANSLATION_EXPORTS = "editor/translations/include_notes_in_translation_exports" + +## A custom test scene to use when testing dialogue. +const CUSTOM_TEST_SCENE_PATH = "editor/advanced/custom_test_scene_path" +## Extra script files to include in the auto-complete-able list +const EXTRA_AUTO_COMPLETE_SCRIPT_SOURCES = "editor/advanced/extra_auto_complete_script_sources" + +## The custom balloon for this game. +const BALLOON_PATH = "runtime/balloon_path" +## The names of any autoloads to shortcut into all dialogue files (so you don't have to write `using SomeGlobal` in each file). +const STATE_AUTOLOAD_SHORTCUTS = "runtime/state_autoload_shortcuts" +## Check for possible naming conflicts in state shortcuts. +const WARN_ABOUT_METHOD_PROPERTY_OR_SIGNAL_NAME_CONFLICTS = "runtime/warn_about_method_property_or_signal_name_conflicts" + +## Bypass any missing state when running dialogue. +const IGNORE_MISSING_STATE_VALUES = "runtime/advanced/ignore_missing_state_values" +## Whether or not the project is utilising dotnet. +const USES_DOTNET = "runtime/advanced/uses_dotnet" + + +static var SETTINGS_CONFIGURATION = { + WRAP_LONG_LINES: { + value = false, + type = TYPE_BOOL, + }, + NEW_FILE_TEMPLATE: { + value = "~ start\nNathan: [[Hi|Hello|Howdy]], this is some dialogue.\nNathan: Here are some choices.\n- First one\n\tNathan: You picked the first one.\n- Second one\n\tNathan: You picked the second one.\n- Start again => start\n- End the conversation => END\nNathan: For more information see the online documentation.\n=> END", + type = TYPE_STRING, + hint = PROPERTY_HINT_MULTILINE_TEXT, + }, + + MISSING_TRANSLATIONS_ARE_ERRORS: { + value = false, + type = TYPE_BOOL, + is_advanced = true + }, + INCLUDE_CHARACTERS_IN_TRANSLATABLE_STRINGS_LIST: { + value = true, + type = TYPE_BOOL, + }, + DEFAULT_CSV_LOCALE: { + value = "en", + type = TYPE_STRING, + hint = PROPERTY_HINT_LOCALE_ID, + }, + EXTRA_CSV_LOCALES: { + value = [], + type = TYPE_PACKED_STRING_ARRAY, + hint = PROPERTY_HINT_TYPE_STRING, + hint_string = "%d:" % [TYPE_STRING], + is_advanced = true + }, + INCLUDE_CHARACTER_IN_TRANSLATION_EXPORTS: { + value = false, + type = TYPE_BOOL, + is_advanced = true + }, + INCLUDE_NOTES_IN_TRANSLATION_EXPORTS: { + value = false, + type = TYPE_BOOL, + is_advanced = true + }, + + CUSTOM_TEST_SCENE_PATH: { + value = preload("./test_scene.tscn").resource_path, + type = TYPE_STRING, + hint = PROPERTY_HINT_FILE, + is_advanced = true + }, + EXTRA_AUTO_COMPLETE_SCRIPT_SOURCES: { + value = [], + type = TYPE_PACKED_STRING_ARRAY, + hint = PROPERTY_HINT_TYPE_STRING, + hint_string = "%d/%d:*.*" % [TYPE_STRING, PROPERTY_HINT_FILE], + is_advanced = true + }, + + BALLOON_PATH: { + value = "", + type = TYPE_STRING, + hint = PROPERTY_HINT_FILE, + }, + STATE_AUTOLOAD_SHORTCUTS: { + value = [], + type = TYPE_PACKED_STRING_ARRAY, + hint = PROPERTY_HINT_TYPE_STRING, + hint_string = "%d:" % [TYPE_STRING], + }, + WARN_ABOUT_METHOD_PROPERTY_OR_SIGNAL_NAME_CONFLICTS: { + value = false, + type = TYPE_BOOL, + is_advanced = true + }, + + IGNORE_MISSING_STATE_VALUES: { + value = false, + type = TYPE_BOOL, + is_advanced = true + }, + USES_DOTNET: { + value = false, + type = TYPE_BOOL, + is_hidden = true + } +} + + +static func prepare() -> void: + var should_save_settings: bool = false + + # Remap any old settings into their new keys + var legacy_map: Dictionary = { + states = STATE_AUTOLOAD_SHORTCUTS, + missing_translations_are_errors = MISSING_TRANSLATIONS_ARE_ERRORS, + export_characters_in_translation = INCLUDE_CHARACTERS_IN_TRANSLATABLE_STRINGS_LIST, + wrap_lines = WRAP_LONG_LINES, + new_with_template = null, + new_template = NEW_FILE_TEMPLATE, + include_all_responses = null, + ignore_missing_state_values = IGNORE_MISSING_STATE_VALUES, + custom_test_scene_path = CUSTOM_TEST_SCENE_PATH, + default_csv_locale = DEFAULT_CSV_LOCALE, + balloon_path = BALLOON_PATH, + create_lines_for_responses_with_characters = null, + include_character_in_translation_exports = INCLUDE_CHARACTER_IN_TRANSLATION_EXPORTS, + include_notes_in_translation_exports = INCLUDE_NOTES_IN_TRANSLATION_EXPORTS, + uses_dotnet = USES_DOTNET, + try_suppressing_startup_unsaved_indicator = null + } + + for legacy_key: String in legacy_map: + if ProjectSettings.has_setting("dialogue_manager/general/%s" % legacy_key): + should_save_settings = true + # Remove the old setting + var value = ProjectSettings.get_setting("dialogue_manager/general/%s" % legacy_key) + ProjectSettings.set_setting("dialogue_manager/general/%s" % legacy_key, null) + if legacy_map.get(legacy_key) != null: + prints("Migrating Dialogue Manager setting %s to %s with value %s" % [legacy_key, legacy_map.get(legacy_key), str(value)]) + ProjectSettings.set_setting("dialogue_manager/%s" % [legacy_map.get(legacy_key)], value) + + # Set up initial settings + for key: String in SETTINGS_CONFIGURATION: + var setting_config: Dictionary = SETTINGS_CONFIGURATION[key] + var setting_name: String = "dialogue_manager/%s" % key + if not ProjectSettings.has_setting(setting_name): + ProjectSettings.set_setting(setting_name, setting_config.value) + ProjectSettings.set_initial_value(setting_name, setting_config.value) + ProjectSettings.add_property_info({ + "name" = setting_name, + "type" = setting_config.type, + "hint" = setting_config.get("hint", PROPERTY_HINT_NONE), + "hint_string" = setting_config.get("hint_string", "") + }) + ProjectSettings.set_as_basic(setting_name, not setting_config.has("is_advanced")) + ProjectSettings.set_as_internal(setting_name, setting_config.has("is_hidden")) + + if should_save_settings: + ProjectSettings.save() + + +static func set_setting(key: String, value) -> void: + if get_setting(key, value) != value: + ProjectSettings.set_setting("dialogue_manager/%s" % key, value) + ProjectSettings.set_initial_value("dialogue_manager/%s" % key, SETTINGS_CONFIGURATION[key].value) + ProjectSettings.save() + + +static func get_setting(key: String, default): + if ProjectSettings.has_setting("dialogue_manager/%s" % key): + return ProjectSettings.get_setting("dialogue_manager/%s" % key) + else: + return default + + +static func get_settings(only_keys: PackedStringArray = []) -> Dictionary: + var settings: Dictionary = {} + for key in SETTINGS_CONFIGURATION.keys(): + if only_keys.is_empty() or key in only_keys: + settings[key] = get_setting(key, SETTINGS_CONFIGURATION[key].value) + return settings + + +#endregion + +#region User + + +static func get_user_config() -> Dictionary: + var user_config: Dictionary = { + check_for_updates = true, + just_refreshed = null, + recent_files = [], + reopen_files = [], + most_recent_reopen_file = "", + file_meta = {}, + run_title = "", + run_resource_path = "", + is_running_test_scene = false, + has_dotnet_solution = false, + open_in_external_editor = false + } + + if FileAccess.file_exists(DMConstants.USER_CONFIG_PATH): + var file: FileAccess = FileAccess.open(DMConstants.USER_CONFIG_PATH, FileAccess.READ) + user_config.merge(JSON.parse_string(file.get_as_text()), true) + + return user_config + + +static func save_user_config(user_config: Dictionary) -> void: + var file: FileAccess = FileAccess.open(DMConstants.USER_CONFIG_PATH, FileAccess.WRITE) + file.store_string(JSON.stringify(user_config)) + + +static func set_user_value(key: String, value) -> void: + var user_config: Dictionary = get_user_config() + user_config[key] = value + save_user_config(user_config) + + +static func get_user_value(key: String, default = null) -> Variant: + return get_user_config().get(key, default) + + +static func forget_path(path: String) -> void: + remove_recent_file(path) + var file_meta: Dictionary = get_user_value("file_meta", {}) + file_meta.erase(path) + set_user_value("file_meta", file_meta) + + +static func add_recent_file(path: String) -> void: + var recent_files: Array = get_user_value("recent_files", []) + if path in recent_files: + recent_files.erase(path) + recent_files.insert(0, path) + set_user_value("recent_files", recent_files) + + +static func move_recent_file(from_path: String, to_path: String) -> void: + var recent_files: Array = get_user_value("recent_files", []) + for i in range(0, recent_files.size()): + if recent_files[i] == from_path: + recent_files[i] = to_path + set_user_value("recent_files", recent_files) + + +static func remove_recent_file(path: String) -> void: + var recent_files: Array = get_user_value("recent_files", []) + if path in recent_files: + recent_files.erase(path) + set_user_value("recent_files", recent_files) + + +static func get_recent_files() -> Array: + return get_user_value("recent_files", []) + + +static func clear_recent_files() -> void: + set_user_value("recent_files", []) + set_user_value("carets", {}) + + +static func set_caret(path: String, cursor: Vector2) -> void: + var file_meta: Dictionary = get_user_value("file_meta", {}) + file_meta[path] = file_meta.get(path, {}).merged({ cursor = "%d,%d" % [cursor.x, cursor.y] }, true) + set_user_value("file_meta", file_meta) + + +static func get_caret(path: String) -> Vector2: + var file_meta: Dictionary = get_user_value("file_meta", {}) + if file_meta.has(path): + var cursor: PackedStringArray = file_meta.get(path).get("cursor", "0,0").split(",") + return Vector2(cursor[0].to_int(), cursor[1].to_int()) + else: + return Vector2.ZERO + + +static func set_scroll(path: String, scroll_vertical: int) -> void: + var file_meta: Dictionary = get_user_value("file_meta", {}) + file_meta[path] = file_meta.get(path, {}).merged({ scroll_vertical = scroll_vertical }, true) + set_user_value("file_meta", file_meta) + + +static func get_scroll(path: String) -> int: + var file_meta: Dictionary = get_user_value("file_meta", {}) + if file_meta.has(path): + return file_meta.get(path).get("scroll_vertical", 0) + else: + return 0 + + +static func check_for_dotnet_solution() -> bool: + if Engine.is_editor_hint(): + var has_dotnet_solution: bool = false + if ProjectSettings.has_setting("dotnet/project/solution_directory"): + var directory: String = ProjectSettings.get("dotnet/project/solution_directory") + var file_name: String = ProjectSettings.get("dotnet/project/assembly_name") + has_dotnet_solution = FileAccess.file_exists("res://%s/%s.sln" % [directory, file_name]) + set_setting(DMSettings.USES_DOTNET, has_dotnet_solution) + return has_dotnet_solution + + return get_setting(DMSettings.USES_DOTNET, false) + + +#endregion diff --git a/addons/dialogue_manager/settings.gd.uid b/addons/dialogue_manager/settings.gd.uid new file mode 100644 index 0000000..c93da98 --- /dev/null +++ b/addons/dialogue_manager/settings.gd.uid @@ -0,0 +1 @@ +uid://ce1nk88365m52 diff --git a/addons/dialogue_manager/test_scene.gd b/addons/dialogue_manager/test_scene.gd new file mode 100644 index 0000000..e621667 --- /dev/null +++ b/addons/dialogue_manager/test_scene.gd @@ -0,0 +1,37 @@ +class_name BaseDialogueTestScene extends Node2D + + +const DialogueSettings = preload("./settings.gd") +const DialogueResource = preload("./dialogue_resource.gd") + + +@onready var title: String = DialogueSettings.get_user_value("run_title") +@onready var resource: DialogueResource = load(DialogueSettings.get_user_value("run_resource_path")) + + +func _ready(): + if not Engine.is_embedded_in_editor: + var window: Window = get_viewport() + var screen_index: int = DisplayServer.get_primary_screen() + window.position = Vector2(DisplayServer.screen_get_position(screen_index)) + (DisplayServer.screen_get_size(screen_index) - window.size) * 0.5 + window.mode = Window.MODE_WINDOWED + + # Normally you can just call DialogueManager directly but doing so before the plugin has been + # enabled in settings will throw a compiler error here so I'm using `get_singleton` instead. + var dialogue_manager = Engine.get_singleton("DialogueManager") + dialogue_manager.dialogue_ended.connect(_on_dialogue_ended) + dialogue_manager.show_dialogue_balloon(resource, title if not title.is_empty() else resource.first_title) + + +func _enter_tree() -> void: + DialogueSettings.set_user_value("is_running_test_scene", false) + + +#region Signals + + +func _on_dialogue_ended(_resource: DialogueResource): + get_tree().quit() + + +#endregion diff --git a/addons/dialogue_manager/test_scene.gd.uid b/addons/dialogue_manager/test_scene.gd.uid new file mode 100644 index 0000000..1bee7a1 --- /dev/null +++ b/addons/dialogue_manager/test_scene.gd.uid @@ -0,0 +1 @@ +uid://c8e16qdgu40wo diff --git a/addons/dialogue_manager/test_scene.tscn b/addons/dialogue_manager/test_scene.tscn new file mode 100644 index 0000000..f0786ba --- /dev/null +++ b/addons/dialogue_manager/test_scene.tscn @@ -0,0 +1,6 @@ +[gd_scene load_steps=2 format=3 uid="uid://ugd552efvil0"] + +[ext_resource type="Script" uid="uid://c8e16qdgu40wo" path="res://addons/dialogue_manager/test_scene.gd" id="1_yupoh"] + +[node name="TestScene" type="Node2D"] +script = ExtResource("1_yupoh") diff --git a/addons/dialogue_manager/utilities/builtins.gd b/addons/dialogue_manager/utilities/builtins.gd new file mode 100644 index 0000000..1f8f8ba --- /dev/null +++ b/addons/dialogue_manager/utilities/builtins.gd @@ -0,0 +1,505 @@ +extends Object + + +const DialogueConstants = preload("../constants.gd") + +const SUPPORTED_BUILTIN_TYPES = [ + TYPE_STRING, + TYPE_STRING_NAME, + TYPE_ARRAY, + TYPE_PACKED_STRING_ARRAY, + TYPE_VECTOR2, + TYPE_VECTOR3, + TYPE_VECTOR4, + TYPE_DICTIONARY, + TYPE_QUATERNION, + TYPE_COLOR, + TYPE_SIGNAL, + TYPE_CALLABLE +] + + +static var resolve_method_error: Error = OK + + +static func is_supported(thing, with_method: String = "") -> bool: + if not typeof(thing) in SUPPORTED_BUILTIN_TYPES: return false + + # If given a Dictionary and a method then make sure it's a known Dictionary method. + if typeof(thing) == TYPE_DICTIONARY and with_method != "": + return with_method in [ + &"clear", + &"duplicate", + &"erase", + &"find_key", + &"get", + &"get_or_add", + &"has", + &"has_all", + &"hash", + &"is_empty", + &"is_read_only", + &"keys", + &"make_read_only", + &"merge", + &"merged", + &"recursive_equal", + &"size", + &"values"] + + return true + + +static func resolve_property(builtin, property: String): + match typeof(builtin): + TYPE_ARRAY, TYPE_PACKED_STRING_ARRAY, TYPE_DICTIONARY, TYPE_QUATERNION, TYPE_STRING, TYPE_STRING_NAME: + return builtin[property] + + # Some types have constants that we need to manually resolve + + TYPE_VECTOR2: + return resolve_vector2_property(builtin, property) + TYPE_VECTOR3: + return resolve_vector3_property(builtin, property) + TYPE_VECTOR4: + return resolve_vector4_property(builtin, property) + TYPE_COLOR: + return resolve_color_property(builtin, property) + + +static func resolve_method(thing, method_name: String, args: Array): + resolve_method_error = OK + + # Resolve static methods manually + match typeof(thing): + TYPE_VECTOR2: + match method_name: + "from_angle": + return Vector2.from_angle(args[0]) + + TYPE_COLOR: + match method_name: + "from_hsv": + return Color.from_hsv(args[0], args[1], args[2]) if args.size() == 3 else Color.from_hsv(args[0], args[1], args[2], args[3]) + "from_ok_hsl": + return Color.from_ok_hsl(args[0], args[1], args[2]) if args.size() == 3 else Color.from_ok_hsl(args[0], args[1], args[2], args[3]) + "from_rgbe9995": + return Color.from_rgbe9995(args[0]) + "from_string": + return Color.from_string(args[0], args[1]) + + TYPE_QUATERNION: + match method_name: + "from_euler": + return Quaternion.from_euler(args[0]) + + # Anything else can be evaulatated automatically + var references: Array = ["thing"] + for i in range(0, args.size()): + references.append("arg%d" % i) + var expression = Expression.new() + if expression.parse("thing.%s(%s)" % [method_name, ",".join(references.slice(1))], references) != OK: + assert(false, expression.get_error_text()) + var result = expression.execute([thing] + args, null, false) + if expression.has_execute_failed(): + resolve_method_error = ERR_CANT_RESOLVE + return null + + return result + + +static func has_resolve_method_failed() -> bool: + return resolve_method_error != OK + + +static func resolve_color_property(color: Color, property: String): + match property: + "ALICE_BLUE": + return Color.ALICE_BLUE + "ANTIQUE_WHITE": + return Color.ANTIQUE_WHITE + "AQUA": + return Color.AQUA + "AQUAMARINE": + return Color.AQUAMARINE + "AZURE": + return Color.AZURE + "BEIGE": + return Color.BEIGE + "BISQUE": + return Color.BISQUE + "BLACK": + return Color.BLACK + "BLANCHED_ALMOND": + return Color.BLANCHED_ALMOND + "BLUE": + return Color.BLUE + "BLUE_VIOLET": + return Color.BLUE_VIOLET + "BROWN": + return Color.BROWN + "BURLYWOOD": + return Color.BURLYWOOD + "CADET_BLUE": + return Color.CADET_BLUE + "CHARTREUSE": + return Color.CHARTREUSE + "CHOCOLATE": + return Color.CHOCOLATE + "CORAL": + return Color.CORAL + "CORNFLOWER_BLUE": + return Color.CORNFLOWER_BLUE + "CORNSILK": + return Color.CORNSILK + "CRIMSON": + return Color.CRIMSON + "CYAN": + return Color.CYAN + "DARK_BLUE": + return Color.DARK_BLUE + "DARK_CYAN": + return Color.DARK_CYAN + "DARK_GOLDENROD": + return Color.DARK_GOLDENROD + "DARK_GRAY": + return Color.DARK_GRAY + "DARK_GREEN": + return Color.DARK_GREEN + "DARK_KHAKI": + return Color.DARK_KHAKI + "DARK_MAGENTA": + return Color.DARK_MAGENTA + "DARK_OLIVE_GREEN": + return Color.DARK_OLIVE_GREEN + "DARK_ORANGE": + return Color.DARK_ORANGE + "DARK_ORCHID": + return Color.DARK_ORCHID + "DARK_RED": + return Color.DARK_RED + "DARK_SALMON": + return Color.DARK_SALMON + "DARK_SEA_GREEN": + return Color.DARK_SEA_GREEN + "DARK_SLATE_BLUE": + return Color.DARK_SLATE_BLUE + "DARK_SLATE_GRAY": + return Color.DARK_SLATE_GRAY + "DARK_TURQUOISE": + return Color.DARK_TURQUOISE + "DARK_VIOLET": + return Color.DARK_VIOLET + "DEEP_PINK": + return Color.DEEP_PINK + "DEEP_SKY_BLUE": + return Color.DEEP_SKY_BLUE + "DIM_GRAY": + return Color.DIM_GRAY + "DODGER_BLUE": + return Color.DODGER_BLUE + "FIREBRICK": + return Color.FIREBRICK + "FLORAL_WHITE": + return Color.FLORAL_WHITE + "FOREST_GREEN": + return Color.FOREST_GREEN + "FUCHSIA": + return Color.FUCHSIA + "GAINSBORO": + return Color.GAINSBORO + "GHOST_WHITE": + return Color.GHOST_WHITE + "GOLD": + return Color.GOLD + "GOLDENROD": + return Color.GOLDENROD + "GRAY": + return Color.GRAY + "GREEN": + return Color.GREEN + "GREEN_YELLOW": + return Color.GREEN_YELLOW + "HONEYDEW": + return Color.HONEYDEW + "HOT_PINK": + return Color.HOT_PINK + "INDIAN_RED": + return Color.INDIAN_RED + "INDIGO": + return Color.INDIGO + "IVORY": + return Color.IVORY + "KHAKI": + return Color.KHAKI + "LAVENDER": + return Color.LAVENDER + "LAVENDER_BLUSH": + return Color.LAVENDER_BLUSH + "LAWN_GREEN": + return Color.LAWN_GREEN + "LEMON_CHIFFON": + return Color.LEMON_CHIFFON + "LIGHT_BLUE": + return Color.LIGHT_BLUE + "LIGHT_CORAL": + return Color.LIGHT_CORAL + "LIGHT_CYAN": + return Color.LIGHT_CYAN + "LIGHT_GOLDENROD": + return Color.LIGHT_GOLDENROD + "LIGHT_GRAY": + return Color.LIGHT_GRAY + "LIGHT_GREEN": + return Color.LIGHT_GREEN + "LIGHT_PINK": + return Color.LIGHT_PINK + "LIGHT_SALMON": + return Color.LIGHT_SALMON + "LIGHT_SEA_GREEN": + return Color.LIGHT_SEA_GREEN + "LIGHT_SKY_BLUE": + return Color.LIGHT_SKY_BLUE + "LIGHT_SLATE_GRAY": + return Color.LIGHT_SLATE_GRAY + "LIGHT_STEEL_BLUE": + return Color.LIGHT_STEEL_BLUE + "LIGHT_YELLOW": + return Color.LIGHT_YELLOW + "LIME": + return Color.LIME + "LIME_GREEN": + return Color.LIME_GREEN + "LINEN": + return Color.LINEN + "MAGENTA": + return Color.MAGENTA + "MAROON": + return Color.MAROON + "MEDIUM_AQUAMARINE": + return Color.MEDIUM_AQUAMARINE + "MEDIUM_BLUE": + return Color.MEDIUM_BLUE + "MEDIUM_ORCHID": + return Color.MEDIUM_ORCHID + "MEDIUM_PURPLE": + return Color.MEDIUM_PURPLE + "MEDIUM_SEA_GREEN": + return Color.MEDIUM_SEA_GREEN + "MEDIUM_SLATE_BLUE": + return Color.MEDIUM_SLATE_BLUE + "MEDIUM_SPRING_GREEN": + return Color.MEDIUM_SPRING_GREEN + "MEDIUM_TURQUOISE": + return Color.MEDIUM_TURQUOISE + "MEDIUM_VIOLET_RED": + return Color.MEDIUM_VIOLET_RED + "MIDNIGHT_BLUE": + return Color.MIDNIGHT_BLUE + "MINT_CREAM": + return Color.MINT_CREAM + "MISTY_ROSE": + return Color.MISTY_ROSE + "MOCCASIN": + return Color.MOCCASIN + "NAVAJO_WHITE": + return Color.NAVAJO_WHITE + "NAVY_BLUE": + return Color.NAVY_BLUE + "OLD_LACE": + return Color.OLD_LACE + "OLIVE": + return Color.OLIVE + "OLIVE_DRAB": + return Color.OLIVE_DRAB + "ORANGE": + return Color.ORANGE + "ORANGE_RED": + return Color.ORANGE_RED + "ORCHID": + return Color.ORCHID + "PALE_GOLDENROD": + return Color.PALE_GOLDENROD + "PALE_GREEN": + return Color.PALE_GREEN + "PALE_TURQUOISE": + return Color.PALE_TURQUOISE + "PALE_VIOLET_RED": + return Color.PALE_VIOLET_RED + "PAPAYA_WHIP": + return Color.PAPAYA_WHIP + "PEACH_PUFF": + return Color.PEACH_PUFF + "PERU": + return Color.PERU + "PINK": + return Color.PINK + "PLUM": + return Color.PLUM + "POWDER_BLUE": + return Color.POWDER_BLUE + "PURPLE": + return Color.PURPLE + "REBECCA_PURPLE": + return Color.REBECCA_PURPLE + "RED": + return Color.RED + "ROSY_BROWN": + return Color.ROSY_BROWN + "ROYAL_BLUE": + return Color.ROYAL_BLUE + "SADDLE_BROWN": + return Color.SADDLE_BROWN + "SALMON": + return Color.SALMON + "SANDY_BROWN": + return Color.SANDY_BROWN + "SEA_GREEN": + return Color.SEA_GREEN + "SEASHELL": + return Color.SEASHELL + "SIENNA": + return Color.SIENNA + "SILVER": + return Color.SILVER + "SKY_BLUE": + return Color.SKY_BLUE + "SLATE_BLUE": + return Color.SLATE_BLUE + "SLATE_GRAY": + return Color.SLATE_GRAY + "SNOW": + return Color.SNOW + "SPRING_GREEN": + return Color.SPRING_GREEN + "STEEL_BLUE": + return Color.STEEL_BLUE + "TAN": + return Color.TAN + "TEAL": + return Color.TEAL + "THISTLE": + return Color.THISTLE + "TOMATO": + return Color.TOMATO + "TRANSPARENT": + return Color.TRANSPARENT + "TURQUOISE": + return Color.TURQUOISE + "VIOLET": + return Color.VIOLET + "WEB_GRAY": + return Color.WEB_GRAY + "WEB_GREEN": + return Color.WEB_GREEN + "WEB_MAROON": + return Color.WEB_MAROON + "WEB_PURPLE": + return Color.WEB_PURPLE + "WHEAT": + return Color.WHEAT + "WHITE": + return Color.WHITE + "WHITE_SMOKE": + return Color.WHITE_SMOKE + "YELLOW": + return Color.YELLOW + "YELLOW_GREEN": + return Color.YELLOW_GREEN + + return color[property] + + +static func resolve_vector2_property(vector: Vector2, property: String): + match property: + "AXIS_X": + return Vector2.AXIS_X + "AXIS_Y": + return Vector2.AXIS_Y + "ZERO": + return Vector2.ZERO + "ONE": + return Vector2.ONE + "INF": + return Vector2.INF + "LEFT": + return Vector2.LEFT + "RIGHT": + return Vector2.RIGHT + "UP": + return Vector2.UP + "DOWN": + return Vector2.DOWN + + "DOWN_LEFT": + return Vector2(-1, 1) + "DOWN_RIGHT": + return Vector2(1, 1) + "UP_LEFT": + return Vector2(-1, -1) + "UP_RIGHT": + return Vector2(1, -1) + + return vector[property] + + +static func resolve_vector3_property(vector: Vector3, property: String): + match property: + "AXIS_X": + return Vector3.AXIS_X + "AXIS_Y": + return Vector3.AXIS_Y + "AXIS_Z": + return Vector3.AXIS_Z + "ZERO": + return Vector3.ZERO + "ONE": + return Vector3.ONE + "INF": + return Vector3.INF + "LEFT": + return Vector3.LEFT + "RIGHT": + return Vector3.RIGHT + "UP": + return Vector3.UP + "DOWN": + return Vector3.DOWN + "FORWARD": + return Vector3.FORWARD + "BACK": + return Vector3.BACK + "MODEL_LEFT": + return Vector3(1, 0, 0) + "MODEL_RIGHT": + return Vector3(-1, 0, 0) + "MODEL_TOP": + return Vector3(0, 1, 0) + "MODEL_BOTTOM": + return Vector3(0, -1, 0) + "MODEL_FRONT": + return Vector3(0, 0, 1) + "MODEL_REAR": + return Vector3(0, 0, -1) + + return vector[property] + + +static func resolve_vector4_property(vector: Vector4, property: String): + match property: + "AXIS_X": + return Vector4.AXIS_X + "AXIS_Y": + return Vector4.AXIS_Y + "AXIS_Z": + return Vector4.AXIS_Z + "AXIS_W": + return Vector4.AXIS_W + "ZERO": + return Vector4.ZERO + "ONE": + return Vector4.ONE + "INF": + return Vector4.INF + + return vector[property] diff --git a/addons/dialogue_manager/utilities/builtins.gd.uid b/addons/dialogue_manager/utilities/builtins.gd.uid new file mode 100644 index 0000000..af8698c --- /dev/null +++ b/addons/dialogue_manager/utilities/builtins.gd.uid @@ -0,0 +1 @@ +uid://bnfhuubdv5k20 diff --git a/addons/dialogue_manager/utilities/dialogue_cache.gd b/addons/dialogue_manager/utilities/dialogue_cache.gd new file mode 100644 index 0000000..dd1da44 --- /dev/null +++ b/addons/dialogue_manager/utilities/dialogue_cache.gd @@ -0,0 +1,170 @@ +class_name DMCache extends Node + + +signal file_content_changed(path: String, new_content: String) + + +# Keep track of errors and dependencies +# { +# = { +# path = , +# dependencies = [, ], +# errors = [, ] +# } +# } +var _cache: Dictionary = {} + +var _update_dependency_timer: Timer = Timer.new() +var _update_dependency_paths: PackedStringArray = [] + +var _files_marked_for_reimport: PackedStringArray = [] + + +func _ready() -> void: + add_child(_update_dependency_timer) + _update_dependency_timer.timeout.connect(_on_update_dependency_timeout) + + _build_cache() + + +func mark_files_for_reimport(files: PackedStringArray) -> void: + for file in files: + if not _files_marked_for_reimport.has(file): + _files_marked_for_reimport.append(file) + + +func reimport_files(and_files: PackedStringArray = []) -> void: + for file in and_files: + if not _files_marked_for_reimport.has(file): + _files_marked_for_reimport.append(file) + + if _files_marked_for_reimport.is_empty(): return + + EditorInterface.get_resource_filesystem().reimport_files(_files_marked_for_reimport) + + +## Add a dialogue file to the cache. +func add_file(path: String, compile_result: DMCompilerResult = null) -> void: + _cache[path] = { + path = path, + dependencies = [], + errors = [] + } + + if compile_result != null: + _cache[path].dependencies = Array(compile_result.imported_paths).filter(func(d): return d != path) + _cache[path].compiled_at = Time.get_ticks_msec() + + # If this is a fresh cache entry, check for dependencies + if compile_result == null and not _update_dependency_paths.has(path): + queue_updating_dependencies(path) + + +## Get the file paths in the cache +func get_files() -> PackedStringArray: + return _cache.keys() + + +## Check if a file is known to the cache +func has_file(path: String) -> bool: + return _cache.has(path) + + +## Remember any errors in a dialogue file +func add_errors_to_file(path: String, errors: Array[Dictionary]) -> void: + if _cache.has(path): + _cache[path].errors = errors + else: + _cache[path] = { + path = path, + resource_path = "", + dependencies = [], + errors = errors + } + + +## Get a list of files that have errors +func get_files_with_errors() -> Array[Dictionary]: + var files_with_errors: Array[Dictionary] = [] + for dialogue_file in _cache.values(): + if dialogue_file and dialogue_file.errors.size() > 0: + files_with_errors.append(dialogue_file) + return files_with_errors + + +## Queue a file to have its dependencies checked +func queue_updating_dependencies(of_path: String) -> void: + _update_dependency_timer.stop() + if not _update_dependency_paths.has(of_path): + _update_dependency_paths.append(of_path) + _update_dependency_timer.start(0.5) + + +## Update any references to a file path that has moved +func move_file_path(from_path: String, to_path: String) -> void: + if not _cache.has(from_path): return + + if to_path != "": + _cache[to_path] = _cache[from_path].duplicate() + _cache.erase(from_path) + + +## Get every dialogue file that imports on a file of a given path +func get_files_with_dependency(imported_path: String) -> Array: + return _cache.values().filter(func(d): return d.dependencies.has(imported_path)) + + +## Get any paths that are dependent on a given path +func get_dependent_paths_for_reimport(on_path: String) -> PackedStringArray: + return get_files_with_dependency(on_path) \ + .filter(func(d): return Time.get_ticks_msec() - d.get("compiled_at", 0) > 3000) \ + .map(func(d): return d.path) + + +# Build the initial cache for dialogue files +func _build_cache() -> void: + var current_files: PackedStringArray = _get_dialogue_files_in_filesystem() + for file in current_files: + add_file(file) + + +# Recursively find any dialogue files in a directory +func _get_dialogue_files_in_filesystem(path: String = "res://") -> PackedStringArray: + var files: PackedStringArray = [] + + if DirAccess.dir_exists_absolute(path): + var dir = DirAccess.open(path) + dir.list_dir_begin() + var file_name = dir.get_next() + while file_name != "": + var file_path: String = (path + "/" + file_name).simplify_path() + if dir.current_is_dir(): + if not file_name in [".godot", ".tmp"]: + files.append_array(_get_dialogue_files_in_filesystem(file_path)) + elif file_name.get_extension() == "dialogue": + files.append(file_path) + file_name = dir.get_next() + + return files + + +#region Signals + + +func _on_update_dependency_timeout() -> void: + _update_dependency_timer.stop() + var import_regex: RegEx = RegEx.create_from_string("import \"(?.*?)\"") + var file: FileAccess + var found_imports: Array[RegExMatch] + for path in _update_dependency_paths: + # Open the file and check for any "import" lines + file = FileAccess.open(path, FileAccess.READ) + found_imports = import_regex.search_all(file.get_as_text()) + var dependencies: PackedStringArray = [] + for found in found_imports: + dependencies.append(found.strings[found.names.path]) + _cache[path].dependencies = dependencies + _update_dependency_paths.clear() + + +#endregion diff --git a/addons/dialogue_manager/utilities/dialogue_cache.gd.uid b/addons/dialogue_manager/utilities/dialogue_cache.gd.uid new file mode 100644 index 0000000..e572006 --- /dev/null +++ b/addons/dialogue_manager/utilities/dialogue_cache.gd.uid @@ -0,0 +1 @@ +uid://d3c83yd6bjp43 diff --git a/addons/dialogue_manager/views/main_view.gd b/addons/dialogue_manager/views/main_view.gd new file mode 100644 index 0000000..b9261f7 --- /dev/null +++ b/addons/dialogue_manager/views/main_view.gd @@ -0,0 +1,1158 @@ +@tool +extends Control + + +const OPEN_OPEN = 100 +const OPEN_QUICK = 101 +const OPEN_CLEAR = 102 + +const TRANSLATIONS_GENERATE_LINE_IDS = 100 +const TRANSLATIONS_SAVE_CHARACTERS_TO_CSV = 201 +const TRANSLATIONS_SAVE_TO_CSV = 202 +const TRANSLATIONS_IMPORT_FROM_CSV = 203 + +const ITEM_SAVE = 100 +const ITEM_SAVE_AS = 101 +const ITEM_CLOSE = 102 +const ITEM_CLOSE_ALL = 103 +const ITEM_CLOSE_OTHERS = 104 +const ITEM_COPY_PATH = 200 +const ITEM_SHOW_IN_FILESYSTEM = 201 + +enum TranslationSource { + CharacterNames, + Lines +} + + +signal confirmation_closed() + + +@onready var parse_timer: Timer = $ParseTimer + +# Dialogs +@onready var new_dialog: FileDialog = $NewDialog +@onready var save_dialog: FileDialog = $SaveDialog +@onready var open_dialog: FileDialog = $OpenDialog +@onready var quick_open_dialog: ConfirmationDialog = $QuickOpenDialog +@onready var quick_open_files_list: VBoxContainer = $QuickOpenDialog/QuickOpenFilesList +@onready var export_dialog: FileDialog = $ExportDialog +@onready var import_dialog: FileDialog = $ImportDialog +@onready var errors_dialog: AcceptDialog = $ErrorsDialog +@onready var build_error_dialog: AcceptDialog = $BuildErrorDialog +@onready var close_confirmation_dialog: ConfirmationDialog = $CloseConfirmationDialog +@onready var updated_dialog: AcceptDialog = $UpdatedDialog +@onready var find_in_files_dialog: AcceptDialog = $FindInFilesDialog +@onready var find_in_files: Control = $FindInFilesDialog/FindInFiles + +# Toolbar +@onready var new_button: Button = %NewButton +@onready var open_button: MenuButton = %OpenButton +@onready var save_all_button: Button = %SaveAllButton +@onready var find_in_files_button: Button = %FindInFilesButton +@onready var test_button: Button = %TestButton +@onready var test_line_button: Button = %TestLineButton +@onready var search_button: Button = %SearchButton +@onready var insert_button: MenuButton = %InsertButton +@onready var translations_button: MenuButton = %TranslationsButton +@onready var support_button: Button = %SupportButton +@onready var docs_button: Button = %DocsButton +@onready var version_label: Label = %VersionLabel +@onready var update_button: Button = %UpdateButton + +@onready var search_and_replace := %SearchAndReplace + +# Code editor +@onready var content: HSplitContainer = %Content +@onready var files_list := %FilesList +@onready var files_popup_menu: PopupMenu = %FilesPopupMenu +@onready var title_list := %TitleList +@onready var code_edit: DMCodeEdit = %CodeEdit +@onready var errors_panel := %ErrorsPanel + +# The currently open file +var current_file_path: String = "": + set(next_current_file_path): + current_file_path = next_current_file_path + files_list.current_file_path = current_file_path + if current_file_path == "" or not open_buffers.has(current_file_path): + save_all_button.disabled = true + test_button.disabled = true + test_line_button.disabled = true + search_button.disabled = true + insert_button.disabled = true + translations_button.disabled = true + content.dragger_visibility = SplitContainer.DRAGGER_HIDDEN + files_list.hide() + title_list.hide() + code_edit.hide() + errors_panel.hide() + else: + test_button.disabled = false + test_line_button.disabled = false + search_button.disabled = false + insert_button.disabled = false + translations_button.disabled = false + content.dragger_visibility = SplitContainer.DRAGGER_VISIBLE + files_list.show() + title_list.show() + code_edit.show() + + var cursor: Vector2 = DMSettings.get_caret(current_file_path) + var scroll_vertical: int = DMSettings.get_scroll(current_file_path) + + code_edit.text = open_buffers[current_file_path].text + code_edit.errors = [] + code_edit.clear_undo_history() + code_edit.set_cursor(cursor) + code_edit.scroll_vertical = scroll_vertical + code_edit.grab_focus() + + _on_code_edit_text_changed() + + errors_panel.errors = [] + code_edit.errors = [] + + if search_and_replace.visible: + search_and_replace.search() + get: + return current_file_path + +# A reference to the currently open files and their last saved text +var open_buffers: Dictionary = {} + +# Which thing are we exporting translations for? +var translation_source: TranslationSource = TranslationSource.Lines + +var plugin: EditorPlugin + + +func _ready() -> void: + plugin = Engine.get_meta("DialogueManagerPlugin") + + apply_theme() + + # Start with nothing open + self.current_file_path = "" + + # Set up the update checker + version_label.text = "v%s" % plugin.get_version() + update_button.on_before_refresh = func on_before_refresh(): + # Save everything + DMSettings.set_user_value("just_refreshed", { + current_file_path = current_file_path, + open_buffers = open_buffers + }) + return true + + # Did we just load from an addon version refresh? + var just_refreshed = DMSettings.get_user_value("just_refreshed", null) + if just_refreshed != null: + DMSettings.set_user_value("just_refreshed", null) + call_deferred("load_from_version_refresh", just_refreshed) + + # Hook up the search toolbar + search_and_replace.code_edit = code_edit + + # Connect menu buttons + insert_button.get_popup().id_pressed.connect(_on_insert_button_menu_id_pressed) + translations_button.get_popup().id_pressed.connect(_on_translations_button_menu_id_pressed) + + code_edit.main_view = self + code_edit.wrap_mode = TextEdit.LINE_WRAPPING_BOUNDARY if DMSettings.get_setting(DMSettings.WRAP_LONG_LINES, false) else TextEdit.LINE_WRAPPING_NONE + var editor_settings: EditorSettings = EditorInterface.get_editor_settings() + editor_settings.settings_changed.connect(_on_editor_settings_changed) + _on_editor_settings_changed() + + # Reopen any files that were open when Godot was closed + if editor_settings.get_setting("text_editor/behavior/files/restore_scripts_on_load"): + var reopen_files: Array = DMSettings.get_user_value("reopen_files", []) + for reopen_file in reopen_files: + open_file(reopen_file) + + self.current_file_path = DMSettings.get_user_value("most_recent_reopen_file", "") + + save_all_button.disabled = true + + close_confirmation_dialog.ok_button_text = DMConstants.translate(&"confirm_close.save") + close_confirmation_dialog.add_button(DMConstants.translate(&"confirm_close.discard"), true, "discard") + + errors_dialog.dialog_text = DMConstants.translate(&"errors_in_script") + + # Update the buffer if a file was modified externally (retains undo step) + Engine.get_meta("DMCache").file_content_changed.connect(_on_cache_file_content_changed) + + EditorInterface.get_file_system_dock().files_moved.connect(_on_files_moved) + + code_edit.get_v_scroll_bar().value_changed.connect(_on_code_edit_scroll_changed) + + +func _exit_tree() -> void: + DMSettings.set_user_value("reopen_files", open_buffers.keys()) + DMSettings.set_user_value("most_recent_reopen_file", self.current_file_path) + + +func _unhandled_input(event: InputEvent) -> void: + if not visible: return + + if event is InputEventKey and event.is_pressed(): + var shortcut: String = plugin.get_editor_shortcut(event) + match shortcut: + "close_file": + get_viewport().set_input_as_handled() + close_file(current_file_path) + "save": + get_viewport().set_input_as_handled() + save_file(current_file_path) + "find_in_files": + get_viewport().set_input_as_handled() + _on_find_in_files_button_pressed() + "run_test_scene": + get_viewport().set_input_as_handled() + _on_test_button_pressed() + + +func apply_changes() -> void: + save_files() + + +# Load back to the previous buffer regardless of if it was actually saved +func load_from_version_refresh(just_refreshed: Dictionary) -> void: + if just_refreshed.has("current_file_content"): + # We just loaded from a version before multiple buffers + var file: FileAccess = FileAccess.open(just_refreshed.current_file_path, FileAccess.READ) + var file_text: String = file.get_as_text() + open_buffers[just_refreshed.current_file_path] = { + pristine_text = file_text, + text = just_refreshed.current_file_content + } + else: + open_buffers = just_refreshed.open_buffers + + if just_refreshed.current_file_path != "": + EditorInterface.edit_resource(load(just_refreshed.current_file_path)) + else: + EditorInterface.set_main_screen_editor("Dialogue") + + updated_dialog.dialog_text = DMConstants.translate(&"update.success").format({ version = update_button.get_version() }) + updated_dialog.popup_centered() + + +func new_file(path: String, content: String = "") -> void: + if open_buffers.has(path): + remove_file_from_open_buffers(path) + + var file: FileAccess = FileAccess.open(path, FileAccess.WRITE) + if content == "": + file.store_string(DMSettings.get_setting(DMSettings.NEW_FILE_TEMPLATE, "")) + else: + file.store_string(content) + + EditorInterface.get_resource_filesystem().scan() + + +# Open a dialogue resource for editing +func open_resource(resource: DialogueResource) -> void: + open_file(resource.resource_path) + + +func open_file(path: String) -> void: + if not FileAccess.file_exists(path): return + + if not open_buffers.has(path): + var file: FileAccess = FileAccess.open(path, FileAccess.READ) + var text = file.get_as_text() + + open_buffers[path] = { + cursor = Vector2.ZERO, + text = text, + pristine_text = text + } + + DMSettings.add_recent_file(path) + build_open_menu() + + files_list.files = open_buffers.keys() + files_list.select_file(path) + + self.current_file_path = path + + +func show_file_in_filesystem(path: String) -> void: + EditorInterface.get_file_system_dock().navigate_to_path(path) + + +# Save any open files +func save_files() -> void: + save_all_button.disabled = true + + var saved_files: PackedStringArray = [] + for path in open_buffers: + if open_buffers[path].text != open_buffers[path].pristine_text: + saved_files.append(path) + save_file(path, false) + + if saved_files.size() > 0: + Engine.get_meta("DMCache").mark_files_for_reimport(saved_files) + + +# Save a file +func save_file(path: String, rescan_file_system: bool = true) -> void: + var buffer = open_buffers[path] + + files_list.mark_file_as_unsaved(path, false) + save_all_button.disabled = files_list.unsaved_files.size() == 0 + + # Don't bother saving if there is nothing to save + if buffer.text == buffer.pristine_text: + return + + buffer.pristine_text = buffer.text + + # Save the current text + var file: FileAccess = FileAccess.open(path, FileAccess.WRITE) + file.store_string(buffer.text) + file.close() + + if rescan_file_system: + EditorInterface.get_resource_filesystem().scan() + + +func close_file(path: String) -> void: + if not path in open_buffers.keys(): return + + var buffer = open_buffers[path] + + if buffer.text == buffer.pristine_text: + remove_file_from_open_buffers(path) + await get_tree().process_frame + else: + close_confirmation_dialog.dialog_text = DMConstants.translate(&"confirm_close").format({ path = path.get_file() }) + close_confirmation_dialog.popup_centered() + await confirmation_closed + + +func remove_file_from_open_buffers(path: String) -> void: + if not path in open_buffers.keys(): return + + var current_index = open_buffers.keys().find(current_file_path) + + open_buffers.erase(path) + if open_buffers.size() == 0: + self.current_file_path = "" + else: + current_index = clamp(current_index, 0, open_buffers.size() - 1) + self.current_file_path = open_buffers.keys()[current_index] + + files_list.files = open_buffers.keys() + + +# Apply theme colors and icons to the UI +func apply_theme() -> void: + if is_instance_valid(plugin) and is_instance_valid(code_edit): + var scale: float = EditorInterface.get_editor_scale() + var editor_settings = EditorInterface.get_editor_settings() + code_edit.theme_overrides = { + scale = scale, + + background_color = editor_settings.get_setting("text_editor/theme/highlighting/background_color"), + current_line_color = editor_settings.get_setting("text_editor/theme/highlighting/current_line_color"), + error_line_color = editor_settings.get_setting("text_editor/theme/highlighting/mark_color"), + + critical_color = editor_settings.get_setting("text_editor/theme/highlighting/comment_markers/critical_color"), + notice_color = editor_settings.get_setting("text_editor/theme/highlighting/comment_markers/notice_color"), + + titles_color = editor_settings.get_setting("text_editor/theme/highlighting/control_flow_keyword_color"), + text_color = editor_settings.get_setting("text_editor/theme/highlighting/text_color"), + conditions_color = editor_settings.get_setting("text_editor/theme/highlighting/keyword_color"), + mutations_color = editor_settings.get_setting("text_editor/theme/highlighting/function_color"), + members_color = editor_settings.get_setting("text_editor/theme/highlighting/member_variable_color"), + strings_color = editor_settings.get_setting("text_editor/theme/highlighting/string_color"), + numbers_color = editor_settings.get_setting("text_editor/theme/highlighting/number_color"), + symbols_color = editor_settings.get_setting("text_editor/theme/highlighting/symbol_color"), + comments_color = editor_settings.get_setting("text_editor/theme/highlighting/comment_color"), + jumps_color = Color(editor_settings.get_setting("text_editor/theme/highlighting/control_flow_keyword_color"), 0.7), + + font_size = editor_settings.get_setting("interface/editor/code_font_size") + } + + new_button.icon = get_theme_icon("New", "EditorIcons") + new_button.tooltip_text = DMConstants.translate(&"start_a_new_file") + + open_button.icon = get_theme_icon("Load", "EditorIcons") + open_button.tooltip_text = DMConstants.translate(&"open_a_file") + + save_all_button.icon = get_theme_icon("Save", "EditorIcons") + save_all_button.text = DMConstants.translate(&"all") + save_all_button.tooltip_text = DMConstants.translate(&"start_all_files") + + find_in_files_button.icon = get_theme_icon("ViewportZoom", "EditorIcons") + find_in_files_button.tooltip_text = DMConstants.translate(&"find_in_files") + + test_button.icon = get_theme_icon("DebugNext", "EditorIcons") + test_button.tooltip_text = DMConstants.translate(&"test_dialogue") + + test_line_button.icon = get_theme_icon("DebugStep", "EditorIcons") + test_line_button.tooltip_text = DMConstants.translate(&"test_dialogue_from_line") + + search_button.icon = get_theme_icon("Search", "EditorIcons") + search_button.tooltip_text = DMConstants.translate(&"search_for_text") + + insert_button.icon = get_theme_icon("RichTextEffect", "EditorIcons") + insert_button.text = DMConstants.translate(&"insert") + + translations_button.icon = get_theme_icon("Translation", "EditorIcons") + translations_button.text = DMConstants.translate(&"translations") + + support_button.icon = get_theme_icon("Heart", "EditorIcons") + support_button.text = DMConstants.translate(&"sponsor") + support_button.tooltip_text = DMConstants.translate(&"show_support") + + docs_button.icon = get_theme_icon("Help", "EditorIcons") + docs_button.text = DMConstants.translate(&"docs") + + update_button.apply_theme() + + # Set up the effect menu + var popup: PopupMenu = insert_button.get_popup() + popup.clear() + popup.add_icon_item(get_theme_icon("RichTextEffect", "EditorIcons"), DMConstants.translate(&"insert.wave_bbcode"), 0) + popup.add_icon_item(get_theme_icon("RichTextEffect", "EditorIcons"), DMConstants.translate(&"insert.shake_bbcode"), 1) + popup.add_separator() + popup.add_icon_item(get_theme_icon("Time", "EditorIcons"), DMConstants.translate(&"insert.typing_pause"), 3) + popup.add_icon_item(get_theme_icon("ViewportSpeed", "EditorIcons"), DMConstants.translate(&"insert.typing_speed_change"), 4) + popup.add_icon_item(get_theme_icon("DebugNext", "EditorIcons"), DMConstants.translate(&"insert.auto_advance"), 5) + popup.add_separator(DMConstants.translate(&"insert.templates")) + popup.add_icon_item(get_theme_icon("RichTextEffect", "EditorIcons"), DMConstants.translate(&"insert.title"), 6) + popup.add_icon_item(get_theme_icon("RichTextEffect", "EditorIcons"), DMConstants.translate(&"insert.dialogue"), 7) + popup.add_icon_item(get_theme_icon("RichTextEffect", "EditorIcons"), DMConstants.translate(&"insert.response"), 8) + popup.add_icon_item(get_theme_icon("RichTextEffect", "EditorIcons"), DMConstants.translate(&"insert.random_lines"), 9) + popup.add_icon_item(get_theme_icon("RichTextEffect", "EditorIcons"), DMConstants.translate(&"insert.random_text"), 10) + popup.add_separator(DMConstants.translate(&"insert.actions")) + popup.add_icon_item(get_theme_icon("RichTextEffect", "EditorIcons"), DMConstants.translate(&"insert.jump"), 11) + popup.add_icon_item(get_theme_icon("RichTextEffect", "EditorIcons"), DMConstants.translate(&"insert.end_dialogue"), 12) + + # Set up the translations menu + popup = translations_button.get_popup() + popup.clear() + popup.add_icon_item(get_theme_icon("Translation", "EditorIcons"), DMConstants.translate(&"generate_line_ids"), TRANSLATIONS_GENERATE_LINE_IDS) + popup.add_separator() + popup.add_icon_item(get_theme_icon("FileList", "EditorIcons"), DMConstants.translate(&"save_characters_to_csv"), TRANSLATIONS_SAVE_CHARACTERS_TO_CSV) + popup.add_icon_item(get_theme_icon("FileList", "EditorIcons"), DMConstants.translate(&"save_to_csv"), TRANSLATIONS_SAVE_TO_CSV) + popup.add_icon_item(get_theme_icon("AssetLib", "EditorIcons"), DMConstants.translate(&"import_from_csv"), TRANSLATIONS_IMPORT_FROM_CSV) + + # Dialog sizes + new_dialog.min_size = Vector2(600, 500) * scale + save_dialog.min_size = Vector2(600, 500) * scale + open_dialog.min_size = Vector2(600, 500) * scale + quick_open_dialog.min_size = Vector2(400, 600) * scale + export_dialog.min_size = Vector2(600, 500) * scale + import_dialog.min_size = Vector2(600, 500) * scale + find_in_files_dialog.min_size = Vector2(800, 600) * scale + + +### Helpers + + +# Refresh the open menu with the latest files +func build_open_menu() -> void: + var menu = open_button.get_popup() + menu.clear() + menu.add_icon_item(get_theme_icon("Load", "EditorIcons"), DMConstants.translate(&"open.open"), OPEN_OPEN) + menu.add_icon_item(get_theme_icon("Load", "EditorIcons"), DMConstants.translate(&"open.quick_open"), OPEN_QUICK) + menu.add_separator() + + var recent_files = DMSettings.get_recent_files() + if recent_files.size() == 0: + menu.add_item(DMConstants.translate(&"open.no_recent_files")) + menu.set_item_disabled(2, true) + else: + for path in recent_files: + if FileAccess.file_exists(path): + menu.add_icon_item(get_theme_icon("File", "EditorIcons"), path) + + menu.add_separator() + menu.add_item(DMConstants.translate(&"open.clear_recent_files"), OPEN_CLEAR) + if menu.id_pressed.is_connected(_on_open_menu_id_pressed): + menu.id_pressed.disconnect(_on_open_menu_id_pressed) + menu.id_pressed.connect(_on_open_menu_id_pressed) + + +# Get the last place a CSV, etc was exported +func get_last_export_path(extension: String) -> String: + var filename = current_file_path.get_file().replace(".dialogue", "." + extension) + return DMSettings.get_user_value("last_export_path", current_file_path.get_base_dir()) + "/" + filename + + +# Check the current text for errors +func compile() -> void: + # Skip if nothing to parse + if current_file_path == "": return + + var result: DMCompilerResult = DMCompiler.compile_string(code_edit.text, current_file_path) + code_edit.errors = result.errors + errors_panel.errors = result.errors + title_list.titles = code_edit.get_titles() + + +func show_build_error_dialog() -> void: + build_error_dialog.dialog_text = DMConstants.translate(&"errors_with_build") + build_error_dialog.popup_centered() + + +# Generate translation line IDs for any line that doesn't already have one +func generate_translations_keys() -> void: + randomize() + seed(Time.get_unix_time_from_system()) + + var cursor: Vector2 = code_edit.get_cursor() + var lines: PackedStringArray = code_edit.text.split("\n") + + var key_regex = RegEx.new() + key_regex.compile("\\[ID:(?.*?)\\]") + + var compiled_lines: Dictionary = DMCompiler.compile_string(code_edit.text, "").lines + + # Make list of known keys + var known_keys = {} + for i in range(0, lines.size()): + var line = lines[i] + var found = key_regex.search(line) + if found: + var text = "" + var l = line.replace(found.strings[0], "").strip_edges().strip_edges() + if l.begins_with("- "): + text = DMCompiler.extract_translatable_string(l) + elif ":" in l: + text = l.split(":")[1] + else: + text = l + known_keys[found.strings[found.names.get("key")]] = text + + # Add in any that are missing + for i in lines.size(): + var line = lines[i] + var l = line.strip_edges() + + if not [DMConstants.TYPE_DIALOGUE, DMConstants.TYPE_RESPONSE].has(DMCompiler.get_line_type(l)): continue + if not compiled_lines.has(str(i)): continue + + if "[ID:" in line: continue + + var text = "" + if l.begins_with("- "): + text = DMCompiler.extract_translatable_string(l) + else: + text = l.substr(l.find(":") + 1) + + var key: String = "" + if known_keys.values().has(text): + key = known_keys.find_key(text) + else: + var regex: DMCompilerRegEx = DMCompilerRegEx.new() + key = regex.ALPHA_NUMERIC.sub(text.strip_edges(), "_", true).substr(0, 30) + if key.begins_with("_"): + key = key.substr(1) + if key.ends_with("_"): + key = key.substr(0, key.length() - 1) + + # Make sure key is unique + var hashed_key: String = key + "_" + str(randi() % 1000000).sha1_text().substr(0, 6) + while hashed_key in known_keys and text != known_keys.get(hashed_key): + hashed_key = key + "_" + str(randi() % 1000000).sha1_text().substr(0, 6) + key = hashed_key.to_upper() + + line = line.replace("\\n", "!NEWLINE!") + text = text.replace("\n", "!NEWLINE!") + lines[i] = line.replace(text, text + " [ID:%s]" % [key]).replace("!NEWLINE!", "\\n") + + known_keys[key] = text + + code_edit.text = "\n".join(lines) + code_edit.set_cursor(cursor) + _on_code_edit_text_changed() + + +# Add a translation file to the project settings +func add_path_to_project_translations(path: String) -> void: + var translations: PackedStringArray = ProjectSettings.get_setting("internationalization/locale/translations") + if not path in translations: + translations.append(path) + ProjectSettings.save() + + +# Export dialogue and responses to CSV +func export_translations_to_csv(path: String) -> void: + var default_locale: String = DMSettings.get_setting(DMSettings.DEFAULT_CSV_LOCALE, "en") + + var file: FileAccess + + # If the file exists, open it first and work out which keys are already in it + var existing_csv: Dictionary = {} + var column_count: int = 2 + var default_locale_column: int = 1 + var character_column: int = -1 + var notes_column: int = -1 + if FileAccess.file_exists(path): + file = FileAccess.open(path, FileAccess.READ) + var is_first_line = true + var line: Array + while !file.eof_reached(): + line = file.get_csv_line() + if is_first_line: + is_first_line = false + column_count = line.size() + for i in range(1, line.size()): + if line[i] == default_locale: + default_locale_column = i + elif line[i] == "_character": + character_column = i + elif line[i] == "_notes": + notes_column = i + + # Make sure the line isn't empty before adding it + if line.size() > 0 and line[0].strip_edges() != "": + existing_csv[line[0]] = line + + # The character column wasn't found in the existing file but the setting is turned on + if character_column == -1 and DMSettings.get_setting(DMSettings.INCLUDE_CHARACTER_IN_TRANSLATION_EXPORTS, false): + character_column = column_count + column_count += 1 + existing_csv["keys"].append("_character") + + # The notes column wasn't found in the existing file but the setting is turned on + if notes_column == -1 and DMSettings.get_setting(DMSettings.INCLUDE_NOTES_IN_TRANSLATION_EXPORTS, false): + notes_column = column_count + column_count += 1 + existing_csv["keys"].append("_notes") + + # Start a new file + file = FileAccess.open(path, FileAccess.WRITE) + + if not FileAccess.file_exists(path): + var headings: PackedStringArray = ["keys", default_locale] + DMSettings.get_setting(DMSettings.EXTRA_CSV_LOCALES, []) + if DMSettings.get_setting(DMSettings.INCLUDE_CHARACTER_IN_TRANSLATION_EXPORTS, false): + character_column = headings.size() + headings.append("_character") + if DMSettings.get_setting(DMSettings.INCLUDE_NOTES_IN_TRANSLATION_EXPORTS, false): + notes_column = headings.size() + headings.append("_notes") + file.store_csv_line(headings) + column_count = headings.size() + + # Write our translations to file + var known_keys: PackedStringArray = [] + + var dialogue = DMCompiler.compile_string(code_edit.text, current_file_path).lines + + # Make a list of stuff that needs to go into the file + var lines_to_save = [] + for key in dialogue.keys(): + var line: Dictionary = dialogue.get(key) + + if not line.type in [DMConstants.TYPE_DIALOGUE, DMConstants.TYPE_RESPONSE]: continue + + var translation_key: String = line.get(&"translation_key", line.text) + + if translation_key in known_keys: continue + + known_keys.append(translation_key) + + var line_to_save: PackedStringArray = [] + if existing_csv.has(translation_key): + line_to_save = existing_csv.get(translation_key) + line_to_save.resize(column_count) + existing_csv.erase(translation_key) + else: + line_to_save.resize(column_count) + line_to_save[0] = translation_key + + line_to_save[default_locale_column] = line.text + if character_column > -1: + line_to_save[character_column] = "(response)" if line.type == DMConstants.TYPE_RESPONSE else line.character + if notes_column > -1: + line_to_save[notes_column] = line.notes + + lines_to_save.append(line_to_save) + + # Store lines in the file, starting with anything that already exists that hasn't been touched + for line in existing_csv.values(): + file.store_csv_line(line) + for line in lines_to_save: + file.store_csv_line(line) + + file.close() + + EditorInterface.get_resource_filesystem().scan() + EditorInterface.get_file_system_dock().call_deferred("navigate_to_path", path) + + # Add it to the project l10n settings if it's not already there + var language_code: RegExMatch = RegEx.create_from_string("^[a-z]{2,3}").search(default_locale) + var translation_path: String = path.replace(".csv", ".%s.translation" % language_code.get_string()) + call_deferred("add_path_to_project_translations", translation_path) + + +func export_character_names_to_csv(path: String) -> void: + var file: FileAccess + + # If the file exists, open it first and work out which keys are already in it + var existing_csv = {} + var commas = [] + if FileAccess.file_exists(path): + file = FileAccess.open(path, FileAccess.READ) + var is_first_line = true + var line: Array + while !file.eof_reached(): + line = file.get_csv_line() + if is_first_line: + is_first_line = false + for i in range(2, line.size()): + commas.append("") + # Make sure the line isn't empty before adding it + if line.size() > 0 and line[0].strip_edges() != "": + existing_csv[line[0]] = line + + # Start a new file + file = FileAccess.open(path, FileAccess.WRITE) + + if not file.file_exists(path): + file.store_csv_line(["keys", DMSettings.get_setting(DMSettings.DEFAULT_CSV_LOCALE, "en")]) + + # Write our translations to file + var known_keys: PackedStringArray = [] + + var character_names: PackedStringArray = DMCompiler.compile_string(code_edit.text, current_file_path).character_names + + # Make a list of stuff that needs to go into the file + var lines_to_save = [] + for character_name in character_names: + if character_name in known_keys: continue + + known_keys.append(character_name) + + if existing_csv.has(character_name): + var existing_line = existing_csv.get(character_name) + existing_line[1] = character_name + lines_to_save.append(existing_line) + existing_csv.erase(character_name) + else: + lines_to_save.append(PackedStringArray([character_name, character_name] + commas)) + + # Store lines in the file, starting with anything that already exists that hasn't been touched + for line in existing_csv.values(): + file.store_csv_line(line) + for line in lines_to_save: + file.store_csv_line(line) + + file.close() + + EditorInterface.get_resource_filesystem().scan() + EditorInterface.get_file_system_dock().call_deferred("navigate_to_path", path) + + # Add it to the project l10n settings if it's not already there + var translation_path: String = path.replace(".csv", ".en.translation") + call_deferred("add_path_to_project_translations", translation_path) + + +# Import changes back from an exported CSV by matching translation keys +func import_translations_from_csv(path: String) -> void: + var cursor: Vector2 = code_edit.get_cursor() + + if not FileAccess.file_exists(path): return + + # Open the CSV file and build a dictionary of the known keys + var keys: Dictionary = {} + var file: FileAccess = FileAccess.open(path, FileAccess.READ) + var csv_line: Array + while !file.eof_reached(): + csv_line = file.get_csv_line() + if csv_line.size() > 1: + keys[csv_line[0]] = csv_line[1] + + # Now look over each line in the dialogue and replace the content for matched keys + var lines: PackedStringArray = code_edit.text.split("\n") + var start_index: int = 0 + var end_index: int = 0 + for i in range(0, lines.size()): + var line: String = lines[i] + var translation_key: String = DMCompiler.get_static_line_id(line) + if keys.has(translation_key): + if DMCompiler.get_line_type(line) == DMConstants.TYPE_DIALOGUE: + start_index = 0 + # See if we need to skip over a character name + line = line.replace("\\:", "!ESCAPED_COLON!") + if ": " in line: + start_index = line.find(": ") + 2 + lines[i] = (line.substr(0, start_index) + keys.get(translation_key) + " [ID:" + translation_key + "]").replace("!ESCAPED_COLON!", ":") + + elif DMCompiler.get_line_type(line) == DMConstants.TYPE_RESPONSE: + start_index = line.find("- ") + 2 + # See if we need to skip over a character name + line = line.replace("\\:", "!ESCAPED_COLON!") + if ": " in line: + start_index = line.find(": ") + 2 + end_index = line.length() + if " =>" in line: + end_index = line.find(" =>") + if " [if " in line: + end_index = line.find(" [if ") + lines[i] = (line.substr(0, start_index) + keys.get(translation_key) + " [ID:" + translation_key + "]" + line.substr(end_index)).replace("!ESCAPED_COLON!", ":") + + code_edit.text = "\n".join(lines) + code_edit.set_cursor(cursor) + + +func show_search_form(is_enabled: bool) -> void: + if code_edit.last_selected_text: + search_and_replace.input.text = code_edit.last_selected_text + + search_and_replace.visible = is_enabled + search_button.set_pressed_no_signal(is_enabled) + search_and_replace.focus_line_edit() + + +### Signals + + +func _on_files_moved(old_file: String, new_file: String) -> void: + if open_buffers.has(old_file): + open_buffers[new_file] = open_buffers[old_file] + open_buffers.erase(old_file) + open_buffers[new_file] + + +func _on_cache_file_content_changed(path: String, new_content: String) -> void: + if open_buffers.has(path): + var buffer = open_buffers[path] + if buffer.text == buffer.pristine_text and buffer.text != new_content: + buffer.text = new_content + code_edit.text = new_content + title_list.titles = code_edit.get_titles() + buffer.pristine_text = new_content + + +func _on_editor_settings_changed() -> void: + var editor_settings: EditorSettings = EditorInterface.get_editor_settings() + code_edit.minimap_draw = editor_settings.get_setting("text_editor/appearance/minimap/show_minimap") + code_edit.minimap_width = editor_settings.get_setting("text_editor/appearance/minimap/minimap_width") + code_edit.scroll_smooth = editor_settings.get_setting("text_editor/behavior/navigation/smooth_scrolling") + + +func _on_open_menu_id_pressed(id: int) -> void: + match id: + OPEN_OPEN: + open_dialog.popup_centered() + OPEN_QUICK: + quick_open_files_list.files = Engine.get_meta("DMCache").get_files() + quick_open_dialog.popup_centered() + quick_open_files_list.focus_filter() + OPEN_CLEAR: + DMSettings.clear_recent_files() + build_open_menu() + _: + var menu = open_button.get_popup() + var item = menu.get_item_text(menu.get_item_index(id)) + open_file(item) + + +func _on_files_list_file_selected(file_path: String) -> void: + self.current_file_path = file_path + + +func _on_insert_button_menu_id_pressed(id: int) -> void: + match id: + 0: + code_edit.insert_bbcode("[wave amp=25 freq=5]", "[/wave]") + 1: + code_edit.insert_bbcode("[shake rate=20 level=10]", "[/shake]") + 3: + code_edit.insert_bbcode("[wait=1]") + 4: + code_edit.insert_bbcode("[speed=0.2]") + 5: + code_edit.insert_bbcode("[next=auto]") + 6: + code_edit.insert_text_at_cursor("~ title") + 7: + code_edit.insert_text_at_cursor("Nathan: This is Some Dialogue") + 8: + code_edit.insert_text_at_cursor("Nathan: Choose a Response...\n- Option 1\n\tNathan: You chose option 1\n- Option 2\n\tNathan: You chose option 2") + 9: + code_edit.insert_text_at_cursor("% Nathan: This is random line 1.\n% Nathan: This is random line 2.\n%1 Nathan: This is weighted random line 3.") + 10: + code_edit.insert_text_at_cursor("Nathan: [[Hi|Hello|Howdy]]") + 11: + code_edit.insert_text_at_cursor("=> title") + 12: + code_edit.insert_text_at_cursor("=> END") + + +func _on_translations_button_menu_id_pressed(id: int) -> void: + match id: + TRANSLATIONS_GENERATE_LINE_IDS: + generate_translations_keys() + + TRANSLATIONS_SAVE_CHARACTERS_TO_CSV: + translation_source = TranslationSource.CharacterNames + export_dialog.filters = PackedStringArray(["*.csv ; Translation CSV"]) + export_dialog.current_path = get_last_export_path("csv") + export_dialog.popup_centered() + + TRANSLATIONS_SAVE_TO_CSV: + translation_source = TranslationSource.Lines + export_dialog.filters = PackedStringArray(["*.csv ; Translation CSV"]) + export_dialog.current_path = get_last_export_path("csv") + export_dialog.popup_centered() + + TRANSLATIONS_IMPORT_FROM_CSV: + import_dialog.current_path = get_last_export_path("csv") + import_dialog.popup_centered() + + +func _on_export_dialog_file_selected(path: String) -> void: + DMSettings.set_user_value("last_export_path", path.get_base_dir()) + match path.get_extension(): + "csv": + match translation_source: + TranslationSource.CharacterNames: + export_character_names_to_csv(path) + TranslationSource.Lines: + export_translations_to_csv(path) + + +func _on_import_dialog_file_selected(path: String) -> void: + DMSettings.set_user_value("last_export_path", path.get_base_dir()) + import_translations_from_csv(path) + + +func _on_main_view_theme_changed(): + apply_theme() + + +func _on_main_view_visibility_changed() -> void: + if visible and is_instance_valid(code_edit): + code_edit.grab_focus() + + +func _on_new_button_pressed() -> void: + new_dialog.current_file = "dialogue" + new_dialog.popup_centered() + + +func _on_new_dialog_confirmed() -> void: + if new_dialog.current_file.get_basename() == "": + var path = "res://untitled.dialogue" + new_file(path) + open_file(path) + + +func _on_new_dialog_file_selected(path: String) -> void: + new_file(path) + open_file(path) + + +func _on_save_dialog_file_selected(path: String) -> void: + if path == "": path = "res://untitled.dialogue" + + new_file(path, code_edit.text) + open_file(path) + + +func _on_open_button_about_to_popup() -> void: + build_open_menu() + + +func _on_open_dialog_file_selected(path: String) -> void: + open_file(path) + + +func _on_quick_open_files_list_file_double_clicked(file_path: String) -> void: + quick_open_dialog.hide() + open_file(file_path) + + +func _on_quick_open_dialog_confirmed() -> void: + if quick_open_files_list.current_file_path: + open_file(quick_open_files_list.current_file_path) + + +func _on_save_all_button_pressed() -> void: + save_files() + + +func _on_find_in_files_button_pressed() -> void: + find_in_files_dialog.popup_centered() + find_in_files.prepare() + + +func _on_code_edit_text_changed() -> void: + var buffer = open_buffers[current_file_path] + buffer.text = code_edit.text + + files_list.mark_file_as_unsaved(current_file_path, buffer.text != buffer.pristine_text) + save_all_button.disabled = open_buffers.values().filter(func(d): return d.text != d.pristine_text).size() == 0 + + parse_timer.start(1) + + +func _on_code_edit_scroll_changed(value: int) -> void: + DMSettings.set_scroll(current_file_path, code_edit.scroll_vertical) + + +func _on_code_edit_active_title_change(title: String) -> void: + title_list.select_title(title) + + +func _on_code_edit_caret_changed() -> void: + DMSettings.set_caret(current_file_path, code_edit.get_cursor()) + + +func _on_code_edit_error_clicked(line_number: int) -> void: + errors_panel.show_error_for_line_number(line_number) + + +func _on_title_list_title_selected(title: String) -> void: + code_edit.go_to_title(title) + code_edit.grab_focus() + + +func _on_parse_timer_timeout() -> void: + parse_timer.stop() + compile() + + +func _on_errors_panel_error_pressed(line_number: int, column_number: int) -> void: + code_edit.set_caret_line(line_number - 1) + code_edit.set_caret_column(column_number) + code_edit.grab_focus() + + +func _on_search_button_toggled(button_pressed: bool) -> void: + show_search_form(button_pressed) + + +func _on_search_and_replace_open_requested() -> void: + show_search_form(true) + + +func _on_search_and_replace_close_requested() -> void: + search_button.set_pressed_no_signal(false) + search_and_replace.visible = false + code_edit.grab_focus() + + +func _on_test_button_pressed() -> void: + save_file(current_file_path, false) + Engine.get_meta("DMCache").reimport_files([current_file_path]) + + if errors_panel.errors.size() > 0: + errors_dialog.popup_centered() + return + + DMSettings.set_user_value("run_title", "") + DMSettings.set_user_value("is_running_test_scene", true) + DMSettings.set_user_value("run_resource_path", current_file_path) + var test_scene_path: String = DMSettings.get_setting(DMSettings.CUSTOM_TEST_SCENE_PATH, "res://addons/dialogue_manager/test_scene.tscn") + EditorInterface.play_custom_scene(test_scene_path) + + +func _on_test_line_button_pressed() -> void: + save_file(current_file_path) + + if errors_panel.errors.size() > 0: + errors_dialog.popup_centered() + return + + # Find next non-empty line + var line_to_run: int = 0 + for i in range(code_edit.get_cursor().y, code_edit.get_line_count()): + if not code_edit.get_line(i).is_empty(): + line_to_run = i + break; + DMSettings.set_user_value("run_title", str(line_to_run)) + DMSettings.set_user_value("is_running_test_scene", true) + DMSettings.set_user_value("run_resource_path", current_file_path) + var test_scene_path: String = DMSettings.get_setting(DMSettings.CUSTOM_TEST_SCENE_PATH, "res://addons/dialogue_manager/test_scene.tscn") + EditorInterface.play_custom_scene(test_scene_path) + + +func _on_support_button_pressed() -> void: + OS.shell_open("https://patreon.com/nathanhoad") + + +func _on_docs_button_pressed() -> void: + OS.shell_open("https://github.com/nathanhoad/godot_dialogue_manager") + + +func _on_files_list_file_popup_menu_requested(at_position: Vector2) -> void: + files_popup_menu.position = Vector2(get_viewport().position) + files_list.global_position + at_position + files_popup_menu.popup() + + +func _on_files_list_file_middle_clicked(path: String): + close_file(path) + + +func _on_files_popup_menu_about_to_popup() -> void: + files_popup_menu.clear() + + var shortcuts: Dictionary = plugin.get_editor_shortcuts() + + files_popup_menu.add_item(DMConstants.translate(&"buffer.save"), ITEM_SAVE, OS.find_keycode_from_string(shortcuts.get("save")[0].as_text_keycode())) + files_popup_menu.add_item(DMConstants.translate(&"buffer.save_as"), ITEM_SAVE_AS) + files_popup_menu.add_item(DMConstants.translate(&"buffer.close"), ITEM_CLOSE, OS.find_keycode_from_string(shortcuts.get("close_file")[0].as_text_keycode())) + files_popup_menu.add_item(DMConstants.translate(&"buffer.close_all"), ITEM_CLOSE_ALL) + files_popup_menu.add_item(DMConstants.translate(&"buffer.close_other_files"), ITEM_CLOSE_OTHERS) + files_popup_menu.add_separator() + files_popup_menu.add_item(DMConstants.translate(&"buffer.copy_file_path"), ITEM_COPY_PATH) + files_popup_menu.add_item(DMConstants.translate(&"buffer.show_in_filesystem"), ITEM_SHOW_IN_FILESYSTEM) + + +func _on_files_popup_menu_id_pressed(id: int) -> void: + match id: + ITEM_SAVE: + save_file(current_file_path) + ITEM_SAVE_AS: + save_dialog.popup_centered() + ITEM_CLOSE: + close_file(current_file_path) + ITEM_CLOSE_ALL: + for path in open_buffers.keys(): + close_file(path) + ITEM_CLOSE_OTHERS: + var current_current_file_path: String = current_file_path + for path in open_buffers.keys(): + if path != current_current_file_path: + await close_file(path) + + ITEM_COPY_PATH: + DisplayServer.clipboard_set(current_file_path) + ITEM_SHOW_IN_FILESYSTEM: + show_file_in_filesystem(current_file_path) + + +func _on_code_edit_external_file_requested(path: String, title: String) -> void: + open_file(path) + if title != "": + code_edit.go_to_title(title) + else: + code_edit.set_caret_line(0) + + +func _on_close_confirmation_dialog_confirmed() -> void: + save_file(current_file_path) + remove_file_from_open_buffers(current_file_path) + confirmation_closed.emit() + + +func _on_close_confirmation_dialog_custom_action(action: StringName) -> void: + if action == "discard": + remove_file_from_open_buffers(current_file_path) + close_confirmation_dialog.hide() + confirmation_closed.emit() + + +func _on_find_in_files_result_selected(path: String, cursor: Vector2, length: int) -> void: + open_file(path) + code_edit.select(cursor.y, cursor.x, cursor.y, cursor.x + length) + code_edit.set_line_as_center_visible(cursor.y) diff --git a/addons/dialogue_manager/views/main_view.gd.uid b/addons/dialogue_manager/views/main_view.gd.uid new file mode 100644 index 0000000..10e66f4 --- /dev/null +++ b/addons/dialogue_manager/views/main_view.gd.uid @@ -0,0 +1 @@ +uid://cipjcc7bkh1pc diff --git a/addons/dialogue_manager/views/main_view.tscn b/addons/dialogue_manager/views/main_view.tscn new file mode 100644 index 0000000..4e70b26 --- /dev/null +++ b/addons/dialogue_manager/views/main_view.tscn @@ -0,0 +1,430 @@ +[gd_scene load_steps=15 format=3 uid="uid://cbuf1q3xsse3q"] + +[ext_resource type="Script" uid="uid://cipjcc7bkh1pc" path="res://addons/dialogue_manager/views/main_view.gd" id="1_h6qfq"] +[ext_resource type="PackedScene" uid="uid://civ6shmka5e8u" path="res://addons/dialogue_manager/components/code_edit.tscn" id="2_f73fm"] +[ext_resource type="PackedScene" uid="uid://dnufpcdrreva3" path="res://addons/dialogue_manager/components/files_list.tscn" id="2_npj2k"] +[ext_resource type="PackedScene" uid="uid://ctns6ouwwd68i" path="res://addons/dialogue_manager/components/title_list.tscn" id="2_onb4i"] +[ext_resource type="PackedScene" uid="uid://co8yl23idiwbi" path="res://addons/dialogue_manager/components/update_button.tscn" id="2_ph3vs"] +[ext_resource type="PackedScene" uid="uid://gr8nakpbrhby" path="res://addons/dialogue_manager/components/search_and_replace.tscn" id="6_ylh0t"] +[ext_resource type="PackedScene" uid="uid://cs8pwrxr5vxix" path="res://addons/dialogue_manager/components/errors_panel.tscn" id="7_5cvl4"] +[ext_resource type="Script" uid="uid://klpiq4tk3t7a" path="res://addons/dialogue_manager/components/code_edit_syntax_highlighter.gd" id="7_necsa"] +[ext_resource type="PackedScene" uid="uid://0n7hwviyyly4" path="res://addons/dialogue_manager/components/find_in_files.tscn" id="10_yold3"] + +[sub_resource type="Image" id="Image_faxki"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_ka3gk"] +image = SubResource("Image_faxki") + +[sub_resource type="Image" id="Image_y6rqu"] +data = { +"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[sub_resource type="ImageTexture" id="ImageTexture_57eek"] +image = SubResource("Image_y6rqu") + +[sub_resource type="SyntaxHighlighter" id="SyntaxHighlighter_kb7f8"] +script = ExtResource("7_necsa") + +[node name="MainView" type="Control"] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +script = ExtResource("1_h6qfq") + +[node name="ParseTimer" type="Timer" parent="."] + +[node name="Margin" type="MarginContainer" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_vertical = 3 +theme_override_constants/margin_left = 5 +theme_override_constants/margin_right = 5 +theme_override_constants/margin_bottom = 5 +metadata/_edit_layout_mode = 1 + +[node name="Content" type="HSplitContainer" parent="Margin"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 3 +dragger_visibility = 1 + +[node name="SidePanel" type="VBoxContainer" parent="Margin/Content"] +custom_minimum_size = Vector2(150, 0) +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="Toolbar" type="HBoxContainer" parent="Margin/Content/SidePanel"] +layout_mode = 2 + +[node name="NewButton" type="Button" parent="Margin/Content/SidePanel/Toolbar"] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "Start a new file" +flat = true + +[node name="OpenButton" type="MenuButton" parent="Margin/Content/SidePanel/Toolbar"] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "Open a file" +item_count = 9 +popup/item_0/text = "Open..." +popup/item_0/icon = SubResource("ImageTexture_ka3gk") +popup/item_0/id = 100 +popup/item_1/icon = SubResource("ImageTexture_ka3gk") +popup/item_1/id = 101 +popup/item_2/id = -1 +popup/item_2/separator = true +popup/item_3/text = "res://examples/dialogue.dialogue" +popup/item_3/icon = SubResource("ImageTexture_ka3gk") +popup/item_3/id = 3 +popup/item_4/text = "res://examples/dialogue_with_input.dialogue" +popup/item_4/icon = SubResource("ImageTexture_ka3gk") +popup/item_4/id = 4 +popup/item_5/text = "res://examples/dialogue_for_point_n_click.dialogue" +popup/item_5/icon = SubResource("ImageTexture_ka3gk") +popup/item_5/id = 5 +popup/item_6/text = "res://examples/dialogue_for_visual_novel.dialogue" +popup/item_6/icon = SubResource("ImageTexture_ka3gk") +popup/item_6/id = 6 +popup/item_7/id = -1 +popup/item_7/separator = true +popup/item_8/text = "Clear recent files" +popup/item_8/id = 102 + +[node name="SaveAllButton" type="Button" parent="Margin/Content/SidePanel/Toolbar"] +unique_name_in_owner = true +layout_mode = 2 +disabled = true +flat = true + +[node name="FindInFilesButton" type="Button" parent="Margin/Content/SidePanel/Toolbar"] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "Find in files..." +flat = true + +[node name="Bookmarks" type="VSplitContainer" parent="Margin/Content/SidePanel"] +layout_mode = 2 +size_flags_vertical = 3 + +[node name="FilesList" parent="Margin/Content/SidePanel/Bookmarks" instance=ExtResource("2_npj2k")] +unique_name_in_owner = true +visible = false +layout_mode = 2 +size_flags_vertical = 3 + +[node name="FilesPopupMenu" type="PopupMenu" parent="Margin/Content/SidePanel/Bookmarks/FilesList"] +unique_name_in_owner = true + +[node name="TitleList" parent="Margin/Content/SidePanel/Bookmarks" instance=ExtResource("2_onb4i")] +unique_name_in_owner = true +visible = false +layout_mode = 2 + +[node name="CodePanel" type="VBoxContainer" parent="Margin/Content"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 4.0 + +[node name="Toolbar" type="HBoxContainer" parent="Margin/Content/CodePanel"] +layout_mode = 2 + +[node name="InsertButton" type="MenuButton" parent="Margin/Content/CodePanel/Toolbar"] +unique_name_in_owner = true +layout_mode = 2 +disabled = true +text = "Insert" +item_count = 15 +popup/item_0/text = "Wave BBCode" +popup/item_0/icon = SubResource("ImageTexture_57eek") +popup/item_1/text = "Shake BBCode" +popup/item_1/icon = SubResource("ImageTexture_57eek") +popup/item_1/id = 1 +popup/item_2/id = -1 +popup/item_2/separator = true +popup/item_3/text = "Typing pause" +popup/item_3/icon = SubResource("ImageTexture_57eek") +popup/item_3/id = 3 +popup/item_4/text = "Typing speed change" +popup/item_4/icon = SubResource("ImageTexture_57eek") +popup/item_4/id = 4 +popup/item_5/text = "Auto advance" +popup/item_5/icon = SubResource("ImageTexture_57eek") +popup/item_5/id = 5 +popup/item_6/text = "Templates" +popup/item_6/id = -1 +popup/item_6/separator = true +popup/item_7/text = "Title" +popup/item_7/icon = SubResource("ImageTexture_57eek") +popup/item_7/id = 6 +popup/item_8/text = "Dialogue" +popup/item_8/icon = SubResource("ImageTexture_57eek") +popup/item_8/id = 7 +popup/item_9/text = "Response" +popup/item_9/icon = SubResource("ImageTexture_57eek") +popup/item_9/id = 8 +popup/item_10/text = "Random lines" +popup/item_10/icon = SubResource("ImageTexture_57eek") +popup/item_10/id = 9 +popup/item_11/text = "Random text" +popup/item_11/icon = SubResource("ImageTexture_57eek") +popup/item_11/id = 10 +popup/item_12/text = "Actions" +popup/item_12/id = -1 +popup/item_12/separator = true +popup/item_13/text = "Jump to title" +popup/item_13/icon = SubResource("ImageTexture_57eek") +popup/item_13/id = 11 +popup/item_14/text = "End dialogue" +popup/item_14/icon = SubResource("ImageTexture_57eek") +popup/item_14/id = 12 + +[node name="TranslationsButton" type="MenuButton" parent="Margin/Content/CodePanel/Toolbar"] +unique_name_in_owner = true +layout_mode = 2 +disabled = true +text = "Translations" +item_count = 5 +popup/item_0/text = "Generate line IDs" +popup/item_0/icon = SubResource("ImageTexture_57eek") +popup/item_0/id = 100 +popup/item_1/id = -1 +popup/item_1/separator = true +popup/item_2/text = "Save character names to CSV..." +popup/item_2/icon = SubResource("ImageTexture_57eek") +popup/item_2/id = 201 +popup/item_3/text = "Save lines to CSV..." +popup/item_3/icon = SubResource("ImageTexture_57eek") +popup/item_3/id = 202 +popup/item_4/text = "Import line changes from CSV..." +popup/item_4/icon = SubResource("ImageTexture_57eek") +popup/item_4/id = 203 + +[node name="Separator" type="VSeparator" parent="Margin/Content/CodePanel/Toolbar"] +layout_mode = 2 + +[node name="SearchButton" type="Button" parent="Margin/Content/CodePanel/Toolbar"] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "Search for text" +disabled = true +toggle_mode = true +flat = true + +[node name="Separator2" type="VSeparator" parent="Margin/Content/CodePanel/Toolbar"] +layout_mode = 2 + +[node name="TestButton" type="Button" parent="Margin/Content/CodePanel/Toolbar"] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "Test dialogue" +disabled = true +flat = true + +[node name="TestLineButton" type="Button" parent="Margin/Content/CodePanel/Toolbar"] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "Test dialogue" +disabled = true +flat = true + +[node name="Spacer2" type="Control" parent="Margin/Content/CodePanel/Toolbar"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="SupportButton" type="Button" parent="Margin/Content/CodePanel/Toolbar"] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "Support Dialogue Manager" +text = "Sponsor" +flat = true + +[node name="Separator4" type="VSeparator" parent="Margin/Content/CodePanel/Toolbar"] +layout_mode = 2 + +[node name="DocsButton" type="Button" parent="Margin/Content/CodePanel/Toolbar"] +unique_name_in_owner = true +layout_mode = 2 +text = "Docs" +flat = true + +[node name="VersionLabel" type="Label" parent="Margin/Content/CodePanel/Toolbar"] +unique_name_in_owner = true +modulate = Color(1, 1, 1, 0.490196) +layout_mode = 2 +text = "v2.42.2" +vertical_alignment = 1 + +[node name="UpdateButton" parent="Margin/Content/CodePanel/Toolbar" instance=ExtResource("2_ph3vs")] +unique_name_in_owner = true +layout_mode = 2 +text = "v2.44.1 available" + +[node name="SearchAndReplace" parent="Margin/Content/CodePanel" instance=ExtResource("6_ylh0t")] +unique_name_in_owner = true +layout_mode = 2 + +[node name="CodeEdit" parent="Margin/Content/CodePanel" instance=ExtResource("2_f73fm")] +unique_name_in_owner = true +visible = false +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme_override_colors/current_line_color = Color(0.266667, 0.278431, 0.352941, 0.243137) +theme_override_colors/background_color = Color(0.156863, 0.164706, 0.211765, 1) +theme_override_colors/font_color = Color(0.972549, 0.972549, 0.94902, 1) +theme_override_font_sizes/font_size = 14 +theme_override_colors/bookmark_color = Color(1, 0.333333, 0.333333, 1) +text = "~ start + +Nathan: Hi, I'm Nathan and this is Coco. +Coco: Meow. +Nathan: Here are some response options. +- First one + Nathan: You picked the first one. +- Second one + Nathan: You picked the second one. +- Start again => start +- End the conversation => END +Nathan: I hope this example is helpful. +Coco: Meow. + +=> END" +scroll_smooth = true +syntax_highlighter = SubResource("SyntaxHighlighter_kb7f8") + +[node name="ErrorsPanel" parent="Margin/Content/CodePanel" instance=ExtResource("7_5cvl4")] +unique_name_in_owner = true +layout_mode = 2 + +[node name="NewDialog" type="FileDialog" parent="."] +size = Vector2i(900, 750) +min_size = Vector2i(600, 500) +dialog_hide_on_ok = true +filters = PackedStringArray("*.dialogue ; Dialogue") + +[node name="SaveDialog" type="FileDialog" parent="."] +size = Vector2i(900, 750) +min_size = Vector2i(600, 500) +dialog_hide_on_ok = true +filters = PackedStringArray("*.dialogue ; Dialogue") + +[node name="OpenDialog" type="FileDialog" parent="."] +title = "Open a File" +size = Vector2i(900, 750) +min_size = Vector2i(600, 500) +ok_button_text = "Open" +dialog_hide_on_ok = true +file_mode = 0 +filters = PackedStringArray("*.dialogue ; Dialogue") + +[node name="QuickOpenDialog" type="ConfirmationDialog" parent="."] +title = "Quick open" +size = Vector2i(600, 900) +min_size = Vector2i(400, 600) +ok_button_text = "Open" + +[node name="QuickOpenFilesList" parent="QuickOpenDialog" instance=ExtResource("2_npj2k")] + +[node name="ExportDialog" type="FileDialog" parent="."] +size = Vector2i(900, 750) +min_size = Vector2i(600, 500) + +[node name="ImportDialog" type="FileDialog" parent="."] +title = "Open a File" +size = Vector2i(900, 750) +min_size = Vector2i(600, 500) +ok_button_text = "Open" +file_mode = 0 +filters = PackedStringArray("*.csv ; Translation CSV") + +[node name="ErrorsDialog" type="AcceptDialog" parent="."] +title = "Error" +dialog_text = "You have errors in your script. Fix them and then try again." + +[node name="BuildErrorDialog" type="AcceptDialog" parent="."] +title = "Errors" +dialog_text = "You need to fix dialogue errors before you can run your game." + +[node name="CloseConfirmationDialog" type="ConfirmationDialog" parent="."] +title = "Unsaved changes" +ok_button_text = "Save changes" + +[node name="UpdatedDialog" type="AcceptDialog" parent="."] +title = "Updated" +size = Vector2i(191, 100) +dialog_text = "You're now up to date!" + +[node name="FindInFilesDialog" type="AcceptDialog" parent="."] +title = "Find in files" +size = Vector2i(1200, 900) +min_size = Vector2i(800, 600) +ok_button_text = "Done" + +[node name="FindInFiles" parent="FindInFilesDialog" node_paths=PackedStringArray("main_view", "code_edit") instance=ExtResource("10_yold3")] +custom_minimum_size = Vector2(400, 400) +offset_left = 8.0 +offset_top = 8.0 +offset_right = -8.0 +offset_bottom = -49.0 +main_view = NodePath("../..") +code_edit = NodePath("../../Margin/Content/CodePanel/CodeEdit") + +[connection signal="theme_changed" from="." to="." method="_on_main_view_theme_changed"] +[connection signal="visibility_changed" from="." to="." method="_on_main_view_visibility_changed"] +[connection signal="timeout" from="ParseTimer" to="." method="_on_parse_timer_timeout"] +[connection signal="pressed" from="Margin/Content/SidePanel/Toolbar/NewButton" to="." method="_on_new_button_pressed"] +[connection signal="about_to_popup" from="Margin/Content/SidePanel/Toolbar/OpenButton" to="." method="_on_open_button_about_to_popup"] +[connection signal="pressed" from="Margin/Content/SidePanel/Toolbar/SaveAllButton" to="." method="_on_save_all_button_pressed"] +[connection signal="pressed" from="Margin/Content/SidePanel/Toolbar/FindInFilesButton" to="." method="_on_find_in_files_button_pressed"] +[connection signal="file_middle_clicked" from="Margin/Content/SidePanel/Bookmarks/FilesList" to="." method="_on_files_list_file_middle_clicked"] +[connection signal="file_popup_menu_requested" from="Margin/Content/SidePanel/Bookmarks/FilesList" to="." method="_on_files_list_file_popup_menu_requested"] +[connection signal="file_selected" from="Margin/Content/SidePanel/Bookmarks/FilesList" to="." method="_on_files_list_file_selected"] +[connection signal="about_to_popup" from="Margin/Content/SidePanel/Bookmarks/FilesList/FilesPopupMenu" to="." method="_on_files_popup_menu_about_to_popup"] +[connection signal="id_pressed" from="Margin/Content/SidePanel/Bookmarks/FilesList/FilesPopupMenu" to="." method="_on_files_popup_menu_id_pressed"] +[connection signal="title_selected" from="Margin/Content/SidePanel/Bookmarks/TitleList" to="." method="_on_title_list_title_selected"] +[connection signal="toggled" from="Margin/Content/CodePanel/Toolbar/SearchButton" to="." method="_on_search_button_toggled"] +[connection signal="pressed" from="Margin/Content/CodePanel/Toolbar/TestButton" to="." method="_on_test_button_pressed"] +[connection signal="pressed" from="Margin/Content/CodePanel/Toolbar/TestLineButton" to="." method="_on_test_line_button_pressed"] +[connection signal="pressed" from="Margin/Content/CodePanel/Toolbar/SupportButton" to="." method="_on_support_button_pressed"] +[connection signal="pressed" from="Margin/Content/CodePanel/Toolbar/DocsButton" to="." method="_on_docs_button_pressed"] +[connection signal="close_requested" from="Margin/Content/CodePanel/SearchAndReplace" to="." method="_on_search_and_replace_close_requested"] +[connection signal="open_requested" from="Margin/Content/CodePanel/SearchAndReplace" to="." method="_on_search_and_replace_open_requested"] +[connection signal="active_title_change" from="Margin/Content/CodePanel/CodeEdit" to="." method="_on_code_edit_active_title_change"] +[connection signal="caret_changed" from="Margin/Content/CodePanel/CodeEdit" to="." method="_on_code_edit_caret_changed"] +[connection signal="error_clicked" from="Margin/Content/CodePanel/CodeEdit" to="." method="_on_code_edit_error_clicked"] +[connection signal="external_file_requested" from="Margin/Content/CodePanel/CodeEdit" to="." method="_on_code_edit_external_file_requested"] +[connection signal="text_changed" from="Margin/Content/CodePanel/CodeEdit" to="." method="_on_code_edit_text_changed"] +[connection signal="error_pressed" from="Margin/Content/CodePanel/ErrorsPanel" to="." method="_on_errors_panel_error_pressed"] +[connection signal="confirmed" from="NewDialog" to="." method="_on_new_dialog_confirmed"] +[connection signal="file_selected" from="NewDialog" to="." method="_on_new_dialog_file_selected"] +[connection signal="file_selected" from="SaveDialog" to="." method="_on_save_dialog_file_selected"] +[connection signal="file_selected" from="OpenDialog" to="." method="_on_open_dialog_file_selected"] +[connection signal="confirmed" from="QuickOpenDialog" to="." method="_on_quick_open_dialog_confirmed"] +[connection signal="file_double_clicked" from="QuickOpenDialog/QuickOpenFilesList" to="." method="_on_quick_open_files_list_file_double_clicked"] +[connection signal="file_selected" from="ExportDialog" to="." method="_on_export_dialog_file_selected"] +[connection signal="file_selected" from="ImportDialog" to="." method="_on_import_dialog_file_selected"] +[connection signal="confirmed" from="CloseConfirmationDialog" to="." method="_on_close_confirmation_dialog_confirmed"] +[connection signal="custom_action" from="CloseConfirmationDialog" to="." method="_on_close_confirmation_dialog_custom_action"] +[connection signal="result_selected" from="FindInFilesDialog/FindInFiles" to="." method="_on_find_in_files_result_selected"] diff --git a/assets/SFX/254783__jonathantremblay__buzzing-light.mp3 b/assets/SFX/254783__jonathantremblay__buzzing-light.mp3 new file mode 100644 index 0000000..c62fa1e Binary files /dev/null and b/assets/SFX/254783__jonathantremblay__buzzing-light.mp3 differ diff --git a/assets/SFX/254783__jonathantremblay__buzzing-light.mp3.import b/assets/SFX/254783__jonathantremblay__buzzing-light.mp3.import new file mode 100644 index 0000000..9263731 --- /dev/null +++ b/assets/SFX/254783__jonathantremblay__buzzing-light.mp3.import @@ -0,0 +1,19 @@ +[remap] + +importer="mp3" +type="AudioStreamMP3" +uid="uid://cfhe8hhegoc3y" +path="res://.godot/imported/254783__jonathantremblay__buzzing-light.mp3-67f6bcf522622cbcaecec9f550a5704e.mp3str" + +[deps] + +source_file="res://assets/SFX/254783__jonathantremblay__buzzing-light.mp3" +dest_files=["res://.godot/imported/254783__jonathantremblay__buzzing-light.mp3-67f6bcf522622cbcaecec9f550a5704e.mp3str"] + +[params] + +loop=true +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/assets/SFX/389625__silentstrikez__footsteps_grass_1.wav b/assets/SFX/389625__silentstrikez__footsteps_grass_1.wav new file mode 100644 index 0000000..f5b86a8 Binary files /dev/null and b/assets/SFX/389625__silentstrikez__footsteps_grass_1.wav differ diff --git a/assets/SFX/389625__silentstrikez__footsteps_grass_1.wav.import b/assets/SFX/389625__silentstrikez__footsteps_grass_1.wav.import new file mode 100644 index 0000000..d95942b --- /dev/null +++ b/assets/SFX/389625__silentstrikez__footsteps_grass_1.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://uwt8huxlnvit" +path="res://.godot/imported/389625__silentstrikez__footsteps_grass_1.wav-f3affc5ab0a703510675e7b569b3b404.sample" + +[deps] + +source_file="res://assets/SFX/389625__silentstrikez__footsteps_grass_1.wav" +dest_files=["res://.godot/imported/389625__silentstrikez__footsteps_grass_1.wav-f3affc5ab0a703510675e7b569b3b404.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/assets/SFX/421022__inspectorj__running-snow-a.wav b/assets/SFX/421022__inspectorj__running-snow-a.wav new file mode 100644 index 0000000..22e29f9 Binary files /dev/null and b/assets/SFX/421022__inspectorj__running-snow-a.wav differ diff --git a/assets/SFX/421022__inspectorj__running-snow-a.wav.import b/assets/SFX/421022__inspectorj__running-snow-a.wav.import new file mode 100644 index 0000000..0b12243 --- /dev/null +++ b/assets/SFX/421022__inspectorj__running-snow-a.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://dg71qcdg8lh2f" +path="res://.godot/imported/421022__inspectorj__running-snow-a.wav-ba95caa5fe9234d96c4f69966411ac83.sample" + +[deps] + +source_file="res://assets/SFX/421022__inspectorj__running-snow-a.wav" +dest_files=["res://.godot/imported/421022__inspectorj__running-snow-a.wav-ba95caa5fe9234d96c4f69966411ac83.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=true +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/assets/SFX/50054__vibe_crc__rain_session_thunder_2006.wav b/assets/SFX/50054__vibe_crc__rain_session_thunder_2006.wav new file mode 100644 index 0000000..3365169 Binary files /dev/null and b/assets/SFX/50054__vibe_crc__rain_session_thunder_2006.wav differ diff --git a/assets/SFX/50054__vibe_crc__rain_session_thunder_2006.wav.import b/assets/SFX/50054__vibe_crc__rain_session_thunder_2006.wav.import new file mode 100644 index 0000000..a86d9e0 --- /dev/null +++ b/assets/SFX/50054__vibe_crc__rain_session_thunder_2006.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://blumqc1qeqdse" +path="res://.godot/imported/50054__vibe_crc__rain_session_thunder_2006.wav-2285db99671bd7b92ac7fefc66be06c7.sample" + +[deps] + +source_file="res://assets/SFX/50054__vibe_crc__rain_session_thunder_2006.wav" +dest_files=["res://.godot/imported/50054__vibe_crc__rain_session_thunder_2006.wav-2285db99671bd7b92ac7fefc66be06c7.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=true +edit/normalize=false +edit/loop_mode=2 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=0 diff --git a/assets/SFX/565716__ralphwhitehead__footsteps-walking-on-wooden-floor-medium-pace.wav b/assets/SFX/565716__ralphwhitehead__footsteps-walking-on-wooden-floor-medium-pace.wav new file mode 100644 index 0000000..ef6bea0 Binary files /dev/null and b/assets/SFX/565716__ralphwhitehead__footsteps-walking-on-wooden-floor-medium-pace.wav differ diff --git a/assets/SFX/565716__ralphwhitehead__footsteps-walking-on-wooden-floor-medium-pace.wav.import b/assets/SFX/565716__ralphwhitehead__footsteps-walking-on-wooden-floor-medium-pace.wav.import new file mode 100644 index 0000000..9f2d430 --- /dev/null +++ b/assets/SFX/565716__ralphwhitehead__footsteps-walking-on-wooden-floor-medium-pace.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://cpdd4q4lp3e40" +path="res://.godot/imported/565716__ralphwhitehead__footsteps-walking-on-wooden-floor-medium-pace.wav-8fad56d0046f2a4bef779b77ca0b7617.sample" + +[deps] + +source_file="res://assets/SFX/565716__ralphwhitehead__footsteps-walking-on-wooden-floor-medium-pace.wav" +dest_files=["res://.godot/imported/565716__ralphwhitehead__footsteps-walking-on-wooden-floor-medium-pace.wav-8fad56d0046f2a4bef779b77ca0b7617.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=true +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=0 diff --git a/assets/SFX/big_ben_single_bong.mp3 b/assets/SFX/big_ben_single_bong.mp3 new file mode 100644 index 0000000..600e1aa Binary files /dev/null and b/assets/SFX/big_ben_single_bong.mp3 differ diff --git a/assets/SFX/big_ben_single_bong.mp3.import b/assets/SFX/big_ben_single_bong.mp3.import new file mode 100644 index 0000000..bd81c30 --- /dev/null +++ b/assets/SFX/big_ben_single_bong.mp3.import @@ -0,0 +1,19 @@ +[remap] + +importer="mp3" +type="AudioStreamMP3" +uid="uid://c5ugemxooiq4r" +path="res://.godot/imported/big_ben_single_bong.mp3-09efaa779905a7d85b1544f8533aac5c.mp3str" + +[deps] + +source_file="res://assets/SFX/big_ben_single_bong.mp3" +dest_files=["res://.godot/imported/big_ben_single_bong.mp3-09efaa779905a7d85b1544f8533aac5c.mp3str"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/assets/SFX/debris_fixed_length_and_audio_balance.mp3 b/assets/SFX/debris_fixed_length_and_audio_balance.mp3 new file mode 100644 index 0000000..dbb26ce Binary files /dev/null and b/assets/SFX/debris_fixed_length_and_audio_balance.mp3 differ diff --git a/assets/SFX/debris_fixed_length_and_audio_balance.mp3.import b/assets/SFX/debris_fixed_length_and_audio_balance.mp3.import new file mode 100644 index 0000000..7f90e7f --- /dev/null +++ b/assets/SFX/debris_fixed_length_and_audio_balance.mp3.import @@ -0,0 +1,19 @@ +[remap] + +importer="mp3" +type="AudioStreamMP3" +uid="uid://ck1np3er0cbw0" +path="res://.godot/imported/debris_fixed_length_and_audio_balance.mp3-71ecd4fbaa51a377b3aa7319053ccbe8.mp3str" + +[deps] + +source_file="res://assets/SFX/debris_fixed_length_and_audio_balance.mp3" +dest_files=["res://.godot/imported/debris_fixed_length_and_audio_balance.mp3-71ecd4fbaa51a377b3aa7319053ccbe8.mp3str"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/assets/fonts/BeonMedium-7Z34.ttf b/assets/fonts/BeonMedium-7Z34.ttf new file mode 100644 index 0000000..36779c6 Binary files /dev/null and b/assets/fonts/BeonMedium-7Z34.ttf differ diff --git a/assets/fonts/BeonMedium-7Z34.ttf.import b/assets/fonts/BeonMedium-7Z34.ttf.import new file mode 100644 index 0000000..5b093b7 --- /dev/null +++ b/assets/fonts/BeonMedium-7Z34.ttf.import @@ -0,0 +1,35 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://bikxakf21ryuu" +path="res://.godot/imported/BeonMedium-7Z34.ttf-74b479da2fe24d11ddfe3caa92ac80f6.fontdata" + +[deps] + +source_file="res://assets/fonts/BeonMedium-7Z34.ttf" +dest_files=["res://.godot/imported/BeonMedium-7Z34.ttf-74b479da2fe24d11ddfe3caa92ac80f6.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +disable_embedded_bitmaps=true +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +hinting=1 +subpixel_positioning=4 +keep_rounding_remainders=true +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/assets/fonts/JetbrainsMonoRegular-RpvmM.ttf b/assets/fonts/JetbrainsMonoRegular-RpvmM.ttf new file mode 100644 index 0000000..7db854f Binary files /dev/null and b/assets/fonts/JetbrainsMonoRegular-RpvmM.ttf differ diff --git a/assets/fonts/JetbrainsMonoRegular-RpvmM.ttf.import b/assets/fonts/JetbrainsMonoRegular-RpvmM.ttf.import new file mode 100644 index 0000000..41bd8a8 --- /dev/null +++ b/assets/fonts/JetbrainsMonoRegular-RpvmM.ttf.import @@ -0,0 +1,35 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://dschlbhvs42yg" +path="res://.godot/imported/JetbrainsMonoRegular-RpvmM.ttf-7432e005a608020fd922c0db3a2680c0.fontdata" + +[deps] + +source_file="res://assets/fonts/JetbrainsMonoRegular-RpvmM.ttf" +dest_files=["res://.godot/imported/JetbrainsMonoRegular-RpvmM.ttf-7432e005a608020fd922c0db3a2680c0.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +disable_embedded_bitmaps=true +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +hinting=1 +subpixel_positioning=4 +keep_rounding_remainders=true +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/assets/material/glass_window.tres b/assets/material/glass_window.tres new file mode 100644 index 0000000..4b88a4c --- /dev/null +++ b/assets/material/glass_window.tres @@ -0,0 +1,10 @@ +[gd_resource type="StandardMaterial3D" format=3 uid="uid://b6gm2sotwdai"] + +[resource] +transparency = 1 +disable_fog = true +albedo_color = Color(0, 0.913725, 0.980392, 0.137255) +metallic = 0.2 +roughness = 0.0 +subsurf_scatter_strength = 0.33 +texture_filter = 0 diff --git a/assets/model/bottle.glb b/assets/model/bottle.glb new file mode 100644 index 0000000..db9a2f9 Binary files /dev/null and b/assets/model/bottle.glb differ diff --git a/assets/model/bottle.glb.import b/assets/model/bottle.glb.import new file mode 100644 index 0000000..ca181fe --- /dev/null +++ b/assets/model/bottle.glb.import @@ -0,0 +1,42 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://dy2vgg4u66u38" +path="res://.godot/imported/bottle.glb-ef5f2ba0cfee9d62204e315e284f693d.scn" + +[deps] + +source_file="res://assets/model/bottle.glb" +dest_files=["res://.godot/imported/bottle.glb-ef5f2ba0cfee9d62204e315e284f693d.scn"] + +[params] + +nodes/root_type="StaticBody3D" +nodes/root_name="green_bottle" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +gltf/naming_version=1 +gltf/embedded_image_handling=1 diff --git a/assets/model/pine_tree_-_ps1_low_poly/license.txt b/assets/model/pine_tree_-_ps1_low_poly/license.txt new file mode 100644 index 0000000..b24630b --- /dev/null +++ b/assets/model/pine_tree_-_ps1_low_poly/license.txt @@ -0,0 +1,11 @@ +Model Information: +* title: Pine Tree - PS1 Low Poly +* source: https://sketchfab.com/3d-models/pine-tree-ps1-low-poly-d71ceeb303644e649d09fe8038aa5e47 +* author: Wersaus33 (https://sketchfab.com/wersaus33) + +Model License: +* license type: CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/) +* requirements: Author must be credited. Commercial use is allowed. + +If you use this 3D model in your project be sure to copy paste this credit wherever you share it: +This work is based on "Pine Tree - PS1 Low Poly" (https://sketchfab.com/3d-models/pine-tree-ps1-low-poly-d71ceeb303644e649d09fe8038aa5e47) by Wersaus33 (https://sketchfab.com/wersaus33) licensed under CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/) \ No newline at end of file diff --git a/assets/model/pine_tree_-_ps1_low_poly/pine_tree_ps1_low_poly.gltf b/assets/model/pine_tree_-_ps1_low_poly/pine_tree_ps1_low_poly.gltf new file mode 100644 index 0000000..890f0ed --- /dev/null +++ b/assets/model/pine_tree_-_ps1_low_poly/pine_tree_ps1_low_poly.gltf @@ -0,0 +1,253 @@ +{ + "accessors": [ + { + "bufferView": 2, + "componentType": 5126, + "count": 2720, + "max": [ + 2.9724082946777344, + 25.87409782409668, + -0.047149658203125 + ], + "min": [ + -57.531856536865234, + -18.2111759185791, + -69.11398315429688 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 32640, + "componentType": 5126, + "count": 2720, + "max": [ + 0.9990322589874268, + 0.9582374691963196, + 0.997310996055603 + ], + "min": [ + -0.7603352069854736, + -0.9855625629425049, + -0.7729556560516357 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "componentType": 5126, + "count": 2720, + "max": [ + 1.005744218826294, + 0.9956037402153015 + ], + "min": [ + 0.043312303721904755, + 0.011762885376811028 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "componentType": 5125, + "count": 3540, + "type": "SCALAR" + } + ], + "asset": { + "extras": { + "author": "Wersaus33 (https://sketchfab.com/wersaus33)", + "license": "CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/)", + "source": "https://sketchfab.com/3d-models/pine-tree-ps1-low-poly-d71ceeb303644e649d09fe8038aa5e47", + "title": "Pine Tree - PS1 Low Poly" + }, + "generator": "Sketchfab-15.10.0", + "version": "2.0" + }, + "bufferViews": [ + { + "buffer": 0, + "byteLength": 14160, + "name": "floatBufferViews", + "target": 34963 + }, + { + "buffer": 0, + "byteLength": 21760, + "byteOffset": 14160, + "byteStride": 8, + "name": "floatBufferViews", + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 65280, + "byteOffset": 35920, + "byteStride": 12, + "name": "floatBufferViews", + "target": 34962 + } + ], + "buffers": [ + { + "byteLength": 101200, + "uri": "scene.bin" + } + ], + "extensionsUsed": [ + "KHR_materials_specular" + ], + "images": [ + { + "uri": "textures/Tree_tex_baseColor.png" + } + ], + "materials": [ + { + "alphaCutoff": 0.4860967195328595, + "alphaMode": "MASK", + "doubleSided": true, + "extensions": { + "KHR_materials_specular": { + "specularColorFactor": [ + 1.0, + 1.0, + 1.0 + ], + "specularFactor": 0.0 + } + }, + "name": "Tree_tex", + "pbrMetallicRoughness": { + "baseColorTexture": { + "index": 0 + }, + "metallicFactor": 0.0 + } + } + ], + "meshes": [ + { + "name": "Plane.037_Tree_tex_0", + "primitives": [ + { + "attributes": { + "NORMAL": 1, + "POSITION": 0, + "TEXCOORD_0": 2 + }, + "indices": 3, + "material": 0, + "mode": 4 + } + ] + } + ], + "nodes": [ + { + "children": [ + 1 + ], + "matrix": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 2.220446049250313e-16, + -1.0, + 0.0, + 0.0, + 1.0, + 2.220446049250313e-16, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0 + ], + "name": "Sketchfab_model" + }, + { + "children": [ + 2 + ], + "matrix": [ + 0.009999999776482582, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.009999999776482582, + 0.0, + 0.0, + -0.009999999776482582, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0 + ], + "name": "d2edc94e04b54ebf9edd01c30cc10c99.fbx" + }, + { + "children": [ + 3 + ], + "name": "RootNode" + }, + { + "children": [ + 4 + ], + "matrix": [ + 13.658467591584136, + 10.24518118858723, + -0.39275991136676225, + 0.0, + 0.7789739304097323, + -1.7212899885611428, + -17.81072208560399, + 0.0, + -9.54079793448506, + 12.656523532386593, + -1.6404489370013995, + 0.0, + -8.31047248840332, + 1175.9144287109375, + -3.400423288345337, + 1.0 + ], + "name": "Plane.037" + }, + { + "mesh": 0, + "name": "Plane.037_Tree_tex_0" + } + ], + "samplers": [ + { + "magFilter": 9728, + "minFilter": 9728, + "wrapS": 10497, + "wrapT": 10497 + } + ], + "scene": 0, + "scenes": [ + { + "name": "Sketchfab_Scene", + "nodes": [ + 0 + ] + } + ], + "textures": [ + { + "sampler": 0, + "source": 0 + } + ] +} diff --git a/assets/model/pine_tree_-_ps1_low_poly/pine_tree_ps1_low_poly.gltf.import b/assets/model/pine_tree_-_ps1_low_poly/pine_tree_ps1_low_poly.gltf.import new file mode 100644 index 0000000..9a43787 --- /dev/null +++ b/assets/model/pine_tree_-_ps1_low_poly/pine_tree_ps1_low_poly.gltf.import @@ -0,0 +1,42 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://c2b07utp6oull" +path="res://.godot/imported/pine_tree_ps1_low_poly.gltf-897c682a3014a1d837c808142a6ccb75.scn" + +[deps] + +source_file="res://assets/model/pine_tree_-_ps1_low_poly/pine_tree_ps1_low_poly.gltf" +dest_files=["res://.godot/imported/pine_tree_ps1_low_poly.gltf-897c682a3014a1d837c808142a6ccb75.scn"] + +[params] + +nodes/root_type="StaticBody3D" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +gltf/naming_version=1 +gltf/embedded_image_handling=1 diff --git a/assets/model/pine_tree_-_ps1_low_poly/scene.bin b/assets/model/pine_tree_-_ps1_low_poly/scene.bin new file mode 100644 index 0000000..e8ea82d Binary files /dev/null and b/assets/model/pine_tree_-_ps1_low_poly/scene.bin differ diff --git a/assets/model/pine_tree_-_ps1_low_poly/textures/Tree_tex_baseColor.png b/assets/model/pine_tree_-_ps1_low_poly/textures/Tree_tex_baseColor.png new file mode 100644 index 0000000..f741f35 Binary files /dev/null and b/assets/model/pine_tree_-_ps1_low_poly/textures/Tree_tex_baseColor.png differ diff --git a/assets/model/pine_tree_-_ps1_low_poly/textures/Tree_tex_baseColor.png.import b/assets/model/pine_tree_-_ps1_low_poly/textures/Tree_tex_baseColor.png.import new file mode 100644 index 0000000..9b071bf --- /dev/null +++ b/assets/model/pine_tree_-_ps1_low_poly/textures/Tree_tex_baseColor.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ddog7wyf0gw65" +path.s3tc="res://.godot/imported/Tree_tex_baseColor.png-a612b58c6cb3cfdc9c8397abb8397cd8.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/model/pine_tree_-_ps1_low_poly/textures/Tree_tex_baseColor.png" +dest_files=["res://.godot/imported/Tree_tex_baseColor.png-a612b58c6cb3cfdc9c8397abb8397cd8.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/music/Maarten Schellekens - Free Hammond Theme.mp3 b/assets/music/Maarten Schellekens - Free Hammond Theme.mp3 new file mode 100644 index 0000000..6b0f685 Binary files /dev/null and b/assets/music/Maarten Schellekens - Free Hammond Theme.mp3 differ diff --git a/assets/music/Maarten Schellekens - Free Hammond Theme.mp3.import b/assets/music/Maarten Schellekens - Free Hammond Theme.mp3.import new file mode 100644 index 0000000..19a83c7 --- /dev/null +++ b/assets/music/Maarten Schellekens - Free Hammond Theme.mp3.import @@ -0,0 +1,19 @@ +[remap] + +importer="mp3" +type="AudioStreamMP3" +uid="uid://1wru52nqe267" +path="res://.godot/imported/Maarten Schellekens - Free Hammond Theme.mp3-081460de311f6b388a36bb72e9111d8c.mp3str" + +[deps] + +source_file="res://assets/music/Maarten Schellekens - Free Hammond Theme.mp3" +dest_files=["res://.godot/imported/Maarten Schellekens - Free Hammond Theme.mp3-081460de311f6b388a36bb72e9111d8c.mp3str"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/assets/picture/freepik-ring-binder-used-stored-documents_fixed.png b/assets/picture/freepik-ring-binder-used-stored-documents_fixed.png new file mode 100644 index 0000000..2b6191d Binary files /dev/null and b/assets/picture/freepik-ring-binder-used-stored-documents_fixed.png differ diff --git a/assets/picture/freepik-ring-binder-used-stored-documents_fixed.png.import b/assets/picture/freepik-ring-binder-used-stored-documents_fixed.png.import new file mode 100644 index 0000000..5e31506 --- /dev/null +++ b/assets/picture/freepik-ring-binder-used-stored-documents_fixed.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://7fvtdfu86knj" +path.s3tc="res://.godot/imported/freepik-ring-binder-used-stored-documents_fixed.png-a9ce52e36b1b289442c07f28bff13d8f.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/picture/freepik-ring-binder-used-stored-documents_fixed.png" +dest_files=["res://.godot/imported/freepik-ring-binder-used-stored-documents_fixed.png-a9ce52e36b1b289442c07f28bff13d8f.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/picture/freepik_snake_plant_painting_trans_back.png b/assets/picture/freepik_snake_plant_painting_trans_back.png new file mode 100644 index 0000000..8521eb8 Binary files /dev/null and b/assets/picture/freepik_snake_plant_painting_trans_back.png differ diff --git a/assets/picture/freepik_snake_plant_painting_trans_back.png.import b/assets/picture/freepik_snake_plant_painting_trans_back.png.import new file mode 100644 index 0000000..4739259 --- /dev/null +++ b/assets/picture/freepik_snake_plant_painting_trans_back.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c7epqfbtlldeq" +path.s3tc="res://.godot/imported/freepik_snake_plant_painting_trans_back.png-3e9604663e199e051813ae1d3fc4bae5.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/picture/freepik_snake_plant_painting_trans_back.png" +dest_files=["res://.godot/imported/freepik_snake_plant_painting_trans_back.png-3e9604663e199e051813ae1d3fc4bae5.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/blockout_textures/1024/basic/aqua_check.png b/assets/textures/blockout_textures/1024/basic/aqua_check.png new file mode 100644 index 0000000..48d5465 Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/aqua_check.png differ diff --git a/assets/textures/blockout_textures/1024/basic/aqua_check.png.import b/assets/textures/blockout_textures/1024/basic/aqua_check.png.import new file mode 100644 index 0000000..10f2752 --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/aqua_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://53mhvoebe761" +path="res://.godot/imported/aqua_check.png-c9b79aac8f5ab904d305bb471f0d39ea.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/aqua_check.png" +dest_files=["res://.godot/imported/aqua_check.png-c9b79aac8f5ab904d305bb471f0d39ea.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/aqua_cross.png b/assets/textures/blockout_textures/1024/basic/aqua_cross.png new file mode 100644 index 0000000..0f3143c Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/aqua_cross.png differ diff --git a/assets/textures/blockout_textures/1024/basic/aqua_cross.png.import b/assets/textures/blockout_textures/1024/basic/aqua_cross.png.import new file mode 100644 index 0000000..279eb3f --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/aqua_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ddfqabokmi22i" +path="res://.godot/imported/aqua_cross.png-f29de746edb49eae2d2be8cf1cbacaea.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/aqua_cross.png" +dest_files=["res://.godot/imported/aqua_cross.png-f29de746edb49eae2d2be8cf1cbacaea.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/aqua_dots.png b/assets/textures/blockout_textures/1024/basic/aqua_dots.png new file mode 100644 index 0000000..ad6b9e1 Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/aqua_dots.png differ diff --git a/assets/textures/blockout_textures/1024/basic/aqua_dots.png.import b/assets/textures/blockout_textures/1024/basic/aqua_dots.png.import new file mode 100644 index 0000000..a7e00df --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/aqua_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://di0kc6yl02j4g" +path="res://.godot/imported/aqua_dots.png-d6cbf047c830b7d4c199b33102c6765d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/aqua_dots.png" +dest_files=["res://.godot/imported/aqua_dots.png-d6cbf047c830b7d4c199b33102c6765d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/aqua_grid.png b/assets/textures/blockout_textures/1024/basic/aqua_grid.png new file mode 100644 index 0000000..bc7f7be Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/aqua_grid.png differ diff --git a/assets/textures/blockout_textures/1024/basic/aqua_grid.png.import b/assets/textures/blockout_textures/1024/basic/aqua_grid.png.import new file mode 100644 index 0000000..eba8168 --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/aqua_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dcte7iqv0t5ew" +path="res://.godot/imported/aqua_grid.png-9709018efa80ec224a62a8950b2d81ad.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/aqua_grid.png" +dest_files=["res://.godot/imported/aqua_grid.png-9709018efa80ec224a62a8950b2d81ad.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/aqua_light_check.png b/assets/textures/blockout_textures/1024/basic/aqua_light_check.png new file mode 100644 index 0000000..5a6d58e Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/aqua_light_check.png differ diff --git a/assets/textures/blockout_textures/1024/basic/aqua_light_check.png.import b/assets/textures/blockout_textures/1024/basic/aqua_light_check.png.import new file mode 100644 index 0000000..b7ef626 --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/aqua_light_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b4xkcohp3fs2w" +path="res://.godot/imported/aqua_light_check.png-4b0d43f92728c483a23454578fa5adeb.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/aqua_light_check.png" +dest_files=["res://.godot/imported/aqua_light_check.png-4b0d43f92728c483a23454578fa5adeb.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/aqua_light_cross.png b/assets/textures/blockout_textures/1024/basic/aqua_light_cross.png new file mode 100644 index 0000000..e119f01 Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/aqua_light_cross.png differ diff --git a/assets/textures/blockout_textures/1024/basic/aqua_light_cross.png.import b/assets/textures/blockout_textures/1024/basic/aqua_light_cross.png.import new file mode 100644 index 0000000..96f7c9b --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/aqua_light_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d4aqauca2jxbb" +path="res://.godot/imported/aqua_light_cross.png-1f11d8f19b416f8bcbcba83292c9f553.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/aqua_light_cross.png" +dest_files=["res://.godot/imported/aqua_light_cross.png-1f11d8f19b416f8bcbcba83292c9f553.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/aqua_light_dots.png b/assets/textures/blockout_textures/1024/basic/aqua_light_dots.png new file mode 100644 index 0000000..5d89e75 Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/aqua_light_dots.png differ diff --git a/assets/textures/blockout_textures/1024/basic/aqua_light_dots.png.import b/assets/textures/blockout_textures/1024/basic/aqua_light_dots.png.import new file mode 100644 index 0000000..494bf63 --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/aqua_light_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bq4ky4km383kd" +path="res://.godot/imported/aqua_light_dots.png-52890cbef3681a7e8d4cab629036f8cf.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/aqua_light_dots.png" +dest_files=["res://.godot/imported/aqua_light_dots.png-52890cbef3681a7e8d4cab629036f8cf.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/aqua_light_grid.png b/assets/textures/blockout_textures/1024/basic/aqua_light_grid.png new file mode 100644 index 0000000..c64b866 Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/aqua_light_grid.png differ diff --git a/assets/textures/blockout_textures/1024/basic/aqua_light_grid.png.import b/assets/textures/blockout_textures/1024/basic/aqua_light_grid.png.import new file mode 100644 index 0000000..60cc7b9 --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/aqua_light_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://fk32vy8ve7jf" +path="res://.godot/imported/aqua_light_grid.png-56371e1904d1a43b0ef9779ab93a148a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/aqua_light_grid.png" +dest_files=["res://.godot/imported/aqua_light_grid.png-56371e1904d1a43b0ef9779ab93a148a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/black_check.png b/assets/textures/blockout_textures/1024/basic/black_check.png new file mode 100644 index 0000000..9c9fe59 Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/black_check.png differ diff --git a/assets/textures/blockout_textures/1024/basic/black_check.png.import b/assets/textures/blockout_textures/1024/basic/black_check.png.import new file mode 100644 index 0000000..c5407cb --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/black_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://hqvwo5m1i62a" +path="res://.godot/imported/black_check.png-be0abba42ee4c3c65a0d91283a097153.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/black_check.png" +dest_files=["res://.godot/imported/black_check.png-be0abba42ee4c3c65a0d91283a097153.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/black_cross.png b/assets/textures/blockout_textures/1024/basic/black_cross.png new file mode 100644 index 0000000..00624bb Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/black_cross.png differ diff --git a/assets/textures/blockout_textures/1024/basic/black_cross.png.import b/assets/textures/blockout_textures/1024/basic/black_cross.png.import new file mode 100644 index 0000000..8b36270 --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/black_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://xnmbappy7ph7" +path="res://.godot/imported/black_cross.png-c67c957b4c362fd20be2721e4a047cf7.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/black_cross.png" +dest_files=["res://.godot/imported/black_cross.png-c67c957b4c362fd20be2721e4a047cf7.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/black_dots.png b/assets/textures/blockout_textures/1024/basic/black_dots.png new file mode 100644 index 0000000..491e571 Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/black_dots.png differ diff --git a/assets/textures/blockout_textures/1024/basic/black_dots.png.import b/assets/textures/blockout_textures/1024/basic/black_dots.png.import new file mode 100644 index 0000000..d9a8ce8 --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/black_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cy22mgb7o2yov" +path="res://.godot/imported/black_dots.png-8f7ee8d0ca0c75928e75492bf28bdd73.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/black_dots.png" +dest_files=["res://.godot/imported/black_dots.png-8f7ee8d0ca0c75928e75492bf28bdd73.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/black_grid.png b/assets/textures/blockout_textures/1024/basic/black_grid.png new file mode 100644 index 0000000..169f92e Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/black_grid.png differ diff --git a/assets/textures/blockout_textures/1024/basic/black_grid.png.import b/assets/textures/blockout_textures/1024/basic/black_grid.png.import new file mode 100644 index 0000000..7bf048f --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/black_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cpvdd2attt6m5" +path="res://.godot/imported/black_grid.png-43c50f2b2a4661a6e43ab71c5925088f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/black_grid.png" +dest_files=["res://.godot/imported/black_grid.png-43c50f2b2a4661a6e43ab71c5925088f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/blue_check.png b/assets/textures/blockout_textures/1024/basic/blue_check.png new file mode 100644 index 0000000..774a5a5 Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/blue_check.png differ diff --git a/assets/textures/blockout_textures/1024/basic/blue_check.png.import b/assets/textures/blockout_textures/1024/basic/blue_check.png.import new file mode 100644 index 0000000..96673bc --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/blue_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d1xw1sgp07rdw" +path="res://.godot/imported/blue_check.png-9f8d4590225b0570e39bd5f0ad8d0a93.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/blue_check.png" +dest_files=["res://.godot/imported/blue_check.png-9f8d4590225b0570e39bd5f0ad8d0a93.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/blue_cross.png b/assets/textures/blockout_textures/1024/basic/blue_cross.png new file mode 100644 index 0000000..25ab86c Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/blue_cross.png differ diff --git a/assets/textures/blockout_textures/1024/basic/blue_cross.png.import b/assets/textures/blockout_textures/1024/basic/blue_cross.png.import new file mode 100644 index 0000000..9a04f71 --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/blue_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dqyxh12uwvx2g" +path="res://.godot/imported/blue_cross.png-d88502e0e899a8e5ad7e20d1667a6891.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/blue_cross.png" +dest_files=["res://.godot/imported/blue_cross.png-d88502e0e899a8e5ad7e20d1667a6891.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/blue_dots.png b/assets/textures/blockout_textures/1024/basic/blue_dots.png new file mode 100644 index 0000000..1cca9dd Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/blue_dots.png differ diff --git a/assets/textures/blockout_textures/1024/basic/blue_dots.png.import b/assets/textures/blockout_textures/1024/basic/blue_dots.png.import new file mode 100644 index 0000000..eaaa290 --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/blue_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dhv85hceuj1ma" +path="res://.godot/imported/blue_dots.png-ce8d5674685c221174d4c661ee7b8a17.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/blue_dots.png" +dest_files=["res://.godot/imported/blue_dots.png-ce8d5674685c221174d4c661ee7b8a17.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/blue_grid.png b/assets/textures/blockout_textures/1024/basic/blue_grid.png new file mode 100644 index 0000000..893db89 Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/blue_grid.png differ diff --git a/assets/textures/blockout_textures/1024/basic/blue_grid.png.import b/assets/textures/blockout_textures/1024/basic/blue_grid.png.import new file mode 100644 index 0000000..9fb4372 --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/blue_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cdiwj7ebwbbc4" +path="res://.godot/imported/blue_grid.png-8473c5a5bf1b2883ed94dd86b022bee7.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/blue_grid.png" +dest_files=["res://.godot/imported/blue_grid.png-8473c5a5bf1b2883ed94dd86b022bee7.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/blue_light_check.png b/assets/textures/blockout_textures/1024/basic/blue_light_check.png new file mode 100644 index 0000000..889e41c Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/blue_light_check.png differ diff --git a/assets/textures/blockout_textures/1024/basic/blue_light_check.png.import b/assets/textures/blockout_textures/1024/basic/blue_light_check.png.import new file mode 100644 index 0000000..264245a --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/blue_light_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bntpxumsf6g87" +path="res://.godot/imported/blue_light_check.png-2f12e4d153364ee1fa0ed780c920b065.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/blue_light_check.png" +dest_files=["res://.godot/imported/blue_light_check.png-2f12e4d153364ee1fa0ed780c920b065.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/blue_light_cross.png b/assets/textures/blockout_textures/1024/basic/blue_light_cross.png new file mode 100644 index 0000000..579e12e Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/blue_light_cross.png differ diff --git a/assets/textures/blockout_textures/1024/basic/blue_light_cross.png.import b/assets/textures/blockout_textures/1024/basic/blue_light_cross.png.import new file mode 100644 index 0000000..39fb840 --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/blue_light_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b2bom5fqss8bk" +path="res://.godot/imported/blue_light_cross.png-5b432158a75fd44545ca323be51feeea.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/blue_light_cross.png" +dest_files=["res://.godot/imported/blue_light_cross.png-5b432158a75fd44545ca323be51feeea.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/blue_light_dots.png b/assets/textures/blockout_textures/1024/basic/blue_light_dots.png new file mode 100644 index 0000000..a911b18 Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/blue_light_dots.png differ diff --git a/assets/textures/blockout_textures/1024/basic/blue_light_dots.png.import b/assets/textures/blockout_textures/1024/basic/blue_light_dots.png.import new file mode 100644 index 0000000..314da1e --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/blue_light_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cphd47iogi6r6" +path="res://.godot/imported/blue_light_dots.png-0fdfb8bbf61a6318a8b5fbd5693d0fdc.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/blue_light_dots.png" +dest_files=["res://.godot/imported/blue_light_dots.png-0fdfb8bbf61a6318a8b5fbd5693d0fdc.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/blue_light_grid.png b/assets/textures/blockout_textures/1024/basic/blue_light_grid.png new file mode 100644 index 0000000..36ef953 Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/blue_light_grid.png differ diff --git a/assets/textures/blockout_textures/1024/basic/blue_light_grid.png.import b/assets/textures/blockout_textures/1024/basic/blue_light_grid.png.import new file mode 100644 index 0000000..6b3d5e7 --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/blue_light_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://vadv0njg2ylc" +path="res://.godot/imported/blue_light_grid.png-0e58e70ebd13b7d9f82b7191b17aa62b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/blue_light_grid.png" +dest_files=["res://.godot/imported/blue_light_grid.png-0e58e70ebd13b7d9f82b7191b17aa62b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/gray_check.png b/assets/textures/blockout_textures/1024/basic/gray_check.png new file mode 100644 index 0000000..5c40a59 Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/gray_check.png differ diff --git a/assets/textures/blockout_textures/1024/basic/gray_check.png.import b/assets/textures/blockout_textures/1024/basic/gray_check.png.import new file mode 100644 index 0000000..81440a8 --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/gray_check.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bc73b0smqgbo3" +path.s3tc="res://.godot/imported/gray_check.png-699bf21d5ae182075fca1fccd7db4c80.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/gray_check.png" +dest_files=["res://.godot/imported/gray_check.png-699bf21d5ae182075fca1fccd7db4c80.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/blockout_textures/1024/basic/gray_cross.png b/assets/textures/blockout_textures/1024/basic/gray_cross.png new file mode 100644 index 0000000..4615b6b Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/gray_cross.png differ diff --git a/assets/textures/blockout_textures/1024/basic/gray_cross.png.import b/assets/textures/blockout_textures/1024/basic/gray_cross.png.import new file mode 100644 index 0000000..0ff69f9 --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/gray_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bmu8jsqlvdp3n" +path="res://.godot/imported/gray_cross.png-32f91870fcfec469e0f3719bcaa3bddb.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/gray_cross.png" +dest_files=["res://.godot/imported/gray_cross.png-32f91870fcfec469e0f3719bcaa3bddb.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/gray_dots.png b/assets/textures/blockout_textures/1024/basic/gray_dots.png new file mode 100644 index 0000000..522a204 Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/gray_dots.png differ diff --git a/assets/textures/blockout_textures/1024/basic/gray_dots.png.import b/assets/textures/blockout_textures/1024/basic/gray_dots.png.import new file mode 100644 index 0000000..7a81889 --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/gray_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://djearyu4inwfs" +path="res://.godot/imported/gray_dots.png-89dfc0ce933937a259e3b784849a8e12.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/gray_dots.png" +dest_files=["res://.godot/imported/gray_dots.png-89dfc0ce933937a259e3b784849a8e12.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/gray_grid.png b/assets/textures/blockout_textures/1024/basic/gray_grid.png new file mode 100644 index 0000000..ea80b45 Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/gray_grid.png differ diff --git a/assets/textures/blockout_textures/1024/basic/gray_grid.png.import b/assets/textures/blockout_textures/1024/basic/gray_grid.png.import new file mode 100644 index 0000000..f36eef6 --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/gray_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bh8kvj71q6gku" +path="res://.godot/imported/gray_grid.png-d250cbc4f1c5b8a0ddeacf4ddcda70a7.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/gray_grid.png" +dest_files=["res://.godot/imported/gray_grid.png-d250cbc4f1c5b8a0ddeacf4ddcda70a7.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/green_check.png b/assets/textures/blockout_textures/1024/basic/green_check.png new file mode 100644 index 0000000..cd79822 Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/green_check.png differ diff --git a/assets/textures/blockout_textures/1024/basic/green_check.png.import b/assets/textures/blockout_textures/1024/basic/green_check.png.import new file mode 100644 index 0000000..c5acfa4 --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/green_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cxbvgrbqbxxdn" +path="res://.godot/imported/green_check.png-724a2c6d8864dc93da75cf556d6bb49e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/green_check.png" +dest_files=["res://.godot/imported/green_check.png-724a2c6d8864dc93da75cf556d6bb49e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/green_cross.png b/assets/textures/blockout_textures/1024/basic/green_cross.png new file mode 100644 index 0000000..821503d Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/green_cross.png differ diff --git a/assets/textures/blockout_textures/1024/basic/green_cross.png.import b/assets/textures/blockout_textures/1024/basic/green_cross.png.import new file mode 100644 index 0000000..a13c50f --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/green_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://csvpcwodljd1c" +path="res://.godot/imported/green_cross.png-5fef07e65c71b43a282eeef4c4b3411d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/green_cross.png" +dest_files=["res://.godot/imported/green_cross.png-5fef07e65c71b43a282eeef4c4b3411d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/green_dots.png b/assets/textures/blockout_textures/1024/basic/green_dots.png new file mode 100644 index 0000000..535f65e Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/green_dots.png differ diff --git a/assets/textures/blockout_textures/1024/basic/green_dots.png.import b/assets/textures/blockout_textures/1024/basic/green_dots.png.import new file mode 100644 index 0000000..24ca508 --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/green_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://da7t1p7nli15s" +path="res://.godot/imported/green_dots.png-ddc94e8a639bb171405d853c103dc9e0.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/green_dots.png" +dest_files=["res://.godot/imported/green_dots.png-ddc94e8a639bb171405d853c103dc9e0.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/green_grid.png b/assets/textures/blockout_textures/1024/basic/green_grid.png new file mode 100644 index 0000000..38ad04a Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/green_grid.png differ diff --git a/assets/textures/blockout_textures/1024/basic/green_grid.png.import b/assets/textures/blockout_textures/1024/basic/green_grid.png.import new file mode 100644 index 0000000..717d57c --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/green_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cn54k2vgmt64r" +path="res://.godot/imported/green_grid.png-bb31927fa1c221d62e74ce2da0383843.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/green_grid.png" +dest_files=["res://.godot/imported/green_grid.png-bb31927fa1c221d62e74ce2da0383843.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/green_light_check.png b/assets/textures/blockout_textures/1024/basic/green_light_check.png new file mode 100644 index 0000000..a097c85 Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/green_light_check.png differ diff --git a/assets/textures/blockout_textures/1024/basic/green_light_check.png.import b/assets/textures/blockout_textures/1024/basic/green_light_check.png.import new file mode 100644 index 0000000..4b95dfd --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/green_light_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ua2cme54bere" +path="res://.godot/imported/green_light_check.png-f8aa415da30494d3daa516a1acf8f086.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/green_light_check.png" +dest_files=["res://.godot/imported/green_light_check.png-f8aa415da30494d3daa516a1acf8f086.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/green_light_cross.png b/assets/textures/blockout_textures/1024/basic/green_light_cross.png new file mode 100644 index 0000000..53b1c8a Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/green_light_cross.png differ diff --git a/assets/textures/blockout_textures/1024/basic/green_light_cross.png.import b/assets/textures/blockout_textures/1024/basic/green_light_cross.png.import new file mode 100644 index 0000000..ce8ea68 --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/green_light_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cl7quh16prjbk" +path="res://.godot/imported/green_light_cross.png-c0bd56ea3a80c089c969abf18d0238d9.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/green_light_cross.png" +dest_files=["res://.godot/imported/green_light_cross.png-c0bd56ea3a80c089c969abf18d0238d9.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/green_light_dots.png b/assets/textures/blockout_textures/1024/basic/green_light_dots.png new file mode 100644 index 0000000..1bf1ba1 Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/green_light_dots.png differ diff --git a/assets/textures/blockout_textures/1024/basic/green_light_dots.png.import b/assets/textures/blockout_textures/1024/basic/green_light_dots.png.import new file mode 100644 index 0000000..4562d3b --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/green_light_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://iumvn17h1aku" +path="res://.godot/imported/green_light_dots.png-b26075b40ccb1f269995caf3609d96df.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/green_light_dots.png" +dest_files=["res://.godot/imported/green_light_dots.png-b26075b40ccb1f269995caf3609d96df.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/green_light_grid.png b/assets/textures/blockout_textures/1024/basic/green_light_grid.png new file mode 100644 index 0000000..4cc9c35 Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/green_light_grid.png differ diff --git a/assets/textures/blockout_textures/1024/basic/green_light_grid.png.import b/assets/textures/blockout_textures/1024/basic/green_light_grid.png.import new file mode 100644 index 0000000..a9da0d8 --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/green_light_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bos2ug701hhk5" +path="res://.godot/imported/green_light_grid.png-215538c098f3af3cb4c7d2559b1e08cc.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/green_light_grid.png" +dest_files=["res://.godot/imported/green_light_grid.png-215538c098f3af3cb4c7d2559b1e08cc.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/orange_check.png b/assets/textures/blockout_textures/1024/basic/orange_check.png new file mode 100644 index 0000000..dc53b52 Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/orange_check.png differ diff --git a/assets/textures/blockout_textures/1024/basic/orange_check.png.import b/assets/textures/blockout_textures/1024/basic/orange_check.png.import new file mode 100644 index 0000000..4e4da47 --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/orange_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dwcusgylflmyt" +path="res://.godot/imported/orange_check.png-5f1d3a85e432a322aed2a9ed874ab686.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/orange_check.png" +dest_files=["res://.godot/imported/orange_check.png-5f1d3a85e432a322aed2a9ed874ab686.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/orange_cross.png b/assets/textures/blockout_textures/1024/basic/orange_cross.png new file mode 100644 index 0000000..6f14f4a Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/orange_cross.png differ diff --git a/assets/textures/blockout_textures/1024/basic/orange_cross.png.import b/assets/textures/blockout_textures/1024/basic/orange_cross.png.import new file mode 100644 index 0000000..dbafd24 --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/orange_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c3j6od2pjuu2o" +path="res://.godot/imported/orange_cross.png-f7b7a10ecaf37e7c9003a71bb81347f6.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/orange_cross.png" +dest_files=["res://.godot/imported/orange_cross.png-f7b7a10ecaf37e7c9003a71bb81347f6.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/orange_dots.png b/assets/textures/blockout_textures/1024/basic/orange_dots.png new file mode 100644 index 0000000..4d51969 Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/orange_dots.png differ diff --git a/assets/textures/blockout_textures/1024/basic/orange_dots.png.import b/assets/textures/blockout_textures/1024/basic/orange_dots.png.import new file mode 100644 index 0000000..258b860 --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/orange_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://pspjv51exrkj" +path="res://.godot/imported/orange_dots.png-53ecf97b8bf2c9d76b2dee5240b1509c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/orange_dots.png" +dest_files=["res://.godot/imported/orange_dots.png-53ecf97b8bf2c9d76b2dee5240b1509c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/orange_grid.png b/assets/textures/blockout_textures/1024/basic/orange_grid.png new file mode 100644 index 0000000..65898aa Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/orange_grid.png differ diff --git a/assets/textures/blockout_textures/1024/basic/orange_grid.png.import b/assets/textures/blockout_textures/1024/basic/orange_grid.png.import new file mode 100644 index 0000000..1c26f6a --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/orange_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c3muqso2tfady" +path="res://.godot/imported/orange_grid.png-8bff0c19faae246ecf8c73deda747652.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/orange_grid.png" +dest_files=["res://.godot/imported/orange_grid.png-8bff0c19faae246ecf8c73deda747652.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/orange_light_check.png b/assets/textures/blockout_textures/1024/basic/orange_light_check.png new file mode 100644 index 0000000..96e56ed Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/orange_light_check.png differ diff --git a/assets/textures/blockout_textures/1024/basic/orange_light_check.png.import b/assets/textures/blockout_textures/1024/basic/orange_light_check.png.import new file mode 100644 index 0000000..ceb12a3 --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/orange_light_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cnbt84rswaj78" +path="res://.godot/imported/orange_light_check.png-b8c6f936343cf4f60103a6f2d97fe187.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/orange_light_check.png" +dest_files=["res://.godot/imported/orange_light_check.png-b8c6f936343cf4f60103a6f2d97fe187.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/orange_light_cross.png b/assets/textures/blockout_textures/1024/basic/orange_light_cross.png new file mode 100644 index 0000000..125a8cf Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/orange_light_cross.png differ diff --git a/assets/textures/blockout_textures/1024/basic/orange_light_cross.png.import b/assets/textures/blockout_textures/1024/basic/orange_light_cross.png.import new file mode 100644 index 0000000..36d5367 --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/orange_light_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cyio11llkhyi4" +path="res://.godot/imported/orange_light_cross.png-b746f6a4c67a53bd62577633ec64b6ba.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/orange_light_cross.png" +dest_files=["res://.godot/imported/orange_light_cross.png-b746f6a4c67a53bd62577633ec64b6ba.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/orange_light_dots.png b/assets/textures/blockout_textures/1024/basic/orange_light_dots.png new file mode 100644 index 0000000..9d2e0af Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/orange_light_dots.png differ diff --git a/assets/textures/blockout_textures/1024/basic/orange_light_dots.png.import b/assets/textures/blockout_textures/1024/basic/orange_light_dots.png.import new file mode 100644 index 0000000..2f9eeb0 --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/orange_light_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c8o3f2kiwdntb" +path="res://.godot/imported/orange_light_dots.png-b2ac71d2740beb5ff1090d7571912991.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/orange_light_dots.png" +dest_files=["res://.godot/imported/orange_light_dots.png-b2ac71d2740beb5ff1090d7571912991.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/orange_light_grid.png b/assets/textures/blockout_textures/1024/basic/orange_light_grid.png new file mode 100644 index 0000000..adcd3bb Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/orange_light_grid.png differ diff --git a/assets/textures/blockout_textures/1024/basic/orange_light_grid.png.import b/assets/textures/blockout_textures/1024/basic/orange_light_grid.png.import new file mode 100644 index 0000000..9b6fc9f --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/orange_light_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dxf2gs343hxnf" +path="res://.godot/imported/orange_light_grid.png-9c40a4bb9dfdae8da71b3825028ba06a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/orange_light_grid.png" +dest_files=["res://.godot/imported/orange_light_grid.png-9c40a4bb9dfdae8da71b3825028ba06a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/purple_check.png b/assets/textures/blockout_textures/1024/basic/purple_check.png new file mode 100644 index 0000000..036b643 Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/purple_check.png differ diff --git a/assets/textures/blockout_textures/1024/basic/purple_check.png.import b/assets/textures/blockout_textures/1024/basic/purple_check.png.import new file mode 100644 index 0000000..c51728e --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/purple_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bv4hrl62hgwsf" +path="res://.godot/imported/purple_check.png-930f903e747b7c86645606aa55ae6560.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/purple_check.png" +dest_files=["res://.godot/imported/purple_check.png-930f903e747b7c86645606aa55ae6560.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/purple_cross.png b/assets/textures/blockout_textures/1024/basic/purple_cross.png new file mode 100644 index 0000000..ae9513d Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/purple_cross.png differ diff --git a/assets/textures/blockout_textures/1024/basic/purple_cross.png.import b/assets/textures/blockout_textures/1024/basic/purple_cross.png.import new file mode 100644 index 0000000..9eebce7 --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/purple_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://fp75n5anjvg5" +path="res://.godot/imported/purple_cross.png-0cfa92b7cabd0d37933faac216d08fbc.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/purple_cross.png" +dest_files=["res://.godot/imported/purple_cross.png-0cfa92b7cabd0d37933faac216d08fbc.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/purple_dots.png b/assets/textures/blockout_textures/1024/basic/purple_dots.png new file mode 100644 index 0000000..83fce1c Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/purple_dots.png differ diff --git a/assets/textures/blockout_textures/1024/basic/purple_dots.png.import b/assets/textures/blockout_textures/1024/basic/purple_dots.png.import new file mode 100644 index 0000000..96a92fe --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/purple_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://drrboy0fp1jao" +path="res://.godot/imported/purple_dots.png-96a70e94c89812221dc0e6ba848a12ab.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/purple_dots.png" +dest_files=["res://.godot/imported/purple_dots.png-96a70e94c89812221dc0e6ba848a12ab.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/purple_grid.png b/assets/textures/blockout_textures/1024/basic/purple_grid.png new file mode 100644 index 0000000..6b89df2 Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/purple_grid.png differ diff --git a/assets/textures/blockout_textures/1024/basic/purple_grid.png.import b/assets/textures/blockout_textures/1024/basic/purple_grid.png.import new file mode 100644 index 0000000..bc0f281 --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/purple_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cofwvw0t38qc8" +path="res://.godot/imported/purple_grid.png-d7a023c0ceaa5a8f7e1891df49248c5b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/purple_grid.png" +dest_files=["res://.godot/imported/purple_grid.png-d7a023c0ceaa5a8f7e1891df49248c5b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/purple_light_check.png b/assets/textures/blockout_textures/1024/basic/purple_light_check.png new file mode 100644 index 0000000..9a56570 Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/purple_light_check.png differ diff --git a/assets/textures/blockout_textures/1024/basic/purple_light_check.png.import b/assets/textures/blockout_textures/1024/basic/purple_light_check.png.import new file mode 100644 index 0000000..c6a5f58 --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/purple_light_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dkdo1f6nsmg42" +path="res://.godot/imported/purple_light_check.png-28b75e0298fbe6feb5e71ff046c0dcc9.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/purple_light_check.png" +dest_files=["res://.godot/imported/purple_light_check.png-28b75e0298fbe6feb5e71ff046c0dcc9.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/purple_light_cross.png b/assets/textures/blockout_textures/1024/basic/purple_light_cross.png new file mode 100644 index 0000000..6b6d7e9 Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/purple_light_cross.png differ diff --git a/assets/textures/blockout_textures/1024/basic/purple_light_cross.png.import b/assets/textures/blockout_textures/1024/basic/purple_light_cross.png.import new file mode 100644 index 0000000..110f597 --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/purple_light_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://vmwjtpor1p7u" +path="res://.godot/imported/purple_light_cross.png-1e37fe4cfdb1b4ebffb6821648b1c6b9.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/purple_light_cross.png" +dest_files=["res://.godot/imported/purple_light_cross.png-1e37fe4cfdb1b4ebffb6821648b1c6b9.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/purple_light_dots.png b/assets/textures/blockout_textures/1024/basic/purple_light_dots.png new file mode 100644 index 0000000..1ec2530 Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/purple_light_dots.png differ diff --git a/assets/textures/blockout_textures/1024/basic/purple_light_dots.png.import b/assets/textures/blockout_textures/1024/basic/purple_light_dots.png.import new file mode 100644 index 0000000..7ad5b3b --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/purple_light_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d3cnlygnoov1" +path="res://.godot/imported/purple_light_dots.png-3bf819738f2670344fe3c77131751b92.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/purple_light_dots.png" +dest_files=["res://.godot/imported/purple_light_dots.png-3bf819738f2670344fe3c77131751b92.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/purple_light_grid.png b/assets/textures/blockout_textures/1024/basic/purple_light_grid.png new file mode 100644 index 0000000..6b7affb Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/purple_light_grid.png differ diff --git a/assets/textures/blockout_textures/1024/basic/purple_light_grid.png.import b/assets/textures/blockout_textures/1024/basic/purple_light_grid.png.import new file mode 100644 index 0000000..c5f438d --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/purple_light_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://icj0qtdemn00" +path="res://.godot/imported/purple_light_grid.png-3a38be19aa6fb34370aa525d1f2030ed.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/purple_light_grid.png" +dest_files=["res://.godot/imported/purple_light_grid.png-3a38be19aa6fb34370aa525d1f2030ed.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/red_check.png b/assets/textures/blockout_textures/1024/basic/red_check.png new file mode 100644 index 0000000..c952c14 Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/red_check.png differ diff --git a/assets/textures/blockout_textures/1024/basic/red_check.png.import b/assets/textures/blockout_textures/1024/basic/red_check.png.import new file mode 100644 index 0000000..81f72ba --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/red_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d2beosyegukqb" +path="res://.godot/imported/red_check.png-9f1b98dd8e5af3afcd68317ffacff311.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/red_check.png" +dest_files=["res://.godot/imported/red_check.png-9f1b98dd8e5af3afcd68317ffacff311.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/red_cross.png b/assets/textures/blockout_textures/1024/basic/red_cross.png new file mode 100644 index 0000000..b804422 Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/red_cross.png differ diff --git a/assets/textures/blockout_textures/1024/basic/red_cross.png.import b/assets/textures/blockout_textures/1024/basic/red_cross.png.import new file mode 100644 index 0000000..bde3390 --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/red_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cjkuxxon5j51x" +path="res://.godot/imported/red_cross.png-8022c6a82407440fa83d0fa5bcbff709.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/red_cross.png" +dest_files=["res://.godot/imported/red_cross.png-8022c6a82407440fa83d0fa5bcbff709.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/red_dots.png b/assets/textures/blockout_textures/1024/basic/red_dots.png new file mode 100644 index 0000000..0211aba Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/red_dots.png differ diff --git a/assets/textures/blockout_textures/1024/basic/red_dots.png.import b/assets/textures/blockout_textures/1024/basic/red_dots.png.import new file mode 100644 index 0000000..286f801 --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/red_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dynms8uwgtqfr" +path="res://.godot/imported/red_dots.png-829e1a6b6759a2331b37f9e1bd0be996.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/red_dots.png" +dest_files=["res://.godot/imported/red_dots.png-829e1a6b6759a2331b37f9e1bd0be996.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/red_grid.png b/assets/textures/blockout_textures/1024/basic/red_grid.png new file mode 100644 index 0000000..3760235 Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/red_grid.png differ diff --git a/assets/textures/blockout_textures/1024/basic/red_grid.png.import b/assets/textures/blockout_textures/1024/basic/red_grid.png.import new file mode 100644 index 0000000..fd6f881 --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/red_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c8femwexy3vdr" +path="res://.godot/imported/red_grid.png-af7e2b70881d6da7f29d4c5e36b048fa.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/red_grid.png" +dest_files=["res://.godot/imported/red_grid.png-af7e2b70881d6da7f29d4c5e36b048fa.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/red_light_check.png b/assets/textures/blockout_textures/1024/basic/red_light_check.png new file mode 100644 index 0000000..aae7582 Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/red_light_check.png differ diff --git a/assets/textures/blockout_textures/1024/basic/red_light_check.png.import b/assets/textures/blockout_textures/1024/basic/red_light_check.png.import new file mode 100644 index 0000000..cbaa1ab --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/red_light_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cjh02d3iiwubg" +path="res://.godot/imported/red_light_check.png-5e75e43e67392209d090bf98f69f4687.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/red_light_check.png" +dest_files=["res://.godot/imported/red_light_check.png-5e75e43e67392209d090bf98f69f4687.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/red_light_cross.png b/assets/textures/blockout_textures/1024/basic/red_light_cross.png new file mode 100644 index 0000000..dba2d0d Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/red_light_cross.png differ diff --git a/assets/textures/blockout_textures/1024/basic/red_light_cross.png.import b/assets/textures/blockout_textures/1024/basic/red_light_cross.png.import new file mode 100644 index 0000000..46a02f4 --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/red_light_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c0tqtomtjk6o8" +path="res://.godot/imported/red_light_cross.png-98f1991d334b1760fc497141e4fa25cb.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/red_light_cross.png" +dest_files=["res://.godot/imported/red_light_cross.png-98f1991d334b1760fc497141e4fa25cb.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/red_light_dots.png b/assets/textures/blockout_textures/1024/basic/red_light_dots.png new file mode 100644 index 0000000..90fa7c6 Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/red_light_dots.png differ diff --git a/assets/textures/blockout_textures/1024/basic/red_light_dots.png.import b/assets/textures/blockout_textures/1024/basic/red_light_dots.png.import new file mode 100644 index 0000000..aa344d7 --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/red_light_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cb8v06m4weiso" +path="res://.godot/imported/red_light_dots.png-1129df82b86f3cc2f0b82786a9712fac.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/red_light_dots.png" +dest_files=["res://.godot/imported/red_light_dots.png-1129df82b86f3cc2f0b82786a9712fac.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/red_light_grid.png b/assets/textures/blockout_textures/1024/basic/red_light_grid.png new file mode 100644 index 0000000..b56aac7 Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/red_light_grid.png differ diff --git a/assets/textures/blockout_textures/1024/basic/red_light_grid.png.import b/assets/textures/blockout_textures/1024/basic/red_light_grid.png.import new file mode 100644 index 0000000..0885422 --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/red_light_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bsy3221iqdhhe" +path="res://.godot/imported/red_light_grid.png-bd890989f335bdc18d41f6fa0a4c7a03.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/red_light_grid.png" +dest_files=["res://.godot/imported/red_light_grid.png-bd890989f335bdc18d41f6fa0a4c7a03.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/white_check.png b/assets/textures/blockout_textures/1024/basic/white_check.png new file mode 100644 index 0000000..7cf1a0c Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/white_check.png differ diff --git a/assets/textures/blockout_textures/1024/basic/white_check.png.import b/assets/textures/blockout_textures/1024/basic/white_check.png.import new file mode 100644 index 0000000..f23c5d7 --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/white_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cjlb24wna5gkp" +path="res://.godot/imported/white_check.png-faa77cca39e32b810e69446c2cf3e2e8.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/white_check.png" +dest_files=["res://.godot/imported/white_check.png-faa77cca39e32b810e69446c2cf3e2e8.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/white_cross.png b/assets/textures/blockout_textures/1024/basic/white_cross.png new file mode 100644 index 0000000..8f73cd5 Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/white_cross.png differ diff --git a/assets/textures/blockout_textures/1024/basic/white_cross.png.import b/assets/textures/blockout_textures/1024/basic/white_cross.png.import new file mode 100644 index 0000000..3aa821a --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/white_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c31v1fr8r18nr" +path="res://.godot/imported/white_cross.png-076f7e7616136969a3286ad11d693b37.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/white_cross.png" +dest_files=["res://.godot/imported/white_cross.png-076f7e7616136969a3286ad11d693b37.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/white_dots.png b/assets/textures/blockout_textures/1024/basic/white_dots.png new file mode 100644 index 0000000..23e8a2a Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/white_dots.png differ diff --git a/assets/textures/blockout_textures/1024/basic/white_dots.png.import b/assets/textures/blockout_textures/1024/basic/white_dots.png.import new file mode 100644 index 0000000..fed34f3 --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/white_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dnamf5ixaqfby" +path="res://.godot/imported/white_dots.png-046a63f8cb6bc609ae7f45668e53f60b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/white_dots.png" +dest_files=["res://.godot/imported/white_dots.png-046a63f8cb6bc609ae7f45668e53f60b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/white_grid.png b/assets/textures/blockout_textures/1024/basic/white_grid.png new file mode 100644 index 0000000..56b108d Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/white_grid.png differ diff --git a/assets/textures/blockout_textures/1024/basic/white_grid.png.import b/assets/textures/blockout_textures/1024/basic/white_grid.png.import new file mode 100644 index 0000000..f0d545a --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/white_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://duy27daglbk2g" +path="res://.godot/imported/white_grid.png-25f7eeb9677be7e15c80bda6db6c0b8f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/white_grid.png" +dest_files=["res://.godot/imported/white_grid.png-25f7eeb9677be7e15c80bda6db6c0b8f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/yellow_check.png b/assets/textures/blockout_textures/1024/basic/yellow_check.png new file mode 100644 index 0000000..1803b40 Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/yellow_check.png differ diff --git a/assets/textures/blockout_textures/1024/basic/yellow_check.png.import b/assets/textures/blockout_textures/1024/basic/yellow_check.png.import new file mode 100644 index 0000000..528991f --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/yellow_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bf2v5c81rl3hr" +path="res://.godot/imported/yellow_check.png-eb193d106174051f70f59ba8af412f85.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/yellow_check.png" +dest_files=["res://.godot/imported/yellow_check.png-eb193d106174051f70f59ba8af412f85.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/yellow_cross.png b/assets/textures/blockout_textures/1024/basic/yellow_cross.png new file mode 100644 index 0000000..a61fe58 Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/yellow_cross.png differ diff --git a/assets/textures/blockout_textures/1024/basic/yellow_cross.png.import b/assets/textures/blockout_textures/1024/basic/yellow_cross.png.import new file mode 100644 index 0000000..462e372 --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/yellow_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://drlq24winab7c" +path="res://.godot/imported/yellow_cross.png-1d48d20f2af058b5a39e6bb7e89b2322.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/yellow_cross.png" +dest_files=["res://.godot/imported/yellow_cross.png-1d48d20f2af058b5a39e6bb7e89b2322.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/yellow_dots.png b/assets/textures/blockout_textures/1024/basic/yellow_dots.png new file mode 100644 index 0000000..97bf30d Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/yellow_dots.png differ diff --git a/assets/textures/blockout_textures/1024/basic/yellow_dots.png.import b/assets/textures/blockout_textures/1024/basic/yellow_dots.png.import new file mode 100644 index 0000000..5040521 --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/yellow_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dyb7kb3t3q0av" +path="res://.godot/imported/yellow_dots.png-849fb35d0bea7af9c8c8cb2328bb31c4.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/yellow_dots.png" +dest_files=["res://.godot/imported/yellow_dots.png-849fb35d0bea7af9c8c8cb2328bb31c4.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/yellow_grid.png b/assets/textures/blockout_textures/1024/basic/yellow_grid.png new file mode 100644 index 0000000..22bb5a7 Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/yellow_grid.png differ diff --git a/assets/textures/blockout_textures/1024/basic/yellow_grid.png.import b/assets/textures/blockout_textures/1024/basic/yellow_grid.png.import new file mode 100644 index 0000000..dcf5408 --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/yellow_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c6ylqsiuj460u" +path="res://.godot/imported/yellow_grid.png-cdfc9cd23f907d7a4a9f0ed5a0b11306.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/yellow_grid.png" +dest_files=["res://.godot/imported/yellow_grid.png-cdfc9cd23f907d7a4a9f0ed5a0b11306.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/yellow_light_check.png b/assets/textures/blockout_textures/1024/basic/yellow_light_check.png new file mode 100644 index 0000000..8ba4e8d Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/yellow_light_check.png differ diff --git a/assets/textures/blockout_textures/1024/basic/yellow_light_check.png.import b/assets/textures/blockout_textures/1024/basic/yellow_light_check.png.import new file mode 100644 index 0000000..0acc131 --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/yellow_light_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://byc2pe6fmt5k7" +path="res://.godot/imported/yellow_light_check.png-98be77d35bb8d236b48910de664a32f9.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/yellow_light_check.png" +dest_files=["res://.godot/imported/yellow_light_check.png-98be77d35bb8d236b48910de664a32f9.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/yellow_light_cross.png b/assets/textures/blockout_textures/1024/basic/yellow_light_cross.png new file mode 100644 index 0000000..70fed74 Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/yellow_light_cross.png differ diff --git a/assets/textures/blockout_textures/1024/basic/yellow_light_cross.png.import b/assets/textures/blockout_textures/1024/basic/yellow_light_cross.png.import new file mode 100644 index 0000000..74f3f88 --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/yellow_light_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cir8k1cni5p5y" +path="res://.godot/imported/yellow_light_cross.png-f83cdff61abb19c9a2b73054e9a95a66.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/yellow_light_cross.png" +dest_files=["res://.godot/imported/yellow_light_cross.png-f83cdff61abb19c9a2b73054e9a95a66.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/yellow_light_dots.png b/assets/textures/blockout_textures/1024/basic/yellow_light_dots.png new file mode 100644 index 0000000..f0391ab Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/yellow_light_dots.png differ diff --git a/assets/textures/blockout_textures/1024/basic/yellow_light_dots.png.import b/assets/textures/blockout_textures/1024/basic/yellow_light_dots.png.import new file mode 100644 index 0000000..e14a904 --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/yellow_light_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b6q6n85pt7c7h" +path="res://.godot/imported/yellow_light_dots.png-118aa215c2a9e958061dee10974d14da.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/yellow_light_dots.png" +dest_files=["res://.godot/imported/yellow_light_dots.png-118aa215c2a9e958061dee10974d14da.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/basic/yellow_light_grid.png b/assets/textures/blockout_textures/1024/basic/yellow_light_grid.png new file mode 100644 index 0000000..c10e262 Binary files /dev/null and b/assets/textures/blockout_textures/1024/basic/yellow_light_grid.png differ diff --git a/assets/textures/blockout_textures/1024/basic/yellow_light_grid.png.import b/assets/textures/blockout_textures/1024/basic/yellow_light_grid.png.import new file mode 100644 index 0000000..19506e7 --- /dev/null +++ b/assets/textures/blockout_textures/1024/basic/yellow_light_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ce71sf26bh07o" +path="res://.godot/imported/yellow_light_grid.png-596a5872552aa9b5ec3e47ed4f682a17.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/basic/yellow_light_grid.png" +dest_files=["res://.godot/imported/yellow_light_grid.png-596a5872552aa9b5ec3e47ed4f682a17.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/mark/aqua_mark_black.png b/assets/textures/blockout_textures/1024/mark/aqua_mark_black.png new file mode 100644 index 0000000..21ef976 Binary files /dev/null and b/assets/textures/blockout_textures/1024/mark/aqua_mark_black.png differ diff --git a/assets/textures/blockout_textures/1024/mark/aqua_mark_black.png.import b/assets/textures/blockout_textures/1024/mark/aqua_mark_black.png.import new file mode 100644 index 0000000..7fbf833 --- /dev/null +++ b/assets/textures/blockout_textures/1024/mark/aqua_mark_black.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://jls62qanyxj4" +path="res://.godot/imported/aqua_mark_black.png-5a5966dfb83f56ffe3c2aa65962d39af.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/mark/aqua_mark_black.png" +dest_files=["res://.godot/imported/aqua_mark_black.png-5a5966dfb83f56ffe3c2aa65962d39af.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/mark/aqua_mark_transparent.png b/assets/textures/blockout_textures/1024/mark/aqua_mark_transparent.png new file mode 100644 index 0000000..c7d69ef Binary files /dev/null and b/assets/textures/blockout_textures/1024/mark/aqua_mark_transparent.png differ diff --git a/assets/textures/blockout_textures/1024/mark/aqua_mark_transparent.png.import b/assets/textures/blockout_textures/1024/mark/aqua_mark_transparent.png.import new file mode 100644 index 0000000..f2665bd --- /dev/null +++ b/assets/textures/blockout_textures/1024/mark/aqua_mark_transparent.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dmcx65n4jhn7u" +path="res://.godot/imported/aqua_mark_transparent.png-e94a55261674add58dc3316446184dcb.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/mark/aqua_mark_transparent.png" +dest_files=["res://.godot/imported/aqua_mark_transparent.png-e94a55261674add58dc3316446184dcb.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/mark/aqua_mark_white.png b/assets/textures/blockout_textures/1024/mark/aqua_mark_white.png new file mode 100644 index 0000000..0f0e4f3 Binary files /dev/null and b/assets/textures/blockout_textures/1024/mark/aqua_mark_white.png differ diff --git a/assets/textures/blockout_textures/1024/mark/aqua_mark_white.png.import b/assets/textures/blockout_textures/1024/mark/aqua_mark_white.png.import new file mode 100644 index 0000000..4370c7c --- /dev/null +++ b/assets/textures/blockout_textures/1024/mark/aqua_mark_white.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://8y7v46lyc05g" +path="res://.godot/imported/aqua_mark_white.png-3efb1c51db6a0deaefa9b052cccc94c8.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/mark/aqua_mark_white.png" +dest_files=["res://.godot/imported/aqua_mark_white.png-3efb1c51db6a0deaefa9b052cccc94c8.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/mark/black_mark.png b/assets/textures/blockout_textures/1024/mark/black_mark.png new file mode 100644 index 0000000..26b0ab2 Binary files /dev/null and b/assets/textures/blockout_textures/1024/mark/black_mark.png differ diff --git a/assets/textures/blockout_textures/1024/mark/black_mark.png.import b/assets/textures/blockout_textures/1024/mark/black_mark.png.import new file mode 100644 index 0000000..873b44b --- /dev/null +++ b/assets/textures/blockout_textures/1024/mark/black_mark.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dpw88oqslnco0" +path="res://.godot/imported/black_mark.png-b205409cc4532a2a5009c90b3bec2db3.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/mark/black_mark.png" +dest_files=["res://.godot/imported/black_mark.png-b205409cc4532a2a5009c90b3bec2db3.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/mark/blue_mark_black.png b/assets/textures/blockout_textures/1024/mark/blue_mark_black.png new file mode 100644 index 0000000..3dec9b1 Binary files /dev/null and b/assets/textures/blockout_textures/1024/mark/blue_mark_black.png differ diff --git a/assets/textures/blockout_textures/1024/mark/blue_mark_black.png.import b/assets/textures/blockout_textures/1024/mark/blue_mark_black.png.import new file mode 100644 index 0000000..a3b4cfe --- /dev/null +++ b/assets/textures/blockout_textures/1024/mark/blue_mark_black.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bvyjpelo21pe7" +path="res://.godot/imported/blue_mark_black.png-b7a1ef0899cd4a1a062ddf4e85680dc4.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/mark/blue_mark_black.png" +dest_files=["res://.godot/imported/blue_mark_black.png-b7a1ef0899cd4a1a062ddf4e85680dc4.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/mark/blue_mark_transparent.png b/assets/textures/blockout_textures/1024/mark/blue_mark_transparent.png new file mode 100644 index 0000000..76522aa Binary files /dev/null and b/assets/textures/blockout_textures/1024/mark/blue_mark_transparent.png differ diff --git a/assets/textures/blockout_textures/1024/mark/blue_mark_transparent.png.import b/assets/textures/blockout_textures/1024/mark/blue_mark_transparent.png.import new file mode 100644 index 0000000..44f8fa5 --- /dev/null +++ b/assets/textures/blockout_textures/1024/mark/blue_mark_transparent.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bnvem0y1rp282" +path="res://.godot/imported/blue_mark_transparent.png-802b513d9a0908444207c7bef44037ba.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/mark/blue_mark_transparent.png" +dest_files=["res://.godot/imported/blue_mark_transparent.png-802b513d9a0908444207c7bef44037ba.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/mark/blue_mark_white.png b/assets/textures/blockout_textures/1024/mark/blue_mark_white.png new file mode 100644 index 0000000..150db10 Binary files /dev/null and b/assets/textures/blockout_textures/1024/mark/blue_mark_white.png differ diff --git a/assets/textures/blockout_textures/1024/mark/blue_mark_white.png.import b/assets/textures/blockout_textures/1024/mark/blue_mark_white.png.import new file mode 100644 index 0000000..f2e3be3 --- /dev/null +++ b/assets/textures/blockout_textures/1024/mark/blue_mark_white.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dvfyy5oo0fjiq" +path="res://.godot/imported/blue_mark_white.png-f55c1a55353725af46ff1ff08c16962d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/mark/blue_mark_white.png" +dest_files=["res://.godot/imported/blue_mark_white.png-f55c1a55353725af46ff1ff08c16962d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/mark/gray_mark.png b/assets/textures/blockout_textures/1024/mark/gray_mark.png new file mode 100644 index 0000000..60da4ce Binary files /dev/null and b/assets/textures/blockout_textures/1024/mark/gray_mark.png differ diff --git a/assets/textures/blockout_textures/1024/mark/gray_mark.png.import b/assets/textures/blockout_textures/1024/mark/gray_mark.png.import new file mode 100644 index 0000000..49702f6 --- /dev/null +++ b/assets/textures/blockout_textures/1024/mark/gray_mark.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://rhpn454more2" +path="res://.godot/imported/gray_mark.png-8380cc2e0d6bd9b8ce64e2b1f62fb876.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/mark/gray_mark.png" +dest_files=["res://.godot/imported/gray_mark.png-8380cc2e0d6bd9b8ce64e2b1f62fb876.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/mark/green_mark_black.png b/assets/textures/blockout_textures/1024/mark/green_mark_black.png new file mode 100644 index 0000000..3ad4538 Binary files /dev/null and b/assets/textures/blockout_textures/1024/mark/green_mark_black.png differ diff --git a/assets/textures/blockout_textures/1024/mark/green_mark_black.png.import b/assets/textures/blockout_textures/1024/mark/green_mark_black.png.import new file mode 100644 index 0000000..613d03d --- /dev/null +++ b/assets/textures/blockout_textures/1024/mark/green_mark_black.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bkyk4skp7wlax" +path="res://.godot/imported/green_mark_black.png-fedf0f3dee0ea7734a1524102cc5fcb1.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/mark/green_mark_black.png" +dest_files=["res://.godot/imported/green_mark_black.png-fedf0f3dee0ea7734a1524102cc5fcb1.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/mark/green_mark_transparent.png b/assets/textures/blockout_textures/1024/mark/green_mark_transparent.png new file mode 100644 index 0000000..d33e6ee Binary files /dev/null and b/assets/textures/blockout_textures/1024/mark/green_mark_transparent.png differ diff --git a/assets/textures/blockout_textures/1024/mark/green_mark_transparent.png.import b/assets/textures/blockout_textures/1024/mark/green_mark_transparent.png.import new file mode 100644 index 0000000..055bdcf --- /dev/null +++ b/assets/textures/blockout_textures/1024/mark/green_mark_transparent.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cyyu6phypmo8x" +path="res://.godot/imported/green_mark_transparent.png-c2a0e13a25326e95813116a55c53d703.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/mark/green_mark_transparent.png" +dest_files=["res://.godot/imported/green_mark_transparent.png-c2a0e13a25326e95813116a55c53d703.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/mark/green_mark_white.png b/assets/textures/blockout_textures/1024/mark/green_mark_white.png new file mode 100644 index 0000000..7794e82 Binary files /dev/null and b/assets/textures/blockout_textures/1024/mark/green_mark_white.png differ diff --git a/assets/textures/blockout_textures/1024/mark/green_mark_white.png.import b/assets/textures/blockout_textures/1024/mark/green_mark_white.png.import new file mode 100644 index 0000000..7f54fda --- /dev/null +++ b/assets/textures/blockout_textures/1024/mark/green_mark_white.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cqxbxlm6num1k" +path="res://.godot/imported/green_mark_white.png-eecfc6f7c2e49c96cbdf3fa295752b08.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/mark/green_mark_white.png" +dest_files=["res://.godot/imported/green_mark_white.png-eecfc6f7c2e49c96cbdf3fa295752b08.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/mark/orange_mark_black.png b/assets/textures/blockout_textures/1024/mark/orange_mark_black.png new file mode 100644 index 0000000..36a5e78 Binary files /dev/null and b/assets/textures/blockout_textures/1024/mark/orange_mark_black.png differ diff --git a/assets/textures/blockout_textures/1024/mark/orange_mark_black.png.import b/assets/textures/blockout_textures/1024/mark/orange_mark_black.png.import new file mode 100644 index 0000000..5b6b6d5 --- /dev/null +++ b/assets/textures/blockout_textures/1024/mark/orange_mark_black.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bbs11yybqg0jm" +path="res://.godot/imported/orange_mark_black.png-a1174fa219b643c97fb9632ed77e47a8.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/mark/orange_mark_black.png" +dest_files=["res://.godot/imported/orange_mark_black.png-a1174fa219b643c97fb9632ed77e47a8.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/mark/orange_mark_transparent.png b/assets/textures/blockout_textures/1024/mark/orange_mark_transparent.png new file mode 100644 index 0000000..cb39d93 Binary files /dev/null and b/assets/textures/blockout_textures/1024/mark/orange_mark_transparent.png differ diff --git a/assets/textures/blockout_textures/1024/mark/orange_mark_transparent.png.import b/assets/textures/blockout_textures/1024/mark/orange_mark_transparent.png.import new file mode 100644 index 0000000..0527c4d --- /dev/null +++ b/assets/textures/blockout_textures/1024/mark/orange_mark_transparent.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://rppcuedid02c" +path="res://.godot/imported/orange_mark_transparent.png-c0f297fce768c58c79ce254e9f76d69e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/mark/orange_mark_transparent.png" +dest_files=["res://.godot/imported/orange_mark_transparent.png-c0f297fce768c58c79ce254e9f76d69e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/mark/orange_mark_white.png b/assets/textures/blockout_textures/1024/mark/orange_mark_white.png new file mode 100644 index 0000000..8c6456e Binary files /dev/null and b/assets/textures/blockout_textures/1024/mark/orange_mark_white.png differ diff --git a/assets/textures/blockout_textures/1024/mark/orange_mark_white.png.import b/assets/textures/blockout_textures/1024/mark/orange_mark_white.png.import new file mode 100644 index 0000000..e709765 --- /dev/null +++ b/assets/textures/blockout_textures/1024/mark/orange_mark_white.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dcxwkm608tn8p" +path="res://.godot/imported/orange_mark_white.png-c68d6423fb748f5dc9b0f7ad05ebf729.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/mark/orange_mark_white.png" +dest_files=["res://.godot/imported/orange_mark_white.png-c68d6423fb748f5dc9b0f7ad05ebf729.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/mark/purple_mark_black.png b/assets/textures/blockout_textures/1024/mark/purple_mark_black.png new file mode 100644 index 0000000..c512790 Binary files /dev/null and b/assets/textures/blockout_textures/1024/mark/purple_mark_black.png differ diff --git a/assets/textures/blockout_textures/1024/mark/purple_mark_black.png.import b/assets/textures/blockout_textures/1024/mark/purple_mark_black.png.import new file mode 100644 index 0000000..842f79a --- /dev/null +++ b/assets/textures/blockout_textures/1024/mark/purple_mark_black.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://di0gdi5eq4pdb" +path="res://.godot/imported/purple_mark_black.png-215fec364a724cdcc731bc05d1ab24cd.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/mark/purple_mark_black.png" +dest_files=["res://.godot/imported/purple_mark_black.png-215fec364a724cdcc731bc05d1ab24cd.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/mark/purple_mark_transparent.png b/assets/textures/blockout_textures/1024/mark/purple_mark_transparent.png new file mode 100644 index 0000000..5260beb Binary files /dev/null and b/assets/textures/blockout_textures/1024/mark/purple_mark_transparent.png differ diff --git a/assets/textures/blockout_textures/1024/mark/purple_mark_transparent.png.import b/assets/textures/blockout_textures/1024/mark/purple_mark_transparent.png.import new file mode 100644 index 0000000..4dd29be --- /dev/null +++ b/assets/textures/blockout_textures/1024/mark/purple_mark_transparent.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://66aoqi40pce8" +path="res://.godot/imported/purple_mark_transparent.png-e1884674151cbf19ece4d79a3616ce50.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/mark/purple_mark_transparent.png" +dest_files=["res://.godot/imported/purple_mark_transparent.png-e1884674151cbf19ece4d79a3616ce50.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/mark/purple_mark_white.png b/assets/textures/blockout_textures/1024/mark/purple_mark_white.png new file mode 100644 index 0000000..6bbdccb Binary files /dev/null and b/assets/textures/blockout_textures/1024/mark/purple_mark_white.png differ diff --git a/assets/textures/blockout_textures/1024/mark/purple_mark_white.png.import b/assets/textures/blockout_textures/1024/mark/purple_mark_white.png.import new file mode 100644 index 0000000..6c6c62d --- /dev/null +++ b/assets/textures/blockout_textures/1024/mark/purple_mark_white.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cb512prxyx6vc" +path="res://.godot/imported/purple_mark_white.png-04449dda542ed36abb817b16a628fef9.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/mark/purple_mark_white.png" +dest_files=["res://.godot/imported/purple_mark_white.png-04449dda542ed36abb817b16a628fef9.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/mark/red_mark_black.png b/assets/textures/blockout_textures/1024/mark/red_mark_black.png new file mode 100644 index 0000000..be9ab0b Binary files /dev/null and b/assets/textures/blockout_textures/1024/mark/red_mark_black.png differ diff --git a/assets/textures/blockout_textures/1024/mark/red_mark_black.png.import b/assets/textures/blockout_textures/1024/mark/red_mark_black.png.import new file mode 100644 index 0000000..8d420a7 --- /dev/null +++ b/assets/textures/blockout_textures/1024/mark/red_mark_black.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bxcu73b24775n" +path="res://.godot/imported/red_mark_black.png-50192b30e1a6d97578304c64cd0a47db.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/mark/red_mark_black.png" +dest_files=["res://.godot/imported/red_mark_black.png-50192b30e1a6d97578304c64cd0a47db.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/mark/red_mark_transparent.png b/assets/textures/blockout_textures/1024/mark/red_mark_transparent.png new file mode 100644 index 0000000..24ce2d3 Binary files /dev/null and b/assets/textures/blockout_textures/1024/mark/red_mark_transparent.png differ diff --git a/assets/textures/blockout_textures/1024/mark/red_mark_transparent.png.import b/assets/textures/blockout_textures/1024/mark/red_mark_transparent.png.import new file mode 100644 index 0000000..71066d7 --- /dev/null +++ b/assets/textures/blockout_textures/1024/mark/red_mark_transparent.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cd64qej6ko8jg" +path="res://.godot/imported/red_mark_transparent.png-123189f94f93f81fa6ae229b00685f71.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/mark/red_mark_transparent.png" +dest_files=["res://.godot/imported/red_mark_transparent.png-123189f94f93f81fa6ae229b00685f71.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/mark/red_mark_white.png b/assets/textures/blockout_textures/1024/mark/red_mark_white.png new file mode 100644 index 0000000..ab5b546 Binary files /dev/null and b/assets/textures/blockout_textures/1024/mark/red_mark_white.png differ diff --git a/assets/textures/blockout_textures/1024/mark/red_mark_white.png.import b/assets/textures/blockout_textures/1024/mark/red_mark_white.png.import new file mode 100644 index 0000000..ba277a8 --- /dev/null +++ b/assets/textures/blockout_textures/1024/mark/red_mark_white.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bt08bbtgcvimk" +path="res://.godot/imported/red_mark_white.png-8df430f2a4ffefd6cff0a709fc8bdd9c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/mark/red_mark_white.png" +dest_files=["res://.godot/imported/red_mark_white.png-8df430f2a4ffefd6cff0a709fc8bdd9c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/mark/white_mark.png b/assets/textures/blockout_textures/1024/mark/white_mark.png new file mode 100644 index 0000000..d4b10be Binary files /dev/null and b/assets/textures/blockout_textures/1024/mark/white_mark.png differ diff --git a/assets/textures/blockout_textures/1024/mark/white_mark.png.import b/assets/textures/blockout_textures/1024/mark/white_mark.png.import new file mode 100644 index 0000000..7d1c546 --- /dev/null +++ b/assets/textures/blockout_textures/1024/mark/white_mark.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://kfpfivbc2bdr" +path="res://.godot/imported/white_mark.png-4025eeb7c95ce01ecf22c7e9ffce1808.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/mark/white_mark.png" +dest_files=["res://.godot/imported/white_mark.png-4025eeb7c95ce01ecf22c7e9ffce1808.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/mark/yellow_mark_black.png b/assets/textures/blockout_textures/1024/mark/yellow_mark_black.png new file mode 100644 index 0000000..0e15c8c Binary files /dev/null and b/assets/textures/blockout_textures/1024/mark/yellow_mark_black.png differ diff --git a/assets/textures/blockout_textures/1024/mark/yellow_mark_black.png.import b/assets/textures/blockout_textures/1024/mark/yellow_mark_black.png.import new file mode 100644 index 0000000..36df03f --- /dev/null +++ b/assets/textures/blockout_textures/1024/mark/yellow_mark_black.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://w5mt22y18wub" +path="res://.godot/imported/yellow_mark_black.png-7208f1b94baf4025ff0370b8ee688892.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/mark/yellow_mark_black.png" +dest_files=["res://.godot/imported/yellow_mark_black.png-7208f1b94baf4025ff0370b8ee688892.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/mark/yellow_mark_transparent.png b/assets/textures/blockout_textures/1024/mark/yellow_mark_transparent.png new file mode 100644 index 0000000..b84671e Binary files /dev/null and b/assets/textures/blockout_textures/1024/mark/yellow_mark_transparent.png differ diff --git a/assets/textures/blockout_textures/1024/mark/yellow_mark_transparent.png.import b/assets/textures/blockout_textures/1024/mark/yellow_mark_transparent.png.import new file mode 100644 index 0000000..a237cde --- /dev/null +++ b/assets/textures/blockout_textures/1024/mark/yellow_mark_transparent.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dknjqf1urcf7o" +path="res://.godot/imported/yellow_mark_transparent.png-3d040955ee0ac2454534a06314317c20.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/mark/yellow_mark_transparent.png" +dest_files=["res://.godot/imported/yellow_mark_transparent.png-3d040955ee0ac2454534a06314317c20.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/mark/yellow_mark_white.png b/assets/textures/blockout_textures/1024/mark/yellow_mark_white.png new file mode 100644 index 0000000..54c3a2e Binary files /dev/null and b/assets/textures/blockout_textures/1024/mark/yellow_mark_white.png differ diff --git a/assets/textures/blockout_textures/1024/mark/yellow_mark_white.png.import b/assets/textures/blockout_textures/1024/mark/yellow_mark_white.png.import new file mode 100644 index 0000000..0a04a6a --- /dev/null +++ b/assets/textures/blockout_textures/1024/mark/yellow_mark_white.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://h8pq4xmwo6ul" +path="res://.godot/imported/yellow_mark_white.png-01a2b420c2164a2f6e40ed2b625c7883.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/mark/yellow_mark_white.png" +dest_files=["res://.godot/imported/yellow_mark_white.png-01a2b420c2164a2f6e40ed2b625c7883.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/nature/nature_grass_1.png b/assets/textures/blockout_textures/1024/nature/nature_grass_1.png new file mode 100644 index 0000000..aae7c7b Binary files /dev/null and b/assets/textures/blockout_textures/1024/nature/nature_grass_1.png differ diff --git a/assets/textures/blockout_textures/1024/nature/nature_grass_1.png.import b/assets/textures/blockout_textures/1024/nature/nature_grass_1.png.import new file mode 100644 index 0000000..ea1b5d0 --- /dev/null +++ b/assets/textures/blockout_textures/1024/nature/nature_grass_1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b5d6n5atnu132" +path="res://.godot/imported/nature_grass_1.png-4803b111a44cc0e5e72471d61f7f8bb0.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/nature/nature_grass_1.png" +dest_files=["res://.godot/imported/nature_grass_1.png-4803b111a44cc0e5e72471d61f7f8bb0.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/nature/nature_grass_2.png b/assets/textures/blockout_textures/1024/nature/nature_grass_2.png new file mode 100644 index 0000000..2c79e08 Binary files /dev/null and b/assets/textures/blockout_textures/1024/nature/nature_grass_2.png differ diff --git a/assets/textures/blockout_textures/1024/nature/nature_grass_2.png.import b/assets/textures/blockout_textures/1024/nature/nature_grass_2.png.import new file mode 100644 index 0000000..b6a02b0 --- /dev/null +++ b/assets/textures/blockout_textures/1024/nature/nature_grass_2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://moofeu6seoo0" +path="res://.godot/imported/nature_grass_2.png-882a11f4f1cfdc818591983c9d14f16b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/nature/nature_grass_2.png" +dest_files=["res://.godot/imported/nature_grass_2.png-882a11f4f1cfdc818591983c9d14f16b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/nature/nature_grass_3.png b/assets/textures/blockout_textures/1024/nature/nature_grass_3.png new file mode 100644 index 0000000..b79342b Binary files /dev/null and b/assets/textures/blockout_textures/1024/nature/nature_grass_3.png differ diff --git a/assets/textures/blockout_textures/1024/nature/nature_grass_3.png.import b/assets/textures/blockout_textures/1024/nature/nature_grass_3.png.import new file mode 100644 index 0000000..1a84e5f --- /dev/null +++ b/assets/textures/blockout_textures/1024/nature/nature_grass_3.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bbyn3xpes6q7x" +path="res://.godot/imported/nature_grass_3.png-c1bfc0c458fa3c283d2ddabe5afea52d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/nature/nature_grass_3.png" +dest_files=["res://.godot/imported/nature_grass_3.png-c1bfc0c458fa3c283d2ddabe5afea52d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/nature/nature_grass_4.png b/assets/textures/blockout_textures/1024/nature/nature_grass_4.png new file mode 100644 index 0000000..49e56c0 Binary files /dev/null and b/assets/textures/blockout_textures/1024/nature/nature_grass_4.png differ diff --git a/assets/textures/blockout_textures/1024/nature/nature_grass_4.png.import b/assets/textures/blockout_textures/1024/nature/nature_grass_4.png.import new file mode 100644 index 0000000..0c00786 --- /dev/null +++ b/assets/textures/blockout_textures/1024/nature/nature_grass_4.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dl8xcryqxkiur" +path="res://.godot/imported/nature_grass_4.png-9517f9f7e103d8284011e6aa8a19faf2.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/nature/nature_grass_4.png" +dest_files=["res://.godot/imported/nature_grass_4.png-9517f9f7e103d8284011e6aa8a19faf2.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/nature/nature_ground_1.png b/assets/textures/blockout_textures/1024/nature/nature_ground_1.png new file mode 100644 index 0000000..818f5d7 Binary files /dev/null and b/assets/textures/blockout_textures/1024/nature/nature_ground_1.png differ diff --git a/assets/textures/blockout_textures/1024/nature/nature_ground_1.png.import b/assets/textures/blockout_textures/1024/nature/nature_ground_1.png.import new file mode 100644 index 0000000..c309f4f --- /dev/null +++ b/assets/textures/blockout_textures/1024/nature/nature_ground_1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dxpl4p3shcvx4" +path="res://.godot/imported/nature_ground_1.png-fab45611d1a56e53bf72fb3f21baf83a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/nature/nature_ground_1.png" +dest_files=["res://.godot/imported/nature_ground_1.png-fab45611d1a56e53bf72fb3f21baf83a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/nature/nature_ground_2.png b/assets/textures/blockout_textures/1024/nature/nature_ground_2.png new file mode 100644 index 0000000..2df64ce Binary files /dev/null and b/assets/textures/blockout_textures/1024/nature/nature_ground_2.png differ diff --git a/assets/textures/blockout_textures/1024/nature/nature_ground_2.png.import b/assets/textures/blockout_textures/1024/nature/nature_ground_2.png.import new file mode 100644 index 0000000..3c3ae42 --- /dev/null +++ b/assets/textures/blockout_textures/1024/nature/nature_ground_2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bt6gx5ko7lfci" +path="res://.godot/imported/nature_ground_2.png-ea9cf4de0b9ab9d55097e9448620adc3.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/nature/nature_ground_2.png" +dest_files=["res://.godot/imported/nature_ground_2.png-ea9cf4de0b9ab9d55097e9448620adc3.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/nature/nature_ground_3.png b/assets/textures/blockout_textures/1024/nature/nature_ground_3.png new file mode 100644 index 0000000..1591522 Binary files /dev/null and b/assets/textures/blockout_textures/1024/nature/nature_ground_3.png differ diff --git a/assets/textures/blockout_textures/1024/nature/nature_ground_3.png.import b/assets/textures/blockout_textures/1024/nature/nature_ground_3.png.import new file mode 100644 index 0000000..a23c13d --- /dev/null +++ b/assets/textures/blockout_textures/1024/nature/nature_ground_3.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://caa4gb8dqfenc" +path="res://.godot/imported/nature_ground_3.png-138beb897c22cebf41784dba8d2896e2.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/nature/nature_ground_3.png" +dest_files=["res://.godot/imported/nature_ground_3.png-138beb897c22cebf41784dba8d2896e2.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/nature/nature_ground_4.png b/assets/textures/blockout_textures/1024/nature/nature_ground_4.png new file mode 100644 index 0000000..f352c0e Binary files /dev/null and b/assets/textures/blockout_textures/1024/nature/nature_ground_4.png differ diff --git a/assets/textures/blockout_textures/1024/nature/nature_ground_4.png.import b/assets/textures/blockout_textures/1024/nature/nature_ground_4.png.import new file mode 100644 index 0000000..b98f65f --- /dev/null +++ b/assets/textures/blockout_textures/1024/nature/nature_ground_4.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ddn4wr8qbfph5" +path="res://.godot/imported/nature_ground_4.png-995ef3fa42a59f7ed68a8265e343b56e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/nature/nature_ground_4.png" +dest_files=["res://.godot/imported/nature_ground_4.png-995ef3fa42a59f7ed68a8265e343b56e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/nature/nature_rock_1.png b/assets/textures/blockout_textures/1024/nature/nature_rock_1.png new file mode 100644 index 0000000..015ad11 Binary files /dev/null and b/assets/textures/blockout_textures/1024/nature/nature_rock_1.png differ diff --git a/assets/textures/blockout_textures/1024/nature/nature_rock_1.png.import b/assets/textures/blockout_textures/1024/nature/nature_rock_1.png.import new file mode 100644 index 0000000..5ab4e23 --- /dev/null +++ b/assets/textures/blockout_textures/1024/nature/nature_rock_1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bisx7cq0rwn2b" +path="res://.godot/imported/nature_rock_1.png-1a65ef1b361324be0f62059ff7f0bda0.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/nature/nature_rock_1.png" +dest_files=["res://.godot/imported/nature_rock_1.png-1a65ef1b361324be0f62059ff7f0bda0.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/nature/nature_rock_2.png b/assets/textures/blockout_textures/1024/nature/nature_rock_2.png new file mode 100644 index 0000000..a828fde Binary files /dev/null and b/assets/textures/blockout_textures/1024/nature/nature_rock_2.png differ diff --git a/assets/textures/blockout_textures/1024/nature/nature_rock_2.png.import b/assets/textures/blockout_textures/1024/nature/nature_rock_2.png.import new file mode 100644 index 0000000..f841bf0 --- /dev/null +++ b/assets/textures/blockout_textures/1024/nature/nature_rock_2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cpkj5ods1pmdv" +path="res://.godot/imported/nature_rock_2.png-fd858926e7ae60ca31dbe2648e035bda.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/nature/nature_rock_2.png" +dest_files=["res://.godot/imported/nature_rock_2.png-fd858926e7ae60ca31dbe2648e035bda.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/nature/nature_rock_3.png b/assets/textures/blockout_textures/1024/nature/nature_rock_3.png new file mode 100644 index 0000000..d0e2c13 Binary files /dev/null and b/assets/textures/blockout_textures/1024/nature/nature_rock_3.png differ diff --git a/assets/textures/blockout_textures/1024/nature/nature_rock_3.png.import b/assets/textures/blockout_textures/1024/nature/nature_rock_3.png.import new file mode 100644 index 0000000..772eea8 --- /dev/null +++ b/assets/textures/blockout_textures/1024/nature/nature_rock_3.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://diajtx6johu12" +path="res://.godot/imported/nature_rock_3.png-aae555b60e7cdb0741f2e7b00d610e6b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/nature/nature_rock_3.png" +dest_files=["res://.godot/imported/nature_rock_3.png-aae555b60e7cdb0741f2e7b00d610e6b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/nature/nature_rock_4.png b/assets/textures/blockout_textures/1024/nature/nature_rock_4.png new file mode 100644 index 0000000..de5c01e Binary files /dev/null and b/assets/textures/blockout_textures/1024/nature/nature_rock_4.png differ diff --git a/assets/textures/blockout_textures/1024/nature/nature_rock_4.png.import b/assets/textures/blockout_textures/1024/nature/nature_rock_4.png.import new file mode 100644 index 0000000..14722ad --- /dev/null +++ b/assets/textures/blockout_textures/1024/nature/nature_rock_4.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://8wvoh5smu01o" +path="res://.godot/imported/nature_rock_4.png-d42cf96ac24b451444eb7ffe97bd8d72.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/nature/nature_rock_4.png" +dest_files=["res://.godot/imported/nature_rock_4.png-d42cf96ac24b451444eb7ffe97bd8d72.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/nature/nature_sand_1.png b/assets/textures/blockout_textures/1024/nature/nature_sand_1.png new file mode 100644 index 0000000..c9b9dad Binary files /dev/null and b/assets/textures/blockout_textures/1024/nature/nature_sand_1.png differ diff --git a/assets/textures/blockout_textures/1024/nature/nature_sand_1.png.import b/assets/textures/blockout_textures/1024/nature/nature_sand_1.png.import new file mode 100644 index 0000000..98617fe --- /dev/null +++ b/assets/textures/blockout_textures/1024/nature/nature_sand_1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://iwqyomqdxhu1" +path="res://.godot/imported/nature_sand_1.png-47e563b102b9e422fe4b6eb518518baf.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/nature/nature_sand_1.png" +dest_files=["res://.godot/imported/nature_sand_1.png-47e563b102b9e422fe4b6eb518518baf.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/nature/nature_sand_2.png b/assets/textures/blockout_textures/1024/nature/nature_sand_2.png new file mode 100644 index 0000000..6d41671 Binary files /dev/null and b/assets/textures/blockout_textures/1024/nature/nature_sand_2.png differ diff --git a/assets/textures/blockout_textures/1024/nature/nature_sand_2.png.import b/assets/textures/blockout_textures/1024/nature/nature_sand_2.png.import new file mode 100644 index 0000000..ccb9d26 --- /dev/null +++ b/assets/textures/blockout_textures/1024/nature/nature_sand_2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cphu1mv2tx42e" +path="res://.godot/imported/nature_sand_2.png-9ae4c3a2511f58246e5b6d27962b0a62.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/nature/nature_sand_2.png" +dest_files=["res://.godot/imported/nature_sand_2.png-9ae4c3a2511f58246e5b6d27962b0a62.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/nature/nature_sand_3.png b/assets/textures/blockout_textures/1024/nature/nature_sand_3.png new file mode 100644 index 0000000..4ecb546 Binary files /dev/null and b/assets/textures/blockout_textures/1024/nature/nature_sand_3.png differ diff --git a/assets/textures/blockout_textures/1024/nature/nature_sand_3.png.import b/assets/textures/blockout_textures/1024/nature/nature_sand_3.png.import new file mode 100644 index 0000000..b5affa0 --- /dev/null +++ b/assets/textures/blockout_textures/1024/nature/nature_sand_3.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://co4lrjwkwetke" +path="res://.godot/imported/nature_sand_3.png-2bf60de5210560e1f167160de7d75154.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/nature/nature_sand_3.png" +dest_files=["res://.godot/imported/nature_sand_3.png-2bf60de5210560e1f167160de7d75154.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/nature/nature_sand_4.png b/assets/textures/blockout_textures/1024/nature/nature_sand_4.png new file mode 100644 index 0000000..202adc8 Binary files /dev/null and b/assets/textures/blockout_textures/1024/nature/nature_sand_4.png differ diff --git a/assets/textures/blockout_textures/1024/nature/nature_sand_4.png.import b/assets/textures/blockout_textures/1024/nature/nature_sand_4.png.import new file mode 100644 index 0000000..82943ca --- /dev/null +++ b/assets/textures/blockout_textures/1024/nature/nature_sand_4.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d1ov2wuulisf2" +path="res://.godot/imported/nature_sand_4.png-a708f4345af284320e390ebf1df86b3a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/nature/nature_sand_4.png" +dest_files=["res://.godot/imported/nature_sand_4.png-a708f4345af284320e390ebf1df86b3a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/nature/nature_water_1.png b/assets/textures/blockout_textures/1024/nature/nature_water_1.png new file mode 100644 index 0000000..ad72aeb Binary files /dev/null and b/assets/textures/blockout_textures/1024/nature/nature_water_1.png differ diff --git a/assets/textures/blockout_textures/1024/nature/nature_water_1.png.import b/assets/textures/blockout_textures/1024/nature/nature_water_1.png.import new file mode 100644 index 0000000..127cb1f --- /dev/null +++ b/assets/textures/blockout_textures/1024/nature/nature_water_1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dyfytx1jum87" +path="res://.godot/imported/nature_water_1.png-362b59bc5ab66132e1e0c877d437d941.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/nature/nature_water_1.png" +dest_files=["res://.godot/imported/nature_water_1.png-362b59bc5ab66132e1e0c877d437d941.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/nature/nature_water_2.png b/assets/textures/blockout_textures/1024/nature/nature_water_2.png new file mode 100644 index 0000000..7d0bbdf Binary files /dev/null and b/assets/textures/blockout_textures/1024/nature/nature_water_2.png differ diff --git a/assets/textures/blockout_textures/1024/nature/nature_water_2.png.import b/assets/textures/blockout_textures/1024/nature/nature_water_2.png.import new file mode 100644 index 0000000..a51bb9b --- /dev/null +++ b/assets/textures/blockout_textures/1024/nature/nature_water_2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b8ku0emywne5t" +path="res://.godot/imported/nature_water_2.png-946c02f294749eb334a80ef1a39b11e2.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/nature/nature_water_2.png" +dest_files=["res://.godot/imported/nature_water_2.png-946c02f294749eb334a80ef1a39b11e2.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/nature/nature_water_3.png b/assets/textures/blockout_textures/1024/nature/nature_water_3.png new file mode 100644 index 0000000..1dac10a Binary files /dev/null and b/assets/textures/blockout_textures/1024/nature/nature_water_3.png differ diff --git a/assets/textures/blockout_textures/1024/nature/nature_water_3.png.import b/assets/textures/blockout_textures/1024/nature/nature_water_3.png.import new file mode 100644 index 0000000..4fdab96 --- /dev/null +++ b/assets/textures/blockout_textures/1024/nature/nature_water_3.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b1sg1iwxa5g3w" +path="res://.godot/imported/nature_water_3.png-ce61c5f62d8fd6c78d1b2e8c2bc05c68.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/nature/nature_water_3.png" +dest_files=["res://.godot/imported/nature_water_3.png-ce61c5f62d8fd6c78d1b2e8c2bc05c68.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/1024/nature/nature_water_4.png b/assets/textures/blockout_textures/1024/nature/nature_water_4.png new file mode 100644 index 0000000..a166e78 Binary files /dev/null and b/assets/textures/blockout_textures/1024/nature/nature_water_4.png differ diff --git a/assets/textures/blockout_textures/1024/nature/nature_water_4.png.import b/assets/textures/blockout_textures/1024/nature/nature_water_4.png.import new file mode 100644 index 0000000..ef67069 --- /dev/null +++ b/assets/textures/blockout_textures/1024/nature/nature_water_4.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dtga18t66ltcl" +path="res://.godot/imported/nature_water_4.png-222f2ffd7a87b1eb3b52373c89e77779.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/1024/nature/nature_water_4.png" +dest_files=["res://.godot/imported/nature_water_4.png-222f2ffd7a87b1eb3b52373c89e77779.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/aqua_check.png b/assets/textures/blockout_textures/128/basic/aqua_check.png new file mode 100644 index 0000000..ee017ff Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/aqua_check.png differ diff --git a/assets/textures/blockout_textures/128/basic/aqua_check.png.import b/assets/textures/blockout_textures/128/basic/aqua_check.png.import new file mode 100644 index 0000000..f5e14e7 --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/aqua_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://o1thgxeipdcw" +path="res://.godot/imported/aqua_check.png-5fcdd3b094c155e1ba944ba20047e769.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/aqua_check.png" +dest_files=["res://.godot/imported/aqua_check.png-5fcdd3b094c155e1ba944ba20047e769.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/aqua_cross.png b/assets/textures/blockout_textures/128/basic/aqua_cross.png new file mode 100644 index 0000000..1b85d2a Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/aqua_cross.png differ diff --git a/assets/textures/blockout_textures/128/basic/aqua_cross.png.import b/assets/textures/blockout_textures/128/basic/aqua_cross.png.import new file mode 100644 index 0000000..b1420d0 --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/aqua_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cpuo3syyyjqa8" +path="res://.godot/imported/aqua_cross.png-d33d2ea2d133dcfe9fea5fb518bb6133.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/aqua_cross.png" +dest_files=["res://.godot/imported/aqua_cross.png-d33d2ea2d133dcfe9fea5fb518bb6133.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/aqua_dots.png b/assets/textures/blockout_textures/128/basic/aqua_dots.png new file mode 100644 index 0000000..39e5a35 Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/aqua_dots.png differ diff --git a/assets/textures/blockout_textures/128/basic/aqua_dots.png.import b/assets/textures/blockout_textures/128/basic/aqua_dots.png.import new file mode 100644 index 0000000..c600f1c --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/aqua_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bkcci6nasr3af" +path="res://.godot/imported/aqua_dots.png-17625dc323d16dc2c7c5f6afb11aa03a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/aqua_dots.png" +dest_files=["res://.godot/imported/aqua_dots.png-17625dc323d16dc2c7c5f6afb11aa03a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/aqua_grid.png b/assets/textures/blockout_textures/128/basic/aqua_grid.png new file mode 100644 index 0000000..541ea92 Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/aqua_grid.png differ diff --git a/assets/textures/blockout_textures/128/basic/aqua_grid.png.import b/assets/textures/blockout_textures/128/basic/aqua_grid.png.import new file mode 100644 index 0000000..e53bac1 --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/aqua_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b0sarunqelqjd" +path="res://.godot/imported/aqua_grid.png-e4fcc9ca98cb702fb88236e8f9b93c94.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/aqua_grid.png" +dest_files=["res://.godot/imported/aqua_grid.png-e4fcc9ca98cb702fb88236e8f9b93c94.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/aqua_light_check.png b/assets/textures/blockout_textures/128/basic/aqua_light_check.png new file mode 100644 index 0000000..fffc87e Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/aqua_light_check.png differ diff --git a/assets/textures/blockout_textures/128/basic/aqua_light_check.png.import b/assets/textures/blockout_textures/128/basic/aqua_light_check.png.import new file mode 100644 index 0000000..bfb085b --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/aqua_light_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bi4dxfv1yuu2f" +path="res://.godot/imported/aqua_light_check.png-d4247b85c3c17c956d2e76cb7e20e1a7.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/aqua_light_check.png" +dest_files=["res://.godot/imported/aqua_light_check.png-d4247b85c3c17c956d2e76cb7e20e1a7.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/aqua_light_cross.png b/assets/textures/blockout_textures/128/basic/aqua_light_cross.png new file mode 100644 index 0000000..a9aff67 Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/aqua_light_cross.png differ diff --git a/assets/textures/blockout_textures/128/basic/aqua_light_cross.png.import b/assets/textures/blockout_textures/128/basic/aqua_light_cross.png.import new file mode 100644 index 0000000..ce95946 --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/aqua_light_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://neg5w7c4vuax" +path="res://.godot/imported/aqua_light_cross.png-49bac90641b05e740a902f6c938c5ddb.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/aqua_light_cross.png" +dest_files=["res://.godot/imported/aqua_light_cross.png-49bac90641b05e740a902f6c938c5ddb.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/aqua_light_dots.png b/assets/textures/blockout_textures/128/basic/aqua_light_dots.png new file mode 100644 index 0000000..7ea58fc Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/aqua_light_dots.png differ diff --git a/assets/textures/blockout_textures/128/basic/aqua_light_dots.png.import b/assets/textures/blockout_textures/128/basic/aqua_light_dots.png.import new file mode 100644 index 0000000..520abe4 --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/aqua_light_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cdcyuntv8wn57" +path="res://.godot/imported/aqua_light_dots.png-41efba2a3af09a4f2127cf464a2d904d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/aqua_light_dots.png" +dest_files=["res://.godot/imported/aqua_light_dots.png-41efba2a3af09a4f2127cf464a2d904d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/aqua_light_grid.png b/assets/textures/blockout_textures/128/basic/aqua_light_grid.png new file mode 100644 index 0000000..615be4c Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/aqua_light_grid.png differ diff --git a/assets/textures/blockout_textures/128/basic/aqua_light_grid.png.import b/assets/textures/blockout_textures/128/basic/aqua_light_grid.png.import new file mode 100644 index 0000000..063f604 --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/aqua_light_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c43oomyb31je1" +path="res://.godot/imported/aqua_light_grid.png-5c8140bc2c3a27a4ab664c418a7d5752.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/aqua_light_grid.png" +dest_files=["res://.godot/imported/aqua_light_grid.png-5c8140bc2c3a27a4ab664c418a7d5752.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/black_check.png b/assets/textures/blockout_textures/128/basic/black_check.png new file mode 100644 index 0000000..dec6c0c Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/black_check.png differ diff --git a/assets/textures/blockout_textures/128/basic/black_check.png.import b/assets/textures/blockout_textures/128/basic/black_check.png.import new file mode 100644 index 0000000..6c03376 --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/black_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://qg26q2o3nge6" +path="res://.godot/imported/black_check.png-b5fd24fc1b4763e5a3ab3fb2fd1c7133.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/black_check.png" +dest_files=["res://.godot/imported/black_check.png-b5fd24fc1b4763e5a3ab3fb2fd1c7133.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/black_cross.png b/assets/textures/blockout_textures/128/basic/black_cross.png new file mode 100644 index 0000000..b513455 Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/black_cross.png differ diff --git a/assets/textures/blockout_textures/128/basic/black_cross.png.import b/assets/textures/blockout_textures/128/basic/black_cross.png.import new file mode 100644 index 0000000..a2e7915 --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/black_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d3wq8sb1lkv2x" +path="res://.godot/imported/black_cross.png-b3273b35e9182ba29447e7db9585e729.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/black_cross.png" +dest_files=["res://.godot/imported/black_cross.png-b3273b35e9182ba29447e7db9585e729.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/black_dots.png b/assets/textures/blockout_textures/128/basic/black_dots.png new file mode 100644 index 0000000..846e6c4 Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/black_dots.png differ diff --git a/assets/textures/blockout_textures/128/basic/black_dots.png.import b/assets/textures/blockout_textures/128/basic/black_dots.png.import new file mode 100644 index 0000000..f4ae1c3 --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/black_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://15o48f2wwp5b" +path="res://.godot/imported/black_dots.png-06a28822d79aad6f587edd9e8582f692.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/black_dots.png" +dest_files=["res://.godot/imported/black_dots.png-06a28822d79aad6f587edd9e8582f692.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/black_grid.png b/assets/textures/blockout_textures/128/basic/black_grid.png new file mode 100644 index 0000000..602e550 Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/black_grid.png differ diff --git a/assets/textures/blockout_textures/128/basic/black_grid.png.import b/assets/textures/blockout_textures/128/basic/black_grid.png.import new file mode 100644 index 0000000..e3769d9 --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/black_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://iieejd532jnr" +path="res://.godot/imported/black_grid.png-c036f0641e846e034818af212a9d4de5.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/black_grid.png" +dest_files=["res://.godot/imported/black_grid.png-c036f0641e846e034818af212a9d4de5.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/blue_check.png b/assets/textures/blockout_textures/128/basic/blue_check.png new file mode 100644 index 0000000..0efdd8b Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/blue_check.png differ diff --git a/assets/textures/blockout_textures/128/basic/blue_check.png.import b/assets/textures/blockout_textures/128/basic/blue_check.png.import new file mode 100644 index 0000000..effd537 --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/blue_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b30vyk4jcxvst" +path="res://.godot/imported/blue_check.png-b671eede91372920817f5cb3af6fb93a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/blue_check.png" +dest_files=["res://.godot/imported/blue_check.png-b671eede91372920817f5cb3af6fb93a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/blue_cross.png b/assets/textures/blockout_textures/128/basic/blue_cross.png new file mode 100644 index 0000000..e216190 Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/blue_cross.png differ diff --git a/assets/textures/blockout_textures/128/basic/blue_cross.png.import b/assets/textures/blockout_textures/128/basic/blue_cross.png.import new file mode 100644 index 0000000..2b7391d --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/blue_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://do554q8kksko2" +path="res://.godot/imported/blue_cross.png-49391ce55b8c426a52043b36454536c8.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/blue_cross.png" +dest_files=["res://.godot/imported/blue_cross.png-49391ce55b8c426a52043b36454536c8.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/blue_dots.png b/assets/textures/blockout_textures/128/basic/blue_dots.png new file mode 100644 index 0000000..87846c2 Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/blue_dots.png differ diff --git a/assets/textures/blockout_textures/128/basic/blue_dots.png.import b/assets/textures/blockout_textures/128/basic/blue_dots.png.import new file mode 100644 index 0000000..4146c2c --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/blue_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cxqqm5sikvqnn" +path="res://.godot/imported/blue_dots.png-eb2afe02ffdfb1698700b89ac52ec11d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/blue_dots.png" +dest_files=["res://.godot/imported/blue_dots.png-eb2afe02ffdfb1698700b89ac52ec11d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/blue_grid.png b/assets/textures/blockout_textures/128/basic/blue_grid.png new file mode 100644 index 0000000..f3c1fbb Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/blue_grid.png differ diff --git a/assets/textures/blockout_textures/128/basic/blue_grid.png.import b/assets/textures/blockout_textures/128/basic/blue_grid.png.import new file mode 100644 index 0000000..a46a5e5 --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/blue_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bbkyhv1ongs1u" +path="res://.godot/imported/blue_grid.png-c0cabeb38774440969372761b3c23932.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/blue_grid.png" +dest_files=["res://.godot/imported/blue_grid.png-c0cabeb38774440969372761b3c23932.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/blue_light_check.png b/assets/textures/blockout_textures/128/basic/blue_light_check.png new file mode 100644 index 0000000..9ddc7c6 Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/blue_light_check.png differ diff --git a/assets/textures/blockout_textures/128/basic/blue_light_check.png.import b/assets/textures/blockout_textures/128/basic/blue_light_check.png.import new file mode 100644 index 0000000..1a4eae4 --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/blue_light_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://0o053fssh470" +path="res://.godot/imported/blue_light_check.png-4e14fb3846f2eb34036e984b0d2c21c6.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/blue_light_check.png" +dest_files=["res://.godot/imported/blue_light_check.png-4e14fb3846f2eb34036e984b0d2c21c6.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/blue_light_cross.png b/assets/textures/blockout_textures/128/basic/blue_light_cross.png new file mode 100644 index 0000000..ae4bebe Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/blue_light_cross.png differ diff --git a/assets/textures/blockout_textures/128/basic/blue_light_cross.png.import b/assets/textures/blockout_textures/128/basic/blue_light_cross.png.import new file mode 100644 index 0000000..94d97d1 --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/blue_light_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bs6akpvll6mpd" +path="res://.godot/imported/blue_light_cross.png-018bf50bfd0c0cc8697762021965360d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/blue_light_cross.png" +dest_files=["res://.godot/imported/blue_light_cross.png-018bf50bfd0c0cc8697762021965360d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/blue_light_dots.png b/assets/textures/blockout_textures/128/basic/blue_light_dots.png new file mode 100644 index 0000000..46c9680 Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/blue_light_dots.png differ diff --git a/assets/textures/blockout_textures/128/basic/blue_light_dots.png.import b/assets/textures/blockout_textures/128/basic/blue_light_dots.png.import new file mode 100644 index 0000000..abdffcc --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/blue_light_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ds0c8fxs2jxs7" +path="res://.godot/imported/blue_light_dots.png-8e74ee1acf6adef976fbffb2b52d0d81.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/blue_light_dots.png" +dest_files=["res://.godot/imported/blue_light_dots.png-8e74ee1acf6adef976fbffb2b52d0d81.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/blue_light_grid.png b/assets/textures/blockout_textures/128/basic/blue_light_grid.png new file mode 100644 index 0000000..cdef7e6 Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/blue_light_grid.png differ diff --git a/assets/textures/blockout_textures/128/basic/blue_light_grid.png.import b/assets/textures/blockout_textures/128/basic/blue_light_grid.png.import new file mode 100644 index 0000000..641551d --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/blue_light_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bq70t10h02qw5" +path="res://.godot/imported/blue_light_grid.png-d5e657a65012855b27c9ac658e3607ba.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/blue_light_grid.png" +dest_files=["res://.godot/imported/blue_light_grid.png-d5e657a65012855b27c9ac658e3607ba.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/gray_check.png b/assets/textures/blockout_textures/128/basic/gray_check.png new file mode 100644 index 0000000..f799568 Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/gray_check.png differ diff --git a/assets/textures/blockout_textures/128/basic/gray_check.png.import b/assets/textures/blockout_textures/128/basic/gray_check.png.import new file mode 100644 index 0000000..06a16d7 --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/gray_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dgunuf3ebaptt" +path="res://.godot/imported/gray_check.png-7fbcb291199e581281f42dbc21b02c4d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/gray_check.png" +dest_files=["res://.godot/imported/gray_check.png-7fbcb291199e581281f42dbc21b02c4d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/gray_cross.png b/assets/textures/blockout_textures/128/basic/gray_cross.png new file mode 100644 index 0000000..3c82bef Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/gray_cross.png differ diff --git a/assets/textures/blockout_textures/128/basic/gray_cross.png.import b/assets/textures/blockout_textures/128/basic/gray_cross.png.import new file mode 100644 index 0000000..e01db75 --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/gray_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cnbx62l15g222" +path="res://.godot/imported/gray_cross.png-f383a5512932003d044614fc0f37f809.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/gray_cross.png" +dest_files=["res://.godot/imported/gray_cross.png-f383a5512932003d044614fc0f37f809.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/gray_dots.png b/assets/textures/blockout_textures/128/basic/gray_dots.png new file mode 100644 index 0000000..92107aa Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/gray_dots.png differ diff --git a/assets/textures/blockout_textures/128/basic/gray_dots.png.import b/assets/textures/blockout_textures/128/basic/gray_dots.png.import new file mode 100644 index 0000000..c1a5567 --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/gray_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://yhecaoxdr05s" +path="res://.godot/imported/gray_dots.png-4dc8aaf0941b8fdb95791da30256effc.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/gray_dots.png" +dest_files=["res://.godot/imported/gray_dots.png-4dc8aaf0941b8fdb95791da30256effc.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/gray_grid.png b/assets/textures/blockout_textures/128/basic/gray_grid.png new file mode 100644 index 0000000..c32334e Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/gray_grid.png differ diff --git a/assets/textures/blockout_textures/128/basic/gray_grid.png.import b/assets/textures/blockout_textures/128/basic/gray_grid.png.import new file mode 100644 index 0000000..690c135 --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/gray_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bxxcyb8gq5o7b" +path="res://.godot/imported/gray_grid.png-c30f3ebe2613a0b61a516202f542fca7.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/gray_grid.png" +dest_files=["res://.godot/imported/gray_grid.png-c30f3ebe2613a0b61a516202f542fca7.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/green_check.png b/assets/textures/blockout_textures/128/basic/green_check.png new file mode 100644 index 0000000..6ca9420 Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/green_check.png differ diff --git a/assets/textures/blockout_textures/128/basic/green_check.png.import b/assets/textures/blockout_textures/128/basic/green_check.png.import new file mode 100644 index 0000000..d4342f3 --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/green_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b57dpclh6kxq8" +path="res://.godot/imported/green_check.png-27a8591443aa63d0ef1e94d0daa61c25.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/green_check.png" +dest_files=["res://.godot/imported/green_check.png-27a8591443aa63d0ef1e94d0daa61c25.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/green_cross.png b/assets/textures/blockout_textures/128/basic/green_cross.png new file mode 100644 index 0000000..0d31c2f Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/green_cross.png differ diff --git a/assets/textures/blockout_textures/128/basic/green_cross.png.import b/assets/textures/blockout_textures/128/basic/green_cross.png.import new file mode 100644 index 0000000..e2726f3 --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/green_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://hwvcssg7a3fq" +path="res://.godot/imported/green_cross.png-98efd8af3d3a8f4ef3607cf407a50048.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/green_cross.png" +dest_files=["res://.godot/imported/green_cross.png-98efd8af3d3a8f4ef3607cf407a50048.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/green_dots.png b/assets/textures/blockout_textures/128/basic/green_dots.png new file mode 100644 index 0000000..171b193 Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/green_dots.png differ diff --git a/assets/textures/blockout_textures/128/basic/green_dots.png.import b/assets/textures/blockout_textures/128/basic/green_dots.png.import new file mode 100644 index 0000000..15c487c --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/green_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://duqiera5pwuno" +path="res://.godot/imported/green_dots.png-d166ae6d7f717cec81571d5d9f3a47ba.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/green_dots.png" +dest_files=["res://.godot/imported/green_dots.png-d166ae6d7f717cec81571d5d9f3a47ba.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/green_grid.png b/assets/textures/blockout_textures/128/basic/green_grid.png new file mode 100644 index 0000000..7be7a2b Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/green_grid.png differ diff --git a/assets/textures/blockout_textures/128/basic/green_grid.png.import b/assets/textures/blockout_textures/128/basic/green_grid.png.import new file mode 100644 index 0000000..a020983 --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/green_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bb1xhpme8070s" +path="res://.godot/imported/green_grid.png-0636b1b9df55431a43d4c5c7eb0c9f7c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/green_grid.png" +dest_files=["res://.godot/imported/green_grid.png-0636b1b9df55431a43d4c5c7eb0c9f7c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/green_light_check.png b/assets/textures/blockout_textures/128/basic/green_light_check.png new file mode 100644 index 0000000..703ddb7 Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/green_light_check.png differ diff --git a/assets/textures/blockout_textures/128/basic/green_light_check.png.import b/assets/textures/blockout_textures/128/basic/green_light_check.png.import new file mode 100644 index 0000000..9b93a51 --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/green_light_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cg7solqn2o0ae" +path="res://.godot/imported/green_light_check.png-f464f30f13160b5ca0b23f461aaebfd7.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/green_light_check.png" +dest_files=["res://.godot/imported/green_light_check.png-f464f30f13160b5ca0b23f461aaebfd7.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/green_light_cross.png b/assets/textures/blockout_textures/128/basic/green_light_cross.png new file mode 100644 index 0000000..2f90da6 Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/green_light_cross.png differ diff --git a/assets/textures/blockout_textures/128/basic/green_light_cross.png.import b/assets/textures/blockout_textures/128/basic/green_light_cross.png.import new file mode 100644 index 0000000..5de5b44 --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/green_light_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bp71iy4m86gtj" +path="res://.godot/imported/green_light_cross.png-bd5f098c0e2805e0ef28334939fec767.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/green_light_cross.png" +dest_files=["res://.godot/imported/green_light_cross.png-bd5f098c0e2805e0ef28334939fec767.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/green_light_dots.png b/assets/textures/blockout_textures/128/basic/green_light_dots.png new file mode 100644 index 0000000..f9ea720 Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/green_light_dots.png differ diff --git a/assets/textures/blockout_textures/128/basic/green_light_dots.png.import b/assets/textures/blockout_textures/128/basic/green_light_dots.png.import new file mode 100644 index 0000000..a6714bf --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/green_light_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://by0gn6f74q7qe" +path="res://.godot/imported/green_light_dots.png-7fe8fb5b2bff2f5cfbcfad8d96b8064f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/green_light_dots.png" +dest_files=["res://.godot/imported/green_light_dots.png-7fe8fb5b2bff2f5cfbcfad8d96b8064f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/green_light_grid.png b/assets/textures/blockout_textures/128/basic/green_light_grid.png new file mode 100644 index 0000000..a651426 Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/green_light_grid.png differ diff --git a/assets/textures/blockout_textures/128/basic/green_light_grid.png.import b/assets/textures/blockout_textures/128/basic/green_light_grid.png.import new file mode 100644 index 0000000..74fa97b --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/green_light_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bww08i47lrpmn" +path="res://.godot/imported/green_light_grid.png-37b8aaa4a930813729b0b84ad1c69665.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/green_light_grid.png" +dest_files=["res://.godot/imported/green_light_grid.png-37b8aaa4a930813729b0b84ad1c69665.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/orange_check.png b/assets/textures/blockout_textures/128/basic/orange_check.png new file mode 100644 index 0000000..0f188e3 Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/orange_check.png differ diff --git a/assets/textures/blockout_textures/128/basic/orange_check.png.import b/assets/textures/blockout_textures/128/basic/orange_check.png.import new file mode 100644 index 0000000..e99dbff --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/orange_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dk7n8w06quy7m" +path="res://.godot/imported/orange_check.png-0b78f45467afbf0b50abd81150d31914.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/orange_check.png" +dest_files=["res://.godot/imported/orange_check.png-0b78f45467afbf0b50abd81150d31914.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/orange_cross.png b/assets/textures/blockout_textures/128/basic/orange_cross.png new file mode 100644 index 0000000..f3a5424 Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/orange_cross.png differ diff --git a/assets/textures/blockout_textures/128/basic/orange_cross.png.import b/assets/textures/blockout_textures/128/basic/orange_cross.png.import new file mode 100644 index 0000000..b4e6b06 --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/orange_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dpt10t8knh3rt" +path="res://.godot/imported/orange_cross.png-9c5b577b15617089721b28b28844e4ab.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/orange_cross.png" +dest_files=["res://.godot/imported/orange_cross.png-9c5b577b15617089721b28b28844e4ab.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/orange_dots.png b/assets/textures/blockout_textures/128/basic/orange_dots.png new file mode 100644 index 0000000..561c9cf Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/orange_dots.png differ diff --git a/assets/textures/blockout_textures/128/basic/orange_dots.png.import b/assets/textures/blockout_textures/128/basic/orange_dots.png.import new file mode 100644 index 0000000..da23cd6 --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/orange_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://rc54tl82d34x" +path="res://.godot/imported/orange_dots.png-fc5ebd907b336d0a78568a4c9f0be129.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/orange_dots.png" +dest_files=["res://.godot/imported/orange_dots.png-fc5ebd907b336d0a78568a4c9f0be129.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/orange_grid.png b/assets/textures/blockout_textures/128/basic/orange_grid.png new file mode 100644 index 0000000..1a22698 Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/orange_grid.png differ diff --git a/assets/textures/blockout_textures/128/basic/orange_grid.png.import b/assets/textures/blockout_textures/128/basic/orange_grid.png.import new file mode 100644 index 0000000..3bf7c15 --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/orange_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c42tmdns1ypx4" +path="res://.godot/imported/orange_grid.png-38d99639089d42687b483cf6b43b76a3.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/orange_grid.png" +dest_files=["res://.godot/imported/orange_grid.png-38d99639089d42687b483cf6b43b76a3.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/orange_light_check.png b/assets/textures/blockout_textures/128/basic/orange_light_check.png new file mode 100644 index 0000000..0d1d35a Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/orange_light_check.png differ diff --git a/assets/textures/blockout_textures/128/basic/orange_light_check.png.import b/assets/textures/blockout_textures/128/basic/orange_light_check.png.import new file mode 100644 index 0000000..0c90491 --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/orange_light_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://xq3mgqojgr2j" +path="res://.godot/imported/orange_light_check.png-67391404dcad767f63705f4a6c109990.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/orange_light_check.png" +dest_files=["res://.godot/imported/orange_light_check.png-67391404dcad767f63705f4a6c109990.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/orange_light_cross.png b/assets/textures/blockout_textures/128/basic/orange_light_cross.png new file mode 100644 index 0000000..4271b97 Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/orange_light_cross.png differ diff --git a/assets/textures/blockout_textures/128/basic/orange_light_cross.png.import b/assets/textures/blockout_textures/128/basic/orange_light_cross.png.import new file mode 100644 index 0000000..5a32970 --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/orange_light_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cfvgwa21oht8j" +path="res://.godot/imported/orange_light_cross.png-6a89379f49f77a735c3c7a7922a46fc8.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/orange_light_cross.png" +dest_files=["res://.godot/imported/orange_light_cross.png-6a89379f49f77a735c3c7a7922a46fc8.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/orange_light_dots.png b/assets/textures/blockout_textures/128/basic/orange_light_dots.png new file mode 100644 index 0000000..4523a81 Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/orange_light_dots.png differ diff --git a/assets/textures/blockout_textures/128/basic/orange_light_dots.png.import b/assets/textures/blockout_textures/128/basic/orange_light_dots.png.import new file mode 100644 index 0000000..d2bfca2 --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/orange_light_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dlpls6g6jfpll" +path="res://.godot/imported/orange_light_dots.png-8810c9b5b281d426af80ff47a10d48bf.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/orange_light_dots.png" +dest_files=["res://.godot/imported/orange_light_dots.png-8810c9b5b281d426af80ff47a10d48bf.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/orange_light_grid.png b/assets/textures/blockout_textures/128/basic/orange_light_grid.png new file mode 100644 index 0000000..327f296 Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/orange_light_grid.png differ diff --git a/assets/textures/blockout_textures/128/basic/orange_light_grid.png.import b/assets/textures/blockout_textures/128/basic/orange_light_grid.png.import new file mode 100644 index 0000000..6524caa --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/orange_light_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dg6vkqwjiadc1" +path="res://.godot/imported/orange_light_grid.png-e94441e622ad15b39f1956ac7005ebab.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/orange_light_grid.png" +dest_files=["res://.godot/imported/orange_light_grid.png-e94441e622ad15b39f1956ac7005ebab.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/purple_check.png b/assets/textures/blockout_textures/128/basic/purple_check.png new file mode 100644 index 0000000..46624ae Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/purple_check.png differ diff --git a/assets/textures/blockout_textures/128/basic/purple_check.png.import b/assets/textures/blockout_textures/128/basic/purple_check.png.import new file mode 100644 index 0000000..f3cb600 --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/purple_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bip0cnjjhoxoc" +path="res://.godot/imported/purple_check.png-bef210f72ebb33b93666d0bd9fca4a5c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/purple_check.png" +dest_files=["res://.godot/imported/purple_check.png-bef210f72ebb33b93666d0bd9fca4a5c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/purple_cross.png b/assets/textures/blockout_textures/128/basic/purple_cross.png new file mode 100644 index 0000000..0cb2e0e Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/purple_cross.png differ diff --git a/assets/textures/blockout_textures/128/basic/purple_cross.png.import b/assets/textures/blockout_textures/128/basic/purple_cross.png.import new file mode 100644 index 0000000..97d9985 --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/purple_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://coymxkpdtab4l" +path="res://.godot/imported/purple_cross.png-1c7a894f4bbe894813ee9dca1dbd3827.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/purple_cross.png" +dest_files=["res://.godot/imported/purple_cross.png-1c7a894f4bbe894813ee9dca1dbd3827.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/purple_dots.png b/assets/textures/blockout_textures/128/basic/purple_dots.png new file mode 100644 index 0000000..16cea9b Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/purple_dots.png differ diff --git a/assets/textures/blockout_textures/128/basic/purple_dots.png.import b/assets/textures/blockout_textures/128/basic/purple_dots.png.import new file mode 100644 index 0000000..2cd8916 --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/purple_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://57o4begk65yk" +path="res://.godot/imported/purple_dots.png-f98b6460b47822c69648a58083c151c9.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/purple_dots.png" +dest_files=["res://.godot/imported/purple_dots.png-f98b6460b47822c69648a58083c151c9.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/purple_grid.png b/assets/textures/blockout_textures/128/basic/purple_grid.png new file mode 100644 index 0000000..26057e3 Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/purple_grid.png differ diff --git a/assets/textures/blockout_textures/128/basic/purple_grid.png.import b/assets/textures/blockout_textures/128/basic/purple_grid.png.import new file mode 100644 index 0000000..952f7cc --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/purple_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://5c74jsfmtaek" +path="res://.godot/imported/purple_grid.png-c56e026031414124767a49b5d51295bc.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/purple_grid.png" +dest_files=["res://.godot/imported/purple_grid.png-c56e026031414124767a49b5d51295bc.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/purple_light_check.png b/assets/textures/blockout_textures/128/basic/purple_light_check.png new file mode 100644 index 0000000..356878e Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/purple_light_check.png differ diff --git a/assets/textures/blockout_textures/128/basic/purple_light_check.png.import b/assets/textures/blockout_textures/128/basic/purple_light_check.png.import new file mode 100644 index 0000000..54400ac --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/purple_light_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bwruetxvu0n6s" +path="res://.godot/imported/purple_light_check.png-68788bb766a27ef91b947c1f3fbdb299.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/purple_light_check.png" +dest_files=["res://.godot/imported/purple_light_check.png-68788bb766a27ef91b947c1f3fbdb299.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/purple_light_cross.png b/assets/textures/blockout_textures/128/basic/purple_light_cross.png new file mode 100644 index 0000000..70d1937 Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/purple_light_cross.png differ diff --git a/assets/textures/blockout_textures/128/basic/purple_light_cross.png.import b/assets/textures/blockout_textures/128/basic/purple_light_cross.png.import new file mode 100644 index 0000000..57cd90b --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/purple_light_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c68hwlid454bw" +path="res://.godot/imported/purple_light_cross.png-46131797efa0f4d856e6bd055ed79313.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/purple_light_cross.png" +dest_files=["res://.godot/imported/purple_light_cross.png-46131797efa0f4d856e6bd055ed79313.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/purple_light_dots.png b/assets/textures/blockout_textures/128/basic/purple_light_dots.png new file mode 100644 index 0000000..6d31fba Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/purple_light_dots.png differ diff --git a/assets/textures/blockout_textures/128/basic/purple_light_dots.png.import b/assets/textures/blockout_textures/128/basic/purple_light_dots.png.import new file mode 100644 index 0000000..380eeb5 --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/purple_light_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b2mcmqvuhabpc" +path="res://.godot/imported/purple_light_dots.png-56b4ab07d6e0f42ed659ee71314db87e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/purple_light_dots.png" +dest_files=["res://.godot/imported/purple_light_dots.png-56b4ab07d6e0f42ed659ee71314db87e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/purple_light_grid.png b/assets/textures/blockout_textures/128/basic/purple_light_grid.png new file mode 100644 index 0000000..3f77f66 Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/purple_light_grid.png differ diff --git a/assets/textures/blockout_textures/128/basic/purple_light_grid.png.import b/assets/textures/blockout_textures/128/basic/purple_light_grid.png.import new file mode 100644 index 0000000..fcafe25 --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/purple_light_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bqyj44g2ax26k" +path="res://.godot/imported/purple_light_grid.png-c6072b6d07d761504c96bd9e6313dc72.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/purple_light_grid.png" +dest_files=["res://.godot/imported/purple_light_grid.png-c6072b6d07d761504c96bd9e6313dc72.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/red_check.png b/assets/textures/blockout_textures/128/basic/red_check.png new file mode 100644 index 0000000..ae36604 Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/red_check.png differ diff --git a/assets/textures/blockout_textures/128/basic/red_check.png.import b/assets/textures/blockout_textures/128/basic/red_check.png.import new file mode 100644 index 0000000..d2f976c --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/red_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://2l51beb2dfom" +path="res://.godot/imported/red_check.png-9c2119adb857081e84d74aa53638a11c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/red_check.png" +dest_files=["res://.godot/imported/red_check.png-9c2119adb857081e84d74aa53638a11c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/red_cross.png b/assets/textures/blockout_textures/128/basic/red_cross.png new file mode 100644 index 0000000..0a7574a Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/red_cross.png differ diff --git a/assets/textures/blockout_textures/128/basic/red_cross.png.import b/assets/textures/blockout_textures/128/basic/red_cross.png.import new file mode 100644 index 0000000..7b06efd --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/red_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://5pu2ehqqxp54" +path="res://.godot/imported/red_cross.png-b88710d6b104c668ef070a9f91bb0dff.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/red_cross.png" +dest_files=["res://.godot/imported/red_cross.png-b88710d6b104c668ef070a9f91bb0dff.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/red_dots.png b/assets/textures/blockout_textures/128/basic/red_dots.png new file mode 100644 index 0000000..ecb9938 Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/red_dots.png differ diff --git a/assets/textures/blockout_textures/128/basic/red_dots.png.import b/assets/textures/blockout_textures/128/basic/red_dots.png.import new file mode 100644 index 0000000..991b3f6 --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/red_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b7yv015e0trtd" +path="res://.godot/imported/red_dots.png-5a7d18e35ffc321b80dc0c2045be0877.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/red_dots.png" +dest_files=["res://.godot/imported/red_dots.png-5a7d18e35ffc321b80dc0c2045be0877.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/red_grid.png b/assets/textures/blockout_textures/128/basic/red_grid.png new file mode 100644 index 0000000..97e76a0 Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/red_grid.png differ diff --git a/assets/textures/blockout_textures/128/basic/red_grid.png.import b/assets/textures/blockout_textures/128/basic/red_grid.png.import new file mode 100644 index 0000000..4a08ebe --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/red_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bi133mus2273a" +path="res://.godot/imported/red_grid.png-f87b15697111ae184ad37e7a3efdeb3a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/red_grid.png" +dest_files=["res://.godot/imported/red_grid.png-f87b15697111ae184ad37e7a3efdeb3a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/red_light_check.png b/assets/textures/blockout_textures/128/basic/red_light_check.png new file mode 100644 index 0000000..daf71a6 Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/red_light_check.png differ diff --git a/assets/textures/blockout_textures/128/basic/red_light_check.png.import b/assets/textures/blockout_textures/128/basic/red_light_check.png.import new file mode 100644 index 0000000..d743482 --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/red_light_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://clljlovoogpxr" +path="res://.godot/imported/red_light_check.png-e1b7362bfb60bbc626e2e6ee58b87282.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/red_light_check.png" +dest_files=["res://.godot/imported/red_light_check.png-e1b7362bfb60bbc626e2e6ee58b87282.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/red_light_cross.png b/assets/textures/blockout_textures/128/basic/red_light_cross.png new file mode 100644 index 0000000..b4ef6ec Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/red_light_cross.png differ diff --git a/assets/textures/blockout_textures/128/basic/red_light_cross.png.import b/assets/textures/blockout_textures/128/basic/red_light_cross.png.import new file mode 100644 index 0000000..5eb5e37 --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/red_light_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dc6aiod7edilw" +path="res://.godot/imported/red_light_cross.png-4f7363503a5bb213cc6677db7198bcc4.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/red_light_cross.png" +dest_files=["res://.godot/imported/red_light_cross.png-4f7363503a5bb213cc6677db7198bcc4.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/red_light_dots.png b/assets/textures/blockout_textures/128/basic/red_light_dots.png new file mode 100644 index 0000000..c2ae950 Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/red_light_dots.png differ diff --git a/assets/textures/blockout_textures/128/basic/red_light_dots.png.import b/assets/textures/blockout_textures/128/basic/red_light_dots.png.import new file mode 100644 index 0000000..a15cdc8 --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/red_light_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b7aeqni743uao" +path="res://.godot/imported/red_light_dots.png-891c437a0cdae4f01a817eb49be815d9.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/red_light_dots.png" +dest_files=["res://.godot/imported/red_light_dots.png-891c437a0cdae4f01a817eb49be815d9.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/red_light_grid.png b/assets/textures/blockout_textures/128/basic/red_light_grid.png new file mode 100644 index 0000000..b1b2c46 Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/red_light_grid.png differ diff --git a/assets/textures/blockout_textures/128/basic/red_light_grid.png.import b/assets/textures/blockout_textures/128/basic/red_light_grid.png.import new file mode 100644 index 0000000..2221d35 --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/red_light_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b1vv5n81vesfn" +path="res://.godot/imported/red_light_grid.png-11ce445f77f825fd66dfa8d72d974648.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/red_light_grid.png" +dest_files=["res://.godot/imported/red_light_grid.png-11ce445f77f825fd66dfa8d72d974648.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/white_check.png b/assets/textures/blockout_textures/128/basic/white_check.png new file mode 100644 index 0000000..6dbabc0 Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/white_check.png differ diff --git a/assets/textures/blockout_textures/128/basic/white_check.png.import b/assets/textures/blockout_textures/128/basic/white_check.png.import new file mode 100644 index 0000000..c64e222 --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/white_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b6nljo2jlsirv" +path="res://.godot/imported/white_check.png-24f236333c6dd4e1da4989c724ad4ad1.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/white_check.png" +dest_files=["res://.godot/imported/white_check.png-24f236333c6dd4e1da4989c724ad4ad1.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/white_cross.png b/assets/textures/blockout_textures/128/basic/white_cross.png new file mode 100644 index 0000000..144efc2 Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/white_cross.png differ diff --git a/assets/textures/blockout_textures/128/basic/white_cross.png.import b/assets/textures/blockout_textures/128/basic/white_cross.png.import new file mode 100644 index 0000000..c50428d --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/white_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dcyrc4xgeal3c" +path="res://.godot/imported/white_cross.png-f66ae247580f865c2066550201ad6b39.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/white_cross.png" +dest_files=["res://.godot/imported/white_cross.png-f66ae247580f865c2066550201ad6b39.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/white_dots.png b/assets/textures/blockout_textures/128/basic/white_dots.png new file mode 100644 index 0000000..5c3e00e Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/white_dots.png differ diff --git a/assets/textures/blockout_textures/128/basic/white_dots.png.import b/assets/textures/blockout_textures/128/basic/white_dots.png.import new file mode 100644 index 0000000..c62b269 --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/white_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cm0ll836ovc04" +path="res://.godot/imported/white_dots.png-0615a6f5684fcd216b822709979f8fd4.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/white_dots.png" +dest_files=["res://.godot/imported/white_dots.png-0615a6f5684fcd216b822709979f8fd4.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/white_grid.png b/assets/textures/blockout_textures/128/basic/white_grid.png new file mode 100644 index 0000000..1e7ac22 Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/white_grid.png differ diff --git a/assets/textures/blockout_textures/128/basic/white_grid.png.import b/assets/textures/blockout_textures/128/basic/white_grid.png.import new file mode 100644 index 0000000..14345d4 --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/white_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dw3v70a8folkj" +path="res://.godot/imported/white_grid.png-e9d4bb7a79710c75e0ddb5a44ba3836b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/white_grid.png" +dest_files=["res://.godot/imported/white_grid.png-e9d4bb7a79710c75e0ddb5a44ba3836b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/yellow_check.png b/assets/textures/blockout_textures/128/basic/yellow_check.png new file mode 100644 index 0000000..b8f34be Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/yellow_check.png differ diff --git a/assets/textures/blockout_textures/128/basic/yellow_check.png.import b/assets/textures/blockout_textures/128/basic/yellow_check.png.import new file mode 100644 index 0000000..fa06644 --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/yellow_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://uu304rx4detn" +path="res://.godot/imported/yellow_check.png-ef999a92f019ee6d21847f1d7d76397e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/yellow_check.png" +dest_files=["res://.godot/imported/yellow_check.png-ef999a92f019ee6d21847f1d7d76397e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/yellow_cross.png b/assets/textures/blockout_textures/128/basic/yellow_cross.png new file mode 100644 index 0000000..dd6901b Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/yellow_cross.png differ diff --git a/assets/textures/blockout_textures/128/basic/yellow_cross.png.import b/assets/textures/blockout_textures/128/basic/yellow_cross.png.import new file mode 100644 index 0000000..e7fbf00 --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/yellow_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bbdud4x58808b" +path="res://.godot/imported/yellow_cross.png-e00e6d87cc4b470feb9773b839c97368.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/yellow_cross.png" +dest_files=["res://.godot/imported/yellow_cross.png-e00e6d87cc4b470feb9773b839c97368.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/yellow_dots.png b/assets/textures/blockout_textures/128/basic/yellow_dots.png new file mode 100644 index 0000000..2bb0c68 Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/yellow_dots.png differ diff --git a/assets/textures/blockout_textures/128/basic/yellow_dots.png.import b/assets/textures/blockout_textures/128/basic/yellow_dots.png.import new file mode 100644 index 0000000..62e89af --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/yellow_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://v08dgnt7xjop" +path="res://.godot/imported/yellow_dots.png-4bc86294da0a5fc2e54e7c0b8e10ada6.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/yellow_dots.png" +dest_files=["res://.godot/imported/yellow_dots.png-4bc86294da0a5fc2e54e7c0b8e10ada6.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/yellow_grid.png b/assets/textures/blockout_textures/128/basic/yellow_grid.png new file mode 100644 index 0000000..99e7e8d Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/yellow_grid.png differ diff --git a/assets/textures/blockout_textures/128/basic/yellow_grid.png.import b/assets/textures/blockout_textures/128/basic/yellow_grid.png.import new file mode 100644 index 0000000..20affaf --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/yellow_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://j4fw3q41konq" +path="res://.godot/imported/yellow_grid.png-b16b133c686ec890c43a933810bf7efe.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/yellow_grid.png" +dest_files=["res://.godot/imported/yellow_grid.png-b16b133c686ec890c43a933810bf7efe.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/yellow_light_check.png b/assets/textures/blockout_textures/128/basic/yellow_light_check.png new file mode 100644 index 0000000..4073138 Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/yellow_light_check.png differ diff --git a/assets/textures/blockout_textures/128/basic/yellow_light_check.png.import b/assets/textures/blockout_textures/128/basic/yellow_light_check.png.import new file mode 100644 index 0000000..b1f0d7a --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/yellow_light_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b0to1oh5o5ge4" +path="res://.godot/imported/yellow_light_check.png-519ea312aa5e2cbd8c7064d49c24ba9f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/yellow_light_check.png" +dest_files=["res://.godot/imported/yellow_light_check.png-519ea312aa5e2cbd8c7064d49c24ba9f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/yellow_light_cross.png b/assets/textures/blockout_textures/128/basic/yellow_light_cross.png new file mode 100644 index 0000000..8cbc3e6 Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/yellow_light_cross.png differ diff --git a/assets/textures/blockout_textures/128/basic/yellow_light_cross.png.import b/assets/textures/blockout_textures/128/basic/yellow_light_cross.png.import new file mode 100644 index 0000000..a3f450d --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/yellow_light_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dqoctbmbjsr4s" +path="res://.godot/imported/yellow_light_cross.png-9500babe5c1d323b9538bab765b304cb.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/yellow_light_cross.png" +dest_files=["res://.godot/imported/yellow_light_cross.png-9500babe5c1d323b9538bab765b304cb.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/yellow_light_dots.png b/assets/textures/blockout_textures/128/basic/yellow_light_dots.png new file mode 100644 index 0000000..e3756b0 Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/yellow_light_dots.png differ diff --git a/assets/textures/blockout_textures/128/basic/yellow_light_dots.png.import b/assets/textures/blockout_textures/128/basic/yellow_light_dots.png.import new file mode 100644 index 0000000..180d2c4 --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/yellow_light_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://xxrbwioxppqd" +path="res://.godot/imported/yellow_light_dots.png-aaef5545f1d0c847e1e41be31f42ec7f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/yellow_light_dots.png" +dest_files=["res://.godot/imported/yellow_light_dots.png-aaef5545f1d0c847e1e41be31f42ec7f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/basic/yellow_light_grid.png b/assets/textures/blockout_textures/128/basic/yellow_light_grid.png new file mode 100644 index 0000000..cb3c72f Binary files /dev/null and b/assets/textures/blockout_textures/128/basic/yellow_light_grid.png differ diff --git a/assets/textures/blockout_textures/128/basic/yellow_light_grid.png.import b/assets/textures/blockout_textures/128/basic/yellow_light_grid.png.import new file mode 100644 index 0000000..b16052b --- /dev/null +++ b/assets/textures/blockout_textures/128/basic/yellow_light_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bonmwpw8enmi1" +path="res://.godot/imported/yellow_light_grid.png-ba7d6c4b78702366081bb57cb602066e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/basic/yellow_light_grid.png" +dest_files=["res://.godot/imported/yellow_light_grid.png-ba7d6c4b78702366081bb57cb602066e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/mark/aqua_mark_black.png b/assets/textures/blockout_textures/128/mark/aqua_mark_black.png new file mode 100644 index 0000000..3576c60 Binary files /dev/null and b/assets/textures/blockout_textures/128/mark/aqua_mark_black.png differ diff --git a/assets/textures/blockout_textures/128/mark/aqua_mark_black.png.import b/assets/textures/blockout_textures/128/mark/aqua_mark_black.png.import new file mode 100644 index 0000000..57c89e0 --- /dev/null +++ b/assets/textures/blockout_textures/128/mark/aqua_mark_black.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://coi3pc4ngd0e5" +path="res://.godot/imported/aqua_mark_black.png-ac4420ea6942688417a97f3884da7a97.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/mark/aqua_mark_black.png" +dest_files=["res://.godot/imported/aqua_mark_black.png-ac4420ea6942688417a97f3884da7a97.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/mark/aqua_mark_transparent.png b/assets/textures/blockout_textures/128/mark/aqua_mark_transparent.png new file mode 100644 index 0000000..331d8e4 Binary files /dev/null and b/assets/textures/blockout_textures/128/mark/aqua_mark_transparent.png differ diff --git a/assets/textures/blockout_textures/128/mark/aqua_mark_transparent.png.import b/assets/textures/blockout_textures/128/mark/aqua_mark_transparent.png.import new file mode 100644 index 0000000..d24be41 --- /dev/null +++ b/assets/textures/blockout_textures/128/mark/aqua_mark_transparent.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://co6u6ehxmb0py" +path="res://.godot/imported/aqua_mark_transparent.png-7d236b965d6911783bcdac5193a83811.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/mark/aqua_mark_transparent.png" +dest_files=["res://.godot/imported/aqua_mark_transparent.png-7d236b965d6911783bcdac5193a83811.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/mark/aqua_mark_white.png b/assets/textures/blockout_textures/128/mark/aqua_mark_white.png new file mode 100644 index 0000000..9a412bc Binary files /dev/null and b/assets/textures/blockout_textures/128/mark/aqua_mark_white.png differ diff --git a/assets/textures/blockout_textures/128/mark/aqua_mark_white.png.import b/assets/textures/blockout_textures/128/mark/aqua_mark_white.png.import new file mode 100644 index 0000000..6ec9eb6 --- /dev/null +++ b/assets/textures/blockout_textures/128/mark/aqua_mark_white.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://hbyp5yl5v3do" +path="res://.godot/imported/aqua_mark_white.png-4c59b685c726a8df63a655ea3b75bcc7.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/mark/aqua_mark_white.png" +dest_files=["res://.godot/imported/aqua_mark_white.png-4c59b685c726a8df63a655ea3b75bcc7.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/mark/black_mark.png b/assets/textures/blockout_textures/128/mark/black_mark.png new file mode 100644 index 0000000..b4c94d3 Binary files /dev/null and b/assets/textures/blockout_textures/128/mark/black_mark.png differ diff --git a/assets/textures/blockout_textures/128/mark/black_mark.png.import b/assets/textures/blockout_textures/128/mark/black_mark.png.import new file mode 100644 index 0000000..81468ac --- /dev/null +++ b/assets/textures/blockout_textures/128/mark/black_mark.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dhcu8styu2sjx" +path="res://.godot/imported/black_mark.png-73c64cc830dacc5c87119243c05da2a2.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/mark/black_mark.png" +dest_files=["res://.godot/imported/black_mark.png-73c64cc830dacc5c87119243c05da2a2.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/mark/blue_mark_black.png b/assets/textures/blockout_textures/128/mark/blue_mark_black.png new file mode 100644 index 0000000..0c5e576 Binary files /dev/null and b/assets/textures/blockout_textures/128/mark/blue_mark_black.png differ diff --git a/assets/textures/blockout_textures/128/mark/blue_mark_black.png.import b/assets/textures/blockout_textures/128/mark/blue_mark_black.png.import new file mode 100644 index 0000000..17824e0 --- /dev/null +++ b/assets/textures/blockout_textures/128/mark/blue_mark_black.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://co1wbjduulewt" +path="res://.godot/imported/blue_mark_black.png-962297e626afe01ce8f04d408bc809e9.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/mark/blue_mark_black.png" +dest_files=["res://.godot/imported/blue_mark_black.png-962297e626afe01ce8f04d408bc809e9.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/mark/blue_mark_transparent.png b/assets/textures/blockout_textures/128/mark/blue_mark_transparent.png new file mode 100644 index 0000000..a79441b Binary files /dev/null and b/assets/textures/blockout_textures/128/mark/blue_mark_transparent.png differ diff --git a/assets/textures/blockout_textures/128/mark/blue_mark_transparent.png.import b/assets/textures/blockout_textures/128/mark/blue_mark_transparent.png.import new file mode 100644 index 0000000..6e7950e --- /dev/null +++ b/assets/textures/blockout_textures/128/mark/blue_mark_transparent.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ce611j3prvdfc" +path="res://.godot/imported/blue_mark_transparent.png-59b961df88489a79b4e27841bd664e6f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/mark/blue_mark_transparent.png" +dest_files=["res://.godot/imported/blue_mark_transparent.png-59b961df88489a79b4e27841bd664e6f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/mark/blue_mark_white.png b/assets/textures/blockout_textures/128/mark/blue_mark_white.png new file mode 100644 index 0000000..3ad7096 Binary files /dev/null and b/assets/textures/blockout_textures/128/mark/blue_mark_white.png differ diff --git a/assets/textures/blockout_textures/128/mark/blue_mark_white.png.import b/assets/textures/blockout_textures/128/mark/blue_mark_white.png.import new file mode 100644 index 0000000..cf3b7f7 --- /dev/null +++ b/assets/textures/blockout_textures/128/mark/blue_mark_white.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b4kxmt572tflg" +path="res://.godot/imported/blue_mark_white.png-904a98ad6a40e6055161eb504379dc84.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/mark/blue_mark_white.png" +dest_files=["res://.godot/imported/blue_mark_white.png-904a98ad6a40e6055161eb504379dc84.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/mark/gray_mark.png b/assets/textures/blockout_textures/128/mark/gray_mark.png new file mode 100644 index 0000000..d19abfa Binary files /dev/null and b/assets/textures/blockout_textures/128/mark/gray_mark.png differ diff --git a/assets/textures/blockout_textures/128/mark/gray_mark.png.import b/assets/textures/blockout_textures/128/mark/gray_mark.png.import new file mode 100644 index 0000000..ef9f7aa --- /dev/null +++ b/assets/textures/blockout_textures/128/mark/gray_mark.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://wc7vt6vvd1s4" +path="res://.godot/imported/gray_mark.png-912b5796a902e5229e573bec82a25b64.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/mark/gray_mark.png" +dest_files=["res://.godot/imported/gray_mark.png-912b5796a902e5229e573bec82a25b64.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/mark/green_mark_black.png b/assets/textures/blockout_textures/128/mark/green_mark_black.png new file mode 100644 index 0000000..a2efa50 Binary files /dev/null and b/assets/textures/blockout_textures/128/mark/green_mark_black.png differ diff --git a/assets/textures/blockout_textures/128/mark/green_mark_black.png.import b/assets/textures/blockout_textures/128/mark/green_mark_black.png.import new file mode 100644 index 0000000..7dcd44c --- /dev/null +++ b/assets/textures/blockout_textures/128/mark/green_mark_black.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://db23t56gwpje4" +path="res://.godot/imported/green_mark_black.png-6f1f19d448074d0422ad90a28324f973.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/mark/green_mark_black.png" +dest_files=["res://.godot/imported/green_mark_black.png-6f1f19d448074d0422ad90a28324f973.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/mark/green_mark_transparent.png b/assets/textures/blockout_textures/128/mark/green_mark_transparent.png new file mode 100644 index 0000000..d1e2b7e Binary files /dev/null and b/assets/textures/blockout_textures/128/mark/green_mark_transparent.png differ diff --git a/assets/textures/blockout_textures/128/mark/green_mark_transparent.png.import b/assets/textures/blockout_textures/128/mark/green_mark_transparent.png.import new file mode 100644 index 0000000..c42446b --- /dev/null +++ b/assets/textures/blockout_textures/128/mark/green_mark_transparent.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cesksalvjca1j" +path="res://.godot/imported/green_mark_transparent.png-796a332fdd1f00a74f7b7fdcba7645a4.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/mark/green_mark_transparent.png" +dest_files=["res://.godot/imported/green_mark_transparent.png-796a332fdd1f00a74f7b7fdcba7645a4.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/mark/green_mark_white.png b/assets/textures/blockout_textures/128/mark/green_mark_white.png new file mode 100644 index 0000000..5fa967a Binary files /dev/null and b/assets/textures/blockout_textures/128/mark/green_mark_white.png differ diff --git a/assets/textures/blockout_textures/128/mark/green_mark_white.png.import b/assets/textures/blockout_textures/128/mark/green_mark_white.png.import new file mode 100644 index 0000000..a8ad7d5 --- /dev/null +++ b/assets/textures/blockout_textures/128/mark/green_mark_white.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ch3q4cpmos3jm" +path="res://.godot/imported/green_mark_white.png-33df4bb2360788e0d23bc4229799d3af.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/mark/green_mark_white.png" +dest_files=["res://.godot/imported/green_mark_white.png-33df4bb2360788e0d23bc4229799d3af.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/mark/orange_mark_black.png b/assets/textures/blockout_textures/128/mark/orange_mark_black.png new file mode 100644 index 0000000..d28f92f Binary files /dev/null and b/assets/textures/blockout_textures/128/mark/orange_mark_black.png differ diff --git a/assets/textures/blockout_textures/128/mark/orange_mark_black.png.import b/assets/textures/blockout_textures/128/mark/orange_mark_black.png.import new file mode 100644 index 0000000..d14a6d4 --- /dev/null +++ b/assets/textures/blockout_textures/128/mark/orange_mark_black.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bdh33ti85v22a" +path="res://.godot/imported/orange_mark_black.png-caf1a76ef97e2235ab6b0772aed3e3e4.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/mark/orange_mark_black.png" +dest_files=["res://.godot/imported/orange_mark_black.png-caf1a76ef97e2235ab6b0772aed3e3e4.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/mark/orange_mark_transparent.png b/assets/textures/blockout_textures/128/mark/orange_mark_transparent.png new file mode 100644 index 0000000..2cd7227 Binary files /dev/null and b/assets/textures/blockout_textures/128/mark/orange_mark_transparent.png differ diff --git a/assets/textures/blockout_textures/128/mark/orange_mark_transparent.png.import b/assets/textures/blockout_textures/128/mark/orange_mark_transparent.png.import new file mode 100644 index 0000000..a7ccece --- /dev/null +++ b/assets/textures/blockout_textures/128/mark/orange_mark_transparent.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://7d8iaf0oaflo" +path="res://.godot/imported/orange_mark_transparent.png-8afbde1b464a4409c94477d74ec3694a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/mark/orange_mark_transparent.png" +dest_files=["res://.godot/imported/orange_mark_transparent.png-8afbde1b464a4409c94477d74ec3694a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/mark/orange_mark_white.png b/assets/textures/blockout_textures/128/mark/orange_mark_white.png new file mode 100644 index 0000000..5060508 Binary files /dev/null and b/assets/textures/blockout_textures/128/mark/orange_mark_white.png differ diff --git a/assets/textures/blockout_textures/128/mark/orange_mark_white.png.import b/assets/textures/blockout_textures/128/mark/orange_mark_white.png.import new file mode 100644 index 0000000..3d04379 --- /dev/null +++ b/assets/textures/blockout_textures/128/mark/orange_mark_white.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dg6gyxvrqb3fa" +path="res://.godot/imported/orange_mark_white.png-bf94d1c8fe510931ae4773f8209e6f19.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/mark/orange_mark_white.png" +dest_files=["res://.godot/imported/orange_mark_white.png-bf94d1c8fe510931ae4773f8209e6f19.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/mark/purple_mark_black.png b/assets/textures/blockout_textures/128/mark/purple_mark_black.png new file mode 100644 index 0000000..b155bdf Binary files /dev/null and b/assets/textures/blockout_textures/128/mark/purple_mark_black.png differ diff --git a/assets/textures/blockout_textures/128/mark/purple_mark_black.png.import b/assets/textures/blockout_textures/128/mark/purple_mark_black.png.import new file mode 100644 index 0000000..5875e3a --- /dev/null +++ b/assets/textures/blockout_textures/128/mark/purple_mark_black.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cne8b1h0isws1" +path="res://.godot/imported/purple_mark_black.png-e46c3c6db052d759ff1bb67b6405099d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/mark/purple_mark_black.png" +dest_files=["res://.godot/imported/purple_mark_black.png-e46c3c6db052d759ff1bb67b6405099d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/mark/purple_mark_transparent.png b/assets/textures/blockout_textures/128/mark/purple_mark_transparent.png new file mode 100644 index 0000000..b103f5f Binary files /dev/null and b/assets/textures/blockout_textures/128/mark/purple_mark_transparent.png differ diff --git a/assets/textures/blockout_textures/128/mark/purple_mark_transparent.png.import b/assets/textures/blockout_textures/128/mark/purple_mark_transparent.png.import new file mode 100644 index 0000000..a1d997f --- /dev/null +++ b/assets/textures/blockout_textures/128/mark/purple_mark_transparent.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dg6aqhn3yul7g" +path="res://.godot/imported/purple_mark_transparent.png-725cceacb2572781d43dc054290c6a51.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/mark/purple_mark_transparent.png" +dest_files=["res://.godot/imported/purple_mark_transparent.png-725cceacb2572781d43dc054290c6a51.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/mark/purple_mark_white.png b/assets/textures/blockout_textures/128/mark/purple_mark_white.png new file mode 100644 index 0000000..d94d991 Binary files /dev/null and b/assets/textures/blockout_textures/128/mark/purple_mark_white.png differ diff --git a/assets/textures/blockout_textures/128/mark/purple_mark_white.png.import b/assets/textures/blockout_textures/128/mark/purple_mark_white.png.import new file mode 100644 index 0000000..f5d1d11 --- /dev/null +++ b/assets/textures/blockout_textures/128/mark/purple_mark_white.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://reagu1cu3pj1" +path="res://.godot/imported/purple_mark_white.png-90dba8ce9880e4afe15573675bf99192.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/mark/purple_mark_white.png" +dest_files=["res://.godot/imported/purple_mark_white.png-90dba8ce9880e4afe15573675bf99192.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/mark/red_mark_black.png b/assets/textures/blockout_textures/128/mark/red_mark_black.png new file mode 100644 index 0000000..71dea8b Binary files /dev/null and b/assets/textures/blockout_textures/128/mark/red_mark_black.png differ diff --git a/assets/textures/blockout_textures/128/mark/red_mark_black.png.import b/assets/textures/blockout_textures/128/mark/red_mark_black.png.import new file mode 100644 index 0000000..8eed6c7 --- /dev/null +++ b/assets/textures/blockout_textures/128/mark/red_mark_black.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dya8t3j2bb5hx" +path="res://.godot/imported/red_mark_black.png-e15885bcc1f3c6e7156b6a710af7d722.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/mark/red_mark_black.png" +dest_files=["res://.godot/imported/red_mark_black.png-e15885bcc1f3c6e7156b6a710af7d722.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/mark/red_mark_transparent.png b/assets/textures/blockout_textures/128/mark/red_mark_transparent.png new file mode 100644 index 0000000..1d4a772 Binary files /dev/null and b/assets/textures/blockout_textures/128/mark/red_mark_transparent.png differ diff --git a/assets/textures/blockout_textures/128/mark/red_mark_transparent.png.import b/assets/textures/blockout_textures/128/mark/red_mark_transparent.png.import new file mode 100644 index 0000000..da78d7f --- /dev/null +++ b/assets/textures/blockout_textures/128/mark/red_mark_transparent.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bvyctyr45qvll" +path="res://.godot/imported/red_mark_transparent.png-6a2632f34ead464747ec1901ba605a22.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/mark/red_mark_transparent.png" +dest_files=["res://.godot/imported/red_mark_transparent.png-6a2632f34ead464747ec1901ba605a22.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/mark/red_mark_white.png b/assets/textures/blockout_textures/128/mark/red_mark_white.png new file mode 100644 index 0000000..adb5177 Binary files /dev/null and b/assets/textures/blockout_textures/128/mark/red_mark_white.png differ diff --git a/assets/textures/blockout_textures/128/mark/red_mark_white.png.import b/assets/textures/blockout_textures/128/mark/red_mark_white.png.import new file mode 100644 index 0000000..2248bfd --- /dev/null +++ b/assets/textures/blockout_textures/128/mark/red_mark_white.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://4u7pqblmxbfc" +path="res://.godot/imported/red_mark_white.png-1333f5f96e1c65c07b747759aa33d79d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/mark/red_mark_white.png" +dest_files=["res://.godot/imported/red_mark_white.png-1333f5f96e1c65c07b747759aa33d79d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/mark/white_mark.png b/assets/textures/blockout_textures/128/mark/white_mark.png new file mode 100644 index 0000000..4b84584 Binary files /dev/null and b/assets/textures/blockout_textures/128/mark/white_mark.png differ diff --git a/assets/textures/blockout_textures/128/mark/white_mark.png.import b/assets/textures/blockout_textures/128/mark/white_mark.png.import new file mode 100644 index 0000000..91d3255 --- /dev/null +++ b/assets/textures/blockout_textures/128/mark/white_mark.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://jfb28vd5sq2o" +path="res://.godot/imported/white_mark.png-ee81e37d414106f3915164eb08bee66c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/mark/white_mark.png" +dest_files=["res://.godot/imported/white_mark.png-ee81e37d414106f3915164eb08bee66c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/mark/yellow_mark_black.png b/assets/textures/blockout_textures/128/mark/yellow_mark_black.png new file mode 100644 index 0000000..9f2de1d Binary files /dev/null and b/assets/textures/blockout_textures/128/mark/yellow_mark_black.png differ diff --git a/assets/textures/blockout_textures/128/mark/yellow_mark_black.png.import b/assets/textures/blockout_textures/128/mark/yellow_mark_black.png.import new file mode 100644 index 0000000..08daf2a --- /dev/null +++ b/assets/textures/blockout_textures/128/mark/yellow_mark_black.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bx5craao0iuij" +path="res://.godot/imported/yellow_mark_black.png-8db309c9600e3348e39c2a80cf92d00e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/mark/yellow_mark_black.png" +dest_files=["res://.godot/imported/yellow_mark_black.png-8db309c9600e3348e39c2a80cf92d00e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/mark/yellow_mark_transparent.png b/assets/textures/blockout_textures/128/mark/yellow_mark_transparent.png new file mode 100644 index 0000000..31307a4 Binary files /dev/null and b/assets/textures/blockout_textures/128/mark/yellow_mark_transparent.png differ diff --git a/assets/textures/blockout_textures/128/mark/yellow_mark_transparent.png.import b/assets/textures/blockout_textures/128/mark/yellow_mark_transparent.png.import new file mode 100644 index 0000000..5860556 --- /dev/null +++ b/assets/textures/blockout_textures/128/mark/yellow_mark_transparent.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://5msyyeqasr6w" +path="res://.godot/imported/yellow_mark_transparent.png-83db5f60912138e46c55e030efb01d14.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/mark/yellow_mark_transparent.png" +dest_files=["res://.godot/imported/yellow_mark_transparent.png-83db5f60912138e46c55e030efb01d14.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/mark/yellow_mark_white.png b/assets/textures/blockout_textures/128/mark/yellow_mark_white.png new file mode 100644 index 0000000..03466fc Binary files /dev/null and b/assets/textures/blockout_textures/128/mark/yellow_mark_white.png differ diff --git a/assets/textures/blockout_textures/128/mark/yellow_mark_white.png.import b/assets/textures/blockout_textures/128/mark/yellow_mark_white.png.import new file mode 100644 index 0000000..dce68bb --- /dev/null +++ b/assets/textures/blockout_textures/128/mark/yellow_mark_white.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://clsr6c443tey4" +path="res://.godot/imported/yellow_mark_white.png-0c08580ff12ed3ccacf1a9b6314bfb4b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/mark/yellow_mark_white.png" +dest_files=["res://.godot/imported/yellow_mark_white.png-0c08580ff12ed3ccacf1a9b6314bfb4b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/nature/nature_grass_1.png b/assets/textures/blockout_textures/128/nature/nature_grass_1.png new file mode 100644 index 0000000..d8a5472 Binary files /dev/null and b/assets/textures/blockout_textures/128/nature/nature_grass_1.png differ diff --git a/assets/textures/blockout_textures/128/nature/nature_grass_1.png.import b/assets/textures/blockout_textures/128/nature/nature_grass_1.png.import new file mode 100644 index 0000000..897b310 --- /dev/null +++ b/assets/textures/blockout_textures/128/nature/nature_grass_1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://yfd1vpua3vkx" +path="res://.godot/imported/nature_grass_1.png-1caf137555f8d3c0ee31aa29b901fb64.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/nature/nature_grass_1.png" +dest_files=["res://.godot/imported/nature_grass_1.png-1caf137555f8d3c0ee31aa29b901fb64.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/nature/nature_grass_2.png b/assets/textures/blockout_textures/128/nature/nature_grass_2.png new file mode 100644 index 0000000..bc758c2 Binary files /dev/null and b/assets/textures/blockout_textures/128/nature/nature_grass_2.png differ diff --git a/assets/textures/blockout_textures/128/nature/nature_grass_2.png.import b/assets/textures/blockout_textures/128/nature/nature_grass_2.png.import new file mode 100644 index 0000000..bc46bed --- /dev/null +++ b/assets/textures/blockout_textures/128/nature/nature_grass_2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ru3rn75m3jlu" +path="res://.godot/imported/nature_grass_2.png-427718fe528e2bade6ae4f567204fe4c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/nature/nature_grass_2.png" +dest_files=["res://.godot/imported/nature_grass_2.png-427718fe528e2bade6ae4f567204fe4c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/nature/nature_grass_3.png b/assets/textures/blockout_textures/128/nature/nature_grass_3.png new file mode 100644 index 0000000..e33e48a Binary files /dev/null and b/assets/textures/blockout_textures/128/nature/nature_grass_3.png differ diff --git a/assets/textures/blockout_textures/128/nature/nature_grass_3.png.import b/assets/textures/blockout_textures/128/nature/nature_grass_3.png.import new file mode 100644 index 0000000..f31552c --- /dev/null +++ b/assets/textures/blockout_textures/128/nature/nature_grass_3.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bof1306ocwx4c" +path="res://.godot/imported/nature_grass_3.png-420947069f57b0f26b8bc0c3c10d2622.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/nature/nature_grass_3.png" +dest_files=["res://.godot/imported/nature_grass_3.png-420947069f57b0f26b8bc0c3c10d2622.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/nature/nature_grass_4.png b/assets/textures/blockout_textures/128/nature/nature_grass_4.png new file mode 100644 index 0000000..5e5ed09 Binary files /dev/null and b/assets/textures/blockout_textures/128/nature/nature_grass_4.png differ diff --git a/assets/textures/blockout_textures/128/nature/nature_grass_4.png.import b/assets/textures/blockout_textures/128/nature/nature_grass_4.png.import new file mode 100644 index 0000000..ba143d0 --- /dev/null +++ b/assets/textures/blockout_textures/128/nature/nature_grass_4.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://das3s6bdjcp6m" +path="res://.godot/imported/nature_grass_4.png-0c8083099881234886cea1504b981045.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/nature/nature_grass_4.png" +dest_files=["res://.godot/imported/nature_grass_4.png-0c8083099881234886cea1504b981045.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/nature/nature_ground_1.png b/assets/textures/blockout_textures/128/nature/nature_ground_1.png new file mode 100644 index 0000000..2dabde4 Binary files /dev/null and b/assets/textures/blockout_textures/128/nature/nature_ground_1.png differ diff --git a/assets/textures/blockout_textures/128/nature/nature_ground_1.png.import b/assets/textures/blockout_textures/128/nature/nature_ground_1.png.import new file mode 100644 index 0000000..1d731ff --- /dev/null +++ b/assets/textures/blockout_textures/128/nature/nature_ground_1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c5slge4l4jkvg" +path="res://.godot/imported/nature_ground_1.png-59a21e6952fee64faee19f7dd5ef5a13.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/nature/nature_ground_1.png" +dest_files=["res://.godot/imported/nature_ground_1.png-59a21e6952fee64faee19f7dd5ef5a13.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/nature/nature_ground_2.png b/assets/textures/blockout_textures/128/nature/nature_ground_2.png new file mode 100644 index 0000000..7996ca5 Binary files /dev/null and b/assets/textures/blockout_textures/128/nature/nature_ground_2.png differ diff --git a/assets/textures/blockout_textures/128/nature/nature_ground_2.png.import b/assets/textures/blockout_textures/128/nature/nature_ground_2.png.import new file mode 100644 index 0000000..6228070 --- /dev/null +++ b/assets/textures/blockout_textures/128/nature/nature_ground_2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ba2qvmgrj47s2" +path="res://.godot/imported/nature_ground_2.png-17230aa6657a7dc1ccd0911a6879441d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/nature/nature_ground_2.png" +dest_files=["res://.godot/imported/nature_ground_2.png-17230aa6657a7dc1ccd0911a6879441d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/nature/nature_ground_3.png b/assets/textures/blockout_textures/128/nature/nature_ground_3.png new file mode 100644 index 0000000..7618509 Binary files /dev/null and b/assets/textures/blockout_textures/128/nature/nature_ground_3.png differ diff --git a/assets/textures/blockout_textures/128/nature/nature_ground_3.png.import b/assets/textures/blockout_textures/128/nature/nature_ground_3.png.import new file mode 100644 index 0000000..4b2f363 --- /dev/null +++ b/assets/textures/blockout_textures/128/nature/nature_ground_3.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://blylruwm4eibr" +path="res://.godot/imported/nature_ground_3.png-cac139de4cbbf8049e279c15564160d8.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/nature/nature_ground_3.png" +dest_files=["res://.godot/imported/nature_ground_3.png-cac139de4cbbf8049e279c15564160d8.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/nature/nature_ground_4.png b/assets/textures/blockout_textures/128/nature/nature_ground_4.png new file mode 100644 index 0000000..608b1ea Binary files /dev/null and b/assets/textures/blockout_textures/128/nature/nature_ground_4.png differ diff --git a/assets/textures/blockout_textures/128/nature/nature_ground_4.png.import b/assets/textures/blockout_textures/128/nature/nature_ground_4.png.import new file mode 100644 index 0000000..27d15be --- /dev/null +++ b/assets/textures/blockout_textures/128/nature/nature_ground_4.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b33i4115qo1nl" +path="res://.godot/imported/nature_ground_4.png-560a8886f74e66f6e93c1e548d37de87.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/nature/nature_ground_4.png" +dest_files=["res://.godot/imported/nature_ground_4.png-560a8886f74e66f6e93c1e548d37de87.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/nature/nature_rock_1.png b/assets/textures/blockout_textures/128/nature/nature_rock_1.png new file mode 100644 index 0000000..49582ca Binary files /dev/null and b/assets/textures/blockout_textures/128/nature/nature_rock_1.png differ diff --git a/assets/textures/blockout_textures/128/nature/nature_rock_1.png.import b/assets/textures/blockout_textures/128/nature/nature_rock_1.png.import new file mode 100644 index 0000000..2aa8ca1 --- /dev/null +++ b/assets/textures/blockout_textures/128/nature/nature_rock_1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c1ba4i05ftcp7" +path="res://.godot/imported/nature_rock_1.png-b72e78714efc46884f2f8e676d26cc07.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/nature/nature_rock_1.png" +dest_files=["res://.godot/imported/nature_rock_1.png-b72e78714efc46884f2f8e676d26cc07.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/nature/nature_rock_2.png b/assets/textures/blockout_textures/128/nature/nature_rock_2.png new file mode 100644 index 0000000..1b79f92 Binary files /dev/null and b/assets/textures/blockout_textures/128/nature/nature_rock_2.png differ diff --git a/assets/textures/blockout_textures/128/nature/nature_rock_2.png.import b/assets/textures/blockout_textures/128/nature/nature_rock_2.png.import new file mode 100644 index 0000000..9203755 --- /dev/null +++ b/assets/textures/blockout_textures/128/nature/nature_rock_2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d34vph0kjkiod" +path="res://.godot/imported/nature_rock_2.png-0862bd3bb65d74b781a88606b67e28f5.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/nature/nature_rock_2.png" +dest_files=["res://.godot/imported/nature_rock_2.png-0862bd3bb65d74b781a88606b67e28f5.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/nature/nature_rock_3.png b/assets/textures/blockout_textures/128/nature/nature_rock_3.png new file mode 100644 index 0000000..e2f93e5 Binary files /dev/null and b/assets/textures/blockout_textures/128/nature/nature_rock_3.png differ diff --git a/assets/textures/blockout_textures/128/nature/nature_rock_3.png.import b/assets/textures/blockout_textures/128/nature/nature_rock_3.png.import new file mode 100644 index 0000000..3a838d0 --- /dev/null +++ b/assets/textures/blockout_textures/128/nature/nature_rock_3.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cqms4vncvuv81" +path="res://.godot/imported/nature_rock_3.png-7e551d81a26cbf5be9ec066a8d2ea925.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/nature/nature_rock_3.png" +dest_files=["res://.godot/imported/nature_rock_3.png-7e551d81a26cbf5be9ec066a8d2ea925.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/nature/nature_rock_4.png b/assets/textures/blockout_textures/128/nature/nature_rock_4.png new file mode 100644 index 0000000..85b678a Binary files /dev/null and b/assets/textures/blockout_textures/128/nature/nature_rock_4.png differ diff --git a/assets/textures/blockout_textures/128/nature/nature_rock_4.png.import b/assets/textures/blockout_textures/128/nature/nature_rock_4.png.import new file mode 100644 index 0000000..43fe0b1 --- /dev/null +++ b/assets/textures/blockout_textures/128/nature/nature_rock_4.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ct0blhn3km7ox" +path="res://.godot/imported/nature_rock_4.png-2fc1a09d0e0d440bb7ab552c62e0b414.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/nature/nature_rock_4.png" +dest_files=["res://.godot/imported/nature_rock_4.png-2fc1a09d0e0d440bb7ab552c62e0b414.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/nature/nature_sand_1.png b/assets/textures/blockout_textures/128/nature/nature_sand_1.png new file mode 100644 index 0000000..e4c95a8 Binary files /dev/null and b/assets/textures/blockout_textures/128/nature/nature_sand_1.png differ diff --git a/assets/textures/blockout_textures/128/nature/nature_sand_1.png.import b/assets/textures/blockout_textures/128/nature/nature_sand_1.png.import new file mode 100644 index 0000000..703d9cd --- /dev/null +++ b/assets/textures/blockout_textures/128/nature/nature_sand_1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dyexeb1accmtw" +path="res://.godot/imported/nature_sand_1.png-2e35bb64957c7d2c493d33fabc15244e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/nature/nature_sand_1.png" +dest_files=["res://.godot/imported/nature_sand_1.png-2e35bb64957c7d2c493d33fabc15244e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/nature/nature_sand_2.png b/assets/textures/blockout_textures/128/nature/nature_sand_2.png new file mode 100644 index 0000000..de7e307 Binary files /dev/null and b/assets/textures/blockout_textures/128/nature/nature_sand_2.png differ diff --git a/assets/textures/blockout_textures/128/nature/nature_sand_2.png.import b/assets/textures/blockout_textures/128/nature/nature_sand_2.png.import new file mode 100644 index 0000000..5ec05a8 --- /dev/null +++ b/assets/textures/blockout_textures/128/nature/nature_sand_2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://mj2rl8oij8to" +path="res://.godot/imported/nature_sand_2.png-530b6ede7dbdc411ed04c7a00529d42b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/nature/nature_sand_2.png" +dest_files=["res://.godot/imported/nature_sand_2.png-530b6ede7dbdc411ed04c7a00529d42b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/nature/nature_sand_3.png b/assets/textures/blockout_textures/128/nature/nature_sand_3.png new file mode 100644 index 0000000..bc25ae4 Binary files /dev/null and b/assets/textures/blockout_textures/128/nature/nature_sand_3.png differ diff --git a/assets/textures/blockout_textures/128/nature/nature_sand_3.png.import b/assets/textures/blockout_textures/128/nature/nature_sand_3.png.import new file mode 100644 index 0000000..08a0c50 --- /dev/null +++ b/assets/textures/blockout_textures/128/nature/nature_sand_3.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dirlo587qghrh" +path="res://.godot/imported/nature_sand_3.png-a39b0c8f914d9ffa45bbdd067e5c0838.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/nature/nature_sand_3.png" +dest_files=["res://.godot/imported/nature_sand_3.png-a39b0c8f914d9ffa45bbdd067e5c0838.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/nature/nature_sand_4.png b/assets/textures/blockout_textures/128/nature/nature_sand_4.png new file mode 100644 index 0000000..2d958e2 Binary files /dev/null and b/assets/textures/blockout_textures/128/nature/nature_sand_4.png differ diff --git a/assets/textures/blockout_textures/128/nature/nature_sand_4.png.import b/assets/textures/blockout_textures/128/nature/nature_sand_4.png.import new file mode 100644 index 0000000..3793563 --- /dev/null +++ b/assets/textures/blockout_textures/128/nature/nature_sand_4.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c1kam6nrnbj18" +path="res://.godot/imported/nature_sand_4.png-d5f7b1a519c033b955a758679d8d1a0e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/nature/nature_sand_4.png" +dest_files=["res://.godot/imported/nature_sand_4.png-d5f7b1a519c033b955a758679d8d1a0e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/nature/nature_water_1.png b/assets/textures/blockout_textures/128/nature/nature_water_1.png new file mode 100644 index 0000000..fa5d107 Binary files /dev/null and b/assets/textures/blockout_textures/128/nature/nature_water_1.png differ diff --git a/assets/textures/blockout_textures/128/nature/nature_water_1.png.import b/assets/textures/blockout_textures/128/nature/nature_water_1.png.import new file mode 100644 index 0000000..2c99863 --- /dev/null +++ b/assets/textures/blockout_textures/128/nature/nature_water_1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://eykimrkbn1xe" +path="res://.godot/imported/nature_water_1.png-b9fdff78269125d23fe32dd4612836b1.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/nature/nature_water_1.png" +dest_files=["res://.godot/imported/nature_water_1.png-b9fdff78269125d23fe32dd4612836b1.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/nature/nature_water_2.png b/assets/textures/blockout_textures/128/nature/nature_water_2.png new file mode 100644 index 0000000..1d6a6e3 Binary files /dev/null and b/assets/textures/blockout_textures/128/nature/nature_water_2.png differ diff --git a/assets/textures/blockout_textures/128/nature/nature_water_2.png.import b/assets/textures/blockout_textures/128/nature/nature_water_2.png.import new file mode 100644 index 0000000..fbda473 --- /dev/null +++ b/assets/textures/blockout_textures/128/nature/nature_water_2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://n7w5l2y1mt2k" +path="res://.godot/imported/nature_water_2.png-5be9bb401ebda77d5e92541436cf58dd.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/nature/nature_water_2.png" +dest_files=["res://.godot/imported/nature_water_2.png-5be9bb401ebda77d5e92541436cf58dd.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/nature/nature_water_3.png b/assets/textures/blockout_textures/128/nature/nature_water_3.png new file mode 100644 index 0000000..1db1f05 Binary files /dev/null and b/assets/textures/blockout_textures/128/nature/nature_water_3.png differ diff --git a/assets/textures/blockout_textures/128/nature/nature_water_3.png.import b/assets/textures/blockout_textures/128/nature/nature_water_3.png.import new file mode 100644 index 0000000..ebc53b6 --- /dev/null +++ b/assets/textures/blockout_textures/128/nature/nature_water_3.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bjovhak0tmuik" +path="res://.godot/imported/nature_water_3.png-419c2d373697066a93eefdf1139e8489.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/nature/nature_water_3.png" +dest_files=["res://.godot/imported/nature_water_3.png-419c2d373697066a93eefdf1139e8489.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/128/nature/nature_water_4.png b/assets/textures/blockout_textures/128/nature/nature_water_4.png new file mode 100644 index 0000000..2970b90 Binary files /dev/null and b/assets/textures/blockout_textures/128/nature/nature_water_4.png differ diff --git a/assets/textures/blockout_textures/128/nature/nature_water_4.png.import b/assets/textures/blockout_textures/128/nature/nature_water_4.png.import new file mode 100644 index 0000000..0ee3de5 --- /dev/null +++ b/assets/textures/blockout_textures/128/nature/nature_water_4.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c5m47cctpmsbp" +path="res://.godot/imported/nature_water_4.png-5525da5e66b70a19d9e059698cc6b05c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/128/nature/nature_water_4.png" +dest_files=["res://.godot/imported/nature_water_4.png-5525da5e66b70a19d9e059698cc6b05c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/aqua_check.png b/assets/textures/blockout_textures/256/basic/aqua_check.png new file mode 100644 index 0000000..07ef49e Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/aqua_check.png differ diff --git a/assets/textures/blockout_textures/256/basic/aqua_check.png.import b/assets/textures/blockout_textures/256/basic/aqua_check.png.import new file mode 100644 index 0000000..095e23b --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/aqua_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c87ril12vq8ho" +path="res://.godot/imported/aqua_check.png-78b6b434604076b6f9ec4563f71973cd.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/aqua_check.png" +dest_files=["res://.godot/imported/aqua_check.png-78b6b434604076b6f9ec4563f71973cd.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/aqua_cross.png b/assets/textures/blockout_textures/256/basic/aqua_cross.png new file mode 100644 index 0000000..662148f Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/aqua_cross.png differ diff --git a/assets/textures/blockout_textures/256/basic/aqua_cross.png.import b/assets/textures/blockout_textures/256/basic/aqua_cross.png.import new file mode 100644 index 0000000..fb10abd --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/aqua_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c6ix2da6jrti1" +path="res://.godot/imported/aqua_cross.png-e46e4aaf415c45fc1e4d36e173365713.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/aqua_cross.png" +dest_files=["res://.godot/imported/aqua_cross.png-e46e4aaf415c45fc1e4d36e173365713.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/aqua_dots.png b/assets/textures/blockout_textures/256/basic/aqua_dots.png new file mode 100644 index 0000000..2c96610 Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/aqua_dots.png differ diff --git a/assets/textures/blockout_textures/256/basic/aqua_dots.png.import b/assets/textures/blockout_textures/256/basic/aqua_dots.png.import new file mode 100644 index 0000000..eec5553 --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/aqua_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cbwd6cnahjeyv" +path="res://.godot/imported/aqua_dots.png-beea18bed9ec833c7f6806b8c4f80d9c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/aqua_dots.png" +dest_files=["res://.godot/imported/aqua_dots.png-beea18bed9ec833c7f6806b8c4f80d9c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/aqua_grid.png b/assets/textures/blockout_textures/256/basic/aqua_grid.png new file mode 100644 index 0000000..67c382c Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/aqua_grid.png differ diff --git a/assets/textures/blockout_textures/256/basic/aqua_grid.png.import b/assets/textures/blockout_textures/256/basic/aqua_grid.png.import new file mode 100644 index 0000000..0aae4ef --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/aqua_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://co0noa2j2b10y" +path="res://.godot/imported/aqua_grid.png-9a49a9246fd4de295e23a91925939c01.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/aqua_grid.png" +dest_files=["res://.godot/imported/aqua_grid.png-9a49a9246fd4de295e23a91925939c01.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/aqua_light_check.png b/assets/textures/blockout_textures/256/basic/aqua_light_check.png new file mode 100644 index 0000000..5fd911c Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/aqua_light_check.png differ diff --git a/assets/textures/blockout_textures/256/basic/aqua_light_check.png.import b/assets/textures/blockout_textures/256/basic/aqua_light_check.png.import new file mode 100644 index 0000000..9cffdcb --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/aqua_light_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://v237klmqvsm6" +path="res://.godot/imported/aqua_light_check.png-de06d7d79253f1adca25caeaa53d92d9.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/aqua_light_check.png" +dest_files=["res://.godot/imported/aqua_light_check.png-de06d7d79253f1adca25caeaa53d92d9.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/aqua_light_cross.png b/assets/textures/blockout_textures/256/basic/aqua_light_cross.png new file mode 100644 index 0000000..445ffd1 Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/aqua_light_cross.png differ diff --git a/assets/textures/blockout_textures/256/basic/aqua_light_cross.png.import b/assets/textures/blockout_textures/256/basic/aqua_light_cross.png.import new file mode 100644 index 0000000..61a6059 --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/aqua_light_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c1c1y416bwieo" +path="res://.godot/imported/aqua_light_cross.png-c3e5b88e0fa3b7f58d8dcc237f78c1c9.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/aqua_light_cross.png" +dest_files=["res://.godot/imported/aqua_light_cross.png-c3e5b88e0fa3b7f58d8dcc237f78c1c9.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/aqua_light_dots.png b/assets/textures/blockout_textures/256/basic/aqua_light_dots.png new file mode 100644 index 0000000..2a20db1 Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/aqua_light_dots.png differ diff --git a/assets/textures/blockout_textures/256/basic/aqua_light_dots.png.import b/assets/textures/blockout_textures/256/basic/aqua_light_dots.png.import new file mode 100644 index 0000000..30738ed --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/aqua_light_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://2p1fq1dhbll4" +path="res://.godot/imported/aqua_light_dots.png-b5c1fbd69d5bcc0e5483fbdda5770e49.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/aqua_light_dots.png" +dest_files=["res://.godot/imported/aqua_light_dots.png-b5c1fbd69d5bcc0e5483fbdda5770e49.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/aqua_light_grid.png b/assets/textures/blockout_textures/256/basic/aqua_light_grid.png new file mode 100644 index 0000000..5995913 Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/aqua_light_grid.png differ diff --git a/assets/textures/blockout_textures/256/basic/aqua_light_grid.png.import b/assets/textures/blockout_textures/256/basic/aqua_light_grid.png.import new file mode 100644 index 0000000..fcc2372 --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/aqua_light_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b0u5cem123u2p" +path="res://.godot/imported/aqua_light_grid.png-4b09667c012963e89f37557aa8f2786d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/aqua_light_grid.png" +dest_files=["res://.godot/imported/aqua_light_grid.png-4b09667c012963e89f37557aa8f2786d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/black_check.png b/assets/textures/blockout_textures/256/basic/black_check.png new file mode 100644 index 0000000..156e18b Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/black_check.png differ diff --git a/assets/textures/blockout_textures/256/basic/black_check.png.import b/assets/textures/blockout_textures/256/basic/black_check.png.import new file mode 100644 index 0000000..92581bc --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/black_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ce83c84ttinpb" +path="res://.godot/imported/black_check.png-2c669f25123cc4f01c09c81a817af6c7.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/black_check.png" +dest_files=["res://.godot/imported/black_check.png-2c669f25123cc4f01c09c81a817af6c7.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/black_cross.png b/assets/textures/blockout_textures/256/basic/black_cross.png new file mode 100644 index 0000000..a28805c Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/black_cross.png differ diff --git a/assets/textures/blockout_textures/256/basic/black_cross.png.import b/assets/textures/blockout_textures/256/basic/black_cross.png.import new file mode 100644 index 0000000..7d4f1c9 --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/black_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b8n4txgvouywy" +path="res://.godot/imported/black_cross.png-4289c9be7087c0ff610eebbda03b09f7.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/black_cross.png" +dest_files=["res://.godot/imported/black_cross.png-4289c9be7087c0ff610eebbda03b09f7.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/black_dots.png b/assets/textures/blockout_textures/256/basic/black_dots.png new file mode 100644 index 0000000..5b34068 Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/black_dots.png differ diff --git a/assets/textures/blockout_textures/256/basic/black_dots.png.import b/assets/textures/blockout_textures/256/basic/black_dots.png.import new file mode 100644 index 0000000..4d5f938 --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/black_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://nocim2ghodxp" +path="res://.godot/imported/black_dots.png-6006c4c23b7b392ab61aa9584164b2ca.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/black_dots.png" +dest_files=["res://.godot/imported/black_dots.png-6006c4c23b7b392ab61aa9584164b2ca.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/black_grid.png b/assets/textures/blockout_textures/256/basic/black_grid.png new file mode 100644 index 0000000..d4d28df Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/black_grid.png differ diff --git a/assets/textures/blockout_textures/256/basic/black_grid.png.import b/assets/textures/blockout_textures/256/basic/black_grid.png.import new file mode 100644 index 0000000..d115e90 --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/black_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dowxndfj3ilgb" +path="res://.godot/imported/black_grid.png-71432dd9fbf73d4658269289323a4eb7.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/black_grid.png" +dest_files=["res://.godot/imported/black_grid.png-71432dd9fbf73d4658269289323a4eb7.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/blue_check.png b/assets/textures/blockout_textures/256/basic/blue_check.png new file mode 100644 index 0000000..50e8b97 Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/blue_check.png differ diff --git a/assets/textures/blockout_textures/256/basic/blue_check.png.import b/assets/textures/blockout_textures/256/basic/blue_check.png.import new file mode 100644 index 0000000..ce18426 --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/blue_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dxexf03puw8gc" +path="res://.godot/imported/blue_check.png-9a62c98f17d75d76b11c2f5c171f183e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/blue_check.png" +dest_files=["res://.godot/imported/blue_check.png-9a62c98f17d75d76b11c2f5c171f183e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/blue_cross.png b/assets/textures/blockout_textures/256/basic/blue_cross.png new file mode 100644 index 0000000..76b84be Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/blue_cross.png differ diff --git a/assets/textures/blockout_textures/256/basic/blue_cross.png.import b/assets/textures/blockout_textures/256/basic/blue_cross.png.import new file mode 100644 index 0000000..5fbc924 --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/blue_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b4pfo018ivvd" +path="res://.godot/imported/blue_cross.png-8d61b96809f28f9cd8bc8cb27daf6aec.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/blue_cross.png" +dest_files=["res://.godot/imported/blue_cross.png-8d61b96809f28f9cd8bc8cb27daf6aec.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/blue_dots.png b/assets/textures/blockout_textures/256/basic/blue_dots.png new file mode 100644 index 0000000..bcb9f38 Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/blue_dots.png differ diff --git a/assets/textures/blockout_textures/256/basic/blue_dots.png.import b/assets/textures/blockout_textures/256/basic/blue_dots.png.import new file mode 100644 index 0000000..9990c72 --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/blue_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c7haf2jh8knkn" +path="res://.godot/imported/blue_dots.png-d633b13cd8cbeaebe40e0bdd28a62d5d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/blue_dots.png" +dest_files=["res://.godot/imported/blue_dots.png-d633b13cd8cbeaebe40e0bdd28a62d5d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/blue_grid.png b/assets/textures/blockout_textures/256/basic/blue_grid.png new file mode 100644 index 0000000..6708785 Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/blue_grid.png differ diff --git a/assets/textures/blockout_textures/256/basic/blue_grid.png.import b/assets/textures/blockout_textures/256/basic/blue_grid.png.import new file mode 100644 index 0000000..e3758fe --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/blue_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c2lrs2vp1bmlp" +path="res://.godot/imported/blue_grid.png-6a4851516f63ccccafd2271e6393ad4b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/blue_grid.png" +dest_files=["res://.godot/imported/blue_grid.png-6a4851516f63ccccafd2271e6393ad4b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/blue_light_check.png b/assets/textures/blockout_textures/256/basic/blue_light_check.png new file mode 100644 index 0000000..287d4b3 Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/blue_light_check.png differ diff --git a/assets/textures/blockout_textures/256/basic/blue_light_check.png.import b/assets/textures/blockout_textures/256/basic/blue_light_check.png.import new file mode 100644 index 0000000..f4c3504 --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/blue_light_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dpo3iokcnsykv" +path="res://.godot/imported/blue_light_check.png-bf990cf5b0ce5bd2b1ea9b80ed4cd3bc.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/blue_light_check.png" +dest_files=["res://.godot/imported/blue_light_check.png-bf990cf5b0ce5bd2b1ea9b80ed4cd3bc.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/blue_light_cross.png b/assets/textures/blockout_textures/256/basic/blue_light_cross.png new file mode 100644 index 0000000..f1ebb0e Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/blue_light_cross.png differ diff --git a/assets/textures/blockout_textures/256/basic/blue_light_cross.png.import b/assets/textures/blockout_textures/256/basic/blue_light_cross.png.import new file mode 100644 index 0000000..1286866 --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/blue_light_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c6yeip6023oyw" +path="res://.godot/imported/blue_light_cross.png-5dc50f3fcb3ab92336b5d5b840d49de6.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/blue_light_cross.png" +dest_files=["res://.godot/imported/blue_light_cross.png-5dc50f3fcb3ab92336b5d5b840d49de6.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/blue_light_dots.png b/assets/textures/blockout_textures/256/basic/blue_light_dots.png new file mode 100644 index 0000000..394d1e1 Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/blue_light_dots.png differ diff --git a/assets/textures/blockout_textures/256/basic/blue_light_dots.png.import b/assets/textures/blockout_textures/256/basic/blue_light_dots.png.import new file mode 100644 index 0000000..5a9821b --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/blue_light_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ikfeepkv7g5i" +path="res://.godot/imported/blue_light_dots.png-96ccd881f0561a51505a7ed7426ad0ce.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/blue_light_dots.png" +dest_files=["res://.godot/imported/blue_light_dots.png-96ccd881f0561a51505a7ed7426ad0ce.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/blue_light_grid.png b/assets/textures/blockout_textures/256/basic/blue_light_grid.png new file mode 100644 index 0000000..9264361 Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/blue_light_grid.png differ diff --git a/assets/textures/blockout_textures/256/basic/blue_light_grid.png.import b/assets/textures/blockout_textures/256/basic/blue_light_grid.png.import new file mode 100644 index 0000000..9b7aa4d --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/blue_light_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://8thwhnmfgw3e" +path="res://.godot/imported/blue_light_grid.png-21d0c9cd3572a13fd6b13acb9b39ae5a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/blue_light_grid.png" +dest_files=["res://.godot/imported/blue_light_grid.png-21d0c9cd3572a13fd6b13acb9b39ae5a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/gray_check.png b/assets/textures/blockout_textures/256/basic/gray_check.png new file mode 100644 index 0000000..ca1f5fe Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/gray_check.png differ diff --git a/assets/textures/blockout_textures/256/basic/gray_check.png.import b/assets/textures/blockout_textures/256/basic/gray_check.png.import new file mode 100644 index 0000000..cd5efbb --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/gray_check.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cktoirqwofn0" +path.s3tc="res://.godot/imported/gray_check.png-8f62d3324a7af58ad22af2b8f8063a4d.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/gray_check.png" +dest_files=["res://.godot/imported/gray_check.png-8f62d3324a7af58ad22af2b8f8063a4d.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/blockout_textures/256/basic/gray_cross.png b/assets/textures/blockout_textures/256/basic/gray_cross.png new file mode 100644 index 0000000..631f371 Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/gray_cross.png differ diff --git a/assets/textures/blockout_textures/256/basic/gray_cross.png.import b/assets/textures/blockout_textures/256/basic/gray_cross.png.import new file mode 100644 index 0000000..7d88fa3 --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/gray_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bwn3g2yfk0gpw" +path="res://.godot/imported/gray_cross.png-95e206be1fd70c90f88673509f3a1f25.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/gray_cross.png" +dest_files=["res://.godot/imported/gray_cross.png-95e206be1fd70c90f88673509f3a1f25.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/gray_dots.png b/assets/textures/blockout_textures/256/basic/gray_dots.png new file mode 100644 index 0000000..2e154df Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/gray_dots.png differ diff --git a/assets/textures/blockout_textures/256/basic/gray_dots.png.import b/assets/textures/blockout_textures/256/basic/gray_dots.png.import new file mode 100644 index 0000000..c82971b --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/gray_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bqyqtrjptbakd" +path="res://.godot/imported/gray_dots.png-7bcfa03e7a727db2202d873b6c1d27a3.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/gray_dots.png" +dest_files=["res://.godot/imported/gray_dots.png-7bcfa03e7a727db2202d873b6c1d27a3.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/gray_grid.png b/assets/textures/blockout_textures/256/basic/gray_grid.png new file mode 100644 index 0000000..7126e1c Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/gray_grid.png differ diff --git a/assets/textures/blockout_textures/256/basic/gray_grid.png.import b/assets/textures/blockout_textures/256/basic/gray_grid.png.import new file mode 100644 index 0000000..3da3bd4 --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/gray_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cuxseyt1ydnyu" +path="res://.godot/imported/gray_grid.png-51c4a7910947b3f023a0cff26ba22962.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/gray_grid.png" +dest_files=["res://.godot/imported/gray_grid.png-51c4a7910947b3f023a0cff26ba22962.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/green_check.png b/assets/textures/blockout_textures/256/basic/green_check.png new file mode 100644 index 0000000..0e14236 Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/green_check.png differ diff --git a/assets/textures/blockout_textures/256/basic/green_check.png.import b/assets/textures/blockout_textures/256/basic/green_check.png.import new file mode 100644 index 0000000..f08d183 --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/green_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://djal7n5ihwukd" +path="res://.godot/imported/green_check.png-5e2e852d1bb80c8f9b5ddd16d4066987.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/green_check.png" +dest_files=["res://.godot/imported/green_check.png-5e2e852d1bb80c8f9b5ddd16d4066987.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/green_cross.png b/assets/textures/blockout_textures/256/basic/green_cross.png new file mode 100644 index 0000000..8d52985 Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/green_cross.png differ diff --git a/assets/textures/blockout_textures/256/basic/green_cross.png.import b/assets/textures/blockout_textures/256/basic/green_cross.png.import new file mode 100644 index 0000000..b582b72 --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/green_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://0abvwbfrwsag" +path="res://.godot/imported/green_cross.png-e59ae3ca09360d5cd06961cdfc0a7c82.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/green_cross.png" +dest_files=["res://.godot/imported/green_cross.png-e59ae3ca09360d5cd06961cdfc0a7c82.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/green_dots.png b/assets/textures/blockout_textures/256/basic/green_dots.png new file mode 100644 index 0000000..df2c87e Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/green_dots.png differ diff --git a/assets/textures/blockout_textures/256/basic/green_dots.png.import b/assets/textures/blockout_textures/256/basic/green_dots.png.import new file mode 100644 index 0000000..33b0520 --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/green_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dnm3howddv6yn" +path="res://.godot/imported/green_dots.png-18cb98c793d12272fd49ee3abd965801.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/green_dots.png" +dest_files=["res://.godot/imported/green_dots.png-18cb98c793d12272fd49ee3abd965801.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/green_grid.png b/assets/textures/blockout_textures/256/basic/green_grid.png new file mode 100644 index 0000000..e4f3075 Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/green_grid.png differ diff --git a/assets/textures/blockout_textures/256/basic/green_grid.png.import b/assets/textures/blockout_textures/256/basic/green_grid.png.import new file mode 100644 index 0000000..ffa85a5 --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/green_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://digrqcv67elcl" +path="res://.godot/imported/green_grid.png-4930f4bcfe14524b7e313a524c60ce64.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/green_grid.png" +dest_files=["res://.godot/imported/green_grid.png-4930f4bcfe14524b7e313a524c60ce64.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/green_light_check.png b/assets/textures/blockout_textures/256/basic/green_light_check.png new file mode 100644 index 0000000..2ab5eea Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/green_light_check.png differ diff --git a/assets/textures/blockout_textures/256/basic/green_light_check.png.import b/assets/textures/blockout_textures/256/basic/green_light_check.png.import new file mode 100644 index 0000000..3d9fec5 --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/green_light_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b06ll6d46if2e" +path="res://.godot/imported/green_light_check.png-73739a331f7063e179ab58e13398daea.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/green_light_check.png" +dest_files=["res://.godot/imported/green_light_check.png-73739a331f7063e179ab58e13398daea.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/green_light_cross.png b/assets/textures/blockout_textures/256/basic/green_light_cross.png new file mode 100644 index 0000000..a61b605 Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/green_light_cross.png differ diff --git a/assets/textures/blockout_textures/256/basic/green_light_cross.png.import b/assets/textures/blockout_textures/256/basic/green_light_cross.png.import new file mode 100644 index 0000000..44849fb --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/green_light_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dsqjs27smgkmc" +path="res://.godot/imported/green_light_cross.png-0eb91f28c57e39e1f73f167dde7ad632.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/green_light_cross.png" +dest_files=["res://.godot/imported/green_light_cross.png-0eb91f28c57e39e1f73f167dde7ad632.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/green_light_dots.png b/assets/textures/blockout_textures/256/basic/green_light_dots.png new file mode 100644 index 0000000..4971639 Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/green_light_dots.png differ diff --git a/assets/textures/blockout_textures/256/basic/green_light_dots.png.import b/assets/textures/blockout_textures/256/basic/green_light_dots.png.import new file mode 100644 index 0000000..fa46306 --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/green_light_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c7j48pmbmiqji" +path="res://.godot/imported/green_light_dots.png-927b5f8fd393856c19bf173d955ffa6c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/green_light_dots.png" +dest_files=["res://.godot/imported/green_light_dots.png-927b5f8fd393856c19bf173d955ffa6c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/green_light_grid.png b/assets/textures/blockout_textures/256/basic/green_light_grid.png new file mode 100644 index 0000000..ba917ee Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/green_light_grid.png differ diff --git a/assets/textures/blockout_textures/256/basic/green_light_grid.png.import b/assets/textures/blockout_textures/256/basic/green_light_grid.png.import new file mode 100644 index 0000000..c4da883 --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/green_light_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c7xp0d8rpb43m" +path="res://.godot/imported/green_light_grid.png-18a3cb69bcbebfe98f55c2813e11c259.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/green_light_grid.png" +dest_files=["res://.godot/imported/green_light_grid.png-18a3cb69bcbebfe98f55c2813e11c259.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/orange_check.png b/assets/textures/blockout_textures/256/basic/orange_check.png new file mode 100644 index 0000000..981fd45 Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/orange_check.png differ diff --git a/assets/textures/blockout_textures/256/basic/orange_check.png.import b/assets/textures/blockout_textures/256/basic/orange_check.png.import new file mode 100644 index 0000000..1b5e51f --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/orange_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dbnm4xfyv7vey" +path="res://.godot/imported/orange_check.png-ab5c9fa725d5c36cef2aa4573505d2e0.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/orange_check.png" +dest_files=["res://.godot/imported/orange_check.png-ab5c9fa725d5c36cef2aa4573505d2e0.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/orange_cross.png b/assets/textures/blockout_textures/256/basic/orange_cross.png new file mode 100644 index 0000000..042acd5 Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/orange_cross.png differ diff --git a/assets/textures/blockout_textures/256/basic/orange_cross.png.import b/assets/textures/blockout_textures/256/basic/orange_cross.png.import new file mode 100644 index 0000000..68bbf2a --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/orange_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c2j3dgbjdbxs" +path="res://.godot/imported/orange_cross.png-778c4383ae48365dcc4a909242116e5b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/orange_cross.png" +dest_files=["res://.godot/imported/orange_cross.png-778c4383ae48365dcc4a909242116e5b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/orange_dots.png b/assets/textures/blockout_textures/256/basic/orange_dots.png new file mode 100644 index 0000000..f23feec Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/orange_dots.png differ diff --git a/assets/textures/blockout_textures/256/basic/orange_dots.png.import b/assets/textures/blockout_textures/256/basic/orange_dots.png.import new file mode 100644 index 0000000..1945a7c --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/orange_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bqgb3ti1t3mhx" +path="res://.godot/imported/orange_dots.png-5706abbeda43a814bcac027ad828ceb4.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/orange_dots.png" +dest_files=["res://.godot/imported/orange_dots.png-5706abbeda43a814bcac027ad828ceb4.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/orange_grid.png b/assets/textures/blockout_textures/256/basic/orange_grid.png new file mode 100644 index 0000000..95471fd Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/orange_grid.png differ diff --git a/assets/textures/blockout_textures/256/basic/orange_grid.png.import b/assets/textures/blockout_textures/256/basic/orange_grid.png.import new file mode 100644 index 0000000..04ae7c0 --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/orange_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://btperh13ile80" +path="res://.godot/imported/orange_grid.png-41b60391d62918a31dcc09f5ccaca5c0.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/orange_grid.png" +dest_files=["res://.godot/imported/orange_grid.png-41b60391d62918a31dcc09f5ccaca5c0.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/orange_light_check.png b/assets/textures/blockout_textures/256/basic/orange_light_check.png new file mode 100644 index 0000000..12043ed Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/orange_light_check.png differ diff --git a/assets/textures/blockout_textures/256/basic/orange_light_check.png.import b/assets/textures/blockout_textures/256/basic/orange_light_check.png.import new file mode 100644 index 0000000..82be2bc --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/orange_light_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://csr3y1ilnmr4i" +path="res://.godot/imported/orange_light_check.png-44571acb01fdda0206374185a6c60cf4.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/orange_light_check.png" +dest_files=["res://.godot/imported/orange_light_check.png-44571acb01fdda0206374185a6c60cf4.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/orange_light_cross.png b/assets/textures/blockout_textures/256/basic/orange_light_cross.png new file mode 100644 index 0000000..dd24ac8 Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/orange_light_cross.png differ diff --git a/assets/textures/blockout_textures/256/basic/orange_light_cross.png.import b/assets/textures/blockout_textures/256/basic/orange_light_cross.png.import new file mode 100644 index 0000000..3e06de7 --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/orange_light_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cxhq4022j5m2y" +path="res://.godot/imported/orange_light_cross.png-62b1f7dc813e0f6098e83330fd46fb3c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/orange_light_cross.png" +dest_files=["res://.godot/imported/orange_light_cross.png-62b1f7dc813e0f6098e83330fd46fb3c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/orange_light_dots.png b/assets/textures/blockout_textures/256/basic/orange_light_dots.png new file mode 100644 index 0000000..6fc5f0f Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/orange_light_dots.png differ diff --git a/assets/textures/blockout_textures/256/basic/orange_light_dots.png.import b/assets/textures/blockout_textures/256/basic/orange_light_dots.png.import new file mode 100644 index 0000000..dd9335f --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/orange_light_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b1agwobn57xqa" +path="res://.godot/imported/orange_light_dots.png-07242f70dc5f685fc72734f36a8f9e11.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/orange_light_dots.png" +dest_files=["res://.godot/imported/orange_light_dots.png-07242f70dc5f685fc72734f36a8f9e11.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/orange_light_grid.png b/assets/textures/blockout_textures/256/basic/orange_light_grid.png new file mode 100644 index 0000000..1e5b4ee Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/orange_light_grid.png differ diff --git a/assets/textures/blockout_textures/256/basic/orange_light_grid.png.import b/assets/textures/blockout_textures/256/basic/orange_light_grid.png.import new file mode 100644 index 0000000..485a350 --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/orange_light_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://div0h527es7qx" +path="res://.godot/imported/orange_light_grid.png-c1958cefbd3a17b95122c7efdeca362f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/orange_light_grid.png" +dest_files=["res://.godot/imported/orange_light_grid.png-c1958cefbd3a17b95122c7efdeca362f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/purple_check.png b/assets/textures/blockout_textures/256/basic/purple_check.png new file mode 100644 index 0000000..8706e50 Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/purple_check.png differ diff --git a/assets/textures/blockout_textures/256/basic/purple_check.png.import b/assets/textures/blockout_textures/256/basic/purple_check.png.import new file mode 100644 index 0000000..8d368b3 --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/purple_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://btu1w6flpnlci" +path="res://.godot/imported/purple_check.png-d2391ea4146fd9907fa1ec16ee107465.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/purple_check.png" +dest_files=["res://.godot/imported/purple_check.png-d2391ea4146fd9907fa1ec16ee107465.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/purple_cross.png b/assets/textures/blockout_textures/256/basic/purple_cross.png new file mode 100644 index 0000000..04854ee Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/purple_cross.png differ diff --git a/assets/textures/blockout_textures/256/basic/purple_cross.png.import b/assets/textures/blockout_textures/256/basic/purple_cross.png.import new file mode 100644 index 0000000..546d33a --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/purple_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://co7ylv2ktlgbf" +path="res://.godot/imported/purple_cross.png-6b8b883c1a3915961876a037431cc171.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/purple_cross.png" +dest_files=["res://.godot/imported/purple_cross.png-6b8b883c1a3915961876a037431cc171.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/purple_dots.png b/assets/textures/blockout_textures/256/basic/purple_dots.png new file mode 100644 index 0000000..7c46cb9 Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/purple_dots.png differ diff --git a/assets/textures/blockout_textures/256/basic/purple_dots.png.import b/assets/textures/blockout_textures/256/basic/purple_dots.png.import new file mode 100644 index 0000000..75deff5 --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/purple_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dl6f6shpcn52x" +path="res://.godot/imported/purple_dots.png-f1f760c368261f104b711a335347dd53.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/purple_dots.png" +dest_files=["res://.godot/imported/purple_dots.png-f1f760c368261f104b711a335347dd53.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/purple_grid.png b/assets/textures/blockout_textures/256/basic/purple_grid.png new file mode 100644 index 0000000..ae2c0f6 Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/purple_grid.png differ diff --git a/assets/textures/blockout_textures/256/basic/purple_grid.png.import b/assets/textures/blockout_textures/256/basic/purple_grid.png.import new file mode 100644 index 0000000..d74f3ea --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/purple_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b0kbuh5y578y4" +path="res://.godot/imported/purple_grid.png-29e17a318bac80619407eed434a0c135.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/purple_grid.png" +dest_files=["res://.godot/imported/purple_grid.png-29e17a318bac80619407eed434a0c135.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/purple_light_check.png b/assets/textures/blockout_textures/256/basic/purple_light_check.png new file mode 100644 index 0000000..6bb59a3 Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/purple_light_check.png differ diff --git a/assets/textures/blockout_textures/256/basic/purple_light_check.png.import b/assets/textures/blockout_textures/256/basic/purple_light_check.png.import new file mode 100644 index 0000000..8413503 --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/purple_light_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cwl5yilp6q00l" +path="res://.godot/imported/purple_light_check.png-005b330d13c3ff705991ede168b8ad6a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/purple_light_check.png" +dest_files=["res://.godot/imported/purple_light_check.png-005b330d13c3ff705991ede168b8ad6a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/purple_light_cross.png b/assets/textures/blockout_textures/256/basic/purple_light_cross.png new file mode 100644 index 0000000..40c5d09 Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/purple_light_cross.png differ diff --git a/assets/textures/blockout_textures/256/basic/purple_light_cross.png.import b/assets/textures/blockout_textures/256/basic/purple_light_cross.png.import new file mode 100644 index 0000000..43089e1 --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/purple_light_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://3jrk5ja26ph5" +path="res://.godot/imported/purple_light_cross.png-903e36624f84832330dee1bc592c20af.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/purple_light_cross.png" +dest_files=["res://.godot/imported/purple_light_cross.png-903e36624f84832330dee1bc592c20af.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/purple_light_dots.png b/assets/textures/blockout_textures/256/basic/purple_light_dots.png new file mode 100644 index 0000000..f700088 Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/purple_light_dots.png differ diff --git a/assets/textures/blockout_textures/256/basic/purple_light_dots.png.import b/assets/textures/blockout_textures/256/basic/purple_light_dots.png.import new file mode 100644 index 0000000..8b93f37 --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/purple_light_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://o2iuut2h8ikr" +path="res://.godot/imported/purple_light_dots.png-65fb18ebadf67651e8de1ed84d83154e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/purple_light_dots.png" +dest_files=["res://.godot/imported/purple_light_dots.png-65fb18ebadf67651e8de1ed84d83154e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/purple_light_grid.png b/assets/textures/blockout_textures/256/basic/purple_light_grid.png new file mode 100644 index 0000000..95cf5a5 Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/purple_light_grid.png differ diff --git a/assets/textures/blockout_textures/256/basic/purple_light_grid.png.import b/assets/textures/blockout_textures/256/basic/purple_light_grid.png.import new file mode 100644 index 0000000..efe5230 --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/purple_light_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://qa11boajvjg4" +path="res://.godot/imported/purple_light_grid.png-66d5e52b437731d9639f07db68ebe970.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/purple_light_grid.png" +dest_files=["res://.godot/imported/purple_light_grid.png-66d5e52b437731d9639f07db68ebe970.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/red_check.png b/assets/textures/blockout_textures/256/basic/red_check.png new file mode 100644 index 0000000..bc7fa4e Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/red_check.png differ diff --git a/assets/textures/blockout_textures/256/basic/red_check.png.import b/assets/textures/blockout_textures/256/basic/red_check.png.import new file mode 100644 index 0000000..604a21c --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/red_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bemcmiiwaha1o" +path="res://.godot/imported/red_check.png-f1a5cc8be921472c589cfd493c230850.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/red_check.png" +dest_files=["res://.godot/imported/red_check.png-f1a5cc8be921472c589cfd493c230850.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/red_cross.png b/assets/textures/blockout_textures/256/basic/red_cross.png new file mode 100644 index 0000000..ed367ca Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/red_cross.png differ diff --git a/assets/textures/blockout_textures/256/basic/red_cross.png.import b/assets/textures/blockout_textures/256/basic/red_cross.png.import new file mode 100644 index 0000000..06c56c9 --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/red_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ckj7vx3gbjxjn" +path="res://.godot/imported/red_cross.png-8971b8ed87809441ba46eb9eb8a5b589.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/red_cross.png" +dest_files=["res://.godot/imported/red_cross.png-8971b8ed87809441ba46eb9eb8a5b589.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/red_dots.png b/assets/textures/blockout_textures/256/basic/red_dots.png new file mode 100644 index 0000000..e75bd11 Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/red_dots.png differ diff --git a/assets/textures/blockout_textures/256/basic/red_dots.png.import b/assets/textures/blockout_textures/256/basic/red_dots.png.import new file mode 100644 index 0000000..9636523 --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/red_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cgpqt287p8xm2" +path="res://.godot/imported/red_dots.png-a8d2143f42f926c2542b21907ba1becd.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/red_dots.png" +dest_files=["res://.godot/imported/red_dots.png-a8d2143f42f926c2542b21907ba1becd.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/red_grid.png b/assets/textures/blockout_textures/256/basic/red_grid.png new file mode 100644 index 0000000..e5d169e Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/red_grid.png differ diff --git a/assets/textures/blockout_textures/256/basic/red_grid.png.import b/assets/textures/blockout_textures/256/basic/red_grid.png.import new file mode 100644 index 0000000..a89093a --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/red_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cymibbktqhyni" +path="res://.godot/imported/red_grid.png-49a4659f5cdefa79b526ef2e040e41ca.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/red_grid.png" +dest_files=["res://.godot/imported/red_grid.png-49a4659f5cdefa79b526ef2e040e41ca.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/red_light_check.png b/assets/textures/blockout_textures/256/basic/red_light_check.png new file mode 100644 index 0000000..6d51973 Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/red_light_check.png differ diff --git a/assets/textures/blockout_textures/256/basic/red_light_check.png.import b/assets/textures/blockout_textures/256/basic/red_light_check.png.import new file mode 100644 index 0000000..381912b --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/red_light_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dl56niy526er6" +path="res://.godot/imported/red_light_check.png-03d75b9ae7be7f3f400558568a9c6aa6.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/red_light_check.png" +dest_files=["res://.godot/imported/red_light_check.png-03d75b9ae7be7f3f400558568a9c6aa6.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/red_light_cross.png b/assets/textures/blockout_textures/256/basic/red_light_cross.png new file mode 100644 index 0000000..71fc3b0 Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/red_light_cross.png differ diff --git a/assets/textures/blockout_textures/256/basic/red_light_cross.png.import b/assets/textures/blockout_textures/256/basic/red_light_cross.png.import new file mode 100644 index 0000000..3147945 --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/red_light_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cp6ew4sjybpyx" +path="res://.godot/imported/red_light_cross.png-0c4a8070b490e9238d2f85a7425d22e7.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/red_light_cross.png" +dest_files=["res://.godot/imported/red_light_cross.png-0c4a8070b490e9238d2f85a7425d22e7.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/red_light_dots.png b/assets/textures/blockout_textures/256/basic/red_light_dots.png new file mode 100644 index 0000000..2ad587d Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/red_light_dots.png differ diff --git a/assets/textures/blockout_textures/256/basic/red_light_dots.png.import b/assets/textures/blockout_textures/256/basic/red_light_dots.png.import new file mode 100644 index 0000000..ea83dcd --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/red_light_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c843lafd84bwr" +path="res://.godot/imported/red_light_dots.png-bc5e87fd4b4e3f4b76546679aba19bdc.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/red_light_dots.png" +dest_files=["res://.godot/imported/red_light_dots.png-bc5e87fd4b4e3f4b76546679aba19bdc.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/red_light_grid.png b/assets/textures/blockout_textures/256/basic/red_light_grid.png new file mode 100644 index 0000000..26281bd Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/red_light_grid.png differ diff --git a/assets/textures/blockout_textures/256/basic/red_light_grid.png.import b/assets/textures/blockout_textures/256/basic/red_light_grid.png.import new file mode 100644 index 0000000..8c8071a --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/red_light_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ccig5j6mgwk4y" +path="res://.godot/imported/red_light_grid.png-fbec40573db4b1086d5c429b31f27b36.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/red_light_grid.png" +dest_files=["res://.godot/imported/red_light_grid.png-fbec40573db4b1086d5c429b31f27b36.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/white_check.png b/assets/textures/blockout_textures/256/basic/white_check.png new file mode 100644 index 0000000..5c943c2 Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/white_check.png differ diff --git a/assets/textures/blockout_textures/256/basic/white_check.png.import b/assets/textures/blockout_textures/256/basic/white_check.png.import new file mode 100644 index 0000000..b2420e5 --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/white_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bm88lnk26ejom" +path="res://.godot/imported/white_check.png-2f935209994f0a003677c992efe81862.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/white_check.png" +dest_files=["res://.godot/imported/white_check.png-2f935209994f0a003677c992efe81862.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/white_cross.png b/assets/textures/blockout_textures/256/basic/white_cross.png new file mode 100644 index 0000000..4a79487 Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/white_cross.png differ diff --git a/assets/textures/blockout_textures/256/basic/white_cross.png.import b/assets/textures/blockout_textures/256/basic/white_cross.png.import new file mode 100644 index 0000000..513df51 --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/white_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bxkv1pdp07he1" +path="res://.godot/imported/white_cross.png-6781a3ee2539e5dfeba7fd91d827a1b0.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/white_cross.png" +dest_files=["res://.godot/imported/white_cross.png-6781a3ee2539e5dfeba7fd91d827a1b0.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/white_dots.png b/assets/textures/blockout_textures/256/basic/white_dots.png new file mode 100644 index 0000000..ce36c7d Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/white_dots.png differ diff --git a/assets/textures/blockout_textures/256/basic/white_dots.png.import b/assets/textures/blockout_textures/256/basic/white_dots.png.import new file mode 100644 index 0000000..0d2c43c --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/white_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://n8e8uufpoc72" +path="res://.godot/imported/white_dots.png-3b6c40e292588ca78d43e0403f2b6a93.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/white_dots.png" +dest_files=["res://.godot/imported/white_dots.png-3b6c40e292588ca78d43e0403f2b6a93.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/white_grid.png b/assets/textures/blockout_textures/256/basic/white_grid.png new file mode 100644 index 0000000..04c8227 Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/white_grid.png differ diff --git a/assets/textures/blockout_textures/256/basic/white_grid.png.import b/assets/textures/blockout_textures/256/basic/white_grid.png.import new file mode 100644 index 0000000..587f60b --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/white_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b8rvr1da6esw6" +path="res://.godot/imported/white_grid.png-afa3ca336d4d8412dabb89f1c8de8e0e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/white_grid.png" +dest_files=["res://.godot/imported/white_grid.png-afa3ca336d4d8412dabb89f1c8de8e0e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/yellow_check.png b/assets/textures/blockout_textures/256/basic/yellow_check.png new file mode 100644 index 0000000..9c71461 Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/yellow_check.png differ diff --git a/assets/textures/blockout_textures/256/basic/yellow_check.png.import b/assets/textures/blockout_textures/256/basic/yellow_check.png.import new file mode 100644 index 0000000..e1efe17 --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/yellow_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b2yjyqn11733b" +path="res://.godot/imported/yellow_check.png-8611e1ae1ed851df20f67f6d2d67d714.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/yellow_check.png" +dest_files=["res://.godot/imported/yellow_check.png-8611e1ae1ed851df20f67f6d2d67d714.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/yellow_cross.png b/assets/textures/blockout_textures/256/basic/yellow_cross.png new file mode 100644 index 0000000..025425c Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/yellow_cross.png differ diff --git a/assets/textures/blockout_textures/256/basic/yellow_cross.png.import b/assets/textures/blockout_textures/256/basic/yellow_cross.png.import new file mode 100644 index 0000000..f4c0073 --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/yellow_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://tj1oy48oxhkk" +path="res://.godot/imported/yellow_cross.png-74e4443e8996b1fc9900be1794e3cdb4.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/yellow_cross.png" +dest_files=["res://.godot/imported/yellow_cross.png-74e4443e8996b1fc9900be1794e3cdb4.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/yellow_dots.png b/assets/textures/blockout_textures/256/basic/yellow_dots.png new file mode 100644 index 0000000..4bf58ba Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/yellow_dots.png differ diff --git a/assets/textures/blockout_textures/256/basic/yellow_dots.png.import b/assets/textures/blockout_textures/256/basic/yellow_dots.png.import new file mode 100644 index 0000000..49c6341 --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/yellow_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cq7t8u2kpfal8" +path="res://.godot/imported/yellow_dots.png-2c0e828caf9877b68e8187cca28de5b3.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/yellow_dots.png" +dest_files=["res://.godot/imported/yellow_dots.png-2c0e828caf9877b68e8187cca28de5b3.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/yellow_grid.png b/assets/textures/blockout_textures/256/basic/yellow_grid.png new file mode 100644 index 0000000..2f8136a Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/yellow_grid.png differ diff --git a/assets/textures/blockout_textures/256/basic/yellow_grid.png.import b/assets/textures/blockout_textures/256/basic/yellow_grid.png.import new file mode 100644 index 0000000..69d8116 --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/yellow_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c1k5expmhpavu" +path="res://.godot/imported/yellow_grid.png-8442cf6699829a6cd041b09639462654.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/yellow_grid.png" +dest_files=["res://.godot/imported/yellow_grid.png-8442cf6699829a6cd041b09639462654.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/yellow_light_check.png b/assets/textures/blockout_textures/256/basic/yellow_light_check.png new file mode 100644 index 0000000..47e7646 Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/yellow_light_check.png differ diff --git a/assets/textures/blockout_textures/256/basic/yellow_light_check.png.import b/assets/textures/blockout_textures/256/basic/yellow_light_check.png.import new file mode 100644 index 0000000..91d42a0 --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/yellow_light_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d3b6wuvmhel25" +path="res://.godot/imported/yellow_light_check.png-7f7c0e79cc553c4d6b4afb3cb60615e5.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/yellow_light_check.png" +dest_files=["res://.godot/imported/yellow_light_check.png-7f7c0e79cc553c4d6b4afb3cb60615e5.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/yellow_light_cross.png b/assets/textures/blockout_textures/256/basic/yellow_light_cross.png new file mode 100644 index 0000000..7b0e3dd Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/yellow_light_cross.png differ diff --git a/assets/textures/blockout_textures/256/basic/yellow_light_cross.png.import b/assets/textures/blockout_textures/256/basic/yellow_light_cross.png.import new file mode 100644 index 0000000..572d254 --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/yellow_light_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d4ljp50fe4j6t" +path="res://.godot/imported/yellow_light_cross.png-508c67c3564bf9f023de31e260704d95.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/yellow_light_cross.png" +dest_files=["res://.godot/imported/yellow_light_cross.png-508c67c3564bf9f023de31e260704d95.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/yellow_light_dots.png b/assets/textures/blockout_textures/256/basic/yellow_light_dots.png new file mode 100644 index 0000000..dbc37b7 Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/yellow_light_dots.png differ diff --git a/assets/textures/blockout_textures/256/basic/yellow_light_dots.png.import b/assets/textures/blockout_textures/256/basic/yellow_light_dots.png.import new file mode 100644 index 0000000..351c840 --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/yellow_light_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://n1afsr6a3123" +path="res://.godot/imported/yellow_light_dots.png-c333c39d13c8aba8c3bc7493fd029cf9.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/yellow_light_dots.png" +dest_files=["res://.godot/imported/yellow_light_dots.png-c333c39d13c8aba8c3bc7493fd029cf9.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/basic/yellow_light_grid.png b/assets/textures/blockout_textures/256/basic/yellow_light_grid.png new file mode 100644 index 0000000..2a9d609 Binary files /dev/null and b/assets/textures/blockout_textures/256/basic/yellow_light_grid.png differ diff --git a/assets/textures/blockout_textures/256/basic/yellow_light_grid.png.import b/assets/textures/blockout_textures/256/basic/yellow_light_grid.png.import new file mode 100644 index 0000000..ccb023a --- /dev/null +++ b/assets/textures/blockout_textures/256/basic/yellow_light_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://do4htqyjjwouc" +path="res://.godot/imported/yellow_light_grid.png-fcb4d5d191588b899a3e91e93b99d650.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/basic/yellow_light_grid.png" +dest_files=["res://.godot/imported/yellow_light_grid.png-fcb4d5d191588b899a3e91e93b99d650.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/mark/aqua_mark_black.png b/assets/textures/blockout_textures/256/mark/aqua_mark_black.png new file mode 100644 index 0000000..b258d77 Binary files /dev/null and b/assets/textures/blockout_textures/256/mark/aqua_mark_black.png differ diff --git a/assets/textures/blockout_textures/256/mark/aqua_mark_black.png.import b/assets/textures/blockout_textures/256/mark/aqua_mark_black.png.import new file mode 100644 index 0000000..cb6a3b1 --- /dev/null +++ b/assets/textures/blockout_textures/256/mark/aqua_mark_black.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d1k3h4ste04g5" +path="res://.godot/imported/aqua_mark_black.png-d92a7d224dfeffca078485b4803bd55b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/mark/aqua_mark_black.png" +dest_files=["res://.godot/imported/aqua_mark_black.png-d92a7d224dfeffca078485b4803bd55b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/mark/aqua_mark_transparent.png b/assets/textures/blockout_textures/256/mark/aqua_mark_transparent.png new file mode 100644 index 0000000..a4e3ef7 Binary files /dev/null and b/assets/textures/blockout_textures/256/mark/aqua_mark_transparent.png differ diff --git a/assets/textures/blockout_textures/256/mark/aqua_mark_transparent.png.import b/assets/textures/blockout_textures/256/mark/aqua_mark_transparent.png.import new file mode 100644 index 0000000..174e993 --- /dev/null +++ b/assets/textures/blockout_textures/256/mark/aqua_mark_transparent.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dmob7eyeh5urb" +path="res://.godot/imported/aqua_mark_transparent.png-66ec805edfaaf109092e293754b0aad5.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/mark/aqua_mark_transparent.png" +dest_files=["res://.godot/imported/aqua_mark_transparent.png-66ec805edfaaf109092e293754b0aad5.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/mark/aqua_mark_white.png b/assets/textures/blockout_textures/256/mark/aqua_mark_white.png new file mode 100644 index 0000000..983ac0a Binary files /dev/null and b/assets/textures/blockout_textures/256/mark/aqua_mark_white.png differ diff --git a/assets/textures/blockout_textures/256/mark/aqua_mark_white.png.import b/assets/textures/blockout_textures/256/mark/aqua_mark_white.png.import new file mode 100644 index 0000000..e43704d --- /dev/null +++ b/assets/textures/blockout_textures/256/mark/aqua_mark_white.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bgeowj4vwaurw" +path="res://.godot/imported/aqua_mark_white.png-483db13c747e9d4bb398bfbb1bbf693a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/mark/aqua_mark_white.png" +dest_files=["res://.godot/imported/aqua_mark_white.png-483db13c747e9d4bb398bfbb1bbf693a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/mark/black_mark.png b/assets/textures/blockout_textures/256/mark/black_mark.png new file mode 100644 index 0000000..544b57b Binary files /dev/null and b/assets/textures/blockout_textures/256/mark/black_mark.png differ diff --git a/assets/textures/blockout_textures/256/mark/black_mark.png.import b/assets/textures/blockout_textures/256/mark/black_mark.png.import new file mode 100644 index 0000000..37ad6cd --- /dev/null +++ b/assets/textures/blockout_textures/256/mark/black_mark.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c0qlrbsfaihhm" +path="res://.godot/imported/black_mark.png-c7c273a7923ccb81ddeb3a19b092b0ea.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/mark/black_mark.png" +dest_files=["res://.godot/imported/black_mark.png-c7c273a7923ccb81ddeb3a19b092b0ea.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/mark/blue_mark_black.png b/assets/textures/blockout_textures/256/mark/blue_mark_black.png new file mode 100644 index 0000000..1f7a4ef Binary files /dev/null and b/assets/textures/blockout_textures/256/mark/blue_mark_black.png differ diff --git a/assets/textures/blockout_textures/256/mark/blue_mark_black.png.import b/assets/textures/blockout_textures/256/mark/blue_mark_black.png.import new file mode 100644 index 0000000..0e994ec --- /dev/null +++ b/assets/textures/blockout_textures/256/mark/blue_mark_black.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c1vt10vfjo0og" +path="res://.godot/imported/blue_mark_black.png-10bae260dc9992865e2294f9afeb07e9.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/mark/blue_mark_black.png" +dest_files=["res://.godot/imported/blue_mark_black.png-10bae260dc9992865e2294f9afeb07e9.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/mark/blue_mark_transparent.png b/assets/textures/blockout_textures/256/mark/blue_mark_transparent.png new file mode 100644 index 0000000..841c68f Binary files /dev/null and b/assets/textures/blockout_textures/256/mark/blue_mark_transparent.png differ diff --git a/assets/textures/blockout_textures/256/mark/blue_mark_transparent.png.import b/assets/textures/blockout_textures/256/mark/blue_mark_transparent.png.import new file mode 100644 index 0000000..e1ae51f --- /dev/null +++ b/assets/textures/blockout_textures/256/mark/blue_mark_transparent.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://fm15vxmwmb6o" +path="res://.godot/imported/blue_mark_transparent.png-cc33db201d07ad2ad025646350cb28c6.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/mark/blue_mark_transparent.png" +dest_files=["res://.godot/imported/blue_mark_transparent.png-cc33db201d07ad2ad025646350cb28c6.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/mark/blue_mark_white.png b/assets/textures/blockout_textures/256/mark/blue_mark_white.png new file mode 100644 index 0000000..2a2ab40 Binary files /dev/null and b/assets/textures/blockout_textures/256/mark/blue_mark_white.png differ diff --git a/assets/textures/blockout_textures/256/mark/blue_mark_white.png.import b/assets/textures/blockout_textures/256/mark/blue_mark_white.png.import new file mode 100644 index 0000000..7020514 --- /dev/null +++ b/assets/textures/blockout_textures/256/mark/blue_mark_white.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://va60jnca086b" +path="res://.godot/imported/blue_mark_white.png-6347f973a8a3a38a24651c10e53def60.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/mark/blue_mark_white.png" +dest_files=["res://.godot/imported/blue_mark_white.png-6347f973a8a3a38a24651c10e53def60.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/mark/gray_mark.png b/assets/textures/blockout_textures/256/mark/gray_mark.png new file mode 100644 index 0000000..19e7b26 Binary files /dev/null and b/assets/textures/blockout_textures/256/mark/gray_mark.png differ diff --git a/assets/textures/blockout_textures/256/mark/gray_mark.png.import b/assets/textures/blockout_textures/256/mark/gray_mark.png.import new file mode 100644 index 0000000..a5e18fd --- /dev/null +++ b/assets/textures/blockout_textures/256/mark/gray_mark.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b5y44jqlhxwab" +path="res://.godot/imported/gray_mark.png-a0eb7efc02e36fe3b11abdf2f3e415a0.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/mark/gray_mark.png" +dest_files=["res://.godot/imported/gray_mark.png-a0eb7efc02e36fe3b11abdf2f3e415a0.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/mark/green_mark_black.png b/assets/textures/blockout_textures/256/mark/green_mark_black.png new file mode 100644 index 0000000..2e928da Binary files /dev/null and b/assets/textures/blockout_textures/256/mark/green_mark_black.png differ diff --git a/assets/textures/blockout_textures/256/mark/green_mark_black.png.import b/assets/textures/blockout_textures/256/mark/green_mark_black.png.import new file mode 100644 index 0000000..281e946 --- /dev/null +++ b/assets/textures/blockout_textures/256/mark/green_mark_black.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://2q618qhrppb8" +path="res://.godot/imported/green_mark_black.png-fb576b28956e047b2b66eaf71a2b8c0e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/mark/green_mark_black.png" +dest_files=["res://.godot/imported/green_mark_black.png-fb576b28956e047b2b66eaf71a2b8c0e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/mark/green_mark_transparent.png b/assets/textures/blockout_textures/256/mark/green_mark_transparent.png new file mode 100644 index 0000000..2cb311d Binary files /dev/null and b/assets/textures/blockout_textures/256/mark/green_mark_transparent.png differ diff --git a/assets/textures/blockout_textures/256/mark/green_mark_transparent.png.import b/assets/textures/blockout_textures/256/mark/green_mark_transparent.png.import new file mode 100644 index 0000000..f0ef712 --- /dev/null +++ b/assets/textures/blockout_textures/256/mark/green_mark_transparent.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cjcipk7iwxrre" +path="res://.godot/imported/green_mark_transparent.png-301bff386c55d2193316b712e2838dd2.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/mark/green_mark_transparent.png" +dest_files=["res://.godot/imported/green_mark_transparent.png-301bff386c55d2193316b712e2838dd2.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/mark/green_mark_white.png b/assets/textures/blockout_textures/256/mark/green_mark_white.png new file mode 100644 index 0000000..fbe2354 Binary files /dev/null and b/assets/textures/blockout_textures/256/mark/green_mark_white.png differ diff --git a/assets/textures/blockout_textures/256/mark/green_mark_white.png.import b/assets/textures/blockout_textures/256/mark/green_mark_white.png.import new file mode 100644 index 0000000..1590314 --- /dev/null +++ b/assets/textures/blockout_textures/256/mark/green_mark_white.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bh6ggamfqdi3s" +path="res://.godot/imported/green_mark_white.png-a6c4ec6074fcf1bc53507a7c45b388b6.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/mark/green_mark_white.png" +dest_files=["res://.godot/imported/green_mark_white.png-a6c4ec6074fcf1bc53507a7c45b388b6.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/mark/orange_mark_black.png b/assets/textures/blockout_textures/256/mark/orange_mark_black.png new file mode 100644 index 0000000..c97218a Binary files /dev/null and b/assets/textures/blockout_textures/256/mark/orange_mark_black.png differ diff --git a/assets/textures/blockout_textures/256/mark/orange_mark_black.png.import b/assets/textures/blockout_textures/256/mark/orange_mark_black.png.import new file mode 100644 index 0000000..57ec19e --- /dev/null +++ b/assets/textures/blockout_textures/256/mark/orange_mark_black.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dvvd0hpeykkv0" +path="res://.godot/imported/orange_mark_black.png-f77aa3a21fd3bb98b48b8f8a1becdb66.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/mark/orange_mark_black.png" +dest_files=["res://.godot/imported/orange_mark_black.png-f77aa3a21fd3bb98b48b8f8a1becdb66.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/mark/orange_mark_transparent.png b/assets/textures/blockout_textures/256/mark/orange_mark_transparent.png new file mode 100644 index 0000000..d6b3729 Binary files /dev/null and b/assets/textures/blockout_textures/256/mark/orange_mark_transparent.png differ diff --git a/assets/textures/blockout_textures/256/mark/orange_mark_transparent.png.import b/assets/textures/blockout_textures/256/mark/orange_mark_transparent.png.import new file mode 100644 index 0000000..8f2c85d --- /dev/null +++ b/assets/textures/blockout_textures/256/mark/orange_mark_transparent.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bgb8vnbr6v7a2" +path="res://.godot/imported/orange_mark_transparent.png-bb9c85bf6947b7e2f0a7745eb85a6a0f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/mark/orange_mark_transparent.png" +dest_files=["res://.godot/imported/orange_mark_transparent.png-bb9c85bf6947b7e2f0a7745eb85a6a0f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/mark/orange_mark_white.png b/assets/textures/blockout_textures/256/mark/orange_mark_white.png new file mode 100644 index 0000000..bf84dfe Binary files /dev/null and b/assets/textures/blockout_textures/256/mark/orange_mark_white.png differ diff --git a/assets/textures/blockout_textures/256/mark/orange_mark_white.png.import b/assets/textures/blockout_textures/256/mark/orange_mark_white.png.import new file mode 100644 index 0000000..a7a55f2 --- /dev/null +++ b/assets/textures/blockout_textures/256/mark/orange_mark_white.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b7qky5h1klqki" +path="res://.godot/imported/orange_mark_white.png-2daacfb5c86b0251b996bd25bd384ce0.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/mark/orange_mark_white.png" +dest_files=["res://.godot/imported/orange_mark_white.png-2daacfb5c86b0251b996bd25bd384ce0.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/mark/purple_mark_black.png b/assets/textures/blockout_textures/256/mark/purple_mark_black.png new file mode 100644 index 0000000..d36838a Binary files /dev/null and b/assets/textures/blockout_textures/256/mark/purple_mark_black.png differ diff --git a/assets/textures/blockout_textures/256/mark/purple_mark_black.png.import b/assets/textures/blockout_textures/256/mark/purple_mark_black.png.import new file mode 100644 index 0000000..807b957 --- /dev/null +++ b/assets/textures/blockout_textures/256/mark/purple_mark_black.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://biavdjmr1tfrn" +path="res://.godot/imported/purple_mark_black.png-b9fc03b9cf856e9f2f290e19c5efa62b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/mark/purple_mark_black.png" +dest_files=["res://.godot/imported/purple_mark_black.png-b9fc03b9cf856e9f2f290e19c5efa62b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/mark/purple_mark_transparent.png b/assets/textures/blockout_textures/256/mark/purple_mark_transparent.png new file mode 100644 index 0000000..36c3179 Binary files /dev/null and b/assets/textures/blockout_textures/256/mark/purple_mark_transparent.png differ diff --git a/assets/textures/blockout_textures/256/mark/purple_mark_transparent.png.import b/assets/textures/blockout_textures/256/mark/purple_mark_transparent.png.import new file mode 100644 index 0000000..f6736af --- /dev/null +++ b/assets/textures/blockout_textures/256/mark/purple_mark_transparent.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cfx1ap7w55ykv" +path="res://.godot/imported/purple_mark_transparent.png-07fab5a59d7e91b95697a8fd6f44d15d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/mark/purple_mark_transparent.png" +dest_files=["res://.godot/imported/purple_mark_transparent.png-07fab5a59d7e91b95697a8fd6f44d15d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/mark/purple_mark_white.png b/assets/textures/blockout_textures/256/mark/purple_mark_white.png new file mode 100644 index 0000000..705fcdb Binary files /dev/null and b/assets/textures/blockout_textures/256/mark/purple_mark_white.png differ diff --git a/assets/textures/blockout_textures/256/mark/purple_mark_white.png.import b/assets/textures/blockout_textures/256/mark/purple_mark_white.png.import new file mode 100644 index 0000000..5b1e084 --- /dev/null +++ b/assets/textures/blockout_textures/256/mark/purple_mark_white.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://2vwdco3l6jfl" +path="res://.godot/imported/purple_mark_white.png-e1dd7560ea2bc97744c6842d018460e0.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/mark/purple_mark_white.png" +dest_files=["res://.godot/imported/purple_mark_white.png-e1dd7560ea2bc97744c6842d018460e0.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/mark/red_mark_black.png b/assets/textures/blockout_textures/256/mark/red_mark_black.png new file mode 100644 index 0000000..c9c6433 Binary files /dev/null and b/assets/textures/blockout_textures/256/mark/red_mark_black.png differ diff --git a/assets/textures/blockout_textures/256/mark/red_mark_black.png.import b/assets/textures/blockout_textures/256/mark/red_mark_black.png.import new file mode 100644 index 0000000..6698a75 --- /dev/null +++ b/assets/textures/blockout_textures/256/mark/red_mark_black.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://1otwumwxm0iw" +path="res://.godot/imported/red_mark_black.png-1bf0bf895ca3842421bd2edf54bb394f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/mark/red_mark_black.png" +dest_files=["res://.godot/imported/red_mark_black.png-1bf0bf895ca3842421bd2edf54bb394f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/mark/red_mark_transparent.png b/assets/textures/blockout_textures/256/mark/red_mark_transparent.png new file mode 100644 index 0000000..55d6366 Binary files /dev/null and b/assets/textures/blockout_textures/256/mark/red_mark_transparent.png differ diff --git a/assets/textures/blockout_textures/256/mark/red_mark_transparent.png.import b/assets/textures/blockout_textures/256/mark/red_mark_transparent.png.import new file mode 100644 index 0000000..e9d7a22 --- /dev/null +++ b/assets/textures/blockout_textures/256/mark/red_mark_transparent.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cljosqwiuhn4n" +path="res://.godot/imported/red_mark_transparent.png-496e019796bfe7ad2e2260d8441bd46d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/mark/red_mark_transparent.png" +dest_files=["res://.godot/imported/red_mark_transparent.png-496e019796bfe7ad2e2260d8441bd46d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/mark/red_mark_white.png b/assets/textures/blockout_textures/256/mark/red_mark_white.png new file mode 100644 index 0000000..828943f Binary files /dev/null and b/assets/textures/blockout_textures/256/mark/red_mark_white.png differ diff --git a/assets/textures/blockout_textures/256/mark/red_mark_white.png.import b/assets/textures/blockout_textures/256/mark/red_mark_white.png.import new file mode 100644 index 0000000..ab38257 --- /dev/null +++ b/assets/textures/blockout_textures/256/mark/red_mark_white.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cf3qix453s7jm" +path="res://.godot/imported/red_mark_white.png-00ed8624ded971358863526cdfe4b12e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/mark/red_mark_white.png" +dest_files=["res://.godot/imported/red_mark_white.png-00ed8624ded971358863526cdfe4b12e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/mark/white_mark.png b/assets/textures/blockout_textures/256/mark/white_mark.png new file mode 100644 index 0000000..b1cd5a0 Binary files /dev/null and b/assets/textures/blockout_textures/256/mark/white_mark.png differ diff --git a/assets/textures/blockout_textures/256/mark/white_mark.png.import b/assets/textures/blockout_textures/256/mark/white_mark.png.import new file mode 100644 index 0000000..f8d3183 --- /dev/null +++ b/assets/textures/blockout_textures/256/mark/white_mark.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b64vf3x0nxy4" +path="res://.godot/imported/white_mark.png-7ae09db20403c303790d3bb4659bbf5f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/mark/white_mark.png" +dest_files=["res://.godot/imported/white_mark.png-7ae09db20403c303790d3bb4659bbf5f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/mark/yellow_mark_black.png b/assets/textures/blockout_textures/256/mark/yellow_mark_black.png new file mode 100644 index 0000000..4c94a99 Binary files /dev/null and b/assets/textures/blockout_textures/256/mark/yellow_mark_black.png differ diff --git a/assets/textures/blockout_textures/256/mark/yellow_mark_black.png.import b/assets/textures/blockout_textures/256/mark/yellow_mark_black.png.import new file mode 100644 index 0000000..8be4663 --- /dev/null +++ b/assets/textures/blockout_textures/256/mark/yellow_mark_black.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://5c65t1b8xgbc" +path="res://.godot/imported/yellow_mark_black.png-73f56dda0ba4c9d6401c100cd5069725.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/mark/yellow_mark_black.png" +dest_files=["res://.godot/imported/yellow_mark_black.png-73f56dda0ba4c9d6401c100cd5069725.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/mark/yellow_mark_transparent.png b/assets/textures/blockout_textures/256/mark/yellow_mark_transparent.png new file mode 100644 index 0000000..0097745 Binary files /dev/null and b/assets/textures/blockout_textures/256/mark/yellow_mark_transparent.png differ diff --git a/assets/textures/blockout_textures/256/mark/yellow_mark_transparent.png.import b/assets/textures/blockout_textures/256/mark/yellow_mark_transparent.png.import new file mode 100644 index 0000000..b43fbad --- /dev/null +++ b/assets/textures/blockout_textures/256/mark/yellow_mark_transparent.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cr3knhr7ulet7" +path="res://.godot/imported/yellow_mark_transparent.png-6475b4aed5a49adab531b24fde559a54.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/mark/yellow_mark_transparent.png" +dest_files=["res://.godot/imported/yellow_mark_transparent.png-6475b4aed5a49adab531b24fde559a54.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/mark/yellow_mark_white.png b/assets/textures/blockout_textures/256/mark/yellow_mark_white.png new file mode 100644 index 0000000..d4896a8 Binary files /dev/null and b/assets/textures/blockout_textures/256/mark/yellow_mark_white.png differ diff --git a/assets/textures/blockout_textures/256/mark/yellow_mark_white.png.import b/assets/textures/blockout_textures/256/mark/yellow_mark_white.png.import new file mode 100644 index 0000000..5e51463 --- /dev/null +++ b/assets/textures/blockout_textures/256/mark/yellow_mark_white.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bbuuymulkrw86" +path="res://.godot/imported/yellow_mark_white.png-52a7f58ffa0a9f1f8ce17bd100ee83cc.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/mark/yellow_mark_white.png" +dest_files=["res://.godot/imported/yellow_mark_white.png-52a7f58ffa0a9f1f8ce17bd100ee83cc.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/nature/nature_grass_1.png b/assets/textures/blockout_textures/256/nature/nature_grass_1.png new file mode 100644 index 0000000..2cd7d62 Binary files /dev/null and b/assets/textures/blockout_textures/256/nature/nature_grass_1.png differ diff --git a/assets/textures/blockout_textures/256/nature/nature_grass_1.png.import b/assets/textures/blockout_textures/256/nature/nature_grass_1.png.import new file mode 100644 index 0000000..9709321 --- /dev/null +++ b/assets/textures/blockout_textures/256/nature/nature_grass_1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://drromsqn6qlt0" +path="res://.godot/imported/nature_grass_1.png-c108c956b109d34cd3d923001079b474.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/nature/nature_grass_1.png" +dest_files=["res://.godot/imported/nature_grass_1.png-c108c956b109d34cd3d923001079b474.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/nature/nature_grass_2.png b/assets/textures/blockout_textures/256/nature/nature_grass_2.png new file mode 100644 index 0000000..b183ed0 Binary files /dev/null and b/assets/textures/blockout_textures/256/nature/nature_grass_2.png differ diff --git a/assets/textures/blockout_textures/256/nature/nature_grass_2.png.import b/assets/textures/blockout_textures/256/nature/nature_grass_2.png.import new file mode 100644 index 0000000..174935f --- /dev/null +++ b/assets/textures/blockout_textures/256/nature/nature_grass_2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c43xuiqdcr6py" +path="res://.godot/imported/nature_grass_2.png-b2aa0368073325970f37981b291f1466.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/nature/nature_grass_2.png" +dest_files=["res://.godot/imported/nature_grass_2.png-b2aa0368073325970f37981b291f1466.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/nature/nature_grass_3.png b/assets/textures/blockout_textures/256/nature/nature_grass_3.png new file mode 100644 index 0000000..99b4291 Binary files /dev/null and b/assets/textures/blockout_textures/256/nature/nature_grass_3.png differ diff --git a/assets/textures/blockout_textures/256/nature/nature_grass_3.png.import b/assets/textures/blockout_textures/256/nature/nature_grass_3.png.import new file mode 100644 index 0000000..e000ff9 --- /dev/null +++ b/assets/textures/blockout_textures/256/nature/nature_grass_3.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bh5je8woxrnma" +path="res://.godot/imported/nature_grass_3.png-dd5b147f6478f7daa42a80b74219ecc5.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/nature/nature_grass_3.png" +dest_files=["res://.godot/imported/nature_grass_3.png-dd5b147f6478f7daa42a80b74219ecc5.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/nature/nature_grass_4.png b/assets/textures/blockout_textures/256/nature/nature_grass_4.png new file mode 100644 index 0000000..b71cdec Binary files /dev/null and b/assets/textures/blockout_textures/256/nature/nature_grass_4.png differ diff --git a/assets/textures/blockout_textures/256/nature/nature_grass_4.png.import b/assets/textures/blockout_textures/256/nature/nature_grass_4.png.import new file mode 100644 index 0000000..7ed0e8b --- /dev/null +++ b/assets/textures/blockout_textures/256/nature/nature_grass_4.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dd8ymkv0bnxmu" +path="res://.godot/imported/nature_grass_4.png-bb5d755fc02983fb1d036a896fc6b6a1.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/nature/nature_grass_4.png" +dest_files=["res://.godot/imported/nature_grass_4.png-bb5d755fc02983fb1d036a896fc6b6a1.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/nature/nature_ground_1.png b/assets/textures/blockout_textures/256/nature/nature_ground_1.png new file mode 100644 index 0000000..9e51d80 Binary files /dev/null and b/assets/textures/blockout_textures/256/nature/nature_ground_1.png differ diff --git a/assets/textures/blockout_textures/256/nature/nature_ground_1.png.import b/assets/textures/blockout_textures/256/nature/nature_ground_1.png.import new file mode 100644 index 0000000..57ae2c0 --- /dev/null +++ b/assets/textures/blockout_textures/256/nature/nature_ground_1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b3fldfi4iuifn" +path="res://.godot/imported/nature_ground_1.png-b85455223cfaf787653060a385ecb62f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/nature/nature_ground_1.png" +dest_files=["res://.godot/imported/nature_ground_1.png-b85455223cfaf787653060a385ecb62f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/nature/nature_ground_2.png b/assets/textures/blockout_textures/256/nature/nature_ground_2.png new file mode 100644 index 0000000..21d3222 Binary files /dev/null and b/assets/textures/blockout_textures/256/nature/nature_ground_2.png differ diff --git a/assets/textures/blockout_textures/256/nature/nature_ground_2.png.import b/assets/textures/blockout_textures/256/nature/nature_ground_2.png.import new file mode 100644 index 0000000..662d0d7 --- /dev/null +++ b/assets/textures/blockout_textures/256/nature/nature_ground_2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://caoj4ersgmint" +path="res://.godot/imported/nature_ground_2.png-554622c0ea73a5f8b9ac309f9d5ec58d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/nature/nature_ground_2.png" +dest_files=["res://.godot/imported/nature_ground_2.png-554622c0ea73a5f8b9ac309f9d5ec58d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/nature/nature_ground_3.png b/assets/textures/blockout_textures/256/nature/nature_ground_3.png new file mode 100644 index 0000000..e393aa5 Binary files /dev/null and b/assets/textures/blockout_textures/256/nature/nature_ground_3.png differ diff --git a/assets/textures/blockout_textures/256/nature/nature_ground_3.png.import b/assets/textures/blockout_textures/256/nature/nature_ground_3.png.import new file mode 100644 index 0000000..37b0d82 --- /dev/null +++ b/assets/textures/blockout_textures/256/nature/nature_ground_3.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dr5ct48xqx4o0" +path="res://.godot/imported/nature_ground_3.png-0363a2f8fabc90931bc4fa51163c64b8.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/nature/nature_ground_3.png" +dest_files=["res://.godot/imported/nature_ground_3.png-0363a2f8fabc90931bc4fa51163c64b8.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/nature/nature_ground_4.png b/assets/textures/blockout_textures/256/nature/nature_ground_4.png new file mode 100644 index 0000000..b6e9723 Binary files /dev/null and b/assets/textures/blockout_textures/256/nature/nature_ground_4.png differ diff --git a/assets/textures/blockout_textures/256/nature/nature_ground_4.png.import b/assets/textures/blockout_textures/256/nature/nature_ground_4.png.import new file mode 100644 index 0000000..f1f134c --- /dev/null +++ b/assets/textures/blockout_textures/256/nature/nature_ground_4.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c243rnop2hd2n" +path="res://.godot/imported/nature_ground_4.png-f87544bf6065e0e5957e3225f8089967.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/nature/nature_ground_4.png" +dest_files=["res://.godot/imported/nature_ground_4.png-f87544bf6065e0e5957e3225f8089967.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/nature/nature_rock_1.png b/assets/textures/blockout_textures/256/nature/nature_rock_1.png new file mode 100644 index 0000000..33fd38f Binary files /dev/null and b/assets/textures/blockout_textures/256/nature/nature_rock_1.png differ diff --git a/assets/textures/blockout_textures/256/nature/nature_rock_1.png.import b/assets/textures/blockout_textures/256/nature/nature_rock_1.png.import new file mode 100644 index 0000000..ff15a2d --- /dev/null +++ b/assets/textures/blockout_textures/256/nature/nature_rock_1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cyu77ulj1sexl" +path="res://.godot/imported/nature_rock_1.png-59c85e88389ecbe27e8115baa6b4575b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/nature/nature_rock_1.png" +dest_files=["res://.godot/imported/nature_rock_1.png-59c85e88389ecbe27e8115baa6b4575b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/nature/nature_rock_2.png b/assets/textures/blockout_textures/256/nature/nature_rock_2.png new file mode 100644 index 0000000..289e514 Binary files /dev/null and b/assets/textures/blockout_textures/256/nature/nature_rock_2.png differ diff --git a/assets/textures/blockout_textures/256/nature/nature_rock_2.png.import b/assets/textures/blockout_textures/256/nature/nature_rock_2.png.import new file mode 100644 index 0000000..703f9a1 --- /dev/null +++ b/assets/textures/blockout_textures/256/nature/nature_rock_2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://iudqvo23nwn" +path="res://.godot/imported/nature_rock_2.png-ee8d766d955e6fa9b1b2ca1b8bc83447.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/nature/nature_rock_2.png" +dest_files=["res://.godot/imported/nature_rock_2.png-ee8d766d955e6fa9b1b2ca1b8bc83447.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/nature/nature_rock_3.png b/assets/textures/blockout_textures/256/nature/nature_rock_3.png new file mode 100644 index 0000000..42326ea Binary files /dev/null and b/assets/textures/blockout_textures/256/nature/nature_rock_3.png differ diff --git a/assets/textures/blockout_textures/256/nature/nature_rock_3.png.import b/assets/textures/blockout_textures/256/nature/nature_rock_3.png.import new file mode 100644 index 0000000..de21fac --- /dev/null +++ b/assets/textures/blockout_textures/256/nature/nature_rock_3.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bg4daved03tew" +path="res://.godot/imported/nature_rock_3.png-de75e3fca56fb176a07fa3ad7472108f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/nature/nature_rock_3.png" +dest_files=["res://.godot/imported/nature_rock_3.png-de75e3fca56fb176a07fa3ad7472108f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/nature/nature_rock_4.png b/assets/textures/blockout_textures/256/nature/nature_rock_4.png new file mode 100644 index 0000000..a1e3853 Binary files /dev/null and b/assets/textures/blockout_textures/256/nature/nature_rock_4.png differ diff --git a/assets/textures/blockout_textures/256/nature/nature_rock_4.png.import b/assets/textures/blockout_textures/256/nature/nature_rock_4.png.import new file mode 100644 index 0000000..fa5373e --- /dev/null +++ b/assets/textures/blockout_textures/256/nature/nature_rock_4.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cvk71f83wqyuc" +path="res://.godot/imported/nature_rock_4.png-b24d5ee2a9a96521cbdddc89d311a53e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/nature/nature_rock_4.png" +dest_files=["res://.godot/imported/nature_rock_4.png-b24d5ee2a9a96521cbdddc89d311a53e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/nature/nature_sand_1.png b/assets/textures/blockout_textures/256/nature/nature_sand_1.png new file mode 100644 index 0000000..bbb8927 Binary files /dev/null and b/assets/textures/blockout_textures/256/nature/nature_sand_1.png differ diff --git a/assets/textures/blockout_textures/256/nature/nature_sand_1.png.import b/assets/textures/blockout_textures/256/nature/nature_sand_1.png.import new file mode 100644 index 0000000..1fd4102 --- /dev/null +++ b/assets/textures/blockout_textures/256/nature/nature_sand_1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://vcgiot2l38x2" +path="res://.godot/imported/nature_sand_1.png-72dbba81add868389baa8f7d087ad78d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/nature/nature_sand_1.png" +dest_files=["res://.godot/imported/nature_sand_1.png-72dbba81add868389baa8f7d087ad78d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/nature/nature_sand_2.png b/assets/textures/blockout_textures/256/nature/nature_sand_2.png new file mode 100644 index 0000000..2c1fdad Binary files /dev/null and b/assets/textures/blockout_textures/256/nature/nature_sand_2.png differ diff --git a/assets/textures/blockout_textures/256/nature/nature_sand_2.png.import b/assets/textures/blockout_textures/256/nature/nature_sand_2.png.import new file mode 100644 index 0000000..f81b7a1 --- /dev/null +++ b/assets/textures/blockout_textures/256/nature/nature_sand_2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://kgef7pp5jpmt" +path="res://.godot/imported/nature_sand_2.png-26196a6f134d0b89ee2dcd115d4c62ea.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/nature/nature_sand_2.png" +dest_files=["res://.godot/imported/nature_sand_2.png-26196a6f134d0b89ee2dcd115d4c62ea.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/nature/nature_sand_3.png b/assets/textures/blockout_textures/256/nature/nature_sand_3.png new file mode 100644 index 0000000..85faaae Binary files /dev/null and b/assets/textures/blockout_textures/256/nature/nature_sand_3.png differ diff --git a/assets/textures/blockout_textures/256/nature/nature_sand_3.png.import b/assets/textures/blockout_textures/256/nature/nature_sand_3.png.import new file mode 100644 index 0000000..081a700 --- /dev/null +++ b/assets/textures/blockout_textures/256/nature/nature_sand_3.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cnxdlnh1jbrbw" +path="res://.godot/imported/nature_sand_3.png-d7c88fdf80563f8ab39db39386df7d53.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/nature/nature_sand_3.png" +dest_files=["res://.godot/imported/nature_sand_3.png-d7c88fdf80563f8ab39db39386df7d53.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/nature/nature_sand_4.png b/assets/textures/blockout_textures/256/nature/nature_sand_4.png new file mode 100644 index 0000000..259b170 Binary files /dev/null and b/assets/textures/blockout_textures/256/nature/nature_sand_4.png differ diff --git a/assets/textures/blockout_textures/256/nature/nature_sand_4.png.import b/assets/textures/blockout_textures/256/nature/nature_sand_4.png.import new file mode 100644 index 0000000..c5e937e --- /dev/null +++ b/assets/textures/blockout_textures/256/nature/nature_sand_4.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dxc1ionfq3rvr" +path="res://.godot/imported/nature_sand_4.png-8c9f9cc9df2496edc730ed8f35a35fb8.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/nature/nature_sand_4.png" +dest_files=["res://.godot/imported/nature_sand_4.png-8c9f9cc9df2496edc730ed8f35a35fb8.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/nature/nature_water_1.png b/assets/textures/blockout_textures/256/nature/nature_water_1.png new file mode 100644 index 0000000..37a8ecc Binary files /dev/null and b/assets/textures/blockout_textures/256/nature/nature_water_1.png differ diff --git a/assets/textures/blockout_textures/256/nature/nature_water_1.png.import b/assets/textures/blockout_textures/256/nature/nature_water_1.png.import new file mode 100644 index 0000000..95885a2 --- /dev/null +++ b/assets/textures/blockout_textures/256/nature/nature_water_1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bh12ele51ocsq" +path="res://.godot/imported/nature_water_1.png-ae546cc33f98bbfd4d4e0e4f15f3cf4e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/nature/nature_water_1.png" +dest_files=["res://.godot/imported/nature_water_1.png-ae546cc33f98bbfd4d4e0e4f15f3cf4e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/nature/nature_water_2.png b/assets/textures/blockout_textures/256/nature/nature_water_2.png new file mode 100644 index 0000000..1c6e545 Binary files /dev/null and b/assets/textures/blockout_textures/256/nature/nature_water_2.png differ diff --git a/assets/textures/blockout_textures/256/nature/nature_water_2.png.import b/assets/textures/blockout_textures/256/nature/nature_water_2.png.import new file mode 100644 index 0000000..0fe82e7 --- /dev/null +++ b/assets/textures/blockout_textures/256/nature/nature_water_2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bee0e6x24tisq" +path="res://.godot/imported/nature_water_2.png-537065d131d3f46cc6ecdc346d63e908.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/nature/nature_water_2.png" +dest_files=["res://.godot/imported/nature_water_2.png-537065d131d3f46cc6ecdc346d63e908.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/nature/nature_water_3.png b/assets/textures/blockout_textures/256/nature/nature_water_3.png new file mode 100644 index 0000000..8da7c22 Binary files /dev/null and b/assets/textures/blockout_textures/256/nature/nature_water_3.png differ diff --git a/assets/textures/blockout_textures/256/nature/nature_water_3.png.import b/assets/textures/blockout_textures/256/nature/nature_water_3.png.import new file mode 100644 index 0000000..bc12195 --- /dev/null +++ b/assets/textures/blockout_textures/256/nature/nature_water_3.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://yke4hv5tpr2l" +path="res://.godot/imported/nature_water_3.png-bfb2bfeca69d4f70ef18b7ca42e19ee2.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/nature/nature_water_3.png" +dest_files=["res://.godot/imported/nature_water_3.png-bfb2bfeca69d4f70ef18b7ca42e19ee2.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/256/nature/nature_water_4.png b/assets/textures/blockout_textures/256/nature/nature_water_4.png new file mode 100644 index 0000000..29ac9ba Binary files /dev/null and b/assets/textures/blockout_textures/256/nature/nature_water_4.png differ diff --git a/assets/textures/blockout_textures/256/nature/nature_water_4.png.import b/assets/textures/blockout_textures/256/nature/nature_water_4.png.import new file mode 100644 index 0000000..dc3e1d3 --- /dev/null +++ b/assets/textures/blockout_textures/256/nature/nature_water_4.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cn2j7rxc6kqfw" +path="res://.godot/imported/nature_water_4.png-4b1277387389c16e12f7dc81e998d483.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/256/nature/nature_water_4.png" +dest_files=["res://.godot/imported/nature_water_4.png-4b1277387389c16e12f7dc81e998d483.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/aqua_check.png b/assets/textures/blockout_textures/512/basic/aqua_check.png new file mode 100644 index 0000000..ebc6032 Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/aqua_check.png differ diff --git a/assets/textures/blockout_textures/512/basic/aqua_check.png.import b/assets/textures/blockout_textures/512/basic/aqua_check.png.import new file mode 100644 index 0000000..9427f58 --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/aqua_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d1at3cb5raeo" +path="res://.godot/imported/aqua_check.png-bf92dcc1137c15febeaa879c6304eb2c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/aqua_check.png" +dest_files=["res://.godot/imported/aqua_check.png-bf92dcc1137c15febeaa879c6304eb2c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/aqua_cross.png b/assets/textures/blockout_textures/512/basic/aqua_cross.png new file mode 100644 index 0000000..a977686 Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/aqua_cross.png differ diff --git a/assets/textures/blockout_textures/512/basic/aqua_cross.png.import b/assets/textures/blockout_textures/512/basic/aqua_cross.png.import new file mode 100644 index 0000000..15cb0d0 --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/aqua_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://3w2mdmfmp7fe" +path="res://.godot/imported/aqua_cross.png-65fa1deb18fc48d7ffc65ba65c45ea8e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/aqua_cross.png" +dest_files=["res://.godot/imported/aqua_cross.png-65fa1deb18fc48d7ffc65ba65c45ea8e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/aqua_dots.png b/assets/textures/blockout_textures/512/basic/aqua_dots.png new file mode 100644 index 0000000..483362f Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/aqua_dots.png differ diff --git a/assets/textures/blockout_textures/512/basic/aqua_dots.png.import b/assets/textures/blockout_textures/512/basic/aqua_dots.png.import new file mode 100644 index 0000000..abe31b9 --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/aqua_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d0spjfty3u46f" +path="res://.godot/imported/aqua_dots.png-0b36d1efde9cc7cf79ea6b60ca31e58d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/aqua_dots.png" +dest_files=["res://.godot/imported/aqua_dots.png-0b36d1efde9cc7cf79ea6b60ca31e58d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/aqua_grid.png b/assets/textures/blockout_textures/512/basic/aqua_grid.png new file mode 100644 index 0000000..867bb7a Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/aqua_grid.png differ diff --git a/assets/textures/blockout_textures/512/basic/aqua_grid.png.import b/assets/textures/blockout_textures/512/basic/aqua_grid.png.import new file mode 100644 index 0000000..45409db --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/aqua_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c1kt1jgr7ssvg" +path="res://.godot/imported/aqua_grid.png-4161059cb0485fa52f45d722d9fa0ee0.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/aqua_grid.png" +dest_files=["res://.godot/imported/aqua_grid.png-4161059cb0485fa52f45d722d9fa0ee0.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/aqua_light_check.png b/assets/textures/blockout_textures/512/basic/aqua_light_check.png new file mode 100644 index 0000000..5fd7a38 Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/aqua_light_check.png differ diff --git a/assets/textures/blockout_textures/512/basic/aqua_light_check.png.import b/assets/textures/blockout_textures/512/basic/aqua_light_check.png.import new file mode 100644 index 0000000..c1dad89 --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/aqua_light_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cwe6evowbmjux" +path="res://.godot/imported/aqua_light_check.png-6e615d137e01337410c5188d7a996e79.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/aqua_light_check.png" +dest_files=["res://.godot/imported/aqua_light_check.png-6e615d137e01337410c5188d7a996e79.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/aqua_light_cross.png b/assets/textures/blockout_textures/512/basic/aqua_light_cross.png new file mode 100644 index 0000000..d705b50 Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/aqua_light_cross.png differ diff --git a/assets/textures/blockout_textures/512/basic/aqua_light_cross.png.import b/assets/textures/blockout_textures/512/basic/aqua_light_cross.png.import new file mode 100644 index 0000000..16d02dd --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/aqua_light_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ddunjbs80pudd" +path="res://.godot/imported/aqua_light_cross.png-3d5fea0cbaf3a56eb07716d63d2d9932.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/aqua_light_cross.png" +dest_files=["res://.godot/imported/aqua_light_cross.png-3d5fea0cbaf3a56eb07716d63d2d9932.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/aqua_light_dots.png b/assets/textures/blockout_textures/512/basic/aqua_light_dots.png new file mode 100644 index 0000000..5a91779 Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/aqua_light_dots.png differ diff --git a/assets/textures/blockout_textures/512/basic/aqua_light_dots.png.import b/assets/textures/blockout_textures/512/basic/aqua_light_dots.png.import new file mode 100644 index 0000000..3ecc46e --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/aqua_light_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cvxmccbtar4io" +path="res://.godot/imported/aqua_light_dots.png-2500b61130efc0c9670aaf3ced4b92e9.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/aqua_light_dots.png" +dest_files=["res://.godot/imported/aqua_light_dots.png-2500b61130efc0c9670aaf3ced4b92e9.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/aqua_light_grid.png b/assets/textures/blockout_textures/512/basic/aqua_light_grid.png new file mode 100644 index 0000000..e004567 Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/aqua_light_grid.png differ diff --git a/assets/textures/blockout_textures/512/basic/aqua_light_grid.png.import b/assets/textures/blockout_textures/512/basic/aqua_light_grid.png.import new file mode 100644 index 0000000..06ebaef --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/aqua_light_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://br2m8vdqdpq8o" +path="res://.godot/imported/aqua_light_grid.png-a4182b6586b6cee4dcb810712085dd33.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/aqua_light_grid.png" +dest_files=["res://.godot/imported/aqua_light_grid.png-a4182b6586b6cee4dcb810712085dd33.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/black_check.png b/assets/textures/blockout_textures/512/basic/black_check.png new file mode 100644 index 0000000..2c1eb01 Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/black_check.png differ diff --git a/assets/textures/blockout_textures/512/basic/black_check.png.import b/assets/textures/blockout_textures/512/basic/black_check.png.import new file mode 100644 index 0000000..bec4095 --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/black_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dfprwgexim26n" +path="res://.godot/imported/black_check.png-ed98a5a1f283a68756861ffe30c37ddc.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/black_check.png" +dest_files=["res://.godot/imported/black_check.png-ed98a5a1f283a68756861ffe30c37ddc.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/black_cross.png b/assets/textures/blockout_textures/512/basic/black_cross.png new file mode 100644 index 0000000..5ebc84e Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/black_cross.png differ diff --git a/assets/textures/blockout_textures/512/basic/black_cross.png.import b/assets/textures/blockout_textures/512/basic/black_cross.png.import new file mode 100644 index 0000000..fd74c2c --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/black_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://di5jmthxyu8gt" +path="res://.godot/imported/black_cross.png-086e061a03840a8ce16f476fee875874.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/black_cross.png" +dest_files=["res://.godot/imported/black_cross.png-086e061a03840a8ce16f476fee875874.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/black_dots.png b/assets/textures/blockout_textures/512/basic/black_dots.png new file mode 100644 index 0000000..e455cb5 Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/black_dots.png differ diff --git a/assets/textures/blockout_textures/512/basic/black_dots.png.import b/assets/textures/blockout_textures/512/basic/black_dots.png.import new file mode 100644 index 0000000..7cf1457 --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/black_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cf7k420c1554m" +path="res://.godot/imported/black_dots.png-c1a01b907890c8d1b9c48a859f63fea4.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/black_dots.png" +dest_files=["res://.godot/imported/black_dots.png-c1a01b907890c8d1b9c48a859f63fea4.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/black_grid.png b/assets/textures/blockout_textures/512/basic/black_grid.png new file mode 100644 index 0000000..e65ea1c Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/black_grid.png differ diff --git a/assets/textures/blockout_textures/512/basic/black_grid.png.import b/assets/textures/blockout_textures/512/basic/black_grid.png.import new file mode 100644 index 0000000..9c5d7b4 --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/black_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://catxktqcqji2h" +path="res://.godot/imported/black_grid.png-fb50d4be81706c7a201f61a7d1e8ae2f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/black_grid.png" +dest_files=["res://.godot/imported/black_grid.png-fb50d4be81706c7a201f61a7d1e8ae2f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/blue_check.png b/assets/textures/blockout_textures/512/basic/blue_check.png new file mode 100644 index 0000000..d589c22 Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/blue_check.png differ diff --git a/assets/textures/blockout_textures/512/basic/blue_check.png.import b/assets/textures/blockout_textures/512/basic/blue_check.png.import new file mode 100644 index 0000000..7abe6f9 --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/blue_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://jkke0yrwnkt1" +path="res://.godot/imported/blue_check.png-765e6408f292e69e6c85783828e31d35.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/blue_check.png" +dest_files=["res://.godot/imported/blue_check.png-765e6408f292e69e6c85783828e31d35.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/blue_cross.png b/assets/textures/blockout_textures/512/basic/blue_cross.png new file mode 100644 index 0000000..3c45224 Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/blue_cross.png differ diff --git a/assets/textures/blockout_textures/512/basic/blue_cross.png.import b/assets/textures/blockout_textures/512/basic/blue_cross.png.import new file mode 100644 index 0000000..0555023 --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/blue_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b31a7pxh3075a" +path="res://.godot/imported/blue_cross.png-2f4990d6ff7228c7276ec739e172d6e2.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/blue_cross.png" +dest_files=["res://.godot/imported/blue_cross.png-2f4990d6ff7228c7276ec739e172d6e2.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/blue_dots.png b/assets/textures/blockout_textures/512/basic/blue_dots.png new file mode 100644 index 0000000..38afe87 Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/blue_dots.png differ diff --git a/assets/textures/blockout_textures/512/basic/blue_dots.png.import b/assets/textures/blockout_textures/512/basic/blue_dots.png.import new file mode 100644 index 0000000..e93fb0c --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/blue_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cttplfeuylgry" +path="res://.godot/imported/blue_dots.png-4bedad05ed8f8eb93db23f76cf1b847d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/blue_dots.png" +dest_files=["res://.godot/imported/blue_dots.png-4bedad05ed8f8eb93db23f76cf1b847d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/blue_grid.png b/assets/textures/blockout_textures/512/basic/blue_grid.png new file mode 100644 index 0000000..81f9e19 Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/blue_grid.png differ diff --git a/assets/textures/blockout_textures/512/basic/blue_grid.png.import b/assets/textures/blockout_textures/512/basic/blue_grid.png.import new file mode 100644 index 0000000..e579f5e --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/blue_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dsp007bvyb1iv" +path="res://.godot/imported/blue_grid.png-07b409013e8c7e1384e1898afa29630d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/blue_grid.png" +dest_files=["res://.godot/imported/blue_grid.png-07b409013e8c7e1384e1898afa29630d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/blue_light_check.png b/assets/textures/blockout_textures/512/basic/blue_light_check.png new file mode 100644 index 0000000..f0b5fcb Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/blue_light_check.png differ diff --git a/assets/textures/blockout_textures/512/basic/blue_light_check.png.import b/assets/textures/blockout_textures/512/basic/blue_light_check.png.import new file mode 100644 index 0000000..c1c030f --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/blue_light_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bunl6bhpflf6g" +path="res://.godot/imported/blue_light_check.png-d2dc7f66db885dfd6bcbf6b379c0a307.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/blue_light_check.png" +dest_files=["res://.godot/imported/blue_light_check.png-d2dc7f66db885dfd6bcbf6b379c0a307.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/blue_light_cross.png b/assets/textures/blockout_textures/512/basic/blue_light_cross.png new file mode 100644 index 0000000..105d593 Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/blue_light_cross.png differ diff --git a/assets/textures/blockout_textures/512/basic/blue_light_cross.png.import b/assets/textures/blockout_textures/512/basic/blue_light_cross.png.import new file mode 100644 index 0000000..2f58224 --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/blue_light_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bn08jfd7vl2jt" +path="res://.godot/imported/blue_light_cross.png-9cb230c4b1c3009ea43850d7ce1ed1ee.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/blue_light_cross.png" +dest_files=["res://.godot/imported/blue_light_cross.png-9cb230c4b1c3009ea43850d7ce1ed1ee.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/blue_light_dots.png b/assets/textures/blockout_textures/512/basic/blue_light_dots.png new file mode 100644 index 0000000..c13fdc3 Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/blue_light_dots.png differ diff --git a/assets/textures/blockout_textures/512/basic/blue_light_dots.png.import b/assets/textures/blockout_textures/512/basic/blue_light_dots.png.import new file mode 100644 index 0000000..498af7d --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/blue_light_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ci5qqf73ep3aw" +path="res://.godot/imported/blue_light_dots.png-cd825358a75e369d329b8cf505254d5d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/blue_light_dots.png" +dest_files=["res://.godot/imported/blue_light_dots.png-cd825358a75e369d329b8cf505254d5d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/blue_light_grid.png b/assets/textures/blockout_textures/512/basic/blue_light_grid.png new file mode 100644 index 0000000..4a86455 Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/blue_light_grid.png differ diff --git a/assets/textures/blockout_textures/512/basic/blue_light_grid.png.import b/assets/textures/blockout_textures/512/basic/blue_light_grid.png.import new file mode 100644 index 0000000..bd41d53 --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/blue_light_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://nktsd7gg2ip1" +path="res://.godot/imported/blue_light_grid.png-ce357b17ff45b26a59fada4a3f579481.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/blue_light_grid.png" +dest_files=["res://.godot/imported/blue_light_grid.png-ce357b17ff45b26a59fada4a3f579481.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/gray_check.png b/assets/textures/blockout_textures/512/basic/gray_check.png new file mode 100644 index 0000000..a5a529d Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/gray_check.png differ diff --git a/assets/textures/blockout_textures/512/basic/gray_check.png.import b/assets/textures/blockout_textures/512/basic/gray_check.png.import new file mode 100644 index 0000000..c9c33aa --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/gray_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b8yqer8q2cj3q" +path="res://.godot/imported/gray_check.png-6400fb712c8460d06df4a6e87f55b14e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/gray_check.png" +dest_files=["res://.godot/imported/gray_check.png-6400fb712c8460d06df4a6e87f55b14e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/gray_cross.png b/assets/textures/blockout_textures/512/basic/gray_cross.png new file mode 100644 index 0000000..38c37e5 Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/gray_cross.png differ diff --git a/assets/textures/blockout_textures/512/basic/gray_cross.png.import b/assets/textures/blockout_textures/512/basic/gray_cross.png.import new file mode 100644 index 0000000..c0cb8ff --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/gray_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bosd374gaaxmm" +path="res://.godot/imported/gray_cross.png-158f6aaef410b092906fc554489fa394.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/gray_cross.png" +dest_files=["res://.godot/imported/gray_cross.png-158f6aaef410b092906fc554489fa394.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/gray_dots.png b/assets/textures/blockout_textures/512/basic/gray_dots.png new file mode 100644 index 0000000..c737569 Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/gray_dots.png differ diff --git a/assets/textures/blockout_textures/512/basic/gray_dots.png.import b/assets/textures/blockout_textures/512/basic/gray_dots.png.import new file mode 100644 index 0000000..2f10117 --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/gray_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bonx5yvxl8pga" +path="res://.godot/imported/gray_dots.png-23340a821c008b54b5cc7c93fcacb68d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/gray_dots.png" +dest_files=["res://.godot/imported/gray_dots.png-23340a821c008b54b5cc7c93fcacb68d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/gray_grid.png b/assets/textures/blockout_textures/512/basic/gray_grid.png new file mode 100644 index 0000000..ce644f3 Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/gray_grid.png differ diff --git a/assets/textures/blockout_textures/512/basic/gray_grid.png.import b/assets/textures/blockout_textures/512/basic/gray_grid.png.import new file mode 100644 index 0000000..3f30f27 --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/gray_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dwjim40urljwt" +path="res://.godot/imported/gray_grid.png-e1ed4d93eb0e8c21092c0e3ecbce18c0.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/gray_grid.png" +dest_files=["res://.godot/imported/gray_grid.png-e1ed4d93eb0e8c21092c0e3ecbce18c0.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/green_check.png b/assets/textures/blockout_textures/512/basic/green_check.png new file mode 100644 index 0000000..c871569 Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/green_check.png differ diff --git a/assets/textures/blockout_textures/512/basic/green_check.png.import b/assets/textures/blockout_textures/512/basic/green_check.png.import new file mode 100644 index 0000000..29348fb --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/green_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dgscxe20sl68c" +path="res://.godot/imported/green_check.png-e31f4a8ad72f41fd7c05f93bc95e18df.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/green_check.png" +dest_files=["res://.godot/imported/green_check.png-e31f4a8ad72f41fd7c05f93bc95e18df.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/green_cross.png b/assets/textures/blockout_textures/512/basic/green_cross.png new file mode 100644 index 0000000..3c96c80 Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/green_cross.png differ diff --git a/assets/textures/blockout_textures/512/basic/green_cross.png.import b/assets/textures/blockout_textures/512/basic/green_cross.png.import new file mode 100644 index 0000000..27e3871 --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/green_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bm2sdeuvqtyc3" +path="res://.godot/imported/green_cross.png-8f70d7c0db6733b10fd81bd995839577.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/green_cross.png" +dest_files=["res://.godot/imported/green_cross.png-8f70d7c0db6733b10fd81bd995839577.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/green_dots.png b/assets/textures/blockout_textures/512/basic/green_dots.png new file mode 100644 index 0000000..b54f553 Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/green_dots.png differ diff --git a/assets/textures/blockout_textures/512/basic/green_dots.png.import b/assets/textures/blockout_textures/512/basic/green_dots.png.import new file mode 100644 index 0000000..0fb0319 --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/green_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cchgsruqxjd1i" +path="res://.godot/imported/green_dots.png-0fc56d613af543cb8506483347e4ae48.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/green_dots.png" +dest_files=["res://.godot/imported/green_dots.png-0fc56d613af543cb8506483347e4ae48.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/green_grid.png b/assets/textures/blockout_textures/512/basic/green_grid.png new file mode 100644 index 0000000..97726eb Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/green_grid.png differ diff --git a/assets/textures/blockout_textures/512/basic/green_grid.png.import b/assets/textures/blockout_textures/512/basic/green_grid.png.import new file mode 100644 index 0000000..a861944 --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/green_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bjavcnwi4lnfj" +path="res://.godot/imported/green_grid.png-faaa259527a905e162a51ad68cfde4ea.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/green_grid.png" +dest_files=["res://.godot/imported/green_grid.png-faaa259527a905e162a51ad68cfde4ea.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/green_light_check.png b/assets/textures/blockout_textures/512/basic/green_light_check.png new file mode 100644 index 0000000..00b6ec4 Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/green_light_check.png differ diff --git a/assets/textures/blockout_textures/512/basic/green_light_check.png.import b/assets/textures/blockout_textures/512/basic/green_light_check.png.import new file mode 100644 index 0000000..f9fa7d8 --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/green_light_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b8kpcsw10ff5l" +path="res://.godot/imported/green_light_check.png-555efcefcb3ba3352d6426a9e58a73ab.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/green_light_check.png" +dest_files=["res://.godot/imported/green_light_check.png-555efcefcb3ba3352d6426a9e58a73ab.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/green_light_cross.png b/assets/textures/blockout_textures/512/basic/green_light_cross.png new file mode 100644 index 0000000..c07ba63 Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/green_light_cross.png differ diff --git a/assets/textures/blockout_textures/512/basic/green_light_cross.png.import b/assets/textures/blockout_textures/512/basic/green_light_cross.png.import new file mode 100644 index 0000000..fc2bf4c --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/green_light_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d16mw2mpdfuts" +path="res://.godot/imported/green_light_cross.png-34c1f5b9bd33e78202a13aaad1e152fe.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/green_light_cross.png" +dest_files=["res://.godot/imported/green_light_cross.png-34c1f5b9bd33e78202a13aaad1e152fe.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/green_light_dots.png b/assets/textures/blockout_textures/512/basic/green_light_dots.png new file mode 100644 index 0000000..fa31472 Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/green_light_dots.png differ diff --git a/assets/textures/blockout_textures/512/basic/green_light_dots.png.import b/assets/textures/blockout_textures/512/basic/green_light_dots.png.import new file mode 100644 index 0000000..45b4802 --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/green_light_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://517vgvhaw1a4" +path="res://.godot/imported/green_light_dots.png-fae60fdca34b0a38547f0dbebaf0a57f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/green_light_dots.png" +dest_files=["res://.godot/imported/green_light_dots.png-fae60fdca34b0a38547f0dbebaf0a57f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/green_light_grid.png b/assets/textures/blockout_textures/512/basic/green_light_grid.png new file mode 100644 index 0000000..459c4ce Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/green_light_grid.png differ diff --git a/assets/textures/blockout_textures/512/basic/green_light_grid.png.import b/assets/textures/blockout_textures/512/basic/green_light_grid.png.import new file mode 100644 index 0000000..0ea389e --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/green_light_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://buh68dkdo36t8" +path="res://.godot/imported/green_light_grid.png-a589a928e31e4374aef28bec2078205a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/green_light_grid.png" +dest_files=["res://.godot/imported/green_light_grid.png-a589a928e31e4374aef28bec2078205a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/orange_check.png b/assets/textures/blockout_textures/512/basic/orange_check.png new file mode 100644 index 0000000..d4265ac Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/orange_check.png differ diff --git a/assets/textures/blockout_textures/512/basic/orange_check.png.import b/assets/textures/blockout_textures/512/basic/orange_check.png.import new file mode 100644 index 0000000..74eec96 --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/orange_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dknxs2rcljfdy" +path="res://.godot/imported/orange_check.png-ac67f714d42dec2b10f916fa9887994f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/orange_check.png" +dest_files=["res://.godot/imported/orange_check.png-ac67f714d42dec2b10f916fa9887994f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/orange_cross.png b/assets/textures/blockout_textures/512/basic/orange_cross.png new file mode 100644 index 0000000..1dc44d7 Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/orange_cross.png differ diff --git a/assets/textures/blockout_textures/512/basic/orange_cross.png.import b/assets/textures/blockout_textures/512/basic/orange_cross.png.import new file mode 100644 index 0000000..808e2a3 --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/orange_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://sj0382ms1ftq" +path="res://.godot/imported/orange_cross.png-b950444fcce41255fd17aa2121a346c5.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/orange_cross.png" +dest_files=["res://.godot/imported/orange_cross.png-b950444fcce41255fd17aa2121a346c5.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/orange_dots.png b/assets/textures/blockout_textures/512/basic/orange_dots.png new file mode 100644 index 0000000..e1fe17c Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/orange_dots.png differ diff --git a/assets/textures/blockout_textures/512/basic/orange_dots.png.import b/assets/textures/blockout_textures/512/basic/orange_dots.png.import new file mode 100644 index 0000000..8885f5d --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/orange_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bw43oj3fhwgcf" +path="res://.godot/imported/orange_dots.png-b4f968fc4d13abd195e4ffd5962eaccb.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/orange_dots.png" +dest_files=["res://.godot/imported/orange_dots.png-b4f968fc4d13abd195e4ffd5962eaccb.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/orange_grid.png b/assets/textures/blockout_textures/512/basic/orange_grid.png new file mode 100644 index 0000000..b65af09 Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/orange_grid.png differ diff --git a/assets/textures/blockout_textures/512/basic/orange_grid.png.import b/assets/textures/blockout_textures/512/basic/orange_grid.png.import new file mode 100644 index 0000000..41ed08a --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/orange_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bu7lh6ccpeurs" +path="res://.godot/imported/orange_grid.png-60f6835b742689efb6356b496c72811b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/orange_grid.png" +dest_files=["res://.godot/imported/orange_grid.png-60f6835b742689efb6356b496c72811b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/orange_light_check.png b/assets/textures/blockout_textures/512/basic/orange_light_check.png new file mode 100644 index 0000000..73575b0 Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/orange_light_check.png differ diff --git a/assets/textures/blockout_textures/512/basic/orange_light_check.png.import b/assets/textures/blockout_textures/512/basic/orange_light_check.png.import new file mode 100644 index 0000000..0664fb5 --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/orange_light_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://qnq03x0jgdfh" +path="res://.godot/imported/orange_light_check.png-2dde6a37ff26331dd714c8e8db037540.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/orange_light_check.png" +dest_files=["res://.godot/imported/orange_light_check.png-2dde6a37ff26331dd714c8e8db037540.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/orange_light_cross.png b/assets/textures/blockout_textures/512/basic/orange_light_cross.png new file mode 100644 index 0000000..6839cfd Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/orange_light_cross.png differ diff --git a/assets/textures/blockout_textures/512/basic/orange_light_cross.png.import b/assets/textures/blockout_textures/512/basic/orange_light_cross.png.import new file mode 100644 index 0000000..23a6240 --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/orange_light_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c1k2tt7rybjvl" +path="res://.godot/imported/orange_light_cross.png-71d4dd65df077f00b8101b424d02f73e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/orange_light_cross.png" +dest_files=["res://.godot/imported/orange_light_cross.png-71d4dd65df077f00b8101b424d02f73e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/orange_light_dots.png b/assets/textures/blockout_textures/512/basic/orange_light_dots.png new file mode 100644 index 0000000..7adb9f1 Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/orange_light_dots.png differ diff --git a/assets/textures/blockout_textures/512/basic/orange_light_dots.png.import b/assets/textures/blockout_textures/512/basic/orange_light_dots.png.import new file mode 100644 index 0000000..60192b0 --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/orange_light_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cqmvw8j1kdql8" +path="res://.godot/imported/orange_light_dots.png-60b7c9fd993a8886c510cb5d22c3abce.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/orange_light_dots.png" +dest_files=["res://.godot/imported/orange_light_dots.png-60b7c9fd993a8886c510cb5d22c3abce.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/orange_light_grid.png b/assets/textures/blockout_textures/512/basic/orange_light_grid.png new file mode 100644 index 0000000..ddfcf30 Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/orange_light_grid.png differ diff --git a/assets/textures/blockout_textures/512/basic/orange_light_grid.png.import b/assets/textures/blockout_textures/512/basic/orange_light_grid.png.import new file mode 100644 index 0000000..e173994 --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/orange_light_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cwvdeou15e8l4" +path="res://.godot/imported/orange_light_grid.png-9db16331ce847096786bc4b15b47cd5e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/orange_light_grid.png" +dest_files=["res://.godot/imported/orange_light_grid.png-9db16331ce847096786bc4b15b47cd5e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/purple_check.png b/assets/textures/blockout_textures/512/basic/purple_check.png new file mode 100644 index 0000000..e6a2415 Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/purple_check.png differ diff --git a/assets/textures/blockout_textures/512/basic/purple_check.png.import b/assets/textures/blockout_textures/512/basic/purple_check.png.import new file mode 100644 index 0000000..f00767e --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/purple_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://doxy5liu3bwli" +path="res://.godot/imported/purple_check.png-1ee2bbf54151db0d61b117983baf1fec.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/purple_check.png" +dest_files=["res://.godot/imported/purple_check.png-1ee2bbf54151db0d61b117983baf1fec.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/purple_cross.png b/assets/textures/blockout_textures/512/basic/purple_cross.png new file mode 100644 index 0000000..9429529 Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/purple_cross.png differ diff --git a/assets/textures/blockout_textures/512/basic/purple_cross.png.import b/assets/textures/blockout_textures/512/basic/purple_cross.png.import new file mode 100644 index 0000000..959f4e3 --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/purple_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cx2n3vclrypf2" +path="res://.godot/imported/purple_cross.png-6bd97835bc35a458bcc80575aa174acc.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/purple_cross.png" +dest_files=["res://.godot/imported/purple_cross.png-6bd97835bc35a458bcc80575aa174acc.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/purple_dots.png b/assets/textures/blockout_textures/512/basic/purple_dots.png new file mode 100644 index 0000000..eb5701c Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/purple_dots.png differ diff --git a/assets/textures/blockout_textures/512/basic/purple_dots.png.import b/assets/textures/blockout_textures/512/basic/purple_dots.png.import new file mode 100644 index 0000000..eab7fe2 --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/purple_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dppueny7bvmfs" +path="res://.godot/imported/purple_dots.png-c97cca0b04a7de41a159fb8f494cbf69.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/purple_dots.png" +dest_files=["res://.godot/imported/purple_dots.png-c97cca0b04a7de41a159fb8f494cbf69.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/purple_grid.png b/assets/textures/blockout_textures/512/basic/purple_grid.png new file mode 100644 index 0000000..ddea53c Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/purple_grid.png differ diff --git a/assets/textures/blockout_textures/512/basic/purple_grid.png.import b/assets/textures/blockout_textures/512/basic/purple_grid.png.import new file mode 100644 index 0000000..261dd87 --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/purple_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://i5i4g8dbjakc" +path="res://.godot/imported/purple_grid.png-5fa87d4a4d06d64e7307e963055721fb.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/purple_grid.png" +dest_files=["res://.godot/imported/purple_grid.png-5fa87d4a4d06d64e7307e963055721fb.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/purple_light_check.png b/assets/textures/blockout_textures/512/basic/purple_light_check.png new file mode 100644 index 0000000..0513647 Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/purple_light_check.png differ diff --git a/assets/textures/blockout_textures/512/basic/purple_light_check.png.import b/assets/textures/blockout_textures/512/basic/purple_light_check.png.import new file mode 100644 index 0000000..a21a281 --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/purple_light_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b7fa3ru708cgo" +path="res://.godot/imported/purple_light_check.png-28a8f781d6a7f7447384fa4ace7bc698.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/purple_light_check.png" +dest_files=["res://.godot/imported/purple_light_check.png-28a8f781d6a7f7447384fa4ace7bc698.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/purple_light_cross.png b/assets/textures/blockout_textures/512/basic/purple_light_cross.png new file mode 100644 index 0000000..2f4781e Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/purple_light_cross.png differ diff --git a/assets/textures/blockout_textures/512/basic/purple_light_cross.png.import b/assets/textures/blockout_textures/512/basic/purple_light_cross.png.import new file mode 100644 index 0000000..f2a605f --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/purple_light_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dv0308tiaq8pv" +path="res://.godot/imported/purple_light_cross.png-350507c931380cfe6785f50682da1929.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/purple_light_cross.png" +dest_files=["res://.godot/imported/purple_light_cross.png-350507c931380cfe6785f50682da1929.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/purple_light_dots.png b/assets/textures/blockout_textures/512/basic/purple_light_dots.png new file mode 100644 index 0000000..267a65d Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/purple_light_dots.png differ diff --git a/assets/textures/blockout_textures/512/basic/purple_light_dots.png.import b/assets/textures/blockout_textures/512/basic/purple_light_dots.png.import new file mode 100644 index 0000000..3732862 --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/purple_light_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b0hnbuw6euahm" +path="res://.godot/imported/purple_light_dots.png-3ed0ecb5b58e2786ea526cbbbaa3f532.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/purple_light_dots.png" +dest_files=["res://.godot/imported/purple_light_dots.png-3ed0ecb5b58e2786ea526cbbbaa3f532.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/purple_light_grid.png b/assets/textures/blockout_textures/512/basic/purple_light_grid.png new file mode 100644 index 0000000..fdb9589 Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/purple_light_grid.png differ diff --git a/assets/textures/blockout_textures/512/basic/purple_light_grid.png.import b/assets/textures/blockout_textures/512/basic/purple_light_grid.png.import new file mode 100644 index 0000000..2017ba9 --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/purple_light_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://etdom3mcstky" +path="res://.godot/imported/purple_light_grid.png-756b02729e6a5dce31bc8e547e2781af.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/purple_light_grid.png" +dest_files=["res://.godot/imported/purple_light_grid.png-756b02729e6a5dce31bc8e547e2781af.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/red_check.png b/assets/textures/blockout_textures/512/basic/red_check.png new file mode 100644 index 0000000..b0c6b42 Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/red_check.png differ diff --git a/assets/textures/blockout_textures/512/basic/red_check.png.import b/assets/textures/blockout_textures/512/basic/red_check.png.import new file mode 100644 index 0000000..4e987d8 --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/red_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c7mgr8rn5r5dr" +path="res://.godot/imported/red_check.png-de25cb4ded6d4b1a7019f8fb2c214142.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/red_check.png" +dest_files=["res://.godot/imported/red_check.png-de25cb4ded6d4b1a7019f8fb2c214142.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/red_cross.png b/assets/textures/blockout_textures/512/basic/red_cross.png new file mode 100644 index 0000000..3f2f873 Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/red_cross.png differ diff --git a/assets/textures/blockout_textures/512/basic/red_cross.png.import b/assets/textures/blockout_textures/512/basic/red_cross.png.import new file mode 100644 index 0000000..03e2a30 --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/red_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bg0q3mt85yvh1" +path="res://.godot/imported/red_cross.png-2814c85d3efa8a7851ff93d87cc2fe42.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/red_cross.png" +dest_files=["res://.godot/imported/red_cross.png-2814c85d3efa8a7851ff93d87cc2fe42.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/red_dots.png b/assets/textures/blockout_textures/512/basic/red_dots.png new file mode 100644 index 0000000..614fe8f Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/red_dots.png differ diff --git a/assets/textures/blockout_textures/512/basic/red_dots.png.import b/assets/textures/blockout_textures/512/basic/red_dots.png.import new file mode 100644 index 0000000..4a629b7 --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/red_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dd0o32hbxd2qi" +path="res://.godot/imported/red_dots.png-fd86d889e5ab545cb2e353e9fda022a8.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/red_dots.png" +dest_files=["res://.godot/imported/red_dots.png-fd86d889e5ab545cb2e353e9fda022a8.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/red_grid.png b/assets/textures/blockout_textures/512/basic/red_grid.png new file mode 100644 index 0000000..a9e6579 Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/red_grid.png differ diff --git a/assets/textures/blockout_textures/512/basic/red_grid.png.import b/assets/textures/blockout_textures/512/basic/red_grid.png.import new file mode 100644 index 0000000..c2263ac --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/red_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dynp3rry1wdwj" +path="res://.godot/imported/red_grid.png-644019f5537d18c141a6498c032d0f85.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/red_grid.png" +dest_files=["res://.godot/imported/red_grid.png-644019f5537d18c141a6498c032d0f85.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/red_light_check.png b/assets/textures/blockout_textures/512/basic/red_light_check.png new file mode 100644 index 0000000..27a0654 Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/red_light_check.png differ diff --git a/assets/textures/blockout_textures/512/basic/red_light_check.png.import b/assets/textures/blockout_textures/512/basic/red_light_check.png.import new file mode 100644 index 0000000..0d98c43 --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/red_light_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cq863rqitxaso" +path="res://.godot/imported/red_light_check.png-2ff319018e61e09aecab6525cf367a7c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/red_light_check.png" +dest_files=["res://.godot/imported/red_light_check.png-2ff319018e61e09aecab6525cf367a7c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/red_light_cross.png b/assets/textures/blockout_textures/512/basic/red_light_cross.png new file mode 100644 index 0000000..50d1e51 Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/red_light_cross.png differ diff --git a/assets/textures/blockout_textures/512/basic/red_light_cross.png.import b/assets/textures/blockout_textures/512/basic/red_light_cross.png.import new file mode 100644 index 0000000..2a8cd81 --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/red_light_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dunb8j66yedoy" +path="res://.godot/imported/red_light_cross.png-b2ece097adf18c5473460d571044f1b7.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/red_light_cross.png" +dest_files=["res://.godot/imported/red_light_cross.png-b2ece097adf18c5473460d571044f1b7.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/red_light_dots.png b/assets/textures/blockout_textures/512/basic/red_light_dots.png new file mode 100644 index 0000000..f1eee00 Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/red_light_dots.png differ diff --git a/assets/textures/blockout_textures/512/basic/red_light_dots.png.import b/assets/textures/blockout_textures/512/basic/red_light_dots.png.import new file mode 100644 index 0000000..925dc45 --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/red_light_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b6ccsic5pa0st" +path="res://.godot/imported/red_light_dots.png-d3e3a84dfdb105d1a598c75f9d93f78e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/red_light_dots.png" +dest_files=["res://.godot/imported/red_light_dots.png-d3e3a84dfdb105d1a598c75f9d93f78e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/red_light_grid.png b/assets/textures/blockout_textures/512/basic/red_light_grid.png new file mode 100644 index 0000000..c2a07f6 Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/red_light_grid.png differ diff --git a/assets/textures/blockout_textures/512/basic/red_light_grid.png.import b/assets/textures/blockout_textures/512/basic/red_light_grid.png.import new file mode 100644 index 0000000..7122ade --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/red_light_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dbuk8xdfcsvgj" +path="res://.godot/imported/red_light_grid.png-b3ae782b593f2f3995b6013c6e06dea3.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/red_light_grid.png" +dest_files=["res://.godot/imported/red_light_grid.png-b3ae782b593f2f3995b6013c6e06dea3.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/white_check.png b/assets/textures/blockout_textures/512/basic/white_check.png new file mode 100644 index 0000000..32d09a3 Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/white_check.png differ diff --git a/assets/textures/blockout_textures/512/basic/white_check.png.import b/assets/textures/blockout_textures/512/basic/white_check.png.import new file mode 100644 index 0000000..100d641 --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/white_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ddarmb6kpb8re" +path="res://.godot/imported/white_check.png-98b936f1b039518b9d4803a169ca13bb.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/white_check.png" +dest_files=["res://.godot/imported/white_check.png-98b936f1b039518b9d4803a169ca13bb.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/white_cross.png b/assets/textures/blockout_textures/512/basic/white_cross.png new file mode 100644 index 0000000..606173c Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/white_cross.png differ diff --git a/assets/textures/blockout_textures/512/basic/white_cross.png.import b/assets/textures/blockout_textures/512/basic/white_cross.png.import new file mode 100644 index 0000000..62a7a7b --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/white_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c0ab2uktwhh1t" +path="res://.godot/imported/white_cross.png-9be03ab2d16b2496956a1192259ed5ca.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/white_cross.png" +dest_files=["res://.godot/imported/white_cross.png-9be03ab2d16b2496956a1192259ed5ca.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/white_dots.png b/assets/textures/blockout_textures/512/basic/white_dots.png new file mode 100644 index 0000000..ecd595d Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/white_dots.png differ diff --git a/assets/textures/blockout_textures/512/basic/white_dots.png.import b/assets/textures/blockout_textures/512/basic/white_dots.png.import new file mode 100644 index 0000000..c2e13f6 --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/white_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dcwt2yc14tg4t" +path="res://.godot/imported/white_dots.png-50cf5cc62ed016bf31dcaba679f57ef7.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/white_dots.png" +dest_files=["res://.godot/imported/white_dots.png-50cf5cc62ed016bf31dcaba679f57ef7.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/white_grid.png b/assets/textures/blockout_textures/512/basic/white_grid.png new file mode 100644 index 0000000..9e9f786 Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/white_grid.png differ diff --git a/assets/textures/blockout_textures/512/basic/white_grid.png.import b/assets/textures/blockout_textures/512/basic/white_grid.png.import new file mode 100644 index 0000000..6ff2bbe --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/white_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bhnwkd2kwow5l" +path="res://.godot/imported/white_grid.png-f485d88b9a96e6fb9bd5b99118f43050.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/white_grid.png" +dest_files=["res://.godot/imported/white_grid.png-f485d88b9a96e6fb9bd5b99118f43050.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/yellow_check.png b/assets/textures/blockout_textures/512/basic/yellow_check.png new file mode 100644 index 0000000..6a98826 Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/yellow_check.png differ diff --git a/assets/textures/blockout_textures/512/basic/yellow_check.png.import b/assets/textures/blockout_textures/512/basic/yellow_check.png.import new file mode 100644 index 0000000..07194e6 --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/yellow_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://chqh0fl1bbmti" +path="res://.godot/imported/yellow_check.png-5dc3a5d2bf234c9e51a3401fcda96099.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/yellow_check.png" +dest_files=["res://.godot/imported/yellow_check.png-5dc3a5d2bf234c9e51a3401fcda96099.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/yellow_cross.png b/assets/textures/blockout_textures/512/basic/yellow_cross.png new file mode 100644 index 0000000..8f58d7e Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/yellow_cross.png differ diff --git a/assets/textures/blockout_textures/512/basic/yellow_cross.png.import b/assets/textures/blockout_textures/512/basic/yellow_cross.png.import new file mode 100644 index 0000000..dff4962 --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/yellow_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cslfbt5iwq1hv" +path="res://.godot/imported/yellow_cross.png-5b4c02b8171e17ffd90de1096b538da0.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/yellow_cross.png" +dest_files=["res://.godot/imported/yellow_cross.png-5b4c02b8171e17ffd90de1096b538da0.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/yellow_dots.png b/assets/textures/blockout_textures/512/basic/yellow_dots.png new file mode 100644 index 0000000..f138704 Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/yellow_dots.png differ diff --git a/assets/textures/blockout_textures/512/basic/yellow_dots.png.import b/assets/textures/blockout_textures/512/basic/yellow_dots.png.import new file mode 100644 index 0000000..788547b --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/yellow_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b6s6qieiy422s" +path="res://.godot/imported/yellow_dots.png-fc404e1591139b30d41f836faba6e858.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/yellow_dots.png" +dest_files=["res://.godot/imported/yellow_dots.png-fc404e1591139b30d41f836faba6e858.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/yellow_grid.png b/assets/textures/blockout_textures/512/basic/yellow_grid.png new file mode 100644 index 0000000..2d42a4d Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/yellow_grid.png differ diff --git a/assets/textures/blockout_textures/512/basic/yellow_grid.png.import b/assets/textures/blockout_textures/512/basic/yellow_grid.png.import new file mode 100644 index 0000000..574caa1 --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/yellow_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dngxrxm24rtah" +path="res://.godot/imported/yellow_grid.png-bfe64b0322089b35e4f9b40ccbe09238.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/yellow_grid.png" +dest_files=["res://.godot/imported/yellow_grid.png-bfe64b0322089b35e4f9b40ccbe09238.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/yellow_light_check.png b/assets/textures/blockout_textures/512/basic/yellow_light_check.png new file mode 100644 index 0000000..fda8d6b Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/yellow_light_check.png differ diff --git a/assets/textures/blockout_textures/512/basic/yellow_light_check.png.import b/assets/textures/blockout_textures/512/basic/yellow_light_check.png.import new file mode 100644 index 0000000..1033bb0 --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/yellow_light_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bxhysevri3put" +path="res://.godot/imported/yellow_light_check.png-419ac7a6240149a642161167fc7f9505.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/yellow_light_check.png" +dest_files=["res://.godot/imported/yellow_light_check.png-419ac7a6240149a642161167fc7f9505.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/yellow_light_cross.png b/assets/textures/blockout_textures/512/basic/yellow_light_cross.png new file mode 100644 index 0000000..629d573 Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/yellow_light_cross.png differ diff --git a/assets/textures/blockout_textures/512/basic/yellow_light_cross.png.import b/assets/textures/blockout_textures/512/basic/yellow_light_cross.png.import new file mode 100644 index 0000000..6cd7111 --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/yellow_light_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d0ucepnlibi2s" +path="res://.godot/imported/yellow_light_cross.png-9324dcf0e64cd3bbb56586bd5d948cab.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/yellow_light_cross.png" +dest_files=["res://.godot/imported/yellow_light_cross.png-9324dcf0e64cd3bbb56586bd5d948cab.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/yellow_light_dots.png b/assets/textures/blockout_textures/512/basic/yellow_light_dots.png new file mode 100644 index 0000000..eb2f27d Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/yellow_light_dots.png differ diff --git a/assets/textures/blockout_textures/512/basic/yellow_light_dots.png.import b/assets/textures/blockout_textures/512/basic/yellow_light_dots.png.import new file mode 100644 index 0000000..3643830 --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/yellow_light_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://csdfmr1y5ht3u" +path="res://.godot/imported/yellow_light_dots.png-6d3bc593f49e0a74ac95519d3085c6b7.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/yellow_light_dots.png" +dest_files=["res://.godot/imported/yellow_light_dots.png-6d3bc593f49e0a74ac95519d3085c6b7.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/basic/yellow_light_grid.png b/assets/textures/blockout_textures/512/basic/yellow_light_grid.png new file mode 100644 index 0000000..190f722 Binary files /dev/null and b/assets/textures/blockout_textures/512/basic/yellow_light_grid.png differ diff --git a/assets/textures/blockout_textures/512/basic/yellow_light_grid.png.import b/assets/textures/blockout_textures/512/basic/yellow_light_grid.png.import new file mode 100644 index 0000000..dff2856 --- /dev/null +++ b/assets/textures/blockout_textures/512/basic/yellow_light_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bqrf23i65n48b" +path="res://.godot/imported/yellow_light_grid.png-5911b4218275a826cc01331b9575eb62.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/basic/yellow_light_grid.png" +dest_files=["res://.godot/imported/yellow_light_grid.png-5911b4218275a826cc01331b9575eb62.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/mark/aqua_mark_black.png b/assets/textures/blockout_textures/512/mark/aqua_mark_black.png new file mode 100644 index 0000000..d46c732 Binary files /dev/null and b/assets/textures/blockout_textures/512/mark/aqua_mark_black.png differ diff --git a/assets/textures/blockout_textures/512/mark/aqua_mark_black.png.import b/assets/textures/blockout_textures/512/mark/aqua_mark_black.png.import new file mode 100644 index 0000000..f643e01 --- /dev/null +++ b/assets/textures/blockout_textures/512/mark/aqua_mark_black.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://stejma2u0r37" +path="res://.godot/imported/aqua_mark_black.png-b4cab5d50199b3a5fa43bc3e89c81d44.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/mark/aqua_mark_black.png" +dest_files=["res://.godot/imported/aqua_mark_black.png-b4cab5d50199b3a5fa43bc3e89c81d44.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/mark/aqua_mark_transparent.png b/assets/textures/blockout_textures/512/mark/aqua_mark_transparent.png new file mode 100644 index 0000000..0070fd9 Binary files /dev/null and b/assets/textures/blockout_textures/512/mark/aqua_mark_transparent.png differ diff --git a/assets/textures/blockout_textures/512/mark/aqua_mark_transparent.png.import b/assets/textures/blockout_textures/512/mark/aqua_mark_transparent.png.import new file mode 100644 index 0000000..385cafa --- /dev/null +++ b/assets/textures/blockout_textures/512/mark/aqua_mark_transparent.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://butbbgv7sfbi5" +path="res://.godot/imported/aqua_mark_transparent.png-137fa4d004019d639678f3fc9ad0c304.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/mark/aqua_mark_transparent.png" +dest_files=["res://.godot/imported/aqua_mark_transparent.png-137fa4d004019d639678f3fc9ad0c304.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/mark/aqua_mark_white.png b/assets/textures/blockout_textures/512/mark/aqua_mark_white.png new file mode 100644 index 0000000..604fb77 Binary files /dev/null and b/assets/textures/blockout_textures/512/mark/aqua_mark_white.png differ diff --git a/assets/textures/blockout_textures/512/mark/aqua_mark_white.png.import b/assets/textures/blockout_textures/512/mark/aqua_mark_white.png.import new file mode 100644 index 0000000..2ee1f82 --- /dev/null +++ b/assets/textures/blockout_textures/512/mark/aqua_mark_white.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dfkblrklbkevm" +path="res://.godot/imported/aqua_mark_white.png-86e6ee61da920bd3c7882038a7398115.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/mark/aqua_mark_white.png" +dest_files=["res://.godot/imported/aqua_mark_white.png-86e6ee61da920bd3c7882038a7398115.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/mark/black_mark.png b/assets/textures/blockout_textures/512/mark/black_mark.png new file mode 100644 index 0000000..e7f5f43 Binary files /dev/null and b/assets/textures/blockout_textures/512/mark/black_mark.png differ diff --git a/assets/textures/blockout_textures/512/mark/black_mark.png.import b/assets/textures/blockout_textures/512/mark/black_mark.png.import new file mode 100644 index 0000000..675aa80 --- /dev/null +++ b/assets/textures/blockout_textures/512/mark/black_mark.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ixl1r5gtuodp" +path="res://.godot/imported/black_mark.png-f9983b7a869c4125aca2aa8189c803f0.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/mark/black_mark.png" +dest_files=["res://.godot/imported/black_mark.png-f9983b7a869c4125aca2aa8189c803f0.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/mark/blue_mark_black.png b/assets/textures/blockout_textures/512/mark/blue_mark_black.png new file mode 100644 index 0000000..2c86706 Binary files /dev/null and b/assets/textures/blockout_textures/512/mark/blue_mark_black.png differ diff --git a/assets/textures/blockout_textures/512/mark/blue_mark_black.png.import b/assets/textures/blockout_textures/512/mark/blue_mark_black.png.import new file mode 100644 index 0000000..fd754d4 --- /dev/null +++ b/assets/textures/blockout_textures/512/mark/blue_mark_black.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b8p77ul1tcoa6" +path="res://.godot/imported/blue_mark_black.png-117c761cb5da7fc1e8149016754a666d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/mark/blue_mark_black.png" +dest_files=["res://.godot/imported/blue_mark_black.png-117c761cb5da7fc1e8149016754a666d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/mark/blue_mark_transparent.png b/assets/textures/blockout_textures/512/mark/blue_mark_transparent.png new file mode 100644 index 0000000..1608c72 Binary files /dev/null and b/assets/textures/blockout_textures/512/mark/blue_mark_transparent.png differ diff --git a/assets/textures/blockout_textures/512/mark/blue_mark_transparent.png.import b/assets/textures/blockout_textures/512/mark/blue_mark_transparent.png.import new file mode 100644 index 0000000..cdaa86e --- /dev/null +++ b/assets/textures/blockout_textures/512/mark/blue_mark_transparent.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://civdh8idq77f2" +path="res://.godot/imported/blue_mark_transparent.png-3326679c2c29a6d0c0366d87a10e1ac4.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/mark/blue_mark_transparent.png" +dest_files=["res://.godot/imported/blue_mark_transparent.png-3326679c2c29a6d0c0366d87a10e1ac4.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/mark/blue_mark_white.png b/assets/textures/blockout_textures/512/mark/blue_mark_white.png new file mode 100644 index 0000000..951d2de Binary files /dev/null and b/assets/textures/blockout_textures/512/mark/blue_mark_white.png differ diff --git a/assets/textures/blockout_textures/512/mark/blue_mark_white.png.import b/assets/textures/blockout_textures/512/mark/blue_mark_white.png.import new file mode 100644 index 0000000..1f273ed --- /dev/null +++ b/assets/textures/blockout_textures/512/mark/blue_mark_white.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cv08cau45yv5m" +path="res://.godot/imported/blue_mark_white.png-edcea7863560e339c2d6c0bb2724cba4.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/mark/blue_mark_white.png" +dest_files=["res://.godot/imported/blue_mark_white.png-edcea7863560e339c2d6c0bb2724cba4.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/mark/gray_mark.png b/assets/textures/blockout_textures/512/mark/gray_mark.png new file mode 100644 index 0000000..5a7ce96 Binary files /dev/null and b/assets/textures/blockout_textures/512/mark/gray_mark.png differ diff --git a/assets/textures/blockout_textures/512/mark/gray_mark.png.import b/assets/textures/blockout_textures/512/mark/gray_mark.png.import new file mode 100644 index 0000000..f4bce0e --- /dev/null +++ b/assets/textures/blockout_textures/512/mark/gray_mark.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cismsumwe1xsw" +path="res://.godot/imported/gray_mark.png-6f98891b5609cd5c95b6034031be1e42.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/mark/gray_mark.png" +dest_files=["res://.godot/imported/gray_mark.png-6f98891b5609cd5c95b6034031be1e42.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/mark/green_mark_black.png b/assets/textures/blockout_textures/512/mark/green_mark_black.png new file mode 100644 index 0000000..5b5aee6 Binary files /dev/null and b/assets/textures/blockout_textures/512/mark/green_mark_black.png differ diff --git a/assets/textures/blockout_textures/512/mark/green_mark_black.png.import b/assets/textures/blockout_textures/512/mark/green_mark_black.png.import new file mode 100644 index 0000000..570eb84 --- /dev/null +++ b/assets/textures/blockout_textures/512/mark/green_mark_black.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://v02ov0ej6a0a" +path="res://.godot/imported/green_mark_black.png-92edb6499cbd3d6abed6593e58f8ca34.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/mark/green_mark_black.png" +dest_files=["res://.godot/imported/green_mark_black.png-92edb6499cbd3d6abed6593e58f8ca34.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/mark/green_mark_transparent.png b/assets/textures/blockout_textures/512/mark/green_mark_transparent.png new file mode 100644 index 0000000..106b9ff Binary files /dev/null and b/assets/textures/blockout_textures/512/mark/green_mark_transparent.png differ diff --git a/assets/textures/blockout_textures/512/mark/green_mark_transparent.png.import b/assets/textures/blockout_textures/512/mark/green_mark_transparent.png.import new file mode 100644 index 0000000..3bb90d9 --- /dev/null +++ b/assets/textures/blockout_textures/512/mark/green_mark_transparent.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cqx3osd0phfdq" +path="res://.godot/imported/green_mark_transparent.png-562e0ced79bfed51b9a22f3ec71cd685.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/mark/green_mark_transparent.png" +dest_files=["res://.godot/imported/green_mark_transparent.png-562e0ced79bfed51b9a22f3ec71cd685.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/mark/green_mark_white.png b/assets/textures/blockout_textures/512/mark/green_mark_white.png new file mode 100644 index 0000000..498ecef Binary files /dev/null and b/assets/textures/blockout_textures/512/mark/green_mark_white.png differ diff --git a/assets/textures/blockout_textures/512/mark/green_mark_white.png.import b/assets/textures/blockout_textures/512/mark/green_mark_white.png.import new file mode 100644 index 0000000..b445f6a --- /dev/null +++ b/assets/textures/blockout_textures/512/mark/green_mark_white.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bbir04cww0chn" +path="res://.godot/imported/green_mark_white.png-40e42381729b7db80a892229df1bfc59.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/mark/green_mark_white.png" +dest_files=["res://.godot/imported/green_mark_white.png-40e42381729b7db80a892229df1bfc59.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/mark/orange_mark_black.png b/assets/textures/blockout_textures/512/mark/orange_mark_black.png new file mode 100644 index 0000000..5994487 Binary files /dev/null and b/assets/textures/blockout_textures/512/mark/orange_mark_black.png differ diff --git a/assets/textures/blockout_textures/512/mark/orange_mark_black.png.import b/assets/textures/blockout_textures/512/mark/orange_mark_black.png.import new file mode 100644 index 0000000..48b69eb --- /dev/null +++ b/assets/textures/blockout_textures/512/mark/orange_mark_black.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cebn1qroteslb" +path="res://.godot/imported/orange_mark_black.png-393ecd5dc90cf9e4d56c6b09eaeda46c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/mark/orange_mark_black.png" +dest_files=["res://.godot/imported/orange_mark_black.png-393ecd5dc90cf9e4d56c6b09eaeda46c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/mark/orange_mark_transparent.png b/assets/textures/blockout_textures/512/mark/orange_mark_transparent.png new file mode 100644 index 0000000..4ecd29a Binary files /dev/null and b/assets/textures/blockout_textures/512/mark/orange_mark_transparent.png differ diff --git a/assets/textures/blockout_textures/512/mark/orange_mark_transparent.png.import b/assets/textures/blockout_textures/512/mark/orange_mark_transparent.png.import new file mode 100644 index 0000000..00361df --- /dev/null +++ b/assets/textures/blockout_textures/512/mark/orange_mark_transparent.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ckbj5s1o6prfy" +path="res://.godot/imported/orange_mark_transparent.png-71f22f60c73229efe89892a112aaa1dd.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/mark/orange_mark_transparent.png" +dest_files=["res://.godot/imported/orange_mark_transparent.png-71f22f60c73229efe89892a112aaa1dd.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/mark/orange_mark_white.png b/assets/textures/blockout_textures/512/mark/orange_mark_white.png new file mode 100644 index 0000000..2d75294 Binary files /dev/null and b/assets/textures/blockout_textures/512/mark/orange_mark_white.png differ diff --git a/assets/textures/blockout_textures/512/mark/orange_mark_white.png.import b/assets/textures/blockout_textures/512/mark/orange_mark_white.png.import new file mode 100644 index 0000000..0a740a7 --- /dev/null +++ b/assets/textures/blockout_textures/512/mark/orange_mark_white.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dfbcnwvfcpvtj" +path="res://.godot/imported/orange_mark_white.png-f0b448468af89421b7ec8cb6bc8e0281.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/mark/orange_mark_white.png" +dest_files=["res://.godot/imported/orange_mark_white.png-f0b448468af89421b7ec8cb6bc8e0281.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/mark/purple_mark_black.png b/assets/textures/blockout_textures/512/mark/purple_mark_black.png new file mode 100644 index 0000000..a01e0b0 Binary files /dev/null and b/assets/textures/blockout_textures/512/mark/purple_mark_black.png differ diff --git a/assets/textures/blockout_textures/512/mark/purple_mark_black.png.import b/assets/textures/blockout_textures/512/mark/purple_mark_black.png.import new file mode 100644 index 0000000..b663d40 --- /dev/null +++ b/assets/textures/blockout_textures/512/mark/purple_mark_black.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cngjaq34nmby1" +path="res://.godot/imported/purple_mark_black.png-88fb8e6a3d301027878355eccd71236e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/mark/purple_mark_black.png" +dest_files=["res://.godot/imported/purple_mark_black.png-88fb8e6a3d301027878355eccd71236e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/mark/purple_mark_transparent.png b/assets/textures/blockout_textures/512/mark/purple_mark_transparent.png new file mode 100644 index 0000000..13799df Binary files /dev/null and b/assets/textures/blockout_textures/512/mark/purple_mark_transparent.png differ diff --git a/assets/textures/blockout_textures/512/mark/purple_mark_transparent.png.import b/assets/textures/blockout_textures/512/mark/purple_mark_transparent.png.import new file mode 100644 index 0000000..c626fec --- /dev/null +++ b/assets/textures/blockout_textures/512/mark/purple_mark_transparent.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cgwssjyyedunx" +path="res://.godot/imported/purple_mark_transparent.png-d166b5cdeaca8d07bca848fbb2c46ab3.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/mark/purple_mark_transparent.png" +dest_files=["res://.godot/imported/purple_mark_transparent.png-d166b5cdeaca8d07bca848fbb2c46ab3.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/mark/purple_mark_white.png b/assets/textures/blockout_textures/512/mark/purple_mark_white.png new file mode 100644 index 0000000..1e6d497 Binary files /dev/null and b/assets/textures/blockout_textures/512/mark/purple_mark_white.png differ diff --git a/assets/textures/blockout_textures/512/mark/purple_mark_white.png.import b/assets/textures/blockout_textures/512/mark/purple_mark_white.png.import new file mode 100644 index 0000000..ac1b171 --- /dev/null +++ b/assets/textures/blockout_textures/512/mark/purple_mark_white.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cus1eqbrysnid" +path="res://.godot/imported/purple_mark_white.png-93a3e123b8af44ca5aeba9d7938f2b9c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/mark/purple_mark_white.png" +dest_files=["res://.godot/imported/purple_mark_white.png-93a3e123b8af44ca5aeba9d7938f2b9c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/mark/red_mark_black.png b/assets/textures/blockout_textures/512/mark/red_mark_black.png new file mode 100644 index 0000000..0de4faf Binary files /dev/null and b/assets/textures/blockout_textures/512/mark/red_mark_black.png differ diff --git a/assets/textures/blockout_textures/512/mark/red_mark_black.png.import b/assets/textures/blockout_textures/512/mark/red_mark_black.png.import new file mode 100644 index 0000000..71e38d3 --- /dev/null +++ b/assets/textures/blockout_textures/512/mark/red_mark_black.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cqwtsy3i88xxs" +path="res://.godot/imported/red_mark_black.png-54330ecf29ad651789168648c60c4d65.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/mark/red_mark_black.png" +dest_files=["res://.godot/imported/red_mark_black.png-54330ecf29ad651789168648c60c4d65.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/mark/red_mark_transparent.png b/assets/textures/blockout_textures/512/mark/red_mark_transparent.png new file mode 100644 index 0000000..8211d7f Binary files /dev/null and b/assets/textures/blockout_textures/512/mark/red_mark_transparent.png differ diff --git a/assets/textures/blockout_textures/512/mark/red_mark_transparent.png.import b/assets/textures/blockout_textures/512/mark/red_mark_transparent.png.import new file mode 100644 index 0000000..09af156 --- /dev/null +++ b/assets/textures/blockout_textures/512/mark/red_mark_transparent.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://7er2824822xh" +path="res://.godot/imported/red_mark_transparent.png-4abeeb3cf8a59ee34172b8ae0f60c66f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/mark/red_mark_transparent.png" +dest_files=["res://.godot/imported/red_mark_transparent.png-4abeeb3cf8a59ee34172b8ae0f60c66f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/mark/red_mark_white.png b/assets/textures/blockout_textures/512/mark/red_mark_white.png new file mode 100644 index 0000000..5a4ea0e Binary files /dev/null and b/assets/textures/blockout_textures/512/mark/red_mark_white.png differ diff --git a/assets/textures/blockout_textures/512/mark/red_mark_white.png.import b/assets/textures/blockout_textures/512/mark/red_mark_white.png.import new file mode 100644 index 0000000..7630d9c --- /dev/null +++ b/assets/textures/blockout_textures/512/mark/red_mark_white.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bk565j53h7c0s" +path="res://.godot/imported/red_mark_white.png-a4bd159edffcab51bb5e5ef5df1ec4a7.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/mark/red_mark_white.png" +dest_files=["res://.godot/imported/red_mark_white.png-a4bd159edffcab51bb5e5ef5df1ec4a7.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/mark/white_mark.png b/assets/textures/blockout_textures/512/mark/white_mark.png new file mode 100644 index 0000000..8b58ff2 Binary files /dev/null and b/assets/textures/blockout_textures/512/mark/white_mark.png differ diff --git a/assets/textures/blockout_textures/512/mark/white_mark.png.import b/assets/textures/blockout_textures/512/mark/white_mark.png.import new file mode 100644 index 0000000..b73943d --- /dev/null +++ b/assets/textures/blockout_textures/512/mark/white_mark.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dsqvwy6tdlhlh" +path="res://.godot/imported/white_mark.png-53632cf7b55771afb127b8d2130df52b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/mark/white_mark.png" +dest_files=["res://.godot/imported/white_mark.png-53632cf7b55771afb127b8d2130df52b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/mark/yellow_mark_black.png b/assets/textures/blockout_textures/512/mark/yellow_mark_black.png new file mode 100644 index 0000000..556a143 Binary files /dev/null and b/assets/textures/blockout_textures/512/mark/yellow_mark_black.png differ diff --git a/assets/textures/blockout_textures/512/mark/yellow_mark_black.png.import b/assets/textures/blockout_textures/512/mark/yellow_mark_black.png.import new file mode 100644 index 0000000..80ff994 --- /dev/null +++ b/assets/textures/blockout_textures/512/mark/yellow_mark_black.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cx4iusclvv41n" +path="res://.godot/imported/yellow_mark_black.png-f13827ceee57932197e350fe251b11fa.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/mark/yellow_mark_black.png" +dest_files=["res://.godot/imported/yellow_mark_black.png-f13827ceee57932197e350fe251b11fa.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/mark/yellow_mark_transparent.png b/assets/textures/blockout_textures/512/mark/yellow_mark_transparent.png new file mode 100644 index 0000000..cbaae03 Binary files /dev/null and b/assets/textures/blockout_textures/512/mark/yellow_mark_transparent.png differ diff --git a/assets/textures/blockout_textures/512/mark/yellow_mark_transparent.png.import b/assets/textures/blockout_textures/512/mark/yellow_mark_transparent.png.import new file mode 100644 index 0000000..c5812e0 --- /dev/null +++ b/assets/textures/blockout_textures/512/mark/yellow_mark_transparent.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://csf43yog6o2aj" +path="res://.godot/imported/yellow_mark_transparent.png-dca98cacb6bdbe9cad9f56014170f4fc.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/mark/yellow_mark_transparent.png" +dest_files=["res://.godot/imported/yellow_mark_transparent.png-dca98cacb6bdbe9cad9f56014170f4fc.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/mark/yellow_mark_white.png b/assets/textures/blockout_textures/512/mark/yellow_mark_white.png new file mode 100644 index 0000000..5cea41c Binary files /dev/null and b/assets/textures/blockout_textures/512/mark/yellow_mark_white.png differ diff --git a/assets/textures/blockout_textures/512/mark/yellow_mark_white.png.import b/assets/textures/blockout_textures/512/mark/yellow_mark_white.png.import new file mode 100644 index 0000000..bda8724 --- /dev/null +++ b/assets/textures/blockout_textures/512/mark/yellow_mark_white.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dvnjwhet6ohip" +path="res://.godot/imported/yellow_mark_white.png-d95be502f0c7d26334a02a8a9b922d70.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/mark/yellow_mark_white.png" +dest_files=["res://.godot/imported/yellow_mark_white.png-d95be502f0c7d26334a02a8a9b922d70.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/nature/nature_grass_1.png b/assets/textures/blockout_textures/512/nature/nature_grass_1.png new file mode 100644 index 0000000..93e15c9 Binary files /dev/null and b/assets/textures/blockout_textures/512/nature/nature_grass_1.png differ diff --git a/assets/textures/blockout_textures/512/nature/nature_grass_1.png.import b/assets/textures/blockout_textures/512/nature/nature_grass_1.png.import new file mode 100644 index 0000000..4423192 --- /dev/null +++ b/assets/textures/blockout_textures/512/nature/nature_grass_1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b4penppjjdhg2" +path="res://.godot/imported/nature_grass_1.png-b49da73a255584a07e15c5c9a51370f1.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/nature/nature_grass_1.png" +dest_files=["res://.godot/imported/nature_grass_1.png-b49da73a255584a07e15c5c9a51370f1.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/nature/nature_grass_2.png b/assets/textures/blockout_textures/512/nature/nature_grass_2.png new file mode 100644 index 0000000..c8ddd02 Binary files /dev/null and b/assets/textures/blockout_textures/512/nature/nature_grass_2.png differ diff --git a/assets/textures/blockout_textures/512/nature/nature_grass_2.png.import b/assets/textures/blockout_textures/512/nature/nature_grass_2.png.import new file mode 100644 index 0000000..c7dc24b --- /dev/null +++ b/assets/textures/blockout_textures/512/nature/nature_grass_2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ci7yreera3stj" +path="res://.godot/imported/nature_grass_2.png-fdab57c65ede8b12de68c266995b6386.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/nature/nature_grass_2.png" +dest_files=["res://.godot/imported/nature_grass_2.png-fdab57c65ede8b12de68c266995b6386.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/nature/nature_grass_3.png b/assets/textures/blockout_textures/512/nature/nature_grass_3.png new file mode 100644 index 0000000..2eb3bf5 Binary files /dev/null and b/assets/textures/blockout_textures/512/nature/nature_grass_3.png differ diff --git a/assets/textures/blockout_textures/512/nature/nature_grass_3.png.import b/assets/textures/blockout_textures/512/nature/nature_grass_3.png.import new file mode 100644 index 0000000..35a0352 --- /dev/null +++ b/assets/textures/blockout_textures/512/nature/nature_grass_3.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dh7njwvijv8ld" +path="res://.godot/imported/nature_grass_3.png-3b917230c5eb2fa25217153194ffb880.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/nature/nature_grass_3.png" +dest_files=["res://.godot/imported/nature_grass_3.png-3b917230c5eb2fa25217153194ffb880.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/nature/nature_grass_4.png b/assets/textures/blockout_textures/512/nature/nature_grass_4.png new file mode 100644 index 0000000..5d8207e Binary files /dev/null and b/assets/textures/blockout_textures/512/nature/nature_grass_4.png differ diff --git a/assets/textures/blockout_textures/512/nature/nature_grass_4.png.import b/assets/textures/blockout_textures/512/nature/nature_grass_4.png.import new file mode 100644 index 0000000..bcb6a76 --- /dev/null +++ b/assets/textures/blockout_textures/512/nature/nature_grass_4.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b7faigu8343e7" +path="res://.godot/imported/nature_grass_4.png-9c54b342bab6358d170cc69f0e7537c9.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/nature/nature_grass_4.png" +dest_files=["res://.godot/imported/nature_grass_4.png-9c54b342bab6358d170cc69f0e7537c9.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/nature/nature_ground_1.png b/assets/textures/blockout_textures/512/nature/nature_ground_1.png new file mode 100644 index 0000000..8791318 Binary files /dev/null and b/assets/textures/blockout_textures/512/nature/nature_ground_1.png differ diff --git a/assets/textures/blockout_textures/512/nature/nature_ground_1.png.import b/assets/textures/blockout_textures/512/nature/nature_ground_1.png.import new file mode 100644 index 0000000..7d48dda --- /dev/null +++ b/assets/textures/blockout_textures/512/nature/nature_ground_1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ucegtdhp0fx6" +path="res://.godot/imported/nature_ground_1.png-b4b1eac3b734663a4bf8880a91dca34e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/nature/nature_ground_1.png" +dest_files=["res://.godot/imported/nature_ground_1.png-b4b1eac3b734663a4bf8880a91dca34e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/nature/nature_ground_2.png b/assets/textures/blockout_textures/512/nature/nature_ground_2.png new file mode 100644 index 0000000..e02b011 Binary files /dev/null and b/assets/textures/blockout_textures/512/nature/nature_ground_2.png differ diff --git a/assets/textures/blockout_textures/512/nature/nature_ground_2.png.import b/assets/textures/blockout_textures/512/nature/nature_ground_2.png.import new file mode 100644 index 0000000..069baf4 --- /dev/null +++ b/assets/textures/blockout_textures/512/nature/nature_ground_2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cneo1uekovwpw" +path="res://.godot/imported/nature_ground_2.png-face69049be91580dda6a93f0ed5fef4.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/nature/nature_ground_2.png" +dest_files=["res://.godot/imported/nature_ground_2.png-face69049be91580dda6a93f0ed5fef4.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/nature/nature_ground_3.png b/assets/textures/blockout_textures/512/nature/nature_ground_3.png new file mode 100644 index 0000000..03836c4 Binary files /dev/null and b/assets/textures/blockout_textures/512/nature/nature_ground_3.png differ diff --git a/assets/textures/blockout_textures/512/nature/nature_ground_3.png.import b/assets/textures/blockout_textures/512/nature/nature_ground_3.png.import new file mode 100644 index 0000000..ac73a54 --- /dev/null +++ b/assets/textures/blockout_textures/512/nature/nature_ground_3.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ckys1hqfro6rq" +path="res://.godot/imported/nature_ground_3.png-d1f3257f971030aad03f46c37b549f10.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/nature/nature_ground_3.png" +dest_files=["res://.godot/imported/nature_ground_3.png-d1f3257f971030aad03f46c37b549f10.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/nature/nature_ground_4.png b/assets/textures/blockout_textures/512/nature/nature_ground_4.png new file mode 100644 index 0000000..6331277 Binary files /dev/null and b/assets/textures/blockout_textures/512/nature/nature_ground_4.png differ diff --git a/assets/textures/blockout_textures/512/nature/nature_ground_4.png.import b/assets/textures/blockout_textures/512/nature/nature_ground_4.png.import new file mode 100644 index 0000000..0ab778f --- /dev/null +++ b/assets/textures/blockout_textures/512/nature/nature_ground_4.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b6edirlo8oxvg" +path="res://.godot/imported/nature_ground_4.png-05b525f8cc565c69ad39020f9bf7274a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/nature/nature_ground_4.png" +dest_files=["res://.godot/imported/nature_ground_4.png-05b525f8cc565c69ad39020f9bf7274a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/nature/nature_rock_1.png b/assets/textures/blockout_textures/512/nature/nature_rock_1.png new file mode 100644 index 0000000..f8df161 Binary files /dev/null and b/assets/textures/blockout_textures/512/nature/nature_rock_1.png differ diff --git a/assets/textures/blockout_textures/512/nature/nature_rock_1.png.import b/assets/textures/blockout_textures/512/nature/nature_rock_1.png.import new file mode 100644 index 0000000..54874f3 --- /dev/null +++ b/assets/textures/blockout_textures/512/nature/nature_rock_1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b0xnweepfusmd" +path="res://.godot/imported/nature_rock_1.png-6040f530f6f4e221ac75602e7e604cd4.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/nature/nature_rock_1.png" +dest_files=["res://.godot/imported/nature_rock_1.png-6040f530f6f4e221ac75602e7e604cd4.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/nature/nature_rock_2.png b/assets/textures/blockout_textures/512/nature/nature_rock_2.png new file mode 100644 index 0000000..3b09fea Binary files /dev/null and b/assets/textures/blockout_textures/512/nature/nature_rock_2.png differ diff --git a/assets/textures/blockout_textures/512/nature/nature_rock_2.png.import b/assets/textures/blockout_textures/512/nature/nature_rock_2.png.import new file mode 100644 index 0000000..6d342c2 --- /dev/null +++ b/assets/textures/blockout_textures/512/nature/nature_rock_2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dnawcmcrefaej" +path="res://.godot/imported/nature_rock_2.png-0b994b005574bd15a3928379fd47b6ef.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/nature/nature_rock_2.png" +dest_files=["res://.godot/imported/nature_rock_2.png-0b994b005574bd15a3928379fd47b6ef.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/nature/nature_rock_3.png b/assets/textures/blockout_textures/512/nature/nature_rock_3.png new file mode 100644 index 0000000..5a8be3f Binary files /dev/null and b/assets/textures/blockout_textures/512/nature/nature_rock_3.png differ diff --git a/assets/textures/blockout_textures/512/nature/nature_rock_3.png.import b/assets/textures/blockout_textures/512/nature/nature_rock_3.png.import new file mode 100644 index 0000000..9afa029 --- /dev/null +++ b/assets/textures/blockout_textures/512/nature/nature_rock_3.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bvimxj2a3uegp" +path="res://.godot/imported/nature_rock_3.png-b4cd05c8d621d9ba6fdf9e628fd65146.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/nature/nature_rock_3.png" +dest_files=["res://.godot/imported/nature_rock_3.png-b4cd05c8d621d9ba6fdf9e628fd65146.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/nature/nature_rock_4.png b/assets/textures/blockout_textures/512/nature/nature_rock_4.png new file mode 100644 index 0000000..6320666 Binary files /dev/null and b/assets/textures/blockout_textures/512/nature/nature_rock_4.png differ diff --git a/assets/textures/blockout_textures/512/nature/nature_rock_4.png.import b/assets/textures/blockout_textures/512/nature/nature_rock_4.png.import new file mode 100644 index 0000000..d5fdb1c --- /dev/null +++ b/assets/textures/blockout_textures/512/nature/nature_rock_4.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://hilcb3ddgcmt" +path="res://.godot/imported/nature_rock_4.png-f0c40115a5cefd2c8a185ed4e54916fc.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/nature/nature_rock_4.png" +dest_files=["res://.godot/imported/nature_rock_4.png-f0c40115a5cefd2c8a185ed4e54916fc.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/nature/nature_sand_1.png b/assets/textures/blockout_textures/512/nature/nature_sand_1.png new file mode 100644 index 0000000..3fcb147 Binary files /dev/null and b/assets/textures/blockout_textures/512/nature/nature_sand_1.png differ diff --git a/assets/textures/blockout_textures/512/nature/nature_sand_1.png.import b/assets/textures/blockout_textures/512/nature/nature_sand_1.png.import new file mode 100644 index 0000000..3e3a999 --- /dev/null +++ b/assets/textures/blockout_textures/512/nature/nature_sand_1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d3vg5byhydjnf" +path="res://.godot/imported/nature_sand_1.png-8165e8cb8fee332170d33a5e37d63963.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/nature/nature_sand_1.png" +dest_files=["res://.godot/imported/nature_sand_1.png-8165e8cb8fee332170d33a5e37d63963.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/nature/nature_sand_2.png b/assets/textures/blockout_textures/512/nature/nature_sand_2.png new file mode 100644 index 0000000..18e93f0 Binary files /dev/null and b/assets/textures/blockout_textures/512/nature/nature_sand_2.png differ diff --git a/assets/textures/blockout_textures/512/nature/nature_sand_2.png.import b/assets/textures/blockout_textures/512/nature/nature_sand_2.png.import new file mode 100644 index 0000000..5253419 --- /dev/null +++ b/assets/textures/blockout_textures/512/nature/nature_sand_2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d2n66se4368vh" +path="res://.godot/imported/nature_sand_2.png-3d565f9e942b69dddce29df0ed009555.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/nature/nature_sand_2.png" +dest_files=["res://.godot/imported/nature_sand_2.png-3d565f9e942b69dddce29df0ed009555.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/nature/nature_sand_3.png b/assets/textures/blockout_textures/512/nature/nature_sand_3.png new file mode 100644 index 0000000..b436459 Binary files /dev/null and b/assets/textures/blockout_textures/512/nature/nature_sand_3.png differ diff --git a/assets/textures/blockout_textures/512/nature/nature_sand_3.png.import b/assets/textures/blockout_textures/512/nature/nature_sand_3.png.import new file mode 100644 index 0000000..888bf00 --- /dev/null +++ b/assets/textures/blockout_textures/512/nature/nature_sand_3.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cc5sgdxflirv2" +path="res://.godot/imported/nature_sand_3.png-60ced168c82abfa0bc6453934dff6f3d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/nature/nature_sand_3.png" +dest_files=["res://.godot/imported/nature_sand_3.png-60ced168c82abfa0bc6453934dff6f3d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/nature/nature_sand_4.png b/assets/textures/blockout_textures/512/nature/nature_sand_4.png new file mode 100644 index 0000000..f9e13d7 Binary files /dev/null and b/assets/textures/blockout_textures/512/nature/nature_sand_4.png differ diff --git a/assets/textures/blockout_textures/512/nature/nature_sand_4.png.import b/assets/textures/blockout_textures/512/nature/nature_sand_4.png.import new file mode 100644 index 0000000..a402af5 --- /dev/null +++ b/assets/textures/blockout_textures/512/nature/nature_sand_4.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://do66lq7ykho7i" +path="res://.godot/imported/nature_sand_4.png-fe8efef39cf69f4b062430c6335d2522.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/nature/nature_sand_4.png" +dest_files=["res://.godot/imported/nature_sand_4.png-fe8efef39cf69f4b062430c6335d2522.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/nature/nature_water_1.png b/assets/textures/blockout_textures/512/nature/nature_water_1.png new file mode 100644 index 0000000..6f17210 Binary files /dev/null and b/assets/textures/blockout_textures/512/nature/nature_water_1.png differ diff --git a/assets/textures/blockout_textures/512/nature/nature_water_1.png.import b/assets/textures/blockout_textures/512/nature/nature_water_1.png.import new file mode 100644 index 0000000..afff13e --- /dev/null +++ b/assets/textures/blockout_textures/512/nature/nature_water_1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bt7yiytgfy36d" +path="res://.godot/imported/nature_water_1.png-22ee37ff811346a3733c1120dff63011.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/nature/nature_water_1.png" +dest_files=["res://.godot/imported/nature_water_1.png-22ee37ff811346a3733c1120dff63011.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/nature/nature_water_2.png b/assets/textures/blockout_textures/512/nature/nature_water_2.png new file mode 100644 index 0000000..7c06a9f Binary files /dev/null and b/assets/textures/blockout_textures/512/nature/nature_water_2.png differ diff --git a/assets/textures/blockout_textures/512/nature/nature_water_2.png.import b/assets/textures/blockout_textures/512/nature/nature_water_2.png.import new file mode 100644 index 0000000..0d0e08c --- /dev/null +++ b/assets/textures/blockout_textures/512/nature/nature_water_2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://8xwm1lln5h6i" +path="res://.godot/imported/nature_water_2.png-74cf91bfa3d15d6f1ff655251903bacb.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/nature/nature_water_2.png" +dest_files=["res://.godot/imported/nature_water_2.png-74cf91bfa3d15d6f1ff655251903bacb.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/nature/nature_water_3.png b/assets/textures/blockout_textures/512/nature/nature_water_3.png new file mode 100644 index 0000000..0a4b413 Binary files /dev/null and b/assets/textures/blockout_textures/512/nature/nature_water_3.png differ diff --git a/assets/textures/blockout_textures/512/nature/nature_water_3.png.import b/assets/textures/blockout_textures/512/nature/nature_water_3.png.import new file mode 100644 index 0000000..4d6379a --- /dev/null +++ b/assets/textures/blockout_textures/512/nature/nature_water_3.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://btixk3it36b3o" +path="res://.godot/imported/nature_water_3.png-71413238599c25e46492dce2af28d3e8.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/nature/nature_water_3.png" +dest_files=["res://.godot/imported/nature_water_3.png-71413238599c25e46492dce2af28d3e8.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/512/nature/nature_water_4.png b/assets/textures/blockout_textures/512/nature/nature_water_4.png new file mode 100644 index 0000000..a33de70 Binary files /dev/null and b/assets/textures/blockout_textures/512/nature/nature_water_4.png differ diff --git a/assets/textures/blockout_textures/512/nature/nature_water_4.png.import b/assets/textures/blockout_textures/512/nature/nature_water_4.png.import new file mode 100644 index 0000000..74567e2 --- /dev/null +++ b/assets/textures/blockout_textures/512/nature/nature_water_4.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://frhm0bnma24j" +path="res://.godot/imported/nature_water_4.png-5eea8936becf3c2690735a6c3cdd560c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/512/nature/nature_water_4.png" +dest_files=["res://.godot/imported/nature_water_4.png-5eea8936becf3c2690735a6c3cdd560c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/basic/aqua_check.png b/assets/textures/blockout_textures/64/basic/aqua_check.png new file mode 100644 index 0000000..869af3d Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/aqua_check.png differ diff --git a/assets/textures/blockout_textures/64/basic/aqua_check.png.import b/assets/textures/blockout_textures/64/basic/aqua_check.png.import new file mode 100644 index 0000000..7ff5a7e --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/aqua_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://04tal8vxn5y6" +path="res://.godot/imported/aqua_check.png-f3c552d7bfe00c22ebf74088e958ee59.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/aqua_check.png" +dest_files=["res://.godot/imported/aqua_check.png-f3c552d7bfe00c22ebf74088e958ee59.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/basic/aqua_cross.png b/assets/textures/blockout_textures/64/basic/aqua_cross.png new file mode 100644 index 0000000..923902c Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/aqua_cross.png differ diff --git a/assets/textures/blockout_textures/64/basic/aqua_cross.png.import b/assets/textures/blockout_textures/64/basic/aqua_cross.png.import new file mode 100644 index 0000000..6304748 --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/aqua_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cvtmw3vm2ojra" +path="res://.godot/imported/aqua_cross.png-bedb3870ccfae3137895ea392524417e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/aqua_cross.png" +dest_files=["res://.godot/imported/aqua_cross.png-bedb3870ccfae3137895ea392524417e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/basic/aqua_dots.png b/assets/textures/blockout_textures/64/basic/aqua_dots.png new file mode 100644 index 0000000..02ba616 Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/aqua_dots.png differ diff --git a/assets/textures/blockout_textures/64/basic/aqua_dots.png.import b/assets/textures/blockout_textures/64/basic/aqua_dots.png.import new file mode 100644 index 0000000..a8b4708 --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/aqua_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cxed6tkglbhty" +path="res://.godot/imported/aqua_dots.png-bb021661408ec41e8a3ccaf55df748f9.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/aqua_dots.png" +dest_files=["res://.godot/imported/aqua_dots.png-bb021661408ec41e8a3ccaf55df748f9.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/basic/aqua_grid.png b/assets/textures/blockout_textures/64/basic/aqua_grid.png new file mode 100644 index 0000000..e30413e Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/aqua_grid.png differ diff --git a/assets/textures/blockout_textures/64/basic/aqua_grid.png.import b/assets/textures/blockout_textures/64/basic/aqua_grid.png.import new file mode 100644 index 0000000..ecdef0a --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/aqua_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d331mtn6nmakp" +path="res://.godot/imported/aqua_grid.png-0cbeb22fefb19a7d0ad2c7f2bc5ffec7.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/aqua_grid.png" +dest_files=["res://.godot/imported/aqua_grid.png-0cbeb22fefb19a7d0ad2c7f2bc5ffec7.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/basic/aqua_light_check.png b/assets/textures/blockout_textures/64/basic/aqua_light_check.png new file mode 100644 index 0000000..b13eaa7 Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/aqua_light_check.png differ diff --git a/assets/textures/blockout_textures/64/basic/aqua_light_check.png.import b/assets/textures/blockout_textures/64/basic/aqua_light_check.png.import new file mode 100644 index 0000000..a759c12 --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/aqua_light_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://qc1r4pfkpka5" +path="res://.godot/imported/aqua_light_check.png-1d60ccb13705954b73f6d3c07d7b877b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/aqua_light_check.png" +dest_files=["res://.godot/imported/aqua_light_check.png-1d60ccb13705954b73f6d3c07d7b877b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/basic/aqua_light_cross.png b/assets/textures/blockout_textures/64/basic/aqua_light_cross.png new file mode 100644 index 0000000..1338275 Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/aqua_light_cross.png differ diff --git a/assets/textures/blockout_textures/64/basic/aqua_light_cross.png.import b/assets/textures/blockout_textures/64/basic/aqua_light_cross.png.import new file mode 100644 index 0000000..48275af --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/aqua_light_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d3uviy1ckua4i" +path="res://.godot/imported/aqua_light_cross.png-7a1ed401b13f4cbbfcce908900d17c03.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/aqua_light_cross.png" +dest_files=["res://.godot/imported/aqua_light_cross.png-7a1ed401b13f4cbbfcce908900d17c03.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/basic/aqua_light_dots.png b/assets/textures/blockout_textures/64/basic/aqua_light_dots.png new file mode 100644 index 0000000..97186a5 Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/aqua_light_dots.png differ diff --git a/assets/textures/blockout_textures/64/basic/aqua_light_dots.png.import b/assets/textures/blockout_textures/64/basic/aqua_light_dots.png.import new file mode 100644 index 0000000..69d0d66 --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/aqua_light_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bhk5rly4qfw07" +path="res://.godot/imported/aqua_light_dots.png-fed718d033efca14f24e49a93456ee13.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/aqua_light_dots.png" +dest_files=["res://.godot/imported/aqua_light_dots.png-fed718d033efca14f24e49a93456ee13.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/basic/aqua_light_grid.png b/assets/textures/blockout_textures/64/basic/aqua_light_grid.png new file mode 100644 index 0000000..e930ae0 Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/aqua_light_grid.png differ diff --git a/assets/textures/blockout_textures/64/basic/aqua_light_grid.png.import b/assets/textures/blockout_textures/64/basic/aqua_light_grid.png.import new file mode 100644 index 0000000..55dc659 --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/aqua_light_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cuan4tymg2tmx" +path="res://.godot/imported/aqua_light_grid.png-7700575870ff3b1ec6a57a5f34920aa7.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/aqua_light_grid.png" +dest_files=["res://.godot/imported/aqua_light_grid.png-7700575870ff3b1ec6a57a5f34920aa7.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/basic/black_check.png b/assets/textures/blockout_textures/64/basic/black_check.png new file mode 100644 index 0000000..6f94413 Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/black_check.png differ diff --git a/assets/textures/blockout_textures/64/basic/black_check.png.import b/assets/textures/blockout_textures/64/basic/black_check.png.import new file mode 100644 index 0000000..52f8066 --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/black_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b1uap1ry2ums4" +path="res://.godot/imported/black_check.png-057824b6b7331f4f3abf838728675cfe.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/black_check.png" +dest_files=["res://.godot/imported/black_check.png-057824b6b7331f4f3abf838728675cfe.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/basic/black_cross.png b/assets/textures/blockout_textures/64/basic/black_cross.png new file mode 100644 index 0000000..c1a04ac Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/black_cross.png differ diff --git a/assets/textures/blockout_textures/64/basic/black_cross.png.import b/assets/textures/blockout_textures/64/basic/black_cross.png.import new file mode 100644 index 0000000..9975a49 --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/black_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://6y6cx8y5wyrp" +path="res://.godot/imported/black_cross.png-6f947cb871915abc1dc6de70a3701b1a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/black_cross.png" +dest_files=["res://.godot/imported/black_cross.png-6f947cb871915abc1dc6de70a3701b1a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/basic/black_dots.png b/assets/textures/blockout_textures/64/basic/black_dots.png new file mode 100644 index 0000000..f2b3801 Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/black_dots.png differ diff --git a/assets/textures/blockout_textures/64/basic/black_dots.png.import b/assets/textures/blockout_textures/64/basic/black_dots.png.import new file mode 100644 index 0000000..e11549c --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/black_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ba72slw38gvej" +path="res://.godot/imported/black_dots.png-1fd96864b96a1eb7e3323960e1d78c87.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/black_dots.png" +dest_files=["res://.godot/imported/black_dots.png-1fd96864b96a1eb7e3323960e1d78c87.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/basic/black_grid.png b/assets/textures/blockout_textures/64/basic/black_grid.png new file mode 100644 index 0000000..0cbb35a Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/black_grid.png differ diff --git a/assets/textures/blockout_textures/64/basic/black_grid.png.import b/assets/textures/blockout_textures/64/basic/black_grid.png.import new file mode 100644 index 0000000..a0a0334 --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/black_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://1wc8r3620h4y" +path="res://.godot/imported/black_grid.png-b13d211390f81227311d2c11b315bbf1.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/black_grid.png" +dest_files=["res://.godot/imported/black_grid.png-b13d211390f81227311d2c11b315bbf1.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/basic/blue_check.png b/assets/textures/blockout_textures/64/basic/blue_check.png new file mode 100644 index 0000000..0c211b1 Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/blue_check.png differ diff --git a/assets/textures/blockout_textures/64/basic/blue_check.png.import b/assets/textures/blockout_textures/64/basic/blue_check.png.import new file mode 100644 index 0000000..fb76a68 --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/blue_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://neh234hg7xxk" +path="res://.godot/imported/blue_check.png-d56dc5a8ec5891b32ba588f06d892b01.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/blue_check.png" +dest_files=["res://.godot/imported/blue_check.png-d56dc5a8ec5891b32ba588f06d892b01.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/basic/blue_cross.png b/assets/textures/blockout_textures/64/basic/blue_cross.png new file mode 100644 index 0000000..c86f452 Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/blue_cross.png differ diff --git a/assets/textures/blockout_textures/64/basic/blue_cross.png.import b/assets/textures/blockout_textures/64/basic/blue_cross.png.import new file mode 100644 index 0000000..131911b --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/blue_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cct8g45jl63u4" +path="res://.godot/imported/blue_cross.png-1b7ba7e7a4184d77e325bcbec79432f5.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/blue_cross.png" +dest_files=["res://.godot/imported/blue_cross.png-1b7ba7e7a4184d77e325bcbec79432f5.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/basic/blue_dots.png b/assets/textures/blockout_textures/64/basic/blue_dots.png new file mode 100644 index 0000000..46ddc87 Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/blue_dots.png differ diff --git a/assets/textures/blockout_textures/64/basic/blue_dots.png.import b/assets/textures/blockout_textures/64/basic/blue_dots.png.import new file mode 100644 index 0000000..2851ad0 --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/blue_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ds5p04poth4k0" +path="res://.godot/imported/blue_dots.png-41e60c541186836f3d0e2579525b743b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/blue_dots.png" +dest_files=["res://.godot/imported/blue_dots.png-41e60c541186836f3d0e2579525b743b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/basic/blue_grid.png b/assets/textures/blockout_textures/64/basic/blue_grid.png new file mode 100644 index 0000000..0ced02d Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/blue_grid.png differ diff --git a/assets/textures/blockout_textures/64/basic/blue_grid.png.import b/assets/textures/blockout_textures/64/basic/blue_grid.png.import new file mode 100644 index 0000000..8efc335 --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/blue_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://qi6t2pfht01f" +path="res://.godot/imported/blue_grid.png-c2035053c64b1b2c7ee3a2ee9f961512.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/blue_grid.png" +dest_files=["res://.godot/imported/blue_grid.png-c2035053c64b1b2c7ee3a2ee9f961512.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/basic/blue_light_check.png b/assets/textures/blockout_textures/64/basic/blue_light_check.png new file mode 100644 index 0000000..efea704 Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/blue_light_check.png differ diff --git a/assets/textures/blockout_textures/64/basic/blue_light_check.png.import b/assets/textures/blockout_textures/64/basic/blue_light_check.png.import new file mode 100644 index 0000000..b2d1396 --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/blue_light_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dt5mfaxtfflou" +path="res://.godot/imported/blue_light_check.png-448ac74248f3e5a1d8bd0bf7defa7f1f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/blue_light_check.png" +dest_files=["res://.godot/imported/blue_light_check.png-448ac74248f3e5a1d8bd0bf7defa7f1f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/basic/blue_light_cross.png b/assets/textures/blockout_textures/64/basic/blue_light_cross.png new file mode 100644 index 0000000..a056f33 Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/blue_light_cross.png differ diff --git a/assets/textures/blockout_textures/64/basic/blue_light_cross.png.import b/assets/textures/blockout_textures/64/basic/blue_light_cross.png.import new file mode 100644 index 0000000..7721553 --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/blue_light_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://braamd6h1xg1t" +path="res://.godot/imported/blue_light_cross.png-dddcc4543474ceecd66e47fa610ceb49.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/blue_light_cross.png" +dest_files=["res://.godot/imported/blue_light_cross.png-dddcc4543474ceecd66e47fa610ceb49.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/basic/blue_light_dots.png b/assets/textures/blockout_textures/64/basic/blue_light_dots.png new file mode 100644 index 0000000..4a856a0 Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/blue_light_dots.png differ diff --git a/assets/textures/blockout_textures/64/basic/blue_light_dots.png.import b/assets/textures/blockout_textures/64/basic/blue_light_dots.png.import new file mode 100644 index 0000000..cda07fb --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/blue_light_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dy3c8rp0vrkie" +path="res://.godot/imported/blue_light_dots.png-2703e90f92fd61ab25b8282fb574f703.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/blue_light_dots.png" +dest_files=["res://.godot/imported/blue_light_dots.png-2703e90f92fd61ab25b8282fb574f703.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/basic/blue_light_grid.png b/assets/textures/blockout_textures/64/basic/blue_light_grid.png new file mode 100644 index 0000000..49b647d Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/blue_light_grid.png differ diff --git a/assets/textures/blockout_textures/64/basic/blue_light_grid.png.import b/assets/textures/blockout_textures/64/basic/blue_light_grid.png.import new file mode 100644 index 0000000..10f12f7 --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/blue_light_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cmfrxqhjjk4gr" +path="res://.godot/imported/blue_light_grid.png-8009295619789efc08b6d62ebda40a74.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/blue_light_grid.png" +dest_files=["res://.godot/imported/blue_light_grid.png-8009295619789efc08b6d62ebda40a74.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/basic/gray_check.png b/assets/textures/blockout_textures/64/basic/gray_check.png new file mode 100644 index 0000000..f01c290 Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/gray_check.png differ diff --git a/assets/textures/blockout_textures/64/basic/gray_check.png.import b/assets/textures/blockout_textures/64/basic/gray_check.png.import new file mode 100644 index 0000000..eaf31ea --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/gray_check.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c1bbxiqr5x5qv" +path.s3tc="res://.godot/imported/gray_check.png-f9e267b12ec4416895a0a967ccdfab4a.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/gray_check.png" +dest_files=["res://.godot/imported/gray_check.png-f9e267b12ec4416895a0a967ccdfab4a.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/blockout_textures/64/basic/gray_cross.png b/assets/textures/blockout_textures/64/basic/gray_cross.png new file mode 100644 index 0000000..e0d0d8a Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/gray_cross.png differ diff --git a/assets/textures/blockout_textures/64/basic/gray_cross.png.import b/assets/textures/blockout_textures/64/basic/gray_cross.png.import new file mode 100644 index 0000000..ee0dcdd --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/gray_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dt6d7qhl7lm8q" +path="res://.godot/imported/gray_cross.png-79f178b31d9e8a334284a25bc59a6dfa.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/gray_cross.png" +dest_files=["res://.godot/imported/gray_cross.png-79f178b31d9e8a334284a25bc59a6dfa.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/basic/gray_dots.png b/assets/textures/blockout_textures/64/basic/gray_dots.png new file mode 100644 index 0000000..ea67e69 Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/gray_dots.png differ diff --git a/assets/textures/blockout_textures/64/basic/gray_dots.png.import b/assets/textures/blockout_textures/64/basic/gray_dots.png.import new file mode 100644 index 0000000..d2b6a92 --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/gray_dots.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dwdk6x0sqlah4" +path.s3tc="res://.godot/imported/gray_dots.png-df338e9b0fb5c5734ea7cc9a8aeab605.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/gray_dots.png" +dest_files=["res://.godot/imported/gray_dots.png-df338e9b0fb5c5734ea7cc9a8aeab605.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/blockout_textures/64/basic/gray_grid.png b/assets/textures/blockout_textures/64/basic/gray_grid.png new file mode 100644 index 0000000..9e190f7 Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/gray_grid.png differ diff --git a/assets/textures/blockout_textures/64/basic/gray_grid.png.import b/assets/textures/blockout_textures/64/basic/gray_grid.png.import new file mode 100644 index 0000000..4cd26d4 --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/gray_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dodkahi1rlmql" +path="res://.godot/imported/gray_grid.png-136587382c86015753807aca8f4c5101.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/gray_grid.png" +dest_files=["res://.godot/imported/gray_grid.png-136587382c86015753807aca8f4c5101.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/basic/green_check.png b/assets/textures/blockout_textures/64/basic/green_check.png new file mode 100644 index 0000000..f699a03 Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/green_check.png differ diff --git a/assets/textures/blockout_textures/64/basic/green_check.png.import b/assets/textures/blockout_textures/64/basic/green_check.png.import new file mode 100644 index 0000000..a0bbd52 --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/green_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d6ng3vn2w4fo" +path="res://.godot/imported/green_check.png-6ad5431c44bfd2e374aa6cd8de3e12ac.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/green_check.png" +dest_files=["res://.godot/imported/green_check.png-6ad5431c44bfd2e374aa6cd8de3e12ac.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/basic/green_cross.png b/assets/textures/blockout_textures/64/basic/green_cross.png new file mode 100644 index 0000000..63dae9b Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/green_cross.png differ diff --git a/assets/textures/blockout_textures/64/basic/green_cross.png.import b/assets/textures/blockout_textures/64/basic/green_cross.png.import new file mode 100644 index 0000000..972b258 --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/green_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://h3ncqyj37obh" +path="res://.godot/imported/green_cross.png-4554ab7b8a1d919a5bca89a6e0dcc61f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/green_cross.png" +dest_files=["res://.godot/imported/green_cross.png-4554ab7b8a1d919a5bca89a6e0dcc61f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/basic/green_dots.png b/assets/textures/blockout_textures/64/basic/green_dots.png new file mode 100644 index 0000000..d8ecc95 Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/green_dots.png differ diff --git a/assets/textures/blockout_textures/64/basic/green_dots.png.import b/assets/textures/blockout_textures/64/basic/green_dots.png.import new file mode 100644 index 0000000..0a9775c --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/green_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b1vys2bsdvnf1" +path="res://.godot/imported/green_dots.png-ef495b43a172ffa730d57aa83dec7db3.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/green_dots.png" +dest_files=["res://.godot/imported/green_dots.png-ef495b43a172ffa730d57aa83dec7db3.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/basic/green_grid.png b/assets/textures/blockout_textures/64/basic/green_grid.png new file mode 100644 index 0000000..239675b Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/green_grid.png differ diff --git a/assets/textures/blockout_textures/64/basic/green_grid.png.import b/assets/textures/blockout_textures/64/basic/green_grid.png.import new file mode 100644 index 0000000..e039624 --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/green_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bs46kolqtstdm" +path="res://.godot/imported/green_grid.png-794c4e1e082e65896b94af5041853c84.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/green_grid.png" +dest_files=["res://.godot/imported/green_grid.png-794c4e1e082e65896b94af5041853c84.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/basic/green_light_check.png b/assets/textures/blockout_textures/64/basic/green_light_check.png new file mode 100644 index 0000000..bc08124 Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/green_light_check.png differ diff --git a/assets/textures/blockout_textures/64/basic/green_light_check.png.import b/assets/textures/blockout_textures/64/basic/green_light_check.png.import new file mode 100644 index 0000000..171d328 --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/green_light_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bgik4elswlwi2" +path="res://.godot/imported/green_light_check.png-8741cb1909d210007f26fe574c4bc05b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/green_light_check.png" +dest_files=["res://.godot/imported/green_light_check.png-8741cb1909d210007f26fe574c4bc05b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/basic/green_light_cross.png b/assets/textures/blockout_textures/64/basic/green_light_cross.png new file mode 100644 index 0000000..c1186af Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/green_light_cross.png differ diff --git a/assets/textures/blockout_textures/64/basic/green_light_cross.png.import b/assets/textures/blockout_textures/64/basic/green_light_cross.png.import new file mode 100644 index 0000000..eab63c3 --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/green_light_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://do7pi1fmw46xp" +path="res://.godot/imported/green_light_cross.png-f9631d2e916b48e5dac3a67cf5e5d80e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/green_light_cross.png" +dest_files=["res://.godot/imported/green_light_cross.png-f9631d2e916b48e5dac3a67cf5e5d80e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/basic/green_light_dots.png b/assets/textures/blockout_textures/64/basic/green_light_dots.png new file mode 100644 index 0000000..fa665e6 Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/green_light_dots.png differ diff --git a/assets/textures/blockout_textures/64/basic/green_light_dots.png.import b/assets/textures/blockout_textures/64/basic/green_light_dots.png.import new file mode 100644 index 0000000..19219df --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/green_light_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b1trnki4uqy0m" +path="res://.godot/imported/green_light_dots.png-0052e6995785068894a840e47b9d7024.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/green_light_dots.png" +dest_files=["res://.godot/imported/green_light_dots.png-0052e6995785068894a840e47b9d7024.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/basic/green_light_grid.png b/assets/textures/blockout_textures/64/basic/green_light_grid.png new file mode 100644 index 0000000..e92a5d0 Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/green_light_grid.png differ diff --git a/assets/textures/blockout_textures/64/basic/green_light_grid.png.import b/assets/textures/blockout_textures/64/basic/green_light_grid.png.import new file mode 100644 index 0000000..5d088ae --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/green_light_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://btn864ewb21i4" +path="res://.godot/imported/green_light_grid.png-85b092f057026882f684857bc28a1c9e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/green_light_grid.png" +dest_files=["res://.godot/imported/green_light_grid.png-85b092f057026882f684857bc28a1c9e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/basic/orange_check.png b/assets/textures/blockout_textures/64/basic/orange_check.png new file mode 100644 index 0000000..6bfc357 Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/orange_check.png differ diff --git a/assets/textures/blockout_textures/64/basic/orange_check.png.import b/assets/textures/blockout_textures/64/basic/orange_check.png.import new file mode 100644 index 0000000..2239452 --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/orange_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://e33e2sey14sg" +path="res://.godot/imported/orange_check.png-b127f7255edfbb996dc0abf3826d1d05.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/orange_check.png" +dest_files=["res://.godot/imported/orange_check.png-b127f7255edfbb996dc0abf3826d1d05.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/basic/orange_cross.png b/assets/textures/blockout_textures/64/basic/orange_cross.png new file mode 100644 index 0000000..e9aa580 Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/orange_cross.png differ diff --git a/assets/textures/blockout_textures/64/basic/orange_cross.png.import b/assets/textures/blockout_textures/64/basic/orange_cross.png.import new file mode 100644 index 0000000..b668d2a --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/orange_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bhuga41bgjewi" +path="res://.godot/imported/orange_cross.png-428d66d1facb0a6aee6404f0d7986bcb.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/orange_cross.png" +dest_files=["res://.godot/imported/orange_cross.png-428d66d1facb0a6aee6404f0d7986bcb.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/basic/orange_dots.png b/assets/textures/blockout_textures/64/basic/orange_dots.png new file mode 100644 index 0000000..18e550b Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/orange_dots.png differ diff --git a/assets/textures/blockout_textures/64/basic/orange_dots.png.import b/assets/textures/blockout_textures/64/basic/orange_dots.png.import new file mode 100644 index 0000000..2cf2e8f --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/orange_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://3nntuh2ppjkh" +path="res://.godot/imported/orange_dots.png-3ccc0d7f294be07c7e5d31a4ad52da2b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/orange_dots.png" +dest_files=["res://.godot/imported/orange_dots.png-3ccc0d7f294be07c7e5d31a4ad52da2b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/basic/orange_grid.png b/assets/textures/blockout_textures/64/basic/orange_grid.png new file mode 100644 index 0000000..5a5ce0e Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/orange_grid.png differ diff --git a/assets/textures/blockout_textures/64/basic/orange_grid.png.import b/assets/textures/blockout_textures/64/basic/orange_grid.png.import new file mode 100644 index 0000000..5a77aad --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/orange_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://del7wr5m1wbuw" +path="res://.godot/imported/orange_grid.png-4c7552ef066e8eff257f00d171b2d6f1.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/orange_grid.png" +dest_files=["res://.godot/imported/orange_grid.png-4c7552ef066e8eff257f00d171b2d6f1.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/basic/orange_light_check.png b/assets/textures/blockout_textures/64/basic/orange_light_check.png new file mode 100644 index 0000000..f562fcd Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/orange_light_check.png differ diff --git a/assets/textures/blockout_textures/64/basic/orange_light_check.png.import b/assets/textures/blockout_textures/64/basic/orange_light_check.png.import new file mode 100644 index 0000000..c4856d5 --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/orange_light_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://clsq7hpp3ooa1" +path="res://.godot/imported/orange_light_check.png-1af8e697aebdb8ee4505f2d8a0cfe268.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/orange_light_check.png" +dest_files=["res://.godot/imported/orange_light_check.png-1af8e697aebdb8ee4505f2d8a0cfe268.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/basic/orange_light_cross.png b/assets/textures/blockout_textures/64/basic/orange_light_cross.png new file mode 100644 index 0000000..ffc53f2 Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/orange_light_cross.png differ diff --git a/assets/textures/blockout_textures/64/basic/orange_light_cross.png.import b/assets/textures/blockout_textures/64/basic/orange_light_cross.png.import new file mode 100644 index 0000000..8bf7e7f --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/orange_light_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cq3ahnq7j255a" +path="res://.godot/imported/orange_light_cross.png-356138c6302af5fcd1d6b835f5d365a1.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/orange_light_cross.png" +dest_files=["res://.godot/imported/orange_light_cross.png-356138c6302af5fcd1d6b835f5d365a1.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/basic/orange_light_dots.png b/assets/textures/blockout_textures/64/basic/orange_light_dots.png new file mode 100644 index 0000000..018ba34 Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/orange_light_dots.png differ diff --git a/assets/textures/blockout_textures/64/basic/orange_light_dots.png.import b/assets/textures/blockout_textures/64/basic/orange_light_dots.png.import new file mode 100644 index 0000000..65ff175 --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/orange_light_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://buli8svspkyoc" +path="res://.godot/imported/orange_light_dots.png-ac5c601d78d8f423bf0f708c2c640de3.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/orange_light_dots.png" +dest_files=["res://.godot/imported/orange_light_dots.png-ac5c601d78d8f423bf0f708c2c640de3.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/basic/orange_light_grid.png b/assets/textures/blockout_textures/64/basic/orange_light_grid.png new file mode 100644 index 0000000..2bbb3c0 Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/orange_light_grid.png differ diff --git a/assets/textures/blockout_textures/64/basic/orange_light_grid.png.import b/assets/textures/blockout_textures/64/basic/orange_light_grid.png.import new file mode 100644 index 0000000..374b04c --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/orange_light_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dshvge18kk15" +path="res://.godot/imported/orange_light_grid.png-6b17161f62a50630c83db715bc06deed.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/orange_light_grid.png" +dest_files=["res://.godot/imported/orange_light_grid.png-6b17161f62a50630c83db715bc06deed.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/basic/purple_check.png b/assets/textures/blockout_textures/64/basic/purple_check.png new file mode 100644 index 0000000..0f1079a Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/purple_check.png differ diff --git a/assets/textures/blockout_textures/64/basic/purple_check.png.import b/assets/textures/blockout_textures/64/basic/purple_check.png.import new file mode 100644 index 0000000..e15bbd8 --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/purple_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://butyj8p5oaswf" +path="res://.godot/imported/purple_check.png-d97977ea81a6381d1fedda686a8589ca.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/purple_check.png" +dest_files=["res://.godot/imported/purple_check.png-d97977ea81a6381d1fedda686a8589ca.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/basic/purple_cross.png b/assets/textures/blockout_textures/64/basic/purple_cross.png new file mode 100644 index 0000000..dd0d199 Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/purple_cross.png differ diff --git a/assets/textures/blockout_textures/64/basic/purple_cross.png.import b/assets/textures/blockout_textures/64/basic/purple_cross.png.import new file mode 100644 index 0000000..59700d3 --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/purple_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cre1ynn6ep55y" +path="res://.godot/imported/purple_cross.png-33774842bbf592e3f557699512825e71.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/purple_cross.png" +dest_files=["res://.godot/imported/purple_cross.png-33774842bbf592e3f557699512825e71.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/basic/purple_dots.png b/assets/textures/blockout_textures/64/basic/purple_dots.png new file mode 100644 index 0000000..8b73241 Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/purple_dots.png differ diff --git a/assets/textures/blockout_textures/64/basic/purple_dots.png.import b/assets/textures/blockout_textures/64/basic/purple_dots.png.import new file mode 100644 index 0000000..a0afb28 --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/purple_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bd4aslyxg62mp" +path="res://.godot/imported/purple_dots.png-f4961891b1df36e2fecda3c543a7cd44.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/purple_dots.png" +dest_files=["res://.godot/imported/purple_dots.png-f4961891b1df36e2fecda3c543a7cd44.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/basic/purple_grid.png b/assets/textures/blockout_textures/64/basic/purple_grid.png new file mode 100644 index 0000000..cddcbb9 Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/purple_grid.png differ diff --git a/assets/textures/blockout_textures/64/basic/purple_grid.png.import b/assets/textures/blockout_textures/64/basic/purple_grid.png.import new file mode 100644 index 0000000..f1067e7 --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/purple_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://djnool5ec557e" +path="res://.godot/imported/purple_grid.png-037f108559f567e0ed3cd50baf468939.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/purple_grid.png" +dest_files=["res://.godot/imported/purple_grid.png-037f108559f567e0ed3cd50baf468939.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/basic/purple_light_check.png b/assets/textures/blockout_textures/64/basic/purple_light_check.png new file mode 100644 index 0000000..615201e Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/purple_light_check.png differ diff --git a/assets/textures/blockout_textures/64/basic/purple_light_check.png.import b/assets/textures/blockout_textures/64/basic/purple_light_check.png.import new file mode 100644 index 0000000..8b1675e --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/purple_light_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bfdlffn0wsasa" +path="res://.godot/imported/purple_light_check.png-15c80a73ffa4250a64021d2fa18cf107.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/purple_light_check.png" +dest_files=["res://.godot/imported/purple_light_check.png-15c80a73ffa4250a64021d2fa18cf107.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/basic/purple_light_cross.png b/assets/textures/blockout_textures/64/basic/purple_light_cross.png new file mode 100644 index 0000000..38c15d0 Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/purple_light_cross.png differ diff --git a/assets/textures/blockout_textures/64/basic/purple_light_cross.png.import b/assets/textures/blockout_textures/64/basic/purple_light_cross.png.import new file mode 100644 index 0000000..3b04525 --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/purple_light_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c42bu4ilan4vi" +path="res://.godot/imported/purple_light_cross.png-cfe9d5ddbd60ea9833c85e7b8b4f49d6.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/purple_light_cross.png" +dest_files=["res://.godot/imported/purple_light_cross.png-cfe9d5ddbd60ea9833c85e7b8b4f49d6.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/basic/purple_light_dots.png b/assets/textures/blockout_textures/64/basic/purple_light_dots.png new file mode 100644 index 0000000..a5cfa9d Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/purple_light_dots.png differ diff --git a/assets/textures/blockout_textures/64/basic/purple_light_dots.png.import b/assets/textures/blockout_textures/64/basic/purple_light_dots.png.import new file mode 100644 index 0000000..fd868ba --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/purple_light_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bu1nx0bk0re0u" +path="res://.godot/imported/purple_light_dots.png-ba82bfb005316644a8dedb291a686a74.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/purple_light_dots.png" +dest_files=["res://.godot/imported/purple_light_dots.png-ba82bfb005316644a8dedb291a686a74.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/basic/purple_light_grid.png b/assets/textures/blockout_textures/64/basic/purple_light_grid.png new file mode 100644 index 0000000..53ee039 Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/purple_light_grid.png differ diff --git a/assets/textures/blockout_textures/64/basic/purple_light_grid.png.import b/assets/textures/blockout_textures/64/basic/purple_light_grid.png.import new file mode 100644 index 0000000..a43e858 --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/purple_light_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://8lmbiw5arqli" +path="res://.godot/imported/purple_light_grid.png-799986b90623a47049dbc32ef610ccbf.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/purple_light_grid.png" +dest_files=["res://.godot/imported/purple_light_grid.png-799986b90623a47049dbc32ef610ccbf.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/basic/red_check.png b/assets/textures/blockout_textures/64/basic/red_check.png new file mode 100644 index 0000000..e751a8a Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/red_check.png differ diff --git a/assets/textures/blockout_textures/64/basic/red_check.png.import b/assets/textures/blockout_textures/64/basic/red_check.png.import new file mode 100644 index 0000000..58b4b43 --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/red_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://n0dlmeh8gt22" +path="res://.godot/imported/red_check.png-2fcbf1e7981c224f9e1b83d84723f7a0.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/red_check.png" +dest_files=["res://.godot/imported/red_check.png-2fcbf1e7981c224f9e1b83d84723f7a0.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/basic/red_cross.png b/assets/textures/blockout_textures/64/basic/red_cross.png new file mode 100644 index 0000000..3a7363b Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/red_cross.png differ diff --git a/assets/textures/blockout_textures/64/basic/red_cross.png.import b/assets/textures/blockout_textures/64/basic/red_cross.png.import new file mode 100644 index 0000000..e95176c --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/red_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://co1dc26ej7iue" +path="res://.godot/imported/red_cross.png-e0bc925dab3970776e9abb43d38d6e19.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/red_cross.png" +dest_files=["res://.godot/imported/red_cross.png-e0bc925dab3970776e9abb43d38d6e19.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/basic/red_dots.png b/assets/textures/blockout_textures/64/basic/red_dots.png new file mode 100644 index 0000000..dfd85c9 Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/red_dots.png differ diff --git a/assets/textures/blockout_textures/64/basic/red_dots.png.import b/assets/textures/blockout_textures/64/basic/red_dots.png.import new file mode 100644 index 0000000..94d09b6 --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/red_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://8oguy7xcwqni" +path="res://.godot/imported/red_dots.png-7afb7ba74d1cf55a70cc41f74bbe85b9.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/red_dots.png" +dest_files=["res://.godot/imported/red_dots.png-7afb7ba74d1cf55a70cc41f74bbe85b9.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/basic/red_grid.png b/assets/textures/blockout_textures/64/basic/red_grid.png new file mode 100644 index 0000000..9ee243c Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/red_grid.png differ diff --git a/assets/textures/blockout_textures/64/basic/red_grid.png.import b/assets/textures/blockout_textures/64/basic/red_grid.png.import new file mode 100644 index 0000000..6249c97 --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/red_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://hqve043w5cjd" +path="res://.godot/imported/red_grid.png-e5d8456e284205ada7e5fb860a689b5f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/red_grid.png" +dest_files=["res://.godot/imported/red_grid.png-e5d8456e284205ada7e5fb860a689b5f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/basic/red_light_check.png b/assets/textures/blockout_textures/64/basic/red_light_check.png new file mode 100644 index 0000000..47d11ca Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/red_light_check.png differ diff --git a/assets/textures/blockout_textures/64/basic/red_light_check.png.import b/assets/textures/blockout_textures/64/basic/red_light_check.png.import new file mode 100644 index 0000000..12d581c --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/red_light_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dal1omlm0q1yn" +path="res://.godot/imported/red_light_check.png-f1ccb3487f8eeb1c78ed406cb32c50b8.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/red_light_check.png" +dest_files=["res://.godot/imported/red_light_check.png-f1ccb3487f8eeb1c78ed406cb32c50b8.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/basic/red_light_cross.png b/assets/textures/blockout_textures/64/basic/red_light_cross.png new file mode 100644 index 0000000..207c07a Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/red_light_cross.png differ diff --git a/assets/textures/blockout_textures/64/basic/red_light_cross.png.import b/assets/textures/blockout_textures/64/basic/red_light_cross.png.import new file mode 100644 index 0000000..2757353 --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/red_light_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://co2n6i7nr13p7" +path="res://.godot/imported/red_light_cross.png-4c58f65cef9d89c64ec9ac627a8ca9b7.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/red_light_cross.png" +dest_files=["res://.godot/imported/red_light_cross.png-4c58f65cef9d89c64ec9ac627a8ca9b7.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/basic/red_light_dots.png b/assets/textures/blockout_textures/64/basic/red_light_dots.png new file mode 100644 index 0000000..a9f499f Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/red_light_dots.png differ diff --git a/assets/textures/blockout_textures/64/basic/red_light_dots.png.import b/assets/textures/blockout_textures/64/basic/red_light_dots.png.import new file mode 100644 index 0000000..ca51a47 --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/red_light_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bybfpehtknwbm" +path="res://.godot/imported/red_light_dots.png-9aa10eb2c894f6a3366d029723191901.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/red_light_dots.png" +dest_files=["res://.godot/imported/red_light_dots.png-9aa10eb2c894f6a3366d029723191901.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/basic/red_light_grid.png b/assets/textures/blockout_textures/64/basic/red_light_grid.png new file mode 100644 index 0000000..0f16dc8 Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/red_light_grid.png differ diff --git a/assets/textures/blockout_textures/64/basic/red_light_grid.png.import b/assets/textures/blockout_textures/64/basic/red_light_grid.png.import new file mode 100644 index 0000000..c45a498 --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/red_light_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ckd6eqodwebsx" +path="res://.godot/imported/red_light_grid.png-8628c481ffe3f4f1788f16d1f934ed59.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/red_light_grid.png" +dest_files=["res://.godot/imported/red_light_grid.png-8628c481ffe3f4f1788f16d1f934ed59.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/basic/white_check.png b/assets/textures/blockout_textures/64/basic/white_check.png new file mode 100644 index 0000000..ec0d336 Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/white_check.png differ diff --git a/assets/textures/blockout_textures/64/basic/white_check.png.import b/assets/textures/blockout_textures/64/basic/white_check.png.import new file mode 100644 index 0000000..6fc89b9 --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/white_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c4xrisbidcqng" +path="res://.godot/imported/white_check.png-f57b5405fd43e58a75433bb654870a56.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/white_check.png" +dest_files=["res://.godot/imported/white_check.png-f57b5405fd43e58a75433bb654870a56.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/basic/white_cross.png b/assets/textures/blockout_textures/64/basic/white_cross.png new file mode 100644 index 0000000..f0f138d Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/white_cross.png differ diff --git a/assets/textures/blockout_textures/64/basic/white_cross.png.import b/assets/textures/blockout_textures/64/basic/white_cross.png.import new file mode 100644 index 0000000..48c8adf --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/white_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://djv1j4pkt5a0f" +path="res://.godot/imported/white_cross.png-b9812de25b6d389fb89c9aa072473d90.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/white_cross.png" +dest_files=["res://.godot/imported/white_cross.png-b9812de25b6d389fb89c9aa072473d90.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/basic/white_dots.png b/assets/textures/blockout_textures/64/basic/white_dots.png new file mode 100644 index 0000000..17368d6 Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/white_dots.png differ diff --git a/assets/textures/blockout_textures/64/basic/white_dots.png.import b/assets/textures/blockout_textures/64/basic/white_dots.png.import new file mode 100644 index 0000000..4980dbd --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/white_dots.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bpbghsbplnwog" +path.s3tc="res://.godot/imported/white_dots.png-cdd4eff0c18a3da811473ddee49a8d17.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/white_dots.png" +dest_files=["res://.godot/imported/white_dots.png-cdd4eff0c18a3da811473ddee49a8d17.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/blockout_textures/64/basic/white_grid.png b/assets/textures/blockout_textures/64/basic/white_grid.png new file mode 100644 index 0000000..3178c51 Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/white_grid.png differ diff --git a/assets/textures/blockout_textures/64/basic/white_grid.png.import b/assets/textures/blockout_textures/64/basic/white_grid.png.import new file mode 100644 index 0000000..1c2d0b8 --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/white_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cy4lwnmiesahg" +path="res://.godot/imported/white_grid.png-fd2aad46d086c7bb1d34faca64175338.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/white_grid.png" +dest_files=["res://.godot/imported/white_grid.png-fd2aad46d086c7bb1d34faca64175338.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/basic/yellow_check.png b/assets/textures/blockout_textures/64/basic/yellow_check.png new file mode 100644 index 0000000..d86a75e Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/yellow_check.png differ diff --git a/assets/textures/blockout_textures/64/basic/yellow_check.png.import b/assets/textures/blockout_textures/64/basic/yellow_check.png.import new file mode 100644 index 0000000..e63f28a --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/yellow_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ol3ru5mqx4t5" +path="res://.godot/imported/yellow_check.png-fd0ceada466843771bc3c52fdf9a85fd.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/yellow_check.png" +dest_files=["res://.godot/imported/yellow_check.png-fd0ceada466843771bc3c52fdf9a85fd.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/basic/yellow_cross.png b/assets/textures/blockout_textures/64/basic/yellow_cross.png new file mode 100644 index 0000000..b732ad2 Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/yellow_cross.png differ diff --git a/assets/textures/blockout_textures/64/basic/yellow_cross.png.import b/assets/textures/blockout_textures/64/basic/yellow_cross.png.import new file mode 100644 index 0000000..503a87b --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/yellow_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ci6pkck4ouafc" +path="res://.godot/imported/yellow_cross.png-a7ec8b16d15ae5b60904580c38997895.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/yellow_cross.png" +dest_files=["res://.godot/imported/yellow_cross.png-a7ec8b16d15ae5b60904580c38997895.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/basic/yellow_dots.png b/assets/textures/blockout_textures/64/basic/yellow_dots.png new file mode 100644 index 0000000..8327cee Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/yellow_dots.png differ diff --git a/assets/textures/blockout_textures/64/basic/yellow_dots.png.import b/assets/textures/blockout_textures/64/basic/yellow_dots.png.import new file mode 100644 index 0000000..2c79035 --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/yellow_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bqote65v8oouq" +path="res://.godot/imported/yellow_dots.png-22a4b5c4f7ad44295f9669bf6517866e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/yellow_dots.png" +dest_files=["res://.godot/imported/yellow_dots.png-22a4b5c4f7ad44295f9669bf6517866e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/basic/yellow_grid.png b/assets/textures/blockout_textures/64/basic/yellow_grid.png new file mode 100644 index 0000000..c22e6f9 Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/yellow_grid.png differ diff --git a/assets/textures/blockout_textures/64/basic/yellow_grid.png.import b/assets/textures/blockout_textures/64/basic/yellow_grid.png.import new file mode 100644 index 0000000..adfcac5 --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/yellow_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://6bhbv6ychvd" +path="res://.godot/imported/yellow_grid.png-c2c1e00b34b2a9c0eb0b459cb805fc1d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/yellow_grid.png" +dest_files=["res://.godot/imported/yellow_grid.png-c2c1e00b34b2a9c0eb0b459cb805fc1d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/basic/yellow_light_check.png b/assets/textures/blockout_textures/64/basic/yellow_light_check.png new file mode 100644 index 0000000..2acb28c Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/yellow_light_check.png differ diff --git a/assets/textures/blockout_textures/64/basic/yellow_light_check.png.import b/assets/textures/blockout_textures/64/basic/yellow_light_check.png.import new file mode 100644 index 0000000..4ead8b5 --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/yellow_light_check.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d1utdlw4yjw5m" +path="res://.godot/imported/yellow_light_check.png-6a08abd7f022ff9873a241534418193e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/yellow_light_check.png" +dest_files=["res://.godot/imported/yellow_light_check.png-6a08abd7f022ff9873a241534418193e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/basic/yellow_light_cross.png b/assets/textures/blockout_textures/64/basic/yellow_light_cross.png new file mode 100644 index 0000000..166b53d Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/yellow_light_cross.png differ diff --git a/assets/textures/blockout_textures/64/basic/yellow_light_cross.png.import b/assets/textures/blockout_textures/64/basic/yellow_light_cross.png.import new file mode 100644 index 0000000..501856a --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/yellow_light_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cexfqbx5sbbng" +path="res://.godot/imported/yellow_light_cross.png-60a340b54f71041b6b019ddf9830f166.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/yellow_light_cross.png" +dest_files=["res://.godot/imported/yellow_light_cross.png-60a340b54f71041b6b019ddf9830f166.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/basic/yellow_light_dots.png b/assets/textures/blockout_textures/64/basic/yellow_light_dots.png new file mode 100644 index 0000000..4742186 Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/yellow_light_dots.png differ diff --git a/assets/textures/blockout_textures/64/basic/yellow_light_dots.png.import b/assets/textures/blockout_textures/64/basic/yellow_light_dots.png.import new file mode 100644 index 0000000..286cee9 --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/yellow_light_dots.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ene0fq0buogu" +path="res://.godot/imported/yellow_light_dots.png-100322d7aec9a9350d6ff3cc2cf5c58a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/yellow_light_dots.png" +dest_files=["res://.godot/imported/yellow_light_dots.png-100322d7aec9a9350d6ff3cc2cf5c58a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/basic/yellow_light_grid.png b/assets/textures/blockout_textures/64/basic/yellow_light_grid.png new file mode 100644 index 0000000..5fad996 Binary files /dev/null and b/assets/textures/blockout_textures/64/basic/yellow_light_grid.png differ diff --git a/assets/textures/blockout_textures/64/basic/yellow_light_grid.png.import b/assets/textures/blockout_textures/64/basic/yellow_light_grid.png.import new file mode 100644 index 0000000..09a038e --- /dev/null +++ b/assets/textures/blockout_textures/64/basic/yellow_light_grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://uu8cqqy81blc" +path="res://.godot/imported/yellow_light_grid.png-51a664551e046a17663e1a655300efd7.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/basic/yellow_light_grid.png" +dest_files=["res://.godot/imported/yellow_light_grid.png-51a664551e046a17663e1a655300efd7.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/mark/aqua_mark_black.png b/assets/textures/blockout_textures/64/mark/aqua_mark_black.png new file mode 100644 index 0000000..ea23f0e Binary files /dev/null and b/assets/textures/blockout_textures/64/mark/aqua_mark_black.png differ diff --git a/assets/textures/blockout_textures/64/mark/aqua_mark_black.png.import b/assets/textures/blockout_textures/64/mark/aqua_mark_black.png.import new file mode 100644 index 0000000..d7acaf1 --- /dev/null +++ b/assets/textures/blockout_textures/64/mark/aqua_mark_black.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://kwbh5okdpw3l" +path="res://.godot/imported/aqua_mark_black.png-8a448acdc57aa04cbbbf138de2e55126.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/mark/aqua_mark_black.png" +dest_files=["res://.godot/imported/aqua_mark_black.png-8a448acdc57aa04cbbbf138de2e55126.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/mark/aqua_mark_transparent.png b/assets/textures/blockout_textures/64/mark/aqua_mark_transparent.png new file mode 100644 index 0000000..25ca9e0 Binary files /dev/null and b/assets/textures/blockout_textures/64/mark/aqua_mark_transparent.png differ diff --git a/assets/textures/blockout_textures/64/mark/aqua_mark_transparent.png.import b/assets/textures/blockout_textures/64/mark/aqua_mark_transparent.png.import new file mode 100644 index 0000000..f02695b --- /dev/null +++ b/assets/textures/blockout_textures/64/mark/aqua_mark_transparent.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dwe0uwjebb0ud" +path="res://.godot/imported/aqua_mark_transparent.png-9ff024fb743b5b99a042b41cce021f31.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/mark/aqua_mark_transparent.png" +dest_files=["res://.godot/imported/aqua_mark_transparent.png-9ff024fb743b5b99a042b41cce021f31.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/mark/aqua_mark_white.png b/assets/textures/blockout_textures/64/mark/aqua_mark_white.png new file mode 100644 index 0000000..29baa3a Binary files /dev/null and b/assets/textures/blockout_textures/64/mark/aqua_mark_white.png differ diff --git a/assets/textures/blockout_textures/64/mark/aqua_mark_white.png.import b/assets/textures/blockout_textures/64/mark/aqua_mark_white.png.import new file mode 100644 index 0000000..bd13415 --- /dev/null +++ b/assets/textures/blockout_textures/64/mark/aqua_mark_white.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dct1w0c8d2y1u" +path="res://.godot/imported/aqua_mark_white.png-ecd147ca28a97396c4a64c258c681a77.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/mark/aqua_mark_white.png" +dest_files=["res://.godot/imported/aqua_mark_white.png-ecd147ca28a97396c4a64c258c681a77.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/mark/black_mark.png b/assets/textures/blockout_textures/64/mark/black_mark.png new file mode 100644 index 0000000..4f1b840 Binary files /dev/null and b/assets/textures/blockout_textures/64/mark/black_mark.png differ diff --git a/assets/textures/blockout_textures/64/mark/black_mark.png.import b/assets/textures/blockout_textures/64/mark/black_mark.png.import new file mode 100644 index 0000000..261a533 --- /dev/null +++ b/assets/textures/blockout_textures/64/mark/black_mark.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://r787me8lq563" +path="res://.godot/imported/black_mark.png-73358eebaac133bd992598a840fa75d9.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/mark/black_mark.png" +dest_files=["res://.godot/imported/black_mark.png-73358eebaac133bd992598a840fa75d9.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/mark/blue_mark_black.png b/assets/textures/blockout_textures/64/mark/blue_mark_black.png new file mode 100644 index 0000000..605ccbd Binary files /dev/null and b/assets/textures/blockout_textures/64/mark/blue_mark_black.png differ diff --git a/assets/textures/blockout_textures/64/mark/blue_mark_black.png.import b/assets/textures/blockout_textures/64/mark/blue_mark_black.png.import new file mode 100644 index 0000000..b8d2820 --- /dev/null +++ b/assets/textures/blockout_textures/64/mark/blue_mark_black.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://curffee0p83j8" +path="res://.godot/imported/blue_mark_black.png-9f3e0f436fc3f20bbb9cb04bb951da49.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/mark/blue_mark_black.png" +dest_files=["res://.godot/imported/blue_mark_black.png-9f3e0f436fc3f20bbb9cb04bb951da49.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/mark/blue_mark_transparent.png b/assets/textures/blockout_textures/64/mark/blue_mark_transparent.png new file mode 100644 index 0000000..d5e2721 Binary files /dev/null and b/assets/textures/blockout_textures/64/mark/blue_mark_transparent.png differ diff --git a/assets/textures/blockout_textures/64/mark/blue_mark_transparent.png.import b/assets/textures/blockout_textures/64/mark/blue_mark_transparent.png.import new file mode 100644 index 0000000..1bbfb9f --- /dev/null +++ b/assets/textures/blockout_textures/64/mark/blue_mark_transparent.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cpqpwqlch022b" +path="res://.godot/imported/blue_mark_transparent.png-e6dcf9298567b33a04b8aad975624a0f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/mark/blue_mark_transparent.png" +dest_files=["res://.godot/imported/blue_mark_transparent.png-e6dcf9298567b33a04b8aad975624a0f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/mark/blue_mark_white.png b/assets/textures/blockout_textures/64/mark/blue_mark_white.png new file mode 100644 index 0000000..a77d4b0 Binary files /dev/null and b/assets/textures/blockout_textures/64/mark/blue_mark_white.png differ diff --git a/assets/textures/blockout_textures/64/mark/blue_mark_white.png.import b/assets/textures/blockout_textures/64/mark/blue_mark_white.png.import new file mode 100644 index 0000000..738f5da --- /dev/null +++ b/assets/textures/blockout_textures/64/mark/blue_mark_white.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ctkp3vbuteifx" +path="res://.godot/imported/blue_mark_white.png-6c56f97689191ca0b77a358b4cc1d7fa.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/mark/blue_mark_white.png" +dest_files=["res://.godot/imported/blue_mark_white.png-6c56f97689191ca0b77a358b4cc1d7fa.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/mark/gray_mark.png b/assets/textures/blockout_textures/64/mark/gray_mark.png new file mode 100644 index 0000000..8d99d3b Binary files /dev/null and b/assets/textures/blockout_textures/64/mark/gray_mark.png differ diff --git a/assets/textures/blockout_textures/64/mark/gray_mark.png.import b/assets/textures/blockout_textures/64/mark/gray_mark.png.import new file mode 100644 index 0000000..efeb486 --- /dev/null +++ b/assets/textures/blockout_textures/64/mark/gray_mark.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://noffruhn045u" +path="res://.godot/imported/gray_mark.png-31274b43b0e69e053c8fba9edbb78289.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/mark/gray_mark.png" +dest_files=["res://.godot/imported/gray_mark.png-31274b43b0e69e053c8fba9edbb78289.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/mark/green_mark_black.png b/assets/textures/blockout_textures/64/mark/green_mark_black.png new file mode 100644 index 0000000..92a5b74 Binary files /dev/null and b/assets/textures/blockout_textures/64/mark/green_mark_black.png differ diff --git a/assets/textures/blockout_textures/64/mark/green_mark_black.png.import b/assets/textures/blockout_textures/64/mark/green_mark_black.png.import new file mode 100644 index 0000000..a236ab0 --- /dev/null +++ b/assets/textures/blockout_textures/64/mark/green_mark_black.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dtgcksqxc34jd" +path="res://.godot/imported/green_mark_black.png-baa2a5ed13c9e690ecb00b06230ace53.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/mark/green_mark_black.png" +dest_files=["res://.godot/imported/green_mark_black.png-baa2a5ed13c9e690ecb00b06230ace53.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/mark/green_mark_transparent.png b/assets/textures/blockout_textures/64/mark/green_mark_transparent.png new file mode 100644 index 0000000..efb1255 Binary files /dev/null and b/assets/textures/blockout_textures/64/mark/green_mark_transparent.png differ diff --git a/assets/textures/blockout_textures/64/mark/green_mark_transparent.png.import b/assets/textures/blockout_textures/64/mark/green_mark_transparent.png.import new file mode 100644 index 0000000..a916b8b --- /dev/null +++ b/assets/textures/blockout_textures/64/mark/green_mark_transparent.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://s2n8cbk0oxgm" +path="res://.godot/imported/green_mark_transparent.png-6680dedf3bc91cadebdc4cf777a7a343.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/mark/green_mark_transparent.png" +dest_files=["res://.godot/imported/green_mark_transparent.png-6680dedf3bc91cadebdc4cf777a7a343.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/mark/green_mark_white.png b/assets/textures/blockout_textures/64/mark/green_mark_white.png new file mode 100644 index 0000000..046a6f3 Binary files /dev/null and b/assets/textures/blockout_textures/64/mark/green_mark_white.png differ diff --git a/assets/textures/blockout_textures/64/mark/green_mark_white.png.import b/assets/textures/blockout_textures/64/mark/green_mark_white.png.import new file mode 100644 index 0000000..bd225f5 --- /dev/null +++ b/assets/textures/blockout_textures/64/mark/green_mark_white.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b62xwynpyu60a" +path="res://.godot/imported/green_mark_white.png-5c589a1eb471450c1e630ebb1abc8c9f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/mark/green_mark_white.png" +dest_files=["res://.godot/imported/green_mark_white.png-5c589a1eb471450c1e630ebb1abc8c9f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/mark/orange_mark_black.png b/assets/textures/blockout_textures/64/mark/orange_mark_black.png new file mode 100644 index 0000000..78e578f Binary files /dev/null and b/assets/textures/blockout_textures/64/mark/orange_mark_black.png differ diff --git a/assets/textures/blockout_textures/64/mark/orange_mark_black.png.import b/assets/textures/blockout_textures/64/mark/orange_mark_black.png.import new file mode 100644 index 0000000..0d6457a --- /dev/null +++ b/assets/textures/blockout_textures/64/mark/orange_mark_black.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c33uo75guuexf" +path="res://.godot/imported/orange_mark_black.png-25d3b03bd8debea8f35fc4aa819f2ef9.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/mark/orange_mark_black.png" +dest_files=["res://.godot/imported/orange_mark_black.png-25d3b03bd8debea8f35fc4aa819f2ef9.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/mark/orange_mark_transparent.png b/assets/textures/blockout_textures/64/mark/orange_mark_transparent.png new file mode 100644 index 0000000..e1c9f63 Binary files /dev/null and b/assets/textures/blockout_textures/64/mark/orange_mark_transparent.png differ diff --git a/assets/textures/blockout_textures/64/mark/orange_mark_transparent.png.import b/assets/textures/blockout_textures/64/mark/orange_mark_transparent.png.import new file mode 100644 index 0000000..949aa48 --- /dev/null +++ b/assets/textures/blockout_textures/64/mark/orange_mark_transparent.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dae4uwgctvkro" +path="res://.godot/imported/orange_mark_transparent.png-d92462bbd92ba10e2894cc49fc3f0820.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/mark/orange_mark_transparent.png" +dest_files=["res://.godot/imported/orange_mark_transparent.png-d92462bbd92ba10e2894cc49fc3f0820.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/mark/orange_mark_white.png b/assets/textures/blockout_textures/64/mark/orange_mark_white.png new file mode 100644 index 0000000..99e6487 Binary files /dev/null and b/assets/textures/blockout_textures/64/mark/orange_mark_white.png differ diff --git a/assets/textures/blockout_textures/64/mark/orange_mark_white.png.import b/assets/textures/blockout_textures/64/mark/orange_mark_white.png.import new file mode 100644 index 0000000..e96e2c8 --- /dev/null +++ b/assets/textures/blockout_textures/64/mark/orange_mark_white.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://crvrcff6ltcte" +path="res://.godot/imported/orange_mark_white.png-02a3f8c49c2ca713b90bbfe5a843f925.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/mark/orange_mark_white.png" +dest_files=["res://.godot/imported/orange_mark_white.png-02a3f8c49c2ca713b90bbfe5a843f925.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/mark/purple_mark_black.png b/assets/textures/blockout_textures/64/mark/purple_mark_black.png new file mode 100644 index 0000000..4f0935c Binary files /dev/null and b/assets/textures/blockout_textures/64/mark/purple_mark_black.png differ diff --git a/assets/textures/blockout_textures/64/mark/purple_mark_black.png.import b/assets/textures/blockout_textures/64/mark/purple_mark_black.png.import new file mode 100644 index 0000000..8e579a9 --- /dev/null +++ b/assets/textures/blockout_textures/64/mark/purple_mark_black.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://rjia0ekumc6u" +path="res://.godot/imported/purple_mark_black.png-6d1fd619c4661736af8ea3daffe246c0.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/mark/purple_mark_black.png" +dest_files=["res://.godot/imported/purple_mark_black.png-6d1fd619c4661736af8ea3daffe246c0.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/mark/purple_mark_transparent.png b/assets/textures/blockout_textures/64/mark/purple_mark_transparent.png new file mode 100644 index 0000000..9e7d4de Binary files /dev/null and b/assets/textures/blockout_textures/64/mark/purple_mark_transparent.png differ diff --git a/assets/textures/blockout_textures/64/mark/purple_mark_transparent.png.import b/assets/textures/blockout_textures/64/mark/purple_mark_transparent.png.import new file mode 100644 index 0000000..f0ef32c --- /dev/null +++ b/assets/textures/blockout_textures/64/mark/purple_mark_transparent.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cdc0ux5wvjuwi" +path="res://.godot/imported/purple_mark_transparent.png-0717035045cf4459b081f04a31a89411.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/mark/purple_mark_transparent.png" +dest_files=["res://.godot/imported/purple_mark_transparent.png-0717035045cf4459b081f04a31a89411.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/mark/purple_mark_white.png b/assets/textures/blockout_textures/64/mark/purple_mark_white.png new file mode 100644 index 0000000..b72f663 Binary files /dev/null and b/assets/textures/blockout_textures/64/mark/purple_mark_white.png differ diff --git a/assets/textures/blockout_textures/64/mark/purple_mark_white.png.import b/assets/textures/blockout_textures/64/mark/purple_mark_white.png.import new file mode 100644 index 0000000..9d40b97 --- /dev/null +++ b/assets/textures/blockout_textures/64/mark/purple_mark_white.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d1ri0ab8b8a5q" +path="res://.godot/imported/purple_mark_white.png-ceca2d7b7ea276f5c8aabf21894ec294.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/mark/purple_mark_white.png" +dest_files=["res://.godot/imported/purple_mark_white.png-ceca2d7b7ea276f5c8aabf21894ec294.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/mark/red_mark_black.png b/assets/textures/blockout_textures/64/mark/red_mark_black.png new file mode 100644 index 0000000..3b3403c Binary files /dev/null and b/assets/textures/blockout_textures/64/mark/red_mark_black.png differ diff --git a/assets/textures/blockout_textures/64/mark/red_mark_black.png.import b/assets/textures/blockout_textures/64/mark/red_mark_black.png.import new file mode 100644 index 0000000..9611050 --- /dev/null +++ b/assets/textures/blockout_textures/64/mark/red_mark_black.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b1wate6xine4o" +path="res://.godot/imported/red_mark_black.png-069ce5980fbb1589e1934b98e8090be4.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/mark/red_mark_black.png" +dest_files=["res://.godot/imported/red_mark_black.png-069ce5980fbb1589e1934b98e8090be4.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/mark/red_mark_transparent.png b/assets/textures/blockout_textures/64/mark/red_mark_transparent.png new file mode 100644 index 0000000..ead686f Binary files /dev/null and b/assets/textures/blockout_textures/64/mark/red_mark_transparent.png differ diff --git a/assets/textures/blockout_textures/64/mark/red_mark_transparent.png.import b/assets/textures/blockout_textures/64/mark/red_mark_transparent.png.import new file mode 100644 index 0000000..4400996 --- /dev/null +++ b/assets/textures/blockout_textures/64/mark/red_mark_transparent.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://by22g82w5w170" +path="res://.godot/imported/red_mark_transparent.png-6d7f628bec67c4771cc45f83a7a8fde1.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/mark/red_mark_transparent.png" +dest_files=["res://.godot/imported/red_mark_transparent.png-6d7f628bec67c4771cc45f83a7a8fde1.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/mark/red_mark_white.png b/assets/textures/blockout_textures/64/mark/red_mark_white.png new file mode 100644 index 0000000..2a59837 Binary files /dev/null and b/assets/textures/blockout_textures/64/mark/red_mark_white.png differ diff --git a/assets/textures/blockout_textures/64/mark/red_mark_white.png.import b/assets/textures/blockout_textures/64/mark/red_mark_white.png.import new file mode 100644 index 0000000..708967f --- /dev/null +++ b/assets/textures/blockout_textures/64/mark/red_mark_white.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dtsirxlb31y1" +path="res://.godot/imported/red_mark_white.png-399811a5772b4b740fdd6b803a4ec0dd.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/mark/red_mark_white.png" +dest_files=["res://.godot/imported/red_mark_white.png-399811a5772b4b740fdd6b803a4ec0dd.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/mark/white_mark.png b/assets/textures/blockout_textures/64/mark/white_mark.png new file mode 100644 index 0000000..24efcee Binary files /dev/null and b/assets/textures/blockout_textures/64/mark/white_mark.png differ diff --git a/assets/textures/blockout_textures/64/mark/white_mark.png.import b/assets/textures/blockout_textures/64/mark/white_mark.png.import new file mode 100644 index 0000000..8bc7e12 --- /dev/null +++ b/assets/textures/blockout_textures/64/mark/white_mark.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b2qi762k7sths" +path="res://.godot/imported/white_mark.png-bed8fcd15b3a11c7d887869a3f60fb38.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/mark/white_mark.png" +dest_files=["res://.godot/imported/white_mark.png-bed8fcd15b3a11c7d887869a3f60fb38.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/mark/yellow_mark_black.png b/assets/textures/blockout_textures/64/mark/yellow_mark_black.png new file mode 100644 index 0000000..7258a00 Binary files /dev/null and b/assets/textures/blockout_textures/64/mark/yellow_mark_black.png differ diff --git a/assets/textures/blockout_textures/64/mark/yellow_mark_black.png.import b/assets/textures/blockout_textures/64/mark/yellow_mark_black.png.import new file mode 100644 index 0000000..41cf55b --- /dev/null +++ b/assets/textures/blockout_textures/64/mark/yellow_mark_black.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bhflcva3btkcv" +path="res://.godot/imported/yellow_mark_black.png-2ba0c1d8e7f504defe037993c8a37431.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/mark/yellow_mark_black.png" +dest_files=["res://.godot/imported/yellow_mark_black.png-2ba0c1d8e7f504defe037993c8a37431.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/mark/yellow_mark_transparent.png b/assets/textures/blockout_textures/64/mark/yellow_mark_transparent.png new file mode 100644 index 0000000..dc7b0c6 Binary files /dev/null and b/assets/textures/blockout_textures/64/mark/yellow_mark_transparent.png differ diff --git a/assets/textures/blockout_textures/64/mark/yellow_mark_transparent.png.import b/assets/textures/blockout_textures/64/mark/yellow_mark_transparent.png.import new file mode 100644 index 0000000..6345e00 --- /dev/null +++ b/assets/textures/blockout_textures/64/mark/yellow_mark_transparent.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://calnygcsfudhd" +path="res://.godot/imported/yellow_mark_transparent.png-6876723610c8d6f099178e8d01189467.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/mark/yellow_mark_transparent.png" +dest_files=["res://.godot/imported/yellow_mark_transparent.png-6876723610c8d6f099178e8d01189467.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/mark/yellow_mark_white.png b/assets/textures/blockout_textures/64/mark/yellow_mark_white.png new file mode 100644 index 0000000..9997ac7 Binary files /dev/null and b/assets/textures/blockout_textures/64/mark/yellow_mark_white.png differ diff --git a/assets/textures/blockout_textures/64/mark/yellow_mark_white.png.import b/assets/textures/blockout_textures/64/mark/yellow_mark_white.png.import new file mode 100644 index 0000000..387b1f6 --- /dev/null +++ b/assets/textures/blockout_textures/64/mark/yellow_mark_white.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://3ei82rcsdc5" +path="res://.godot/imported/yellow_mark_white.png-b4becf65cf4180948e1240705b18492c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/mark/yellow_mark_white.png" +dest_files=["res://.godot/imported/yellow_mark_white.png-b4becf65cf4180948e1240705b18492c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/nature/nature_grass_1.png b/assets/textures/blockout_textures/64/nature/nature_grass_1.png new file mode 100644 index 0000000..6656bf9 Binary files /dev/null and b/assets/textures/blockout_textures/64/nature/nature_grass_1.png differ diff --git a/assets/textures/blockout_textures/64/nature/nature_grass_1.png.import b/assets/textures/blockout_textures/64/nature/nature_grass_1.png.import new file mode 100644 index 0000000..554c668 --- /dev/null +++ b/assets/textures/blockout_textures/64/nature/nature_grass_1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cmiy36ykm672i" +path="res://.godot/imported/nature_grass_1.png-12918b32c80d70768c9ddd5959df4c81.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/nature/nature_grass_1.png" +dest_files=["res://.godot/imported/nature_grass_1.png-12918b32c80d70768c9ddd5959df4c81.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/nature/nature_grass_2.png b/assets/textures/blockout_textures/64/nature/nature_grass_2.png new file mode 100644 index 0000000..1aaab40 Binary files /dev/null and b/assets/textures/blockout_textures/64/nature/nature_grass_2.png differ diff --git a/assets/textures/blockout_textures/64/nature/nature_grass_2.png.import b/assets/textures/blockout_textures/64/nature/nature_grass_2.png.import new file mode 100644 index 0000000..c673722 --- /dev/null +++ b/assets/textures/blockout_textures/64/nature/nature_grass_2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cej4ofwbabqgq" +path="res://.godot/imported/nature_grass_2.png-4646f9b6c663ec01961559f9dce4d76c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/nature/nature_grass_2.png" +dest_files=["res://.godot/imported/nature_grass_2.png-4646f9b6c663ec01961559f9dce4d76c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/nature/nature_grass_3.png b/assets/textures/blockout_textures/64/nature/nature_grass_3.png new file mode 100644 index 0000000..05a9aab Binary files /dev/null and b/assets/textures/blockout_textures/64/nature/nature_grass_3.png differ diff --git a/assets/textures/blockout_textures/64/nature/nature_grass_3.png.import b/assets/textures/blockout_textures/64/nature/nature_grass_3.png.import new file mode 100644 index 0000000..c1d850a --- /dev/null +++ b/assets/textures/blockout_textures/64/nature/nature_grass_3.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b5yyny28dml5a" +path="res://.godot/imported/nature_grass_3.png-042ff002a1b3935f11e3bae996d21af7.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/nature/nature_grass_3.png" +dest_files=["res://.godot/imported/nature_grass_3.png-042ff002a1b3935f11e3bae996d21af7.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/nature/nature_grass_4.png b/assets/textures/blockout_textures/64/nature/nature_grass_4.png new file mode 100644 index 0000000..751eb99 Binary files /dev/null and b/assets/textures/blockout_textures/64/nature/nature_grass_4.png differ diff --git a/assets/textures/blockout_textures/64/nature/nature_grass_4.png.import b/assets/textures/blockout_textures/64/nature/nature_grass_4.png.import new file mode 100644 index 0000000..16e4efc --- /dev/null +++ b/assets/textures/blockout_textures/64/nature/nature_grass_4.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://3n6qukigxfr0" +path="res://.godot/imported/nature_grass_4.png-1a282f6b649c56bcd0648bb94c1075a8.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/nature/nature_grass_4.png" +dest_files=["res://.godot/imported/nature_grass_4.png-1a282f6b649c56bcd0648bb94c1075a8.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/nature/nature_ground_1.png b/assets/textures/blockout_textures/64/nature/nature_ground_1.png new file mode 100644 index 0000000..298c797 Binary files /dev/null and b/assets/textures/blockout_textures/64/nature/nature_ground_1.png differ diff --git a/assets/textures/blockout_textures/64/nature/nature_ground_1.png.import b/assets/textures/blockout_textures/64/nature/nature_ground_1.png.import new file mode 100644 index 0000000..17747fb --- /dev/null +++ b/assets/textures/blockout_textures/64/nature/nature_ground_1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cj3lsljxhbb20" +path="res://.godot/imported/nature_ground_1.png-f314f5cb58ba0cabc7376b54098faebf.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/nature/nature_ground_1.png" +dest_files=["res://.godot/imported/nature_ground_1.png-f314f5cb58ba0cabc7376b54098faebf.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/nature/nature_ground_2.png b/assets/textures/blockout_textures/64/nature/nature_ground_2.png new file mode 100644 index 0000000..12a7251 Binary files /dev/null and b/assets/textures/blockout_textures/64/nature/nature_ground_2.png differ diff --git a/assets/textures/blockout_textures/64/nature/nature_ground_2.png.import b/assets/textures/blockout_textures/64/nature/nature_ground_2.png.import new file mode 100644 index 0000000..c1a5c64 --- /dev/null +++ b/assets/textures/blockout_textures/64/nature/nature_ground_2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dptv2g51wclcv" +path="res://.godot/imported/nature_ground_2.png-4e77b836129e82fefa2379c255c5cc07.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/nature/nature_ground_2.png" +dest_files=["res://.godot/imported/nature_ground_2.png-4e77b836129e82fefa2379c255c5cc07.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/nature/nature_ground_3.png b/assets/textures/blockout_textures/64/nature/nature_ground_3.png new file mode 100644 index 0000000..c408b4f Binary files /dev/null and b/assets/textures/blockout_textures/64/nature/nature_ground_3.png differ diff --git a/assets/textures/blockout_textures/64/nature/nature_ground_3.png.import b/assets/textures/blockout_textures/64/nature/nature_ground_3.png.import new file mode 100644 index 0000000..ad908c2 --- /dev/null +++ b/assets/textures/blockout_textures/64/nature/nature_ground_3.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bou40cbgvud71" +path="res://.godot/imported/nature_ground_3.png-a96f7e9a9c876fcee24cbf65190cc6fc.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/nature/nature_ground_3.png" +dest_files=["res://.godot/imported/nature_ground_3.png-a96f7e9a9c876fcee24cbf65190cc6fc.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/nature/nature_ground_4.png b/assets/textures/blockout_textures/64/nature/nature_ground_4.png new file mode 100644 index 0000000..e662af5 Binary files /dev/null and b/assets/textures/blockout_textures/64/nature/nature_ground_4.png differ diff --git a/assets/textures/blockout_textures/64/nature/nature_ground_4.png.import b/assets/textures/blockout_textures/64/nature/nature_ground_4.png.import new file mode 100644 index 0000000..5903d32 --- /dev/null +++ b/assets/textures/blockout_textures/64/nature/nature_ground_4.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://h6vredlg4c5k" +path="res://.godot/imported/nature_ground_4.png-58524d7a682d08b0d172c52172f534ca.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/nature/nature_ground_4.png" +dest_files=["res://.godot/imported/nature_ground_4.png-58524d7a682d08b0d172c52172f534ca.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/nature/nature_rock_1.png b/assets/textures/blockout_textures/64/nature/nature_rock_1.png new file mode 100644 index 0000000..c8fce90 Binary files /dev/null and b/assets/textures/blockout_textures/64/nature/nature_rock_1.png differ diff --git a/assets/textures/blockout_textures/64/nature/nature_rock_1.png.import b/assets/textures/blockout_textures/64/nature/nature_rock_1.png.import new file mode 100644 index 0000000..671f488 --- /dev/null +++ b/assets/textures/blockout_textures/64/nature/nature_rock_1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://gp2qw1axild0" +path="res://.godot/imported/nature_rock_1.png-6b26e8c57256bf84bc6dc325d8d9abc7.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/nature/nature_rock_1.png" +dest_files=["res://.godot/imported/nature_rock_1.png-6b26e8c57256bf84bc6dc325d8d9abc7.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/nature/nature_rock_2.png b/assets/textures/blockout_textures/64/nature/nature_rock_2.png new file mode 100644 index 0000000..9da17a2 Binary files /dev/null and b/assets/textures/blockout_textures/64/nature/nature_rock_2.png differ diff --git a/assets/textures/blockout_textures/64/nature/nature_rock_2.png.import b/assets/textures/blockout_textures/64/nature/nature_rock_2.png.import new file mode 100644 index 0000000..febc3d5 --- /dev/null +++ b/assets/textures/blockout_textures/64/nature/nature_rock_2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bn6xix2eseff0" +path="res://.godot/imported/nature_rock_2.png-dd3b35786626b3f65e5c2bb87db394d5.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/nature/nature_rock_2.png" +dest_files=["res://.godot/imported/nature_rock_2.png-dd3b35786626b3f65e5c2bb87db394d5.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/nature/nature_rock_3.png b/assets/textures/blockout_textures/64/nature/nature_rock_3.png new file mode 100644 index 0000000..c6d8c68 Binary files /dev/null and b/assets/textures/blockout_textures/64/nature/nature_rock_3.png differ diff --git a/assets/textures/blockout_textures/64/nature/nature_rock_3.png.import b/assets/textures/blockout_textures/64/nature/nature_rock_3.png.import new file mode 100644 index 0000000..eca7a82 --- /dev/null +++ b/assets/textures/blockout_textures/64/nature/nature_rock_3.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bsr437l3uufc4" +path="res://.godot/imported/nature_rock_3.png-0274ba9b1c6ef06bef0926d991c5b7d9.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/nature/nature_rock_3.png" +dest_files=["res://.godot/imported/nature_rock_3.png-0274ba9b1c6ef06bef0926d991c5b7d9.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/nature/nature_rock_4.png b/assets/textures/blockout_textures/64/nature/nature_rock_4.png new file mode 100644 index 0000000..a594fda Binary files /dev/null and b/assets/textures/blockout_textures/64/nature/nature_rock_4.png differ diff --git a/assets/textures/blockout_textures/64/nature/nature_rock_4.png.import b/assets/textures/blockout_textures/64/nature/nature_rock_4.png.import new file mode 100644 index 0000000..1ca9ea5 --- /dev/null +++ b/assets/textures/blockout_textures/64/nature/nature_rock_4.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ft8scew65iwq" +path="res://.godot/imported/nature_rock_4.png-2a171cbcb067dab442e6b50c7b9819a2.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/nature/nature_rock_4.png" +dest_files=["res://.godot/imported/nature_rock_4.png-2a171cbcb067dab442e6b50c7b9819a2.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/nature/nature_sand_1.png b/assets/textures/blockout_textures/64/nature/nature_sand_1.png new file mode 100644 index 0000000..96971ac Binary files /dev/null and b/assets/textures/blockout_textures/64/nature/nature_sand_1.png differ diff --git a/assets/textures/blockout_textures/64/nature/nature_sand_1.png.import b/assets/textures/blockout_textures/64/nature/nature_sand_1.png.import new file mode 100644 index 0000000..0fe76c8 --- /dev/null +++ b/assets/textures/blockout_textures/64/nature/nature_sand_1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://itixp8p7t1ro" +path="res://.godot/imported/nature_sand_1.png-0130edc052476a3d0420f5d18b706a47.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/nature/nature_sand_1.png" +dest_files=["res://.godot/imported/nature_sand_1.png-0130edc052476a3d0420f5d18b706a47.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/nature/nature_sand_2.png b/assets/textures/blockout_textures/64/nature/nature_sand_2.png new file mode 100644 index 0000000..4f54447 Binary files /dev/null and b/assets/textures/blockout_textures/64/nature/nature_sand_2.png differ diff --git a/assets/textures/blockout_textures/64/nature/nature_sand_2.png.import b/assets/textures/blockout_textures/64/nature/nature_sand_2.png.import new file mode 100644 index 0000000..94c2899 --- /dev/null +++ b/assets/textures/blockout_textures/64/nature/nature_sand_2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bf3fmu2eu4utn" +path="res://.godot/imported/nature_sand_2.png-f71987bbf785a800038d30101e41c0ec.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/nature/nature_sand_2.png" +dest_files=["res://.godot/imported/nature_sand_2.png-f71987bbf785a800038d30101e41c0ec.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/nature/nature_sand_3.png b/assets/textures/blockout_textures/64/nature/nature_sand_3.png new file mode 100644 index 0000000..72167e6 Binary files /dev/null and b/assets/textures/blockout_textures/64/nature/nature_sand_3.png differ diff --git a/assets/textures/blockout_textures/64/nature/nature_sand_3.png.import b/assets/textures/blockout_textures/64/nature/nature_sand_3.png.import new file mode 100644 index 0000000..39b2147 --- /dev/null +++ b/assets/textures/blockout_textures/64/nature/nature_sand_3.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bsusme1lr0t2t" +path="res://.godot/imported/nature_sand_3.png-99fe8dc3e7919b4cf3ffceda754eb83d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/nature/nature_sand_3.png" +dest_files=["res://.godot/imported/nature_sand_3.png-99fe8dc3e7919b4cf3ffceda754eb83d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/nature/nature_sand_4.png b/assets/textures/blockout_textures/64/nature/nature_sand_4.png new file mode 100644 index 0000000..98e9688 Binary files /dev/null and b/assets/textures/blockout_textures/64/nature/nature_sand_4.png differ diff --git a/assets/textures/blockout_textures/64/nature/nature_sand_4.png.import b/assets/textures/blockout_textures/64/nature/nature_sand_4.png.import new file mode 100644 index 0000000..ddea1ff --- /dev/null +++ b/assets/textures/blockout_textures/64/nature/nature_sand_4.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bbhjdvfw2fvqf" +path="res://.godot/imported/nature_sand_4.png-492d24bc522ab38454432f1bc3cad3f4.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/nature/nature_sand_4.png" +dest_files=["res://.godot/imported/nature_sand_4.png-492d24bc522ab38454432f1bc3cad3f4.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/nature/nature_water_1.png b/assets/textures/blockout_textures/64/nature/nature_water_1.png new file mode 100644 index 0000000..0cead5a Binary files /dev/null and b/assets/textures/blockout_textures/64/nature/nature_water_1.png differ diff --git a/assets/textures/blockout_textures/64/nature/nature_water_1.png.import b/assets/textures/blockout_textures/64/nature/nature_water_1.png.import new file mode 100644 index 0000000..c831438 --- /dev/null +++ b/assets/textures/blockout_textures/64/nature/nature_water_1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cg5mjkpd8dqnn" +path="res://.godot/imported/nature_water_1.png-fdc37841709361869669da21b64da5fe.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/nature/nature_water_1.png" +dest_files=["res://.godot/imported/nature_water_1.png-fdc37841709361869669da21b64da5fe.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/nature/nature_water_2.png b/assets/textures/blockout_textures/64/nature/nature_water_2.png new file mode 100644 index 0000000..d6efa0e Binary files /dev/null and b/assets/textures/blockout_textures/64/nature/nature_water_2.png differ diff --git a/assets/textures/blockout_textures/64/nature/nature_water_2.png.import b/assets/textures/blockout_textures/64/nature/nature_water_2.png.import new file mode 100644 index 0000000..05cebdb --- /dev/null +++ b/assets/textures/blockout_textures/64/nature/nature_water_2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bsx1g73dvrmg" +path="res://.godot/imported/nature_water_2.png-863fc3e3967199c269c69be8050c9b83.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/nature/nature_water_2.png" +dest_files=["res://.godot/imported/nature_water_2.png-863fc3e3967199c269c69be8050c9b83.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/nature/nature_water_3.png b/assets/textures/blockout_textures/64/nature/nature_water_3.png new file mode 100644 index 0000000..53f461b Binary files /dev/null and b/assets/textures/blockout_textures/64/nature/nature_water_3.png differ diff --git a/assets/textures/blockout_textures/64/nature/nature_water_3.png.import b/assets/textures/blockout_textures/64/nature/nature_water_3.png.import new file mode 100644 index 0000000..5bd4bb7 --- /dev/null +++ b/assets/textures/blockout_textures/64/nature/nature_water_3.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://8386a7rlvobt" +path="res://.godot/imported/nature_water_3.png-d84e51733934b2f1c9cb9b5b15c29479.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/nature/nature_water_3.png" +dest_files=["res://.godot/imported/nature_water_3.png-d84e51733934b2f1c9cb9b5b15c29479.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/blockout_textures/64/nature/nature_water_4.png b/assets/textures/blockout_textures/64/nature/nature_water_4.png new file mode 100644 index 0000000..2f335a9 Binary files /dev/null and b/assets/textures/blockout_textures/64/nature/nature_water_4.png differ diff --git a/assets/textures/blockout_textures/64/nature/nature_water_4.png.import b/assets/textures/blockout_textures/64/nature/nature_water_4.png.import new file mode 100644 index 0000000..74b4396 --- /dev/null +++ b/assets/textures/blockout_textures/64/nature/nature_water_4.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bwrdhn5fn7bys" +path="res://.godot/imported/nature_water_4.png-9944707de00ae845425ab7b715cfdf6b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/blockout_textures/64/nature/nature_water_4.png" +dest_files=["res://.godot/imported/nature_water_4.png-9944707de00ae845425ab7b715cfdf6b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/ceiling_interior/ceiling_interior_ao_1k.jpg b/assets/textures/ceiling_interior/ceiling_interior_ao_1k.jpg new file mode 100644 index 0000000..fe38803 Binary files /dev/null and b/assets/textures/ceiling_interior/ceiling_interior_ao_1k.jpg differ diff --git a/assets/textures/ceiling_interior/ceiling_interior_ao_1k.jpg.import b/assets/textures/ceiling_interior/ceiling_interior_ao_1k.jpg.import new file mode 100644 index 0000000..073acee --- /dev/null +++ b/assets/textures/ceiling_interior/ceiling_interior_ao_1k.jpg.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dk0oyd3wgqm7c" +path="res://.godot/imported/ceiling_interior_ao_1k.jpg-72ac65d5a5a26fee32024ccf746bcefd.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/ceiling_interior/ceiling_interior_ao_1k.jpg" +dest_files=["res://.godot/imported/ceiling_interior_ao_1k.jpg-72ac65d5a5a26fee32024ccf746bcefd.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/ceiling_interior/ceiling_interior_arm_1k.jpg b/assets/textures/ceiling_interior/ceiling_interior_arm_1k.jpg new file mode 100644 index 0000000..0496009 Binary files /dev/null and b/assets/textures/ceiling_interior/ceiling_interior_arm_1k.jpg differ diff --git a/assets/textures/ceiling_interior/ceiling_interior_arm_1k.jpg.import b/assets/textures/ceiling_interior/ceiling_interior_arm_1k.jpg.import new file mode 100644 index 0000000..3220895 --- /dev/null +++ b/assets/textures/ceiling_interior/ceiling_interior_arm_1k.jpg.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b6r5r8fo8q8wb" +path="res://.godot/imported/ceiling_interior_arm_1k.jpg-e1f3b8e8debddb7f158b8e83dcb6adb0.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/ceiling_interior/ceiling_interior_arm_1k.jpg" +dest_files=["res://.godot/imported/ceiling_interior_arm_1k.jpg-e1f3b8e8debddb7f158b8e83dcb6adb0.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/ceiling_interior/ceiling_interior_diff_1k.jpg b/assets/textures/ceiling_interior/ceiling_interior_diff_1k.jpg new file mode 100644 index 0000000..2168405 Binary files /dev/null and b/assets/textures/ceiling_interior/ceiling_interior_diff_1k.jpg differ diff --git a/assets/textures/ceiling_interior/ceiling_interior_diff_1k.jpg.import b/assets/textures/ceiling_interior/ceiling_interior_diff_1k.jpg.import new file mode 100644 index 0000000..7252afe --- /dev/null +++ b/assets/textures/ceiling_interior/ceiling_interior_diff_1k.jpg.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c55a38jwcix6k" +path.s3tc="res://.godot/imported/ceiling_interior_diff_1k.jpg-33f6a31c63ca9b3ecaa40b409ad4d610.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/ceiling_interior/ceiling_interior_diff_1k.jpg" +dest_files=["res://.godot/imported/ceiling_interior_diff_1k.jpg-33f6a31c63ca9b3ecaa40b409ad4d610.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/ceiling_interior/ceiling_interior_disp_1k.png b/assets/textures/ceiling_interior/ceiling_interior_disp_1k.png new file mode 100644 index 0000000..f616cfe Binary files /dev/null and b/assets/textures/ceiling_interior/ceiling_interior_disp_1k.png differ diff --git a/assets/textures/ceiling_interior/ceiling_interior_disp_1k.png.import b/assets/textures/ceiling_interior/ceiling_interior_disp_1k.png.import new file mode 100644 index 0000000..3592a78 --- /dev/null +++ b/assets/textures/ceiling_interior/ceiling_interior_disp_1k.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bvmpkbnupwxyc" +path.s3tc="res://.godot/imported/ceiling_interior_disp_1k.png-21374bfb5a1104b67d3899732ccd7ae3.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/ceiling_interior/ceiling_interior_disp_1k.png" +dest_files=["res://.godot/imported/ceiling_interior_disp_1k.png-21374bfb5a1104b67d3899732ccd7ae3.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/cracked_texture.png b/assets/textures/cracked_texture.png new file mode 100644 index 0000000..7703a1a Binary files /dev/null and b/assets/textures/cracked_texture.png differ diff --git a/assets/textures/cracked_texture.png.import b/assets/textures/cracked_texture.png.import new file mode 100644 index 0000000..8f0eef4 --- /dev/null +++ b/assets/textures/cracked_texture.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dubgjsy23ewhg" +path.s3tc="res://.godot/imported/cracked_texture.png-2542c06d3f3dfbb3da74db90f2c26895.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/cracked_texture.png" +dest_files=["res://.godot/imported/cracked_texture.png-2542c06d3f3dfbb3da74db90f2c26895.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/fabric_carpet/Carpet006_1K-PNG/Carpet006_1K-PNG_Color.png b/assets/textures/fabric_carpet/Carpet006_1K-PNG/Carpet006_1K-PNG_Color.png new file mode 100644 index 0000000..88937c8 Binary files /dev/null and b/assets/textures/fabric_carpet/Carpet006_1K-PNG/Carpet006_1K-PNG_Color.png differ diff --git a/assets/textures/fabric_carpet/Carpet006_1K-PNG/Carpet006_1K-PNG_Color.png.import b/assets/textures/fabric_carpet/Carpet006_1K-PNG/Carpet006_1K-PNG_Color.png.import new file mode 100644 index 0000000..79a2d98 --- /dev/null +++ b/assets/textures/fabric_carpet/Carpet006_1K-PNG/Carpet006_1K-PNG_Color.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cyqix1881ye4b" +path.s3tc="res://.godot/imported/Carpet006_1K-PNG_Color.png-295924f0f78b2051017cb0b85cf36867.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/fabric_carpet/Carpet006_1K-PNG/Carpet006_1K-PNG_Color.png" +dest_files=["res://.godot/imported/Carpet006_1K-PNG_Color.png-295924f0f78b2051017cb0b85cf36867.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/fabric_carpet/Carpet006_1K-PNG/Carpet006_1K-PNG_NormalGL.png b/assets/textures/fabric_carpet/Carpet006_1K-PNG/Carpet006_1K-PNG_NormalGL.png new file mode 100644 index 0000000..80622a4 Binary files /dev/null and b/assets/textures/fabric_carpet/Carpet006_1K-PNG/Carpet006_1K-PNG_NormalGL.png differ diff --git a/assets/textures/fabric_carpet/Carpet006_1K-PNG/Carpet006_1K-PNG_NormalGL.png.import b/assets/textures/fabric_carpet/Carpet006_1K-PNG/Carpet006_1K-PNG_NormalGL.png.import new file mode 100644 index 0000000..58dd55c --- /dev/null +++ b/assets/textures/fabric_carpet/Carpet006_1K-PNG/Carpet006_1K-PNG_NormalGL.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bnem2i1rnblv2" +path="res://.godot/imported/Carpet006_1K-PNG_NormalGL.png-26cddb231452b006b592da4c7480b3ef.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/fabric_carpet/Carpet006_1K-PNG/Carpet006_1K-PNG_NormalGL.png" +dest_files=["res://.godot/imported/Carpet006_1K-PNG_NormalGL.png-26cddb231452b006b592da4c7480b3ef.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/fabric_carpet/Carpet006_1K-PNG/Carpet006_1K-PNG_Roughness.png b/assets/textures/fabric_carpet/Carpet006_1K-PNG/Carpet006_1K-PNG_Roughness.png new file mode 100644 index 0000000..e68e4cc Binary files /dev/null and b/assets/textures/fabric_carpet/Carpet006_1K-PNG/Carpet006_1K-PNG_Roughness.png differ diff --git a/assets/textures/fabric_carpet/Carpet006_1K-PNG/Carpet006_1K-PNG_Roughness.png.import b/assets/textures/fabric_carpet/Carpet006_1K-PNG/Carpet006_1K-PNG_Roughness.png.import new file mode 100644 index 0000000..6f231b5 --- /dev/null +++ b/assets/textures/fabric_carpet/Carpet006_1K-PNG/Carpet006_1K-PNG_Roughness.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://e4kw2xl2kaq7" +path="res://.godot/imported/Carpet006_1K-PNG_Roughness.png-823aa6d18e235f15f270d6adac0e0147.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/fabric_carpet/Carpet006_1K-PNG/Carpet006_1K-PNG_Roughness.png" +dest_files=["res://.godot/imported/Carpet006_1K-PNG_Roughness.png-823aa6d18e235f15f270d6adac0e0147.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/fabric_carpet/Carpet011_1K-PNG/Carpet011_1K-PNG_Color.png b/assets/textures/fabric_carpet/Carpet011_1K-PNG/Carpet011_1K-PNG_Color.png new file mode 100644 index 0000000..6c60082 Binary files /dev/null and b/assets/textures/fabric_carpet/Carpet011_1K-PNG/Carpet011_1K-PNG_Color.png differ diff --git a/assets/textures/fabric_carpet/Carpet011_1K-PNG/Carpet011_1K-PNG_Color.png.import b/assets/textures/fabric_carpet/Carpet011_1K-PNG/Carpet011_1K-PNG_Color.png.import new file mode 100644 index 0000000..a581552 --- /dev/null +++ b/assets/textures/fabric_carpet/Carpet011_1K-PNG/Carpet011_1K-PNG_Color.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dykojb1kryd3m" +path.s3tc="res://.godot/imported/Carpet011_1K-PNG_Color.png-7a99474bfabba052f857f8bdb3bff0b4.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/fabric_carpet/Carpet011_1K-PNG/Carpet011_1K-PNG_Color.png" +dest_files=["res://.godot/imported/Carpet011_1K-PNG_Color.png-7a99474bfabba052f857f8bdb3bff0b4.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/fabric_carpet/Carpet011_1K-PNG/Carpet011_1K-PNG_NormalGL.png b/assets/textures/fabric_carpet/Carpet011_1K-PNG/Carpet011_1K-PNG_NormalGL.png new file mode 100644 index 0000000..e60b485 Binary files /dev/null and b/assets/textures/fabric_carpet/Carpet011_1K-PNG/Carpet011_1K-PNG_NormalGL.png differ diff --git a/assets/textures/fabric_carpet/Carpet011_1K-PNG/Carpet011_1K-PNG_NormalGL.png.import b/assets/textures/fabric_carpet/Carpet011_1K-PNG/Carpet011_1K-PNG_NormalGL.png.import new file mode 100644 index 0000000..371fb58 --- /dev/null +++ b/assets/textures/fabric_carpet/Carpet011_1K-PNG/Carpet011_1K-PNG_NormalGL.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dy56rg14cc467" +path="res://.godot/imported/Carpet011_1K-PNG_NormalGL.png-dfb090f3d792d86a3505b281704a6632.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/fabric_carpet/Carpet011_1K-PNG/Carpet011_1K-PNG_NormalGL.png" +dest_files=["res://.godot/imported/Carpet011_1K-PNG_NormalGL.png-dfb090f3d792d86a3505b281704a6632.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/fabric_carpet/Carpet011_1K-PNG/Carpet011_1K-PNG_Roughness.png b/assets/textures/fabric_carpet/Carpet011_1K-PNG/Carpet011_1K-PNG_Roughness.png new file mode 100644 index 0000000..288d714 Binary files /dev/null and b/assets/textures/fabric_carpet/Carpet011_1K-PNG/Carpet011_1K-PNG_Roughness.png differ diff --git a/assets/textures/fabric_carpet/Carpet011_1K-PNG/Carpet011_1K-PNG_Roughness.png.import b/assets/textures/fabric_carpet/Carpet011_1K-PNG/Carpet011_1K-PNG_Roughness.png.import new file mode 100644 index 0000000..e6c2889 --- /dev/null +++ b/assets/textures/fabric_carpet/Carpet011_1K-PNG/Carpet011_1K-PNG_Roughness.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dd8ig425ob1mt" +path="res://.godot/imported/Carpet011_1K-PNG_Roughness.png-6f573e47c43804af4e65f7cef9b5a883.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/fabric_carpet/Carpet011_1K-PNG/Carpet011_1K-PNG_Roughness.png" +dest_files=["res://.godot/imported/Carpet011_1K-PNG_Roughness.png-6f573e47c43804af4e65f7cef9b5a883.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/fabric_carpet/arcadefloor.png b/assets/textures/fabric_carpet/arcadefloor.png new file mode 100644 index 0000000..71acf37 Binary files /dev/null and b/assets/textures/fabric_carpet/arcadefloor.png differ diff --git a/assets/textures/fabric_carpet/arcadefloor.png.import b/assets/textures/fabric_carpet/arcadefloor.png.import new file mode 100644 index 0000000..125a01d --- /dev/null +++ b/assets/textures/fabric_carpet/arcadefloor.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bjc0kgb8rbntp" +path.s3tc="res://.godot/imported/arcadefloor.png-d085465c8627d4f0d52c5213026bd854.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/fabric_carpet/arcadefloor.png" +dest_files=["res://.godot/imported/arcadefloor.png-d085465c8627d4f0d52c5213026bd854.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/fabric_carpet/quarterfoil_jacquard_fabric/quatrefoil_jacquard_fabric_arm_1k.jpg b/assets/textures/fabric_carpet/quarterfoil_jacquard_fabric/quatrefoil_jacquard_fabric_arm_1k.jpg new file mode 100644 index 0000000..d8ffc70 Binary files /dev/null and b/assets/textures/fabric_carpet/quarterfoil_jacquard_fabric/quatrefoil_jacquard_fabric_arm_1k.jpg differ diff --git a/assets/textures/fabric_carpet/quarterfoil_jacquard_fabric/quatrefoil_jacquard_fabric_arm_1k.jpg.import b/assets/textures/fabric_carpet/quarterfoil_jacquard_fabric/quatrefoil_jacquard_fabric_arm_1k.jpg.import new file mode 100644 index 0000000..6f99eba --- /dev/null +++ b/assets/textures/fabric_carpet/quarterfoil_jacquard_fabric/quatrefoil_jacquard_fabric_arm_1k.jpg.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dhk0kv01jw5df" +path="res://.godot/imported/quatrefoil_jacquard_fabric_arm_1k.jpg-beda928ae3c06f60b7e2d49cfef5d1bc.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/fabric_carpet/quarterfoil_jacquard_fabric/quatrefoil_jacquard_fabric_arm_1k.jpg" +dest_files=["res://.godot/imported/quatrefoil_jacquard_fabric_arm_1k.jpg-beda928ae3c06f60b7e2d49cfef5d1bc.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/fabric_carpet/quarterfoil_jacquard_fabric/quatrefoil_jacquard_fabric_diff_1k.jpg b/assets/textures/fabric_carpet/quarterfoil_jacquard_fabric/quatrefoil_jacquard_fabric_diff_1k.jpg new file mode 100644 index 0000000..3d5ea89 Binary files /dev/null and b/assets/textures/fabric_carpet/quarterfoil_jacquard_fabric/quatrefoil_jacquard_fabric_diff_1k.jpg differ diff --git a/assets/textures/fabric_carpet/quarterfoil_jacquard_fabric/quatrefoil_jacquard_fabric_diff_1k.jpg.import b/assets/textures/fabric_carpet/quarterfoil_jacquard_fabric/quatrefoil_jacquard_fabric_diff_1k.jpg.import new file mode 100644 index 0000000..07326dd --- /dev/null +++ b/assets/textures/fabric_carpet/quarterfoil_jacquard_fabric/quatrefoil_jacquard_fabric_diff_1k.jpg.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bwfi4g6mwgjhd" +path.s3tc="res://.godot/imported/quatrefoil_jacquard_fabric_diff_1k.jpg-711d90d37033f4cfd3a0cd4bf60bf278.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/fabric_carpet/quarterfoil_jacquard_fabric/quatrefoil_jacquard_fabric_diff_1k.jpg" +dest_files=["res://.godot/imported/quatrefoil_jacquard_fabric_diff_1k.jpg-711d90d37033f4cfd3a0cd4bf60bf278.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/fabric_carpet/quarterfoil_jacquard_fabric/quatrefoil_jacquard_fabric_disp_1k.jpg b/assets/textures/fabric_carpet/quarterfoil_jacquard_fabric/quatrefoil_jacquard_fabric_disp_1k.jpg new file mode 100644 index 0000000..bcc5f96 Binary files /dev/null and b/assets/textures/fabric_carpet/quarterfoil_jacquard_fabric/quatrefoil_jacquard_fabric_disp_1k.jpg differ diff --git a/assets/textures/fabric_carpet/quarterfoil_jacquard_fabric/quatrefoil_jacquard_fabric_disp_1k.jpg.import b/assets/textures/fabric_carpet/quarterfoil_jacquard_fabric/quatrefoil_jacquard_fabric_disp_1k.jpg.import new file mode 100644 index 0000000..d009eae --- /dev/null +++ b/assets/textures/fabric_carpet/quarterfoil_jacquard_fabric/quatrefoil_jacquard_fabric_disp_1k.jpg.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d8g0tmt3t25b" +path="res://.godot/imported/quatrefoil_jacquard_fabric_disp_1k.jpg-99b37461b0f7db7e29e49b473cd98496.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/fabric_carpet/quarterfoil_jacquard_fabric/quatrefoil_jacquard_fabric_disp_1k.jpg" +dest_files=["res://.godot/imported/quatrefoil_jacquard_fabric_disp_1k.jpg-99b37461b0f7db7e29e49b473cd98496.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/fabric_carpet/quarterfoil_jacquard_fabric/quatrefoil_jacquard_fabric_metal_1k.jpg b/assets/textures/fabric_carpet/quarterfoil_jacquard_fabric/quatrefoil_jacquard_fabric_metal_1k.jpg new file mode 100644 index 0000000..16bb195 Binary files /dev/null and b/assets/textures/fabric_carpet/quarterfoil_jacquard_fabric/quatrefoil_jacquard_fabric_metal_1k.jpg differ diff --git a/assets/textures/fabric_carpet/quarterfoil_jacquard_fabric/quatrefoil_jacquard_fabric_metal_1k.jpg.import b/assets/textures/fabric_carpet/quarterfoil_jacquard_fabric/quatrefoil_jacquard_fabric_metal_1k.jpg.import new file mode 100644 index 0000000..27b3014 --- /dev/null +++ b/assets/textures/fabric_carpet/quarterfoil_jacquard_fabric/quatrefoil_jacquard_fabric_metal_1k.jpg.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://8lhcu35nd18p" +path.s3tc="res://.godot/imported/quatrefoil_jacquard_fabric_metal_1k.jpg-7debdae0054ae7af70a2721264b46b13.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/fabric_carpet/quarterfoil_jacquard_fabric/quatrefoil_jacquard_fabric_metal_1k.jpg" +dest_files=["res://.godot/imported/quatrefoil_jacquard_fabric_metal_1k.jpg-7debdae0054ae7af70a2721264b46b13.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/fabric_carpet/quarterfoil_jacquard_fabric/quatrefoil_jacquard_fabric_nor_gl_1k.jpg b/assets/textures/fabric_carpet/quarterfoil_jacquard_fabric/quatrefoil_jacquard_fabric_nor_gl_1k.jpg new file mode 100644 index 0000000..29b32dc Binary files /dev/null and b/assets/textures/fabric_carpet/quarterfoil_jacquard_fabric/quatrefoil_jacquard_fabric_nor_gl_1k.jpg differ diff --git a/assets/textures/fabric_carpet/quarterfoil_jacquard_fabric/quatrefoil_jacquard_fabric_nor_gl_1k.jpg.import b/assets/textures/fabric_carpet/quarterfoil_jacquard_fabric/quatrefoil_jacquard_fabric_nor_gl_1k.jpg.import new file mode 100644 index 0000000..f204a75 --- /dev/null +++ b/assets/textures/fabric_carpet/quarterfoil_jacquard_fabric/quatrefoil_jacquard_fabric_nor_gl_1k.jpg.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bifkjtqsrog6l" +path.s3tc="res://.godot/imported/quatrefoil_jacquard_fabric_nor_gl_1k.jpg-146103c2425fde3cf75773574e1a8664.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/fabric_carpet/quarterfoil_jacquard_fabric/quatrefoil_jacquard_fabric_nor_gl_1k.jpg" +dest_files=["res://.godot/imported/quatrefoil_jacquard_fabric_nor_gl_1k.jpg-146103c2425fde3cf75773574e1a8664.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=1 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=1 +roughness/src_normal="res://assets/textures/fabric_carpet/quarterfoil_jacquard_fabric/quatrefoil_jacquard_fabric_nor_gl_1k.jpg" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/fabric_carpet/quarterfoil_jacquard_fabric/quatrefoil_jacquard_fabric_rough_1k.jpg b/assets/textures/fabric_carpet/quarterfoil_jacquard_fabric/quatrefoil_jacquard_fabric_rough_1k.jpg new file mode 100644 index 0000000..1b89dcc Binary files /dev/null and b/assets/textures/fabric_carpet/quarterfoil_jacquard_fabric/quatrefoil_jacquard_fabric_rough_1k.jpg differ diff --git a/assets/textures/fabric_carpet/quarterfoil_jacquard_fabric/quatrefoil_jacquard_fabric_rough_1k.jpg.import b/assets/textures/fabric_carpet/quarterfoil_jacquard_fabric/quatrefoil_jacquard_fabric_rough_1k.jpg.import new file mode 100644 index 0000000..00edbd9 --- /dev/null +++ b/assets/textures/fabric_carpet/quarterfoil_jacquard_fabric/quatrefoil_jacquard_fabric_rough_1k.jpg.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://deyf46mtvu3l3" +path.s3tc="res://.godot/imported/quatrefoil_jacquard_fabric_rough_1k.jpg-fd79f6da6256fb0c5fc308bc9abe8b8b.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/fabric_carpet/quarterfoil_jacquard_fabric/quatrefoil_jacquard_fabric_rough_1k.jpg" +dest_files=["res://.godot/imported/quatrefoil_jacquard_fabric_rough_1k.jpg-fd79f6da6256fb0c5fc308bc9abe8b8b.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/fabric_carpet/velour_velvet/velour_velvet_ao_1k.jpg b/assets/textures/fabric_carpet/velour_velvet/velour_velvet_ao_1k.jpg new file mode 100644 index 0000000..f3d83d4 Binary files /dev/null and b/assets/textures/fabric_carpet/velour_velvet/velour_velvet_ao_1k.jpg differ diff --git a/assets/textures/fabric_carpet/velour_velvet/velour_velvet_ao_1k.jpg.import b/assets/textures/fabric_carpet/velour_velvet/velour_velvet_ao_1k.jpg.import new file mode 100644 index 0000000..78ba883 --- /dev/null +++ b/assets/textures/fabric_carpet/velour_velvet/velour_velvet_ao_1k.jpg.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://doxivgcyw53ex" +path="res://.godot/imported/velour_velvet_ao_1k.jpg-35666cb2e1486f641c986c759e8e1c84.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/fabric_carpet/velour_velvet/velour_velvet_ao_1k.jpg" +dest_files=["res://.godot/imported/velour_velvet_ao_1k.jpg-35666cb2e1486f641c986c759e8e1c84.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/fabric_carpet/velour_velvet/velour_velvet_arm_1k.jpg b/assets/textures/fabric_carpet/velour_velvet/velour_velvet_arm_1k.jpg new file mode 100644 index 0000000..f051d29 Binary files /dev/null and b/assets/textures/fabric_carpet/velour_velvet/velour_velvet_arm_1k.jpg differ diff --git a/assets/textures/fabric_carpet/velour_velvet/velour_velvet_arm_1k.jpg.import b/assets/textures/fabric_carpet/velour_velvet/velour_velvet_arm_1k.jpg.import new file mode 100644 index 0000000..26cd182 --- /dev/null +++ b/assets/textures/fabric_carpet/velour_velvet/velour_velvet_arm_1k.jpg.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://hfvjimtglymm" +path="res://.godot/imported/velour_velvet_arm_1k.jpg-46219053ba36d0a5d174f9aba0e832db.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/fabric_carpet/velour_velvet/velour_velvet_arm_1k.jpg" +dest_files=["res://.godot/imported/velour_velvet_arm_1k.jpg-46219053ba36d0a5d174f9aba0e832db.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/fabric_carpet/velour_velvet/velour_velvet_diff_1k.jpg b/assets/textures/fabric_carpet/velour_velvet/velour_velvet_diff_1k.jpg new file mode 100644 index 0000000..a2c55b6 Binary files /dev/null and b/assets/textures/fabric_carpet/velour_velvet/velour_velvet_diff_1k.jpg differ diff --git a/assets/textures/fabric_carpet/velour_velvet/velour_velvet_diff_1k.jpg.import b/assets/textures/fabric_carpet/velour_velvet/velour_velvet_diff_1k.jpg.import new file mode 100644 index 0000000..7233b84 --- /dev/null +++ b/assets/textures/fabric_carpet/velour_velvet/velour_velvet_diff_1k.jpg.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://qkkfwk1pn85v" +path.s3tc="res://.godot/imported/velour_velvet_diff_1k.jpg-ca975730908344509edb8181c0afa20a.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/fabric_carpet/velour_velvet/velour_velvet_diff_1k.jpg" +dest_files=["res://.godot/imported/velour_velvet_diff_1k.jpg-ca975730908344509edb8181c0afa20a.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/fabric_carpet/velour_velvet/velour_velvet_disp_1k.jpg b/assets/textures/fabric_carpet/velour_velvet/velour_velvet_disp_1k.jpg new file mode 100644 index 0000000..b5f2173 Binary files /dev/null and b/assets/textures/fabric_carpet/velour_velvet/velour_velvet_disp_1k.jpg differ diff --git a/assets/textures/fabric_carpet/velour_velvet/velour_velvet_disp_1k.jpg.import b/assets/textures/fabric_carpet/velour_velvet/velour_velvet_disp_1k.jpg.import new file mode 100644 index 0000000..a028650 --- /dev/null +++ b/assets/textures/fabric_carpet/velour_velvet/velour_velvet_disp_1k.jpg.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c60en601tell1" +path="res://.godot/imported/velour_velvet_disp_1k.jpg-55f49ab8c8d7c3efca19e6f4bec6dbf7.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/fabric_carpet/velour_velvet/velour_velvet_disp_1k.jpg" +dest_files=["res://.godot/imported/velour_velvet_disp_1k.jpg-55f49ab8c8d7c3efca19e6f4bec6dbf7.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/fabric_carpet/velour_velvet/velour_velvet_metal_1k.jpg b/assets/textures/fabric_carpet/velour_velvet/velour_velvet_metal_1k.jpg new file mode 100644 index 0000000..995d778 Binary files /dev/null and b/assets/textures/fabric_carpet/velour_velvet/velour_velvet_metal_1k.jpg differ diff --git a/assets/textures/fabric_carpet/velour_velvet/velour_velvet_metal_1k.jpg.import b/assets/textures/fabric_carpet/velour_velvet/velour_velvet_metal_1k.jpg.import new file mode 100644 index 0000000..133d5e0 --- /dev/null +++ b/assets/textures/fabric_carpet/velour_velvet/velour_velvet_metal_1k.jpg.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cp0lt8d8r3otb" +path.s3tc="res://.godot/imported/velour_velvet_metal_1k.jpg-42a63ea707f0e080d1be8783d29041da.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/fabric_carpet/velour_velvet/velour_velvet_metal_1k.jpg" +dest_files=["res://.godot/imported/velour_velvet_metal_1k.jpg-42a63ea707f0e080d1be8783d29041da.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/fabric_carpet/velour_velvet/velour_velvet_nor_gl_1k.jpg b/assets/textures/fabric_carpet/velour_velvet/velour_velvet_nor_gl_1k.jpg new file mode 100644 index 0000000..980f2e9 Binary files /dev/null and b/assets/textures/fabric_carpet/velour_velvet/velour_velvet_nor_gl_1k.jpg differ diff --git a/assets/textures/fabric_carpet/velour_velvet/velour_velvet_nor_gl_1k.jpg.import b/assets/textures/fabric_carpet/velour_velvet/velour_velvet_nor_gl_1k.jpg.import new file mode 100644 index 0000000..18d439e --- /dev/null +++ b/assets/textures/fabric_carpet/velour_velvet/velour_velvet_nor_gl_1k.jpg.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://u18v7fe875we" +path.s3tc="res://.godot/imported/velour_velvet_nor_gl_1k.jpg-55c95373ab4ba2c25ca0594e7613cce1.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/fabric_carpet/velour_velvet/velour_velvet_nor_gl_1k.jpg" +dest_files=["res://.godot/imported/velour_velvet_nor_gl_1k.jpg-55c95373ab4ba2c25ca0594e7613cce1.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=1 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=1 +roughness/src_normal="res://assets/textures/velour_velvet/velour_velvet_nor_gl_1k.jpg" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/fabric_carpet/velour_velvet/velour_velvet_rough_1k.jpg b/assets/textures/fabric_carpet/velour_velvet/velour_velvet_rough_1k.jpg new file mode 100644 index 0000000..19cda55 Binary files /dev/null and b/assets/textures/fabric_carpet/velour_velvet/velour_velvet_rough_1k.jpg differ diff --git a/assets/textures/fabric_carpet/velour_velvet/velour_velvet_rough_1k.jpg.import b/assets/textures/fabric_carpet/velour_velvet/velour_velvet_rough_1k.jpg.import new file mode 100644 index 0000000..b206298 --- /dev/null +++ b/assets/textures/fabric_carpet/velour_velvet/velour_velvet_rough_1k.jpg.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dbej44vy4ies0" +path.s3tc="res://.godot/imported/velour_velvet_rough_1k.jpg-080fa90be04f5017b5bc2c2b50d73231.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/fabric_carpet/velour_velvet/velour_velvet_rough_1k.jpg" +dest_files=["res://.godot/imported/velour_velvet_rough_1k.jpg-080fa90be04f5017b5bc2c2b50d73231.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/ground/Ground029_1K-PNG_Color.png b/assets/textures/ground/Ground029_1K-PNG_Color.png new file mode 100644 index 0000000..29d5a1d Binary files /dev/null and b/assets/textures/ground/Ground029_1K-PNG_Color.png differ diff --git a/assets/textures/ground/Ground029_1K-PNG_Color.png.import b/assets/textures/ground/Ground029_1K-PNG_Color.png.import new file mode 100644 index 0000000..e7ab2e8 --- /dev/null +++ b/assets/textures/ground/Ground029_1K-PNG_Color.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://tfnf487admec" +path.s3tc="res://.godot/imported/Ground029_1K-PNG_Color.png-a4ca1c6f9f5d7e0f6c08978e6965086b.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/ground/Ground029_1K-PNG_Color.png" +dest_files=["res://.godot/imported/Ground029_1K-PNG_Color.png-a4ca1c6f9f5d7e0f6c08978e6965086b.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/ground/Ground048/Ground048.png b/assets/textures/ground/Ground048/Ground048.png new file mode 100644 index 0000000..9f5dc31 Binary files /dev/null and b/assets/textures/ground/Ground048/Ground048.png differ diff --git a/assets/textures/ground/Ground048/Ground048.png.import b/assets/textures/ground/Ground048/Ground048.png.import new file mode 100644 index 0000000..16a5fd0 --- /dev/null +++ b/assets/textures/ground/Ground048/Ground048.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://da7wbjpbul6bh" +path="res://.godot/imported/Ground048.png-7f2cea33e5f6913b66f1080f54c9cd9d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/ground/Ground048/Ground048.png" +dest_files=["res://.godot/imported/Ground048.png-7f2cea33e5f6913b66f1080f54c9cd9d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/ground/Ground048/Ground048_1K-PNG.blend b/assets/textures/ground/Ground048/Ground048_1K-PNG.blend new file mode 100644 index 0000000..5859e7a Binary files /dev/null and b/assets/textures/ground/Ground048/Ground048_1K-PNG.blend differ diff --git a/assets/textures/ground/Ground048/Ground048_1K-PNG.mtlx b/assets/textures/ground/Ground048/Ground048_1K-PNG.mtlx new file mode 100644 index 0000000..fc9cc93 --- /dev/null +++ b/assets/textures/ground/Ground048/Ground048_1K-PNG.mtlx @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/textures/ground/Ground048/Ground048_1K-PNG.tres b/assets/textures/ground/Ground048/Ground048_1K-PNG.tres new file mode 100644 index 0000000..815c238 --- /dev/null +++ b/assets/textures/ground/Ground048/Ground048_1K-PNG.tres @@ -0,0 +1,19 @@ +[gd_resource type="StandardMaterial3D" load_steps=6 format=3] + +[ext_resource type="Texture2D" path="./Ground048_1K-PNG_Color.png" id="Color"] +[ext_resource type="Texture2D" path="./Ground048_1K-PNG_AmbientOcclusion.png" id="AmbientOcclusion"] +[ext_resource type="Texture2D" path="./Ground048_1K-PNG_Displacement.png" id="Displacement"] +[ext_resource type="Texture2D" path="./Ground048_1K-PNG_Roughness.png" id="Roughness"] +[ext_resource type="Texture2D" path="./Ground048_1K-PNG_NormalGL.png" id="NormalGL"] +[resource] +albedo_texture = ExtResource("Color") +ao_enabled = true +ao_texture = ExtResource("AmbientOcclusion") +ao_texture_channel = 4 +roughness_texture = ExtResource("Roughness") +roughness_texture_channel = 4 +normal_texture = ExtResource("NormalGL") +normal_enabled = true +heightmap_texture = ExtResource("Displacement") +heightmap_scale = 1.0 +heightmap_enabled = true diff --git a/assets/textures/ground/Ground048/Ground048_1K-PNG.usdc b/assets/textures/ground/Ground048/Ground048_1K-PNG.usdc new file mode 100644 index 0000000..f11b485 Binary files /dev/null and b/assets/textures/ground/Ground048/Ground048_1K-PNG.usdc differ diff --git a/assets/textures/ground/Ground048/Ground048_1K-PNG_AmbientOcclusion.png b/assets/textures/ground/Ground048/Ground048_1K-PNG_AmbientOcclusion.png new file mode 100644 index 0000000..1371cec Binary files /dev/null and b/assets/textures/ground/Ground048/Ground048_1K-PNG_AmbientOcclusion.png differ diff --git a/assets/textures/ground/Ground048/Ground048_1K-PNG_AmbientOcclusion.png.import b/assets/textures/ground/Ground048/Ground048_1K-PNG_AmbientOcclusion.png.import new file mode 100644 index 0000000..fa613d4 --- /dev/null +++ b/assets/textures/ground/Ground048/Ground048_1K-PNG_AmbientOcclusion.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ryaim1unb321" +path.s3tc="res://.godot/imported/Ground048_1K-PNG_AmbientOcclusion.png-7523be4cdadb3e0e26a0ee4a88193783.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/ground/Ground048/Ground048_1K-PNG_AmbientOcclusion.png" +dest_files=["res://.godot/imported/Ground048_1K-PNG_AmbientOcclusion.png-7523be4cdadb3e0e26a0ee4a88193783.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=8 +roughness/src_normal="res://assets/textures/ground/ambientCG_Ground048_1K-PNG/Ground048_1K-PNG_NormalGL.png" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/ground/Ground048/Ground048_1K-PNG_Color.png b/assets/textures/ground/Ground048/Ground048_1K-PNG_Color.png new file mode 100644 index 0000000..1ba95ae Binary files /dev/null and b/assets/textures/ground/Ground048/Ground048_1K-PNG_Color.png differ diff --git a/assets/textures/ground/Ground048/Ground048_1K-PNG_Color.png.import b/assets/textures/ground/Ground048/Ground048_1K-PNG_Color.png.import new file mode 100644 index 0000000..156c75d --- /dev/null +++ b/assets/textures/ground/Ground048/Ground048_1K-PNG_Color.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://gat7htvdapsp" +path.s3tc="res://.godot/imported/Ground048_1K-PNG_Color.png-a9c18147492348bdc4f8dc8ef023c69c.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/ground/Ground048/Ground048_1K-PNG_Color.png" +dest_files=["res://.godot/imported/Ground048_1K-PNG_Color.png-a9c18147492348bdc4f8dc8ef023c69c.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/ground/Ground048/Ground048_1K-PNG_Displacement.png b/assets/textures/ground/Ground048/Ground048_1K-PNG_Displacement.png new file mode 100644 index 0000000..0fdefef Binary files /dev/null and b/assets/textures/ground/Ground048/Ground048_1K-PNG_Displacement.png differ diff --git a/assets/textures/ground/Ground048/Ground048_1K-PNG_Displacement.png.import b/assets/textures/ground/Ground048/Ground048_1K-PNG_Displacement.png.import new file mode 100644 index 0000000..66c374b --- /dev/null +++ b/assets/textures/ground/Ground048/Ground048_1K-PNG_Displacement.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ybhbtbot8q55" +path.s3tc="res://.godot/imported/Ground048_1K-PNG_Displacement.png-3f3a34b30fa3ad8d2500c1e0bbe72c23.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/ground/Ground048/Ground048_1K-PNG_Displacement.png" +dest_files=["res://.godot/imported/Ground048_1K-PNG_Displacement.png-3f3a34b30fa3ad8d2500c1e0bbe72c23.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=7 +roughness/src_normal="res://assets/textures/ground/ambientCG_Ground048_1K-PNG/Ground048_1K-PNG_NormalGL.png" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/ground/Ground048/Ground048_1K-PNG_NormalGL.png b/assets/textures/ground/Ground048/Ground048_1K-PNG_NormalGL.png new file mode 100644 index 0000000..f77bbfe Binary files /dev/null and b/assets/textures/ground/Ground048/Ground048_1K-PNG_NormalGL.png differ diff --git a/assets/textures/ground/Ground048/Ground048_1K-PNG_NormalGL.png.import b/assets/textures/ground/Ground048/Ground048_1K-PNG_NormalGL.png.import new file mode 100644 index 0000000..33c5ff1 --- /dev/null +++ b/assets/textures/ground/Ground048/Ground048_1K-PNG_NormalGL.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ddkfxln16wgur" +path.s3tc="res://.godot/imported/Ground048_1K-PNG_NormalGL.png-b514b7b34321fa3666becc8dae67ca33.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/ground/Ground048/Ground048_1K-PNG_NormalGL.png" +dest_files=["res://.godot/imported/Ground048_1K-PNG_NormalGL.png-b514b7b34321fa3666becc8dae67ca33.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=1 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=1 +roughness/src_normal="res://assets/textures/ground/ambientCG_Ground048_1K-PNG/Ground048_1K-PNG_NormalGL.png" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/ground/Ground048/Ground048_1K-PNG_Roughness.png b/assets/textures/ground/Ground048/Ground048_1K-PNG_Roughness.png new file mode 100644 index 0000000..bfcb317 Binary files /dev/null and b/assets/textures/ground/Ground048/Ground048_1K-PNG_Roughness.png differ diff --git a/assets/textures/ground/Ground048/Ground048_1K-PNG_Roughness.png.import b/assets/textures/ground/Ground048/Ground048_1K-PNG_Roughness.png.import new file mode 100644 index 0000000..d7ba22b --- /dev/null +++ b/assets/textures/ground/Ground048/Ground048_1K-PNG_Roughness.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bcl0sorkyxttg" +path.s3tc="res://.godot/imported/Ground048_1K-PNG_Roughness.png-24091df7f1fff225c3ea0ddba047f546.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/ground/Ground048/Ground048_1K-PNG_Roughness.png" +dest_files=["res://.godot/imported/Ground048_1K-PNG_Roughness.png-24091df7f1fff225c3ea0ddba047f546.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/ground/brown_mud_leaves_01_1k/brown_mud_leaves_01_diff_1k.png b/assets/textures/ground/brown_mud_leaves_01_1k/brown_mud_leaves_01_diff_1k.png new file mode 100644 index 0000000..e3bb714 Binary files /dev/null and b/assets/textures/ground/brown_mud_leaves_01_1k/brown_mud_leaves_01_diff_1k.png differ diff --git a/assets/textures/ground/brown_mud_leaves_01_1k/brown_mud_leaves_01_diff_1k.png.import b/assets/textures/ground/brown_mud_leaves_01_1k/brown_mud_leaves_01_diff_1k.png.import new file mode 100644 index 0000000..050f687 --- /dev/null +++ b/assets/textures/ground/brown_mud_leaves_01_1k/brown_mud_leaves_01_diff_1k.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ched7i2fi85h1" +path.s3tc="res://.godot/imported/brown_mud_leaves_01_diff_1k.png-6d3111a5d37c8441752ac41337c5d711.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/ground/brown_mud_leaves_01_1k/brown_mud_leaves_01_diff_1k.png" +dest_files=["res://.godot/imported/brown_mud_leaves_01_diff_1k.png-6d3111a5d37c8441752ac41337c5d711.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/ground/brown_mud_leaves_01_1k/brown_mud_leaves_01_nor_gl_1k.png b/assets/textures/ground/brown_mud_leaves_01_1k/brown_mud_leaves_01_nor_gl_1k.png new file mode 100644 index 0000000..3cbb711 Binary files /dev/null and b/assets/textures/ground/brown_mud_leaves_01_1k/brown_mud_leaves_01_nor_gl_1k.png differ diff --git a/assets/textures/ground/brown_mud_leaves_01_1k/brown_mud_leaves_01_nor_gl_1k.png.import b/assets/textures/ground/brown_mud_leaves_01_1k/brown_mud_leaves_01_nor_gl_1k.png.import new file mode 100644 index 0000000..6f8aa94 --- /dev/null +++ b/assets/textures/ground/brown_mud_leaves_01_1k/brown_mud_leaves_01_nor_gl_1k.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bdhcun2yb4xho" +path="res://.godot/imported/brown_mud_leaves_01_nor_gl_1k.png-11ee96c7587d6c0ca09e60fe3cf8a2d3.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/ground/brown_mud_leaves_01_1k/brown_mud_leaves_01_nor_gl_1k.png" +dest_files=["res://.godot/imported/brown_mud_leaves_01_nor_gl_1k.png-11ee96c7587d6c0ca09e60fe3cf8a2d3.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/ground/brown_mud_leaves_01_1k/brown_mud_leaves_01_rough_1k.png b/assets/textures/ground/brown_mud_leaves_01_1k/brown_mud_leaves_01_rough_1k.png new file mode 100644 index 0000000..c3858c9 Binary files /dev/null and b/assets/textures/ground/brown_mud_leaves_01_1k/brown_mud_leaves_01_rough_1k.png differ diff --git a/assets/textures/ground/brown_mud_leaves_01_1k/brown_mud_leaves_01_rough_1k.png.import b/assets/textures/ground/brown_mud_leaves_01_1k/brown_mud_leaves_01_rough_1k.png.import new file mode 100644 index 0000000..fd4f399 --- /dev/null +++ b/assets/textures/ground/brown_mud_leaves_01_1k/brown_mud_leaves_01_rough_1k.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b5iq4gc2h027b" +path.s3tc="res://.godot/imported/brown_mud_leaves_01_rough_1k.png-cad63a512fe53d019d693f7eb6595d60.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/ground/brown_mud_leaves_01_1k/brown_mud_leaves_01_rough_1k.png" +dest_files=["res://.godot/imported/brown_mud_leaves_01_rough_1k.png-cad63a512fe53d019d693f7eb6595d60.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/ground/grass_path_2_1k/grass_path_2_ao_1k.png b/assets/textures/ground/grass_path_2_1k/grass_path_2_ao_1k.png new file mode 100644 index 0000000..5041f86 Binary files /dev/null and b/assets/textures/ground/grass_path_2_1k/grass_path_2_ao_1k.png differ diff --git a/assets/textures/ground/grass_path_2_1k/grass_path_2_ao_1k.png.import b/assets/textures/ground/grass_path_2_1k/grass_path_2_ao_1k.png.import new file mode 100644 index 0000000..fbc0f42 --- /dev/null +++ b/assets/textures/ground/grass_path_2_1k/grass_path_2_ao_1k.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cbfoq3nnp0nv3" +path="res://.godot/imported/grass_path_2_ao_1k.png-0497b9364fdf8a40b6326215bcadcb5f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/ground/grass_path_2_1k/grass_path_2_ao_1k.png" +dest_files=["res://.godot/imported/grass_path_2_ao_1k.png-0497b9364fdf8a40b6326215bcadcb5f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/ground/grass_path_2_1k/grass_path_2_arm_1k.png b/assets/textures/ground/grass_path_2_1k/grass_path_2_arm_1k.png new file mode 100644 index 0000000..98c7466 Binary files /dev/null and b/assets/textures/ground/grass_path_2_1k/grass_path_2_arm_1k.png differ diff --git a/assets/textures/ground/grass_path_2_1k/grass_path_2_arm_1k.png.import b/assets/textures/ground/grass_path_2_1k/grass_path_2_arm_1k.png.import new file mode 100644 index 0000000..5233059 --- /dev/null +++ b/assets/textures/ground/grass_path_2_1k/grass_path_2_arm_1k.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://coxo6rx4d7ypq" +path="res://.godot/imported/grass_path_2_arm_1k.png-e5dbb0ab4782ab18e043ef88fb26ded1.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/ground/grass_path_2_1k/grass_path_2_arm_1k.png" +dest_files=["res://.godot/imported/grass_path_2_arm_1k.png-e5dbb0ab4782ab18e043ef88fb26ded1.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/ground/grass_path_2_1k/grass_path_2_diff_1k.png b/assets/textures/ground/grass_path_2_1k/grass_path_2_diff_1k.png new file mode 100644 index 0000000..c23fa1c Binary files /dev/null and b/assets/textures/ground/grass_path_2_1k/grass_path_2_diff_1k.png differ diff --git a/assets/textures/ground/grass_path_2_1k/grass_path_2_diff_1k.png.import b/assets/textures/ground/grass_path_2_1k/grass_path_2_diff_1k.png.import new file mode 100644 index 0000000..8f9e678 --- /dev/null +++ b/assets/textures/ground/grass_path_2_1k/grass_path_2_diff_1k.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cj6klld5ngra" +path.s3tc="res://.godot/imported/grass_path_2_diff_1k.png-c203c58a92d846e6a3e5488f15f876da.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/ground/grass_path_2_1k/grass_path_2_diff_1k.png" +dest_files=["res://.godot/imported/grass_path_2_diff_1k.png-c203c58a92d846e6a3e5488f15f876da.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/ground/grass_path_2_1k/grass_path_2_disp_1k.png b/assets/textures/ground/grass_path_2_1k/grass_path_2_disp_1k.png new file mode 100644 index 0000000..477fb8e Binary files /dev/null and b/assets/textures/ground/grass_path_2_1k/grass_path_2_disp_1k.png differ diff --git a/assets/textures/ground/grass_path_2_1k/grass_path_2_disp_1k.png.import b/assets/textures/ground/grass_path_2_1k/grass_path_2_disp_1k.png.import new file mode 100644 index 0000000..41d1126 --- /dev/null +++ b/assets/textures/ground/grass_path_2_1k/grass_path_2_disp_1k.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bhgi8bfnhyynn" +path="res://.godot/imported/grass_path_2_disp_1k.png-e365302b73c511bfe517faab383a2722.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/ground/grass_path_2_1k/grass_path_2_disp_1k.png" +dest_files=["res://.godot/imported/grass_path_2_disp_1k.png-e365302b73c511bfe517faab383a2722.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/ground/grass_path_2_1k/grass_path_2_nor_gl_1k.png b/assets/textures/ground/grass_path_2_1k/grass_path_2_nor_gl_1k.png new file mode 100644 index 0000000..79c49a8 Binary files /dev/null and b/assets/textures/ground/grass_path_2_1k/grass_path_2_nor_gl_1k.png differ diff --git a/assets/textures/ground/grass_path_2_1k/grass_path_2_nor_gl_1k.png.import b/assets/textures/ground/grass_path_2_1k/grass_path_2_nor_gl_1k.png.import new file mode 100644 index 0000000..680b6ad --- /dev/null +++ b/assets/textures/ground/grass_path_2_1k/grass_path_2_nor_gl_1k.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b2dtq6q0qca60" +path="res://.godot/imported/grass_path_2_nor_gl_1k.png-531d0e37a2f00548543fd60a7952d033.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/ground/grass_path_2_1k/grass_path_2_nor_gl_1k.png" +dest_files=["res://.godot/imported/grass_path_2_nor_gl_1k.png-531d0e37a2f00548543fd60a7952d033.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/ground/grass_path_2_1k/grass_path_2_rough_1k.png b/assets/textures/ground/grass_path_2_1k/grass_path_2_rough_1k.png new file mode 100644 index 0000000..a8d3cef Binary files /dev/null and b/assets/textures/ground/grass_path_2_1k/grass_path_2_rough_1k.png differ diff --git a/assets/textures/ground/grass_path_2_1k/grass_path_2_rough_1k.png.import b/assets/textures/ground/grass_path_2_1k/grass_path_2_rough_1k.png.import new file mode 100644 index 0000000..2f1991a --- /dev/null +++ b/assets/textures/ground/grass_path_2_1k/grass_path_2_rough_1k.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://2awwenlqott2" +path="res://.godot/imported/grass_path_2_rough_1k.png-22f004ff21543156575bd8a1f1d58206.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/ground/grass_path_2_1k/grass_path_2_rough_1k.png" +dest_files=["res://.godot/imported/grass_path_2_rough_1k.png-22f004ff21543156575bd8a1f1d58206.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/ground/park_dirt_1k/park_dirt_ao_1k.png b/assets/textures/ground/park_dirt_1k/park_dirt_ao_1k.png new file mode 100644 index 0000000..6833155 Binary files /dev/null and b/assets/textures/ground/park_dirt_1k/park_dirt_ao_1k.png differ diff --git a/assets/textures/ground/park_dirt_1k/park_dirt_ao_1k.png.import b/assets/textures/ground/park_dirt_1k/park_dirt_ao_1k.png.import new file mode 100644 index 0000000..4908a96 --- /dev/null +++ b/assets/textures/ground/park_dirt_1k/park_dirt_ao_1k.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cu2otqdwj22v5" +path="res://.godot/imported/park_dirt_ao_1k.png-15857c3dbd68b55061e95346c4bf3209.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/ground/park_dirt_1k/park_dirt_ao_1k.png" +dest_files=["res://.godot/imported/park_dirt_ao_1k.png-15857c3dbd68b55061e95346c4bf3209.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/ground/park_dirt_1k/park_dirt_arm_1k.png b/assets/textures/ground/park_dirt_1k/park_dirt_arm_1k.png new file mode 100644 index 0000000..12bd04f Binary files /dev/null and b/assets/textures/ground/park_dirt_1k/park_dirt_arm_1k.png differ diff --git a/assets/textures/ground/park_dirt_1k/park_dirt_arm_1k.png.import b/assets/textures/ground/park_dirt_1k/park_dirt_arm_1k.png.import new file mode 100644 index 0000000..7d6bbbf --- /dev/null +++ b/assets/textures/ground/park_dirt_1k/park_dirt_arm_1k.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://624qvs5gwbr3" +path="res://.godot/imported/park_dirt_arm_1k.png-b0bdce93a3b8da42fd805bfb0c9a8810.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/ground/park_dirt_1k/park_dirt_arm_1k.png" +dest_files=["res://.godot/imported/park_dirt_arm_1k.png-b0bdce93a3b8da42fd805bfb0c9a8810.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/ground/park_dirt_1k/park_dirt_diff_1k.png b/assets/textures/ground/park_dirt_1k/park_dirt_diff_1k.png new file mode 100644 index 0000000..b653842 Binary files /dev/null and b/assets/textures/ground/park_dirt_1k/park_dirt_diff_1k.png differ diff --git a/assets/textures/ground/park_dirt_1k/park_dirt_diff_1k.png.import b/assets/textures/ground/park_dirt_1k/park_dirt_diff_1k.png.import new file mode 100644 index 0000000..377bd03 --- /dev/null +++ b/assets/textures/ground/park_dirt_1k/park_dirt_diff_1k.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dl4d47wda41gw" +path.s3tc="res://.godot/imported/park_dirt_diff_1k.png-e59b13ea8335aefe7cc822c658dbbadd.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/ground/park_dirt_1k/park_dirt_diff_1k.png" +dest_files=["res://.godot/imported/park_dirt_diff_1k.png-e59b13ea8335aefe7cc822c658dbbadd.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/ground/park_dirt_1k/park_dirt_disp_1k.png b/assets/textures/ground/park_dirt_1k/park_dirt_disp_1k.png new file mode 100644 index 0000000..8bf454b Binary files /dev/null and b/assets/textures/ground/park_dirt_1k/park_dirt_disp_1k.png differ diff --git a/assets/textures/ground/park_dirt_1k/park_dirt_disp_1k.png.import b/assets/textures/ground/park_dirt_1k/park_dirt_disp_1k.png.import new file mode 100644 index 0000000..5a3a967 --- /dev/null +++ b/assets/textures/ground/park_dirt_1k/park_dirt_disp_1k.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b5tpl0tuwe2bk" +path="res://.godot/imported/park_dirt_disp_1k.png-931adcbf6baea214d723664f60a094da.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/ground/park_dirt_1k/park_dirt_disp_1k.png" +dest_files=["res://.godot/imported/park_dirt_disp_1k.png-931adcbf6baea214d723664f60a094da.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/ground/park_dirt_1k/park_dirt_nor_gl_1k.png b/assets/textures/ground/park_dirt_1k/park_dirt_nor_gl_1k.png new file mode 100644 index 0000000..bf8beba Binary files /dev/null and b/assets/textures/ground/park_dirt_1k/park_dirt_nor_gl_1k.png differ diff --git a/assets/textures/ground/park_dirt_1k/park_dirt_nor_gl_1k.png.import b/assets/textures/ground/park_dirt_1k/park_dirt_nor_gl_1k.png.import new file mode 100644 index 0000000..e10739c --- /dev/null +++ b/assets/textures/ground/park_dirt_1k/park_dirt_nor_gl_1k.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ygbe8xks2t6c" +path="res://.godot/imported/park_dirt_nor_gl_1k.png-fb89b25fd00d01e508235465f53f09ec.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/ground/park_dirt_1k/park_dirt_nor_gl_1k.png" +dest_files=["res://.godot/imported/park_dirt_nor_gl_1k.png-fb89b25fd00d01e508235465f53f09ec.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/ground/park_dirt_1k/park_dirt_rough_1k.png b/assets/textures/ground/park_dirt_1k/park_dirt_rough_1k.png new file mode 100644 index 0000000..1b5cbdb Binary files /dev/null and b/assets/textures/ground/park_dirt_1k/park_dirt_rough_1k.png differ diff --git a/assets/textures/ground/park_dirt_1k/park_dirt_rough_1k.png.import b/assets/textures/ground/park_dirt_1k/park_dirt_rough_1k.png.import new file mode 100644 index 0000000..411017b --- /dev/null +++ b/assets/textures/ground/park_dirt_1k/park_dirt_rough_1k.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bh74v84a3ikqf" +path="res://.godot/imported/park_dirt_rough_1k.png-e2f44dec3e57ae0106f4236f40ab918f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/ground/park_dirt_1k/park_dirt_rough_1k.png" +dest_files=["res://.godot/imported/park_dirt_rough_1k.png-e2f44dec3e57ae0106f4236f40ab918f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/ground/synt grass pack/ground_grass_gen_01.png b/assets/textures/ground/synt grass pack/ground_grass_gen_01.png new file mode 100644 index 0000000..5b9cbcf Binary files /dev/null and b/assets/textures/ground/synt grass pack/ground_grass_gen_01.png differ diff --git a/assets/textures/ground/synt grass pack/ground_grass_gen_01.png.import b/assets/textures/ground/synt grass pack/ground_grass_gen_01.png.import new file mode 100644 index 0000000..cf62f65 --- /dev/null +++ b/assets/textures/ground/synt grass pack/ground_grass_gen_01.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bscxc2f57l8yq" +path="res://.godot/imported/ground_grass_gen_01.png-13744e2a75ac64879670a6285792332f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/ground/synt grass pack/ground_grass_gen_01.png" +dest_files=["res://.godot/imported/ground_grass_gen_01.png-13744e2a75ac64879670a6285792332f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/ground/synt grass pack/ground_grass_gen_02.png b/assets/textures/ground/synt grass pack/ground_grass_gen_02.png new file mode 100644 index 0000000..d945f9d Binary files /dev/null and b/assets/textures/ground/synt grass pack/ground_grass_gen_02.png differ diff --git a/assets/textures/ground/synt grass pack/ground_grass_gen_02.png.import b/assets/textures/ground/synt grass pack/ground_grass_gen_02.png.import new file mode 100644 index 0000000..4a271ae --- /dev/null +++ b/assets/textures/ground/synt grass pack/ground_grass_gen_02.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bqt3p0v6m4w8b" +path.s3tc="res://.godot/imported/ground_grass_gen_02.png-f5930d6a677282ec43db92d100c618d5.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/ground/synt grass pack/ground_grass_gen_02.png" +dest_files=["res://.godot/imported/ground_grass_gen_02.png-f5930d6a677282ec43db92d100c618d5.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/ground/synt grass pack/ground_grass_gen_03.png b/assets/textures/ground/synt grass pack/ground_grass_gen_03.png new file mode 100644 index 0000000..dd41054 Binary files /dev/null and b/assets/textures/ground/synt grass pack/ground_grass_gen_03.png differ diff --git a/assets/textures/ground/synt grass pack/ground_grass_gen_03.png.import b/assets/textures/ground/synt grass pack/ground_grass_gen_03.png.import new file mode 100644 index 0000000..33ae515 --- /dev/null +++ b/assets/textures/ground/synt grass pack/ground_grass_gen_03.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dgcwakrgebo84" +path="res://.godot/imported/ground_grass_gen_03.png-320d44c7773abe76e91b69037ce3c169.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/ground/synt grass pack/ground_grass_gen_03.png" +dest_files=["res://.godot/imported/ground_grass_gen_03.png-320d44c7773abe76e91b69037ce3c169.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/ground/synt grass pack/ground_grass_gen_04.png b/assets/textures/ground/synt grass pack/ground_grass_gen_04.png new file mode 100644 index 0000000..9db94f0 Binary files /dev/null and b/assets/textures/ground/synt grass pack/ground_grass_gen_04.png differ diff --git a/assets/textures/ground/synt grass pack/ground_grass_gen_04.png.import b/assets/textures/ground/synt grass pack/ground_grass_gen_04.png.import new file mode 100644 index 0000000..67ea252 --- /dev/null +++ b/assets/textures/ground/synt grass pack/ground_grass_gen_04.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cb0tnpbmhr48u" +path.s3tc="res://.godot/imported/ground_grass_gen_04.png-f10591349674fdf36f38c4a1c352bd6c.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/ground/synt grass pack/ground_grass_gen_04.png" +dest_files=["res://.godot/imported/ground_grass_gen_04.png-f10591349674fdf36f38c4a1c352bd6c.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/ground/synt grass pack/ground_grass_gen_05.png b/assets/textures/ground/synt grass pack/ground_grass_gen_05.png new file mode 100644 index 0000000..ad8c960 Binary files /dev/null and b/assets/textures/ground/synt grass pack/ground_grass_gen_05.png differ diff --git a/assets/textures/ground/synt grass pack/ground_grass_gen_05.png.import b/assets/textures/ground/synt grass pack/ground_grass_gen_05.png.import new file mode 100644 index 0000000..5f46909 --- /dev/null +++ b/assets/textures/ground/synt grass pack/ground_grass_gen_05.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dc0qu56y4lgtl" +path.s3tc="res://.godot/imported/ground_grass_gen_05.png-e13aa73ee05280ac9f886795c7f5897b.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/ground/synt grass pack/ground_grass_gen_05.png" +dest_files=["res://.godot/imported/ground_grass_gen_05.png-e13aa73ee05280ac9f886795c7f5897b.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/ground/synt grass pack/ground_grass_gen_06.png b/assets/textures/ground/synt grass pack/ground_grass_gen_06.png new file mode 100644 index 0000000..fb6f960 Binary files /dev/null and b/assets/textures/ground/synt grass pack/ground_grass_gen_06.png differ diff --git a/assets/textures/ground/synt grass pack/ground_grass_gen_06.png.import b/assets/textures/ground/synt grass pack/ground_grass_gen_06.png.import new file mode 100644 index 0000000..9ebf2f0 --- /dev/null +++ b/assets/textures/ground/synt grass pack/ground_grass_gen_06.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bafxavwjlb8u5" +path.s3tc="res://.godot/imported/ground_grass_gen_06.png-bd675ee1559b1b40d295b5975c65962d.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/ground/synt grass pack/ground_grass_gen_06.png" +dest_files=["res://.godot/imported/ground_grass_gen_06.png-bd675ee1559b1b40d295b5975c65962d.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/ground/synt grass pack/ground_grass_gen_07.png b/assets/textures/ground/synt grass pack/ground_grass_gen_07.png new file mode 100644 index 0000000..e1b3bb7 Binary files /dev/null and b/assets/textures/ground/synt grass pack/ground_grass_gen_07.png differ diff --git a/assets/textures/ground/synt grass pack/ground_grass_gen_07.png.import b/assets/textures/ground/synt grass pack/ground_grass_gen_07.png.import new file mode 100644 index 0000000..e8fedd3 --- /dev/null +++ b/assets/textures/ground/synt grass pack/ground_grass_gen_07.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bnbp3pgk1lvwx" +path.s3tc="res://.godot/imported/ground_grass_gen_07.png-2be6c4dbe7d1e42f7550e45ca8da7b14.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/ground/synt grass pack/ground_grass_gen_07.png" +dest_files=["res://.godot/imported/ground_grass_gen_07.png-2be6c4dbe7d1e42f7550e45ca8da7b14.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/ground/synt grass pack/ground_grass_gen_08.png b/assets/textures/ground/synt grass pack/ground_grass_gen_08.png new file mode 100644 index 0000000..ae344b5 Binary files /dev/null and b/assets/textures/ground/synt grass pack/ground_grass_gen_08.png differ diff --git a/assets/textures/ground/synt grass pack/ground_grass_gen_08.png.import b/assets/textures/ground/synt grass pack/ground_grass_gen_08.png.import new file mode 100644 index 0000000..bd22396 --- /dev/null +++ b/assets/textures/ground/synt grass pack/ground_grass_gen_08.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bib4dklp4pvcu" +path.s3tc="res://.godot/imported/ground_grass_gen_08.png-ccbef233ea46d2a73d6d39c4f0a0f304.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/ground/synt grass pack/ground_grass_gen_08.png" +dest_files=["res://.godot/imported/ground_grass_gen_08.png-ccbef233ea46d2a73d6d39c4f0a0f304.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/ground/synt grass pack/ground_grass_gen_09.png b/assets/textures/ground/synt grass pack/ground_grass_gen_09.png new file mode 100644 index 0000000..22324e3 Binary files /dev/null and b/assets/textures/ground/synt grass pack/ground_grass_gen_09.png differ diff --git a/assets/textures/ground/synt grass pack/ground_grass_gen_09.png.import b/assets/textures/ground/synt grass pack/ground_grass_gen_09.png.import new file mode 100644 index 0000000..adcc007 --- /dev/null +++ b/assets/textures/ground/synt grass pack/ground_grass_gen_09.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d2y57uk5sn77h" +path.s3tc="res://.godot/imported/ground_grass_gen_09.png-0f7fedef46d54a513093ec53e65e476f.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/ground/synt grass pack/ground_grass_gen_09.png" +dest_files=["res://.godot/imported/ground_grass_gen_09.png-0f7fedef46d54a513093ec53e65e476f.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/ground/synt grass pack/ground_grass_gen_10.png b/assets/textures/ground/synt grass pack/ground_grass_gen_10.png new file mode 100644 index 0000000..f4e5f47 Binary files /dev/null and b/assets/textures/ground/synt grass pack/ground_grass_gen_10.png differ diff --git a/assets/textures/ground/synt grass pack/ground_grass_gen_10.png.import b/assets/textures/ground/synt grass pack/ground_grass_gen_10.png.import new file mode 100644 index 0000000..f57f3d4 --- /dev/null +++ b/assets/textures/ground/synt grass pack/ground_grass_gen_10.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cuwo3asxjpjrp" +path="res://.godot/imported/ground_grass_gen_10.png-51da530eafb50d6da4ce9c1b1e160ea6.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/ground/synt grass pack/ground_grass_gen_10.png" +dest_files=["res://.godot/imported/ground_grass_gen_10.png-51da530eafb50d6da4ce9c1b1e160ea6.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/metal/CorrugatedSteel004_1K-PNG/CorrugatedSteel004_1K-PNG_AmbientOcclusion.png b/assets/textures/metal/CorrugatedSteel004_1K-PNG/CorrugatedSteel004_1K-PNG_AmbientOcclusion.png new file mode 100644 index 0000000..9e2db1a Binary files /dev/null and b/assets/textures/metal/CorrugatedSteel004_1K-PNG/CorrugatedSteel004_1K-PNG_AmbientOcclusion.png differ diff --git a/assets/textures/metal/CorrugatedSteel004_1K-PNG/CorrugatedSteel004_1K-PNG_AmbientOcclusion.png.import b/assets/textures/metal/CorrugatedSteel004_1K-PNG/CorrugatedSteel004_1K-PNG_AmbientOcclusion.png.import new file mode 100644 index 0000000..e0fc862 --- /dev/null +++ b/assets/textures/metal/CorrugatedSteel004_1K-PNG/CorrugatedSteel004_1K-PNG_AmbientOcclusion.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://xwd00bdxcjox" +path="res://.godot/imported/CorrugatedSteel004_1K-PNG_AmbientOcclusion.png-c6c26da04fd1fdd2f3950f2fdcd857d9.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/metal/CorrugatedSteel004_1K-PNG/CorrugatedSteel004_1K-PNG_AmbientOcclusion.png" +dest_files=["res://.godot/imported/CorrugatedSteel004_1K-PNG_AmbientOcclusion.png-c6c26da04fd1fdd2f3950f2fdcd857d9.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/metal/CorrugatedSteel004_1K-PNG/CorrugatedSteel004_1K-PNG_Color.png b/assets/textures/metal/CorrugatedSteel004_1K-PNG/CorrugatedSteel004_1K-PNG_Color.png new file mode 100644 index 0000000..499a0ea Binary files /dev/null and b/assets/textures/metal/CorrugatedSteel004_1K-PNG/CorrugatedSteel004_1K-PNG_Color.png differ diff --git a/assets/textures/metal/CorrugatedSteel004_1K-PNG/CorrugatedSteel004_1K-PNG_Color.png.import b/assets/textures/metal/CorrugatedSteel004_1K-PNG/CorrugatedSteel004_1K-PNG_Color.png.import new file mode 100644 index 0000000..f72f85a --- /dev/null +++ b/assets/textures/metal/CorrugatedSteel004_1K-PNG/CorrugatedSteel004_1K-PNG_Color.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d3ex562xuc5gi" +path.s3tc="res://.godot/imported/CorrugatedSteel004_1K-PNG_Color.png-a8db582758ad6204c88c7ff5ee3d54a2.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/metal/CorrugatedSteel004_1K-PNG/CorrugatedSteel004_1K-PNG_Color.png" +dest_files=["res://.godot/imported/CorrugatedSteel004_1K-PNG_Color.png-a8db582758ad6204c88c7ff5ee3d54a2.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/metal/CorrugatedSteel004_1K-PNG/CorrugatedSteel004_1K-PNG_Displacement.png b/assets/textures/metal/CorrugatedSteel004_1K-PNG/CorrugatedSteel004_1K-PNG_Displacement.png new file mode 100644 index 0000000..4073519 Binary files /dev/null and b/assets/textures/metal/CorrugatedSteel004_1K-PNG/CorrugatedSteel004_1K-PNG_Displacement.png differ diff --git a/assets/textures/metal/CorrugatedSteel004_1K-PNG/CorrugatedSteel004_1K-PNG_Displacement.png.import b/assets/textures/metal/CorrugatedSteel004_1K-PNG/CorrugatedSteel004_1K-PNG_Displacement.png.import new file mode 100644 index 0000000..9b14c96 --- /dev/null +++ b/assets/textures/metal/CorrugatedSteel004_1K-PNG/CorrugatedSteel004_1K-PNG_Displacement.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cndsi2sb6rtea" +path="res://.godot/imported/CorrugatedSteel004_1K-PNG_Displacement.png-ca782a996f9606f4813bb57af5b61c6c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/metal/CorrugatedSteel004_1K-PNG/CorrugatedSteel004_1K-PNG_Displacement.png" +dest_files=["res://.godot/imported/CorrugatedSteel004_1K-PNG_Displacement.png-ca782a996f9606f4813bb57af5b61c6c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/metal/CorrugatedSteel004_1K-PNG/CorrugatedSteel004_1K-PNG_Metalness.png b/assets/textures/metal/CorrugatedSteel004_1K-PNG/CorrugatedSteel004_1K-PNG_Metalness.png new file mode 100644 index 0000000..4569657 Binary files /dev/null and b/assets/textures/metal/CorrugatedSteel004_1K-PNG/CorrugatedSteel004_1K-PNG_Metalness.png differ diff --git a/assets/textures/metal/CorrugatedSteel004_1K-PNG/CorrugatedSteel004_1K-PNG_Metalness.png.import b/assets/textures/metal/CorrugatedSteel004_1K-PNG/CorrugatedSteel004_1K-PNG_Metalness.png.import new file mode 100644 index 0000000..670efb5 --- /dev/null +++ b/assets/textures/metal/CorrugatedSteel004_1K-PNG/CorrugatedSteel004_1K-PNG_Metalness.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://3e2a82qlq54u" +path="res://.godot/imported/CorrugatedSteel004_1K-PNG_Metalness.png-37fcd7b5643b2c11b168481568d2ec29.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/metal/CorrugatedSteel004_1K-PNG/CorrugatedSteel004_1K-PNG_Metalness.png" +dest_files=["res://.godot/imported/CorrugatedSteel004_1K-PNG_Metalness.png-37fcd7b5643b2c11b168481568d2ec29.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/metal/CorrugatedSteel004_1K-PNG/CorrugatedSteel004_1K-PNG_NormalGL.png b/assets/textures/metal/CorrugatedSteel004_1K-PNG/CorrugatedSteel004_1K-PNG_NormalGL.png new file mode 100644 index 0000000..be2de8c Binary files /dev/null and b/assets/textures/metal/CorrugatedSteel004_1K-PNG/CorrugatedSteel004_1K-PNG_NormalGL.png differ diff --git a/assets/textures/metal/CorrugatedSteel004_1K-PNG/CorrugatedSteel004_1K-PNG_NormalGL.png.import b/assets/textures/metal/CorrugatedSteel004_1K-PNG/CorrugatedSteel004_1K-PNG_NormalGL.png.import new file mode 100644 index 0000000..aa290e4 --- /dev/null +++ b/assets/textures/metal/CorrugatedSteel004_1K-PNG/CorrugatedSteel004_1K-PNG_NormalGL.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bku3q66ex7ea2" +path.s3tc="res://.godot/imported/CorrugatedSteel004_1K-PNG_NormalGL.png-700e5103343c3567018747b3129d1f5f.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/metal/CorrugatedSteel004_1K-PNG/CorrugatedSteel004_1K-PNG_NormalGL.png" +dest_files=["res://.godot/imported/CorrugatedSteel004_1K-PNG_NormalGL.png-700e5103343c3567018747b3129d1f5f.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=1 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=1 +roughness/src_normal="res://assets/textures/CorrugatedSteel004_1K-PNG/CorrugatedSteel004_1K-PNG_NormalGL.png" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/metal/CorrugatedSteel004_1K-PNG/CorrugatedSteel004_1K-PNG_Roughness.png b/assets/textures/metal/CorrugatedSteel004_1K-PNG/CorrugatedSteel004_1K-PNG_Roughness.png new file mode 100644 index 0000000..e3b1bae Binary files /dev/null and b/assets/textures/metal/CorrugatedSteel004_1K-PNG/CorrugatedSteel004_1K-PNG_Roughness.png differ diff --git a/assets/textures/metal/CorrugatedSteel004_1K-PNG/CorrugatedSteel004_1K-PNG_Roughness.png.import b/assets/textures/metal/CorrugatedSteel004_1K-PNG/CorrugatedSteel004_1K-PNG_Roughness.png.import new file mode 100644 index 0000000..90d55cd --- /dev/null +++ b/assets/textures/metal/CorrugatedSteel004_1K-PNG/CorrugatedSteel004_1K-PNG_Roughness.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://2kjddgumhpvc" +path="res://.godot/imported/CorrugatedSteel004_1K-PNG_Roughness.png-fa56a6587578f96759ef8c3024bae0e9.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/metal/CorrugatedSteel004_1K-PNG/CorrugatedSteel004_1K-PNG_Roughness.png" +dest_files=["res://.godot/imported/CorrugatedSteel004_1K-PNG_Roughness.png-fa56a6587578f96759ef8c3024bae0e9.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/metal/Metal029_1K-PNG/Metal029_1K-PNG_Color.png b/assets/textures/metal/Metal029_1K-PNG/Metal029_1K-PNG_Color.png new file mode 100644 index 0000000..2b4a0d0 Binary files /dev/null and b/assets/textures/metal/Metal029_1K-PNG/Metal029_1K-PNG_Color.png differ diff --git a/assets/textures/metal/Metal029_1K-PNG/Metal029_1K-PNG_Color.png.import b/assets/textures/metal/Metal029_1K-PNG/Metal029_1K-PNG_Color.png.import new file mode 100644 index 0000000..37384d6 --- /dev/null +++ b/assets/textures/metal/Metal029_1K-PNG/Metal029_1K-PNG_Color.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://7fagq33bixhr" +path.s3tc="res://.godot/imported/Metal029_1K-PNG_Color.png-a79374c0cbc614a5279fd0a3bb6c84cb.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/metal/Metal029_1K-PNG/Metal029_1K-PNG_Color.png" +dest_files=["res://.godot/imported/Metal029_1K-PNG_Color.png-a79374c0cbc614a5279fd0a3bb6c84cb.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/metal/Metal029_1K-PNG/Metal029_1K-PNG_Metalness.png b/assets/textures/metal/Metal029_1K-PNG/Metal029_1K-PNG_Metalness.png new file mode 100644 index 0000000..49741d9 Binary files /dev/null and b/assets/textures/metal/Metal029_1K-PNG/Metal029_1K-PNG_Metalness.png differ diff --git a/assets/textures/metal/Metal029_1K-PNG/Metal029_1K-PNG_Metalness.png.import b/assets/textures/metal/Metal029_1K-PNG/Metal029_1K-PNG_Metalness.png.import new file mode 100644 index 0000000..baeab50 --- /dev/null +++ b/assets/textures/metal/Metal029_1K-PNG/Metal029_1K-PNG_Metalness.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://6fdgkbvnwnph" +path.s3tc="res://.godot/imported/Metal029_1K-PNG_Metalness.png-cd1fe874bbeecf38ee3c7398c115d561.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/metal/Metal029_1K-PNG/Metal029_1K-PNG_Metalness.png" +dest_files=["res://.godot/imported/Metal029_1K-PNG_Metalness.png-cd1fe874bbeecf38ee3c7398c115d561.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/metal/Metal029_1K-PNG/Metal029_1K-PNG_NormalGL.png b/assets/textures/metal/Metal029_1K-PNG/Metal029_1K-PNG_NormalGL.png new file mode 100644 index 0000000..01dea2d Binary files /dev/null and b/assets/textures/metal/Metal029_1K-PNG/Metal029_1K-PNG_NormalGL.png differ diff --git a/assets/textures/metal/Metal029_1K-PNG/Metal029_1K-PNG_NormalGL.png.import b/assets/textures/metal/Metal029_1K-PNG/Metal029_1K-PNG_NormalGL.png.import new file mode 100644 index 0000000..78d6a74 --- /dev/null +++ b/assets/textures/metal/Metal029_1K-PNG/Metal029_1K-PNG_NormalGL.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dooycyrd5m1hf" +path="res://.godot/imported/Metal029_1K-PNG_NormalGL.png-896898aaee9d5513659722c5db4b61e5.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/metal/Metal029_1K-PNG/Metal029_1K-PNG_NormalGL.png" +dest_files=["res://.godot/imported/Metal029_1K-PNG_NormalGL.png-896898aaee9d5513659722c5db4b61e5.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/metal/Metal029_1K-PNG/Metal029_1K-PNG_Roughness.png b/assets/textures/metal/Metal029_1K-PNG/Metal029_1K-PNG_Roughness.png new file mode 100644 index 0000000..0785033 Binary files /dev/null and b/assets/textures/metal/Metal029_1K-PNG/Metal029_1K-PNG_Roughness.png differ diff --git a/assets/textures/metal/Metal029_1K-PNG/Metal029_1K-PNG_Roughness.png.import b/assets/textures/metal/Metal029_1K-PNG/Metal029_1K-PNG_Roughness.png.import new file mode 100644 index 0000000..5664400 --- /dev/null +++ b/assets/textures/metal/Metal029_1K-PNG/Metal029_1K-PNG_Roughness.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c0somfrw3col4" +path.s3tc="res://.godot/imported/Metal029_1K-PNG_Roughness.png-1f6620219d97011a67bd2f45d339b898.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/metal/Metal029_1K-PNG/Metal029_1K-PNG_Roughness.png" +dest_files=["res://.godot/imported/Metal029_1K-PNG_Roughness.png-1f6620219d97011a67bd2f45d339b898.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/metal/Metal052C_1K-PNG/Metal052C_1K-PNG_Color.png b/assets/textures/metal/Metal052C_1K-PNG/Metal052C_1K-PNG_Color.png new file mode 100644 index 0000000..114f660 Binary files /dev/null and b/assets/textures/metal/Metal052C_1K-PNG/Metal052C_1K-PNG_Color.png differ diff --git a/assets/textures/metal/Metal052C_1K-PNG/Metal052C_1K-PNG_Color.png.import b/assets/textures/metal/Metal052C_1K-PNG/Metal052C_1K-PNG_Color.png.import new file mode 100644 index 0000000..4b67645 --- /dev/null +++ b/assets/textures/metal/Metal052C_1K-PNG/Metal052C_1K-PNG_Color.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://du8pmu4oobma3" +path.s3tc="res://.godot/imported/Metal052C_1K-PNG_Color.png-7d68d1c2a71c5409570e8b8e486817ea.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/metal/Metal052C_1K-PNG/Metal052C_1K-PNG_Color.png" +dest_files=["res://.godot/imported/Metal052C_1K-PNG_Color.png-7d68d1c2a71c5409570e8b8e486817ea.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/metal/Metal052C_1K-PNG/Metal052C_1K-PNG_Metalness.png b/assets/textures/metal/Metal052C_1K-PNG/Metal052C_1K-PNG_Metalness.png new file mode 100644 index 0000000..5b619be Binary files /dev/null and b/assets/textures/metal/Metal052C_1K-PNG/Metal052C_1K-PNG_Metalness.png differ diff --git a/assets/textures/metal/Metal052C_1K-PNG/Metal052C_1K-PNG_Metalness.png.import b/assets/textures/metal/Metal052C_1K-PNG/Metal052C_1K-PNG_Metalness.png.import new file mode 100644 index 0000000..c3a6103 --- /dev/null +++ b/assets/textures/metal/Metal052C_1K-PNG/Metal052C_1K-PNG_Metalness.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bcanjh1x7hesr" +path.s3tc="res://.godot/imported/Metal052C_1K-PNG_Metalness.png-f3f08955f04e5da16a86299bd2872b6d.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/metal/Metal052C_1K-PNG/Metal052C_1K-PNG_Metalness.png" +dest_files=["res://.godot/imported/Metal052C_1K-PNG_Metalness.png-f3f08955f04e5da16a86299bd2872b6d.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/metal/Metal052C_1K-PNG/Metal052C_1K-PNG_NormalGL.png b/assets/textures/metal/Metal052C_1K-PNG/Metal052C_1K-PNG_NormalGL.png new file mode 100644 index 0000000..5915f1c Binary files /dev/null and b/assets/textures/metal/Metal052C_1K-PNG/Metal052C_1K-PNG_NormalGL.png differ diff --git a/assets/textures/metal/Metal052C_1K-PNG/Metal052C_1K-PNG_NormalGL.png.import b/assets/textures/metal/Metal052C_1K-PNG/Metal052C_1K-PNG_NormalGL.png.import new file mode 100644 index 0000000..72ed119 --- /dev/null +++ b/assets/textures/metal/Metal052C_1K-PNG/Metal052C_1K-PNG_NormalGL.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bpf580516ut1k" +path="res://.godot/imported/Metal052C_1K-PNG_NormalGL.png-dfa9550fe6c8211b2b0e85296814c29f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/metal/Metal052C_1K-PNG/Metal052C_1K-PNG_NormalGL.png" +dest_files=["res://.godot/imported/Metal052C_1K-PNG_NormalGL.png-dfa9550fe6c8211b2b0e85296814c29f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/metal/Metal052C_1K-PNG/Metal052C_1K-PNG_Roughness.png b/assets/textures/metal/Metal052C_1K-PNG/Metal052C_1K-PNG_Roughness.png new file mode 100644 index 0000000..a1c1816 Binary files /dev/null and b/assets/textures/metal/Metal052C_1K-PNG/Metal052C_1K-PNG_Roughness.png differ diff --git a/assets/textures/metal/Metal052C_1K-PNG/Metal052C_1K-PNG_Roughness.png.import b/assets/textures/metal/Metal052C_1K-PNG/Metal052C_1K-PNG_Roughness.png.import new file mode 100644 index 0000000..ba1fbdc --- /dev/null +++ b/assets/textures/metal/Metal052C_1K-PNG/Metal052C_1K-PNG_Roughness.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cjf4rh6w1qscy" +path="res://.godot/imported/Metal052C_1K-PNG_Roughness.png-828619dd6e619afe6a853bdadd4c3587.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/metal/Metal052C_1K-PNG/Metal052C_1K-PNG_Roughness.png" +dest_files=["res://.godot/imported/Metal052C_1K-PNG_Roughness.png-828619dd6e619afe6a853bdadd4c3587.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/metal/metal_grate_rusty_1k/metal_grate_rusty_diff_1k.png b/assets/textures/metal/metal_grate_rusty_1k/metal_grate_rusty_diff_1k.png new file mode 100644 index 0000000..dcd949d Binary files /dev/null and b/assets/textures/metal/metal_grate_rusty_1k/metal_grate_rusty_diff_1k.png differ diff --git a/assets/textures/metal/metal_grate_rusty_1k/metal_grate_rusty_diff_1k.png.import b/assets/textures/metal/metal_grate_rusty_1k/metal_grate_rusty_diff_1k.png.import new file mode 100644 index 0000000..2a751cd --- /dev/null +++ b/assets/textures/metal/metal_grate_rusty_1k/metal_grate_rusty_diff_1k.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://0qb88nh42aeb" +path.s3tc="res://.godot/imported/metal_grate_rusty_diff_1k.png-795c462cf817d9c904426df4d0efd1a2.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/metal/metal_grate_rusty_1k/metal_grate_rusty_diff_1k.png" +dest_files=["res://.godot/imported/metal_grate_rusty_diff_1k.png-795c462cf817d9c904426df4d0efd1a2.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/metal/metal_grate_rusty_1k/metal_grate_rusty_metal_1k.png b/assets/textures/metal/metal_grate_rusty_1k/metal_grate_rusty_metal_1k.png new file mode 100644 index 0000000..d9d75fb Binary files /dev/null and b/assets/textures/metal/metal_grate_rusty_1k/metal_grate_rusty_metal_1k.png differ diff --git a/assets/textures/metal/metal_grate_rusty_1k/metal_grate_rusty_metal_1k.png.import b/assets/textures/metal/metal_grate_rusty_1k/metal_grate_rusty_metal_1k.png.import new file mode 100644 index 0000000..b74d072 --- /dev/null +++ b/assets/textures/metal/metal_grate_rusty_1k/metal_grate_rusty_metal_1k.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://btid4oi8d3gos" +path.s3tc="res://.godot/imported/metal_grate_rusty_metal_1k.png-6a09353e6d4aa2d3d16e5b22a99960e4.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/metal/metal_grate_rusty_1k/metal_grate_rusty_metal_1k.png" +dest_files=["res://.godot/imported/metal_grate_rusty_metal_1k.png-6a09353e6d4aa2d3d16e5b22a99960e4.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/metal/metal_grate_rusty_1k/metal_grate_rusty_nor_gl_1k.png b/assets/textures/metal/metal_grate_rusty_1k/metal_grate_rusty_nor_gl_1k.png new file mode 100644 index 0000000..e414f64 Binary files /dev/null and b/assets/textures/metal/metal_grate_rusty_1k/metal_grate_rusty_nor_gl_1k.png differ diff --git a/assets/textures/metal/metal_grate_rusty_1k/metal_grate_rusty_nor_gl_1k.png.import b/assets/textures/metal/metal_grate_rusty_1k/metal_grate_rusty_nor_gl_1k.png.import new file mode 100644 index 0000000..3e1e59e --- /dev/null +++ b/assets/textures/metal/metal_grate_rusty_1k/metal_grate_rusty_nor_gl_1k.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dll1jn7npbs72" +path.s3tc="res://.godot/imported/metal_grate_rusty_nor_gl_1k.png-554947f0e9b044737549dc33779147e4.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/metal/metal_grate_rusty_1k/metal_grate_rusty_nor_gl_1k.png" +dest_files=["res://.godot/imported/metal_grate_rusty_nor_gl_1k.png-554947f0e9b044737549dc33779147e4.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=1 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=1 +roughness/src_normal="res://assets/textures/metal_grate_rusty_1k/metal_grate_rusty_nor_gl_1k.png" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/metal/metal_grate_rusty_1k/metal_grate_rusty_rough_1k.png b/assets/textures/metal/metal_grate_rusty_1k/metal_grate_rusty_rough_1k.png new file mode 100644 index 0000000..2c9471f Binary files /dev/null and b/assets/textures/metal/metal_grate_rusty_1k/metal_grate_rusty_rough_1k.png differ diff --git a/assets/textures/metal/metal_grate_rusty_1k/metal_grate_rusty_rough_1k.png.import b/assets/textures/metal/metal_grate_rusty_1k/metal_grate_rusty_rough_1k.png.import new file mode 100644 index 0000000..24adeb0 --- /dev/null +++ b/assets/textures/metal/metal_grate_rusty_1k/metal_grate_rusty_rough_1k.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://08erwxatt08j" +path.s3tc="res://.godot/imported/metal_grate_rusty_rough_1k.png-405870d1f1c6f950bcecbdc66b1e9da9.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/metal/metal_grate_rusty_1k/metal_grate_rusty_rough_1k.png" +dest_files=["res://.godot/imported/metal_grate_rusty_rough_1k.png-405870d1f1c6f950bcecbdc66b1e9da9.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/plant/hedges_para_CC0/vegetation_hedge_01.png b/assets/textures/plant/hedges_para_CC0/vegetation_hedge_01.png new file mode 100644 index 0000000..437c818 Binary files /dev/null and b/assets/textures/plant/hedges_para_CC0/vegetation_hedge_01.png differ diff --git a/assets/textures/plant/hedges_para_CC0/vegetation_hedge_01.png.import b/assets/textures/plant/hedges_para_CC0/vegetation_hedge_01.png.import new file mode 100644 index 0000000..c843988 --- /dev/null +++ b/assets/textures/plant/hedges_para_CC0/vegetation_hedge_01.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b0cj11kua8p14" +path="res://.godot/imported/vegetation_hedge_01.png-5433251dad3e87603f96d650dcac5ce6.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/plant/hedges_para_CC0/vegetation_hedge_01.png" +dest_files=["res://.godot/imported/vegetation_hedge_01.png-5433251dad3e87603f96d650dcac5ce6.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/plant/hedges_para_CC0/vegetation_hedge_02.png b/assets/textures/plant/hedges_para_CC0/vegetation_hedge_02.png new file mode 100644 index 0000000..9e2faf2 Binary files /dev/null and b/assets/textures/plant/hedges_para_CC0/vegetation_hedge_02.png differ diff --git a/assets/textures/plant/hedges_para_CC0/vegetation_hedge_02.png.import b/assets/textures/plant/hedges_para_CC0/vegetation_hedge_02.png.import new file mode 100644 index 0000000..41959e1 --- /dev/null +++ b/assets/textures/plant/hedges_para_CC0/vegetation_hedge_02.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://botlbkoijjxra" +path="res://.godot/imported/vegetation_hedge_02.png-861f21dce78e9eae84fd807a8efa2e13.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/plant/hedges_para_CC0/vegetation_hedge_02.png" +dest_files=["res://.godot/imported/vegetation_hedge_02.png-861f21dce78e9eae84fd807a8efa2e13.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/plant/hedges_para_CC0/vegetation_hedge_03.png b/assets/textures/plant/hedges_para_CC0/vegetation_hedge_03.png new file mode 100644 index 0000000..bfe424f Binary files /dev/null and b/assets/textures/plant/hedges_para_CC0/vegetation_hedge_03.png differ diff --git a/assets/textures/plant/hedges_para_CC0/vegetation_hedge_03.png.import b/assets/textures/plant/hedges_para_CC0/vegetation_hedge_03.png.import new file mode 100644 index 0000000..8a8e44b --- /dev/null +++ b/assets/textures/plant/hedges_para_CC0/vegetation_hedge_03.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dmpcye1ape4yw" +path="res://.godot/imported/vegetation_hedge_03.png-9c7bf9812d62556dfedf628ed26d9a2d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/plant/hedges_para_CC0/vegetation_hedge_03.png" +dest_files=["res://.godot/imported/vegetation_hedge_03.png-9c7bf9812d62556dfedf628ed26d9a2d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/plant/hedges_para_CC0/vegetation_hedge_10.png b/assets/textures/plant/hedges_para_CC0/vegetation_hedge_10.png new file mode 100644 index 0000000..b2a18c2 Binary files /dev/null and b/assets/textures/plant/hedges_para_CC0/vegetation_hedge_10.png differ diff --git a/assets/textures/plant/hedges_para_CC0/vegetation_hedge_10.png.import b/assets/textures/plant/hedges_para_CC0/vegetation_hedge_10.png.import new file mode 100644 index 0000000..8fd0011 --- /dev/null +++ b/assets/textures/plant/hedges_para_CC0/vegetation_hedge_10.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d0j0rj6peurps" +path="res://.godot/imported/vegetation_hedge_10.png-2f57d636cfb279e1456d2b4b99d18941.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/plant/hedges_para_CC0/vegetation_hedge_10.png" +dest_files=["res://.godot/imported/vegetation_hedge_10.png-2f57d636cfb279e1456d2b4b99d18941.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/plant/hedges_para_CC0/vegetation_hedge_11.png b/assets/textures/plant/hedges_para_CC0/vegetation_hedge_11.png new file mode 100644 index 0000000..df431ca Binary files /dev/null and b/assets/textures/plant/hedges_para_CC0/vegetation_hedge_11.png differ diff --git a/assets/textures/plant/hedges_para_CC0/vegetation_hedge_11.png.import b/assets/textures/plant/hedges_para_CC0/vegetation_hedge_11.png.import new file mode 100644 index 0000000..55fc356 --- /dev/null +++ b/assets/textures/plant/hedges_para_CC0/vegetation_hedge_11.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://drkqvvedna2vm" +path="res://.godot/imported/vegetation_hedge_11.png-97cf3e9b2956d23a842067e340de555a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/plant/hedges_para_CC0/vegetation_hedge_11.png" +dest_files=["res://.godot/imported/vegetation_hedge_11.png-97cf3e9b2956d23a842067e340de555a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/plant/hedges_para_CC0/vegetation_hedge_22.png b/assets/textures/plant/hedges_para_CC0/vegetation_hedge_22.png new file mode 100644 index 0000000..ff2c426 Binary files /dev/null and b/assets/textures/plant/hedges_para_CC0/vegetation_hedge_22.png differ diff --git a/assets/textures/plant/hedges_para_CC0/vegetation_hedge_22.png.import b/assets/textures/plant/hedges_para_CC0/vegetation_hedge_22.png.import new file mode 100644 index 0000000..afe2ac7 --- /dev/null +++ b/assets/textures/plant/hedges_para_CC0/vegetation_hedge_22.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://depxk5u1eq0ac" +path="res://.godot/imported/vegetation_hedge_22.png-eedf71b644646893325b38f5b8414d64.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/plant/hedges_para_CC0/vegetation_hedge_22.png" +dest_files=["res://.godot/imported/vegetation_hedge_22.png-eedf71b644646893325b38f5b8414d64.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/plant/hedges_para_CC0/vegetation_hedge_24.png b/assets/textures/plant/hedges_para_CC0/vegetation_hedge_24.png new file mode 100644 index 0000000..8afcae3 Binary files /dev/null and b/assets/textures/plant/hedges_para_CC0/vegetation_hedge_24.png differ diff --git a/assets/textures/plant/hedges_para_CC0/vegetation_hedge_24.png.import b/assets/textures/plant/hedges_para_CC0/vegetation_hedge_24.png.import new file mode 100644 index 0000000..4785e39 --- /dev/null +++ b/assets/textures/plant/hedges_para_CC0/vegetation_hedge_24.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dntngs5te0tjo" +path="res://.godot/imported/vegetation_hedge_24.png-a682de39dcd71b2b69cee9815967bf50.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/plant/hedges_para_CC0/vegetation_hedge_24.png" +dest_files=["res://.godot/imported/vegetation_hedge_24.png-a682de39dcd71b2b69cee9815967bf50.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/plant/hedges_para_CC0/vegetation_hedge_25.png b/assets/textures/plant/hedges_para_CC0/vegetation_hedge_25.png new file mode 100644 index 0000000..11a2162 Binary files /dev/null and b/assets/textures/plant/hedges_para_CC0/vegetation_hedge_25.png differ diff --git a/assets/textures/plant/hedges_para_CC0/vegetation_hedge_25.png.import b/assets/textures/plant/hedges_para_CC0/vegetation_hedge_25.png.import new file mode 100644 index 0000000..eabbc63 --- /dev/null +++ b/assets/textures/plant/hedges_para_CC0/vegetation_hedge_25.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dnmqsks3db3g5" +path="res://.godot/imported/vegetation_hedge_25.png-770e769219fdf65f6bb4c5e0758f7e09.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/plant/hedges_para_CC0/vegetation_hedge_25.png" +dest_files=["res://.godot/imported/vegetation_hedge_25.png-770e769219fdf65f6bb4c5e0758f7e09.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/plant/hedges_para_CC0/vegetation_hedge_30.png b/assets/textures/plant/hedges_para_CC0/vegetation_hedge_30.png new file mode 100644 index 0000000..2fb6700 Binary files /dev/null and b/assets/textures/plant/hedges_para_CC0/vegetation_hedge_30.png differ diff --git a/assets/textures/plant/hedges_para_CC0/vegetation_hedge_30.png.import b/assets/textures/plant/hedges_para_CC0/vegetation_hedge_30.png.import new file mode 100644 index 0000000..5c5e64b --- /dev/null +++ b/assets/textures/plant/hedges_para_CC0/vegetation_hedge_30.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dwcfcpeh68tqv" +path.s3tc="res://.godot/imported/vegetation_hedge_30.png-3af7552664d56f87474a4d90e51d0f17.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/plant/hedges_para_CC0/vegetation_hedge_30.png" +dest_files=["res://.godot/imported/vegetation_hedge_30.png-3af7552664d56f87474a4d90e51d0f17.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/plant/hedges_para_CC0/vegetation_hedge_32.png b/assets/textures/plant/hedges_para_CC0/vegetation_hedge_32.png new file mode 100644 index 0000000..f635b3b Binary files /dev/null and b/assets/textures/plant/hedges_para_CC0/vegetation_hedge_32.png differ diff --git a/assets/textures/plant/hedges_para_CC0/vegetation_hedge_32.png.import b/assets/textures/plant/hedges_para_CC0/vegetation_hedge_32.png.import new file mode 100644 index 0000000..e9bd82b --- /dev/null +++ b/assets/textures/plant/hedges_para_CC0/vegetation_hedge_32.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b536qdfka47wg" +path="res://.godot/imported/vegetation_hedge_32.png-0a59210e4d10d725f13b257033de5a94.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/plant/hedges_para_CC0/vegetation_hedge_32.png" +dest_files=["res://.godot/imported/vegetation_hedge_32.png-0a59210e4d10d725f13b257033de5a94.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/plant/hedges_para_CC0/vegetation_hedge_34.png b/assets/textures/plant/hedges_para_CC0/vegetation_hedge_34.png new file mode 100644 index 0000000..ee59e7b Binary files /dev/null and b/assets/textures/plant/hedges_para_CC0/vegetation_hedge_34.png differ diff --git a/assets/textures/plant/hedges_para_CC0/vegetation_hedge_34.png.import b/assets/textures/plant/hedges_para_CC0/vegetation_hedge_34.png.import new file mode 100644 index 0000000..f448766 --- /dev/null +++ b/assets/textures/plant/hedges_para_CC0/vegetation_hedge_34.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cb5jo8jhrn1po" +path="res://.godot/imported/vegetation_hedge_34.png-5b345db658098da3f16492b637706ea7.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/plant/hedges_para_CC0/vegetation_hedge_34.png" +dest_files=["res://.godot/imported/vegetation_hedge_34.png-5b345db658098da3f16492b637706ea7.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/plant/hedges_para_CC0/vegetation_hedge_42.png b/assets/textures/plant/hedges_para_CC0/vegetation_hedge_42.png new file mode 100644 index 0000000..dd31039 Binary files /dev/null and b/assets/textures/plant/hedges_para_CC0/vegetation_hedge_42.png differ diff --git a/assets/textures/plant/hedges_para_CC0/vegetation_hedge_42.png.import b/assets/textures/plant/hedges_para_CC0/vegetation_hedge_42.png.import new file mode 100644 index 0000000..3c9cf12 --- /dev/null +++ b/assets/textures/plant/hedges_para_CC0/vegetation_hedge_42.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://2i0b758s2xbf" +path="res://.godot/imported/vegetation_hedge_42.png-bec086a38a36d8c2cf40f1ea8be93e84.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/plant/hedges_para_CC0/vegetation_hedge_42.png" +dest_files=["res://.godot/imported/vegetation_hedge_42.png-bec086a38a36d8c2cf40f1ea8be93e84.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/plant/hedges_para_CC0/vegetation_hedge_43.png b/assets/textures/plant/hedges_para_CC0/vegetation_hedge_43.png new file mode 100644 index 0000000..3913d73 Binary files /dev/null and b/assets/textures/plant/hedges_para_CC0/vegetation_hedge_43.png differ diff --git a/assets/textures/plant/hedges_para_CC0/vegetation_hedge_43.png.import b/assets/textures/plant/hedges_para_CC0/vegetation_hedge_43.png.import new file mode 100644 index 0000000..d49e2bf --- /dev/null +++ b/assets/textures/plant/hedges_para_CC0/vegetation_hedge_43.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ig3fkrymse0p" +path="res://.godot/imported/vegetation_hedge_43.png-e1873efc58c5d4fa241191b1df92847c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/plant/hedges_para_CC0/vegetation_hedge_43.png" +dest_files=["res://.godot/imported/vegetation_hedge_43.png-e1873efc58c5d4fa241191b1df92847c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/plant/hedges_para_CC0/vegetation_hedge_44.png b/assets/textures/plant/hedges_para_CC0/vegetation_hedge_44.png new file mode 100644 index 0000000..41b647a Binary files /dev/null and b/assets/textures/plant/hedges_para_CC0/vegetation_hedge_44.png differ diff --git a/assets/textures/plant/hedges_para_CC0/vegetation_hedge_44.png.import b/assets/textures/plant/hedges_para_CC0/vegetation_hedge_44.png.import new file mode 100644 index 0000000..5de5678 --- /dev/null +++ b/assets/textures/plant/hedges_para_CC0/vegetation_hedge_44.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bt7bdtbqa1ktr" +path="res://.godot/imported/vegetation_hedge_44.png-605ec1a24cfe14eec1eae715811d316e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/plant/hedges_para_CC0/vegetation_hedge_44.png" +dest_files=["res://.godot/imported/vegetation_hedge_44.png-605ec1a24cfe14eec1eae715811d316e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/plant/hedges_para_CC0/vegetation_hedge_61.png b/assets/textures/plant/hedges_para_CC0/vegetation_hedge_61.png new file mode 100644 index 0000000..65a5f6f Binary files /dev/null and b/assets/textures/plant/hedges_para_CC0/vegetation_hedge_61.png differ diff --git a/assets/textures/plant/hedges_para_CC0/vegetation_hedge_61.png.import b/assets/textures/plant/hedges_para_CC0/vegetation_hedge_61.png.import new file mode 100644 index 0000000..56c3012 --- /dev/null +++ b/assets/textures/plant/hedges_para_CC0/vegetation_hedge_61.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://kct2fygdcq7a" +path="res://.godot/imported/vegetation_hedge_61.png-3fe9f0846abd096a90f5bd1b3b656aee.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/plant/hedges_para_CC0/vegetation_hedge_61.png" +dest_files=["res://.godot/imported/vegetation_hedge_61.png-3fe9f0846abd096a90f5bd1b3b656aee.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/plant/holiday_pine_01-256x256.png b/assets/textures/plant/holiday_pine_01-256x256.png new file mode 100644 index 0000000..f087f71 Binary files /dev/null and b/assets/textures/plant/holiday_pine_01-256x256.png differ diff --git a/assets/textures/plant/holiday_pine_01-256x256.png.import b/assets/textures/plant/holiday_pine_01-256x256.png.import new file mode 100644 index 0000000..6dd3f87 --- /dev/null +++ b/assets/textures/plant/holiday_pine_01-256x256.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://djbsbts3nq7vl" +path.s3tc="res://.godot/imported/holiday_pine_01-256x256.png-7aa274ba077f000c8f33e9f55869ec72.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/plant/holiday_pine_01-256x256.png" +dest_files=["res://.godot/imported/holiday_pine_01-256x256.png-7aa274ba077f000c8f33e9f55869ec72.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/sample_code.png b/assets/textures/sample_code.png new file mode 100644 index 0000000..e18ad49 Binary files /dev/null and b/assets/textures/sample_code.png differ diff --git a/assets/textures/sample_code.png.import b/assets/textures/sample_code.png.import new file mode 100644 index 0000000..d72ad0c --- /dev/null +++ b/assets/textures/sample_code.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://pj866ifft1x5" +path.s3tc="res://.godot/imported/sample_code.png-d9e9efe0bb17899d7fcb8577c2af099d.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/sample_code.png" +dest_files=["res://.godot/imported/sample_code.png-d9e9efe0bb17899d7fcb8577c2af099d.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/snow_ice/snow.png b/assets/textures/snow_ice/snow.png new file mode 100644 index 0000000..4cc469d Binary files /dev/null and b/assets/textures/snow_ice/snow.png differ diff --git a/assets/textures/snow_ice/snow.png.import b/assets/textures/snow_ice/snow.png.import new file mode 100644 index 0000000..09e03a4 --- /dev/null +++ b/assets/textures/snow_ice/snow.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://vwnrymaoxu3l" +path.s3tc="res://.godot/imported/snow.png-7e592a3225137dbf180a583b3c4cb110.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/snow_ice/snow.png" +dest_files=["res://.godot/imported/snow.png-7e592a3225137dbf180a583b3c4cb110.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/snow_ice/snow_02_1k/snow_02_ao_1k.png b/assets/textures/snow_ice/snow_02_1k/snow_02_ao_1k.png new file mode 100644 index 0000000..e472e01 Binary files /dev/null and b/assets/textures/snow_ice/snow_02_1k/snow_02_ao_1k.png differ diff --git a/assets/textures/snow_ice/snow_02_1k/snow_02_ao_1k.png.import b/assets/textures/snow_ice/snow_02_1k/snow_02_ao_1k.png.import new file mode 100644 index 0000000..176ce01 --- /dev/null +++ b/assets/textures/snow_ice/snow_02_1k/snow_02_ao_1k.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dgfq58tyb5vqk" +path.s3tc="res://.godot/imported/snow_02_ao_1k.png-58b51a31284d3ab6f4380605487e971d.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/snow_ice/snow_02_1k/snow_02_ao_1k.png" +dest_files=["res://.godot/imported/snow_02_ao_1k.png-58b51a31284d3ab6f4380605487e971d.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/snow_ice/snow_02_1k/snow_02_arm_1k.png b/assets/textures/snow_ice/snow_02_1k/snow_02_arm_1k.png new file mode 100644 index 0000000..a6a5808 Binary files /dev/null and b/assets/textures/snow_ice/snow_02_1k/snow_02_arm_1k.png differ diff --git a/assets/textures/snow_ice/snow_02_1k/snow_02_arm_1k.png.import b/assets/textures/snow_ice/snow_02_1k/snow_02_arm_1k.png.import new file mode 100644 index 0000000..93e055a --- /dev/null +++ b/assets/textures/snow_ice/snow_02_1k/snow_02_arm_1k.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://diu1ab0b6qofp" +path="res://.godot/imported/snow_02_arm_1k.png-e4a8cb1e122049eff70e216a81a970ec.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/snow_ice/snow_02_1k/snow_02_arm_1k.png" +dest_files=["res://.godot/imported/snow_02_arm_1k.png-e4a8cb1e122049eff70e216a81a970ec.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/snow_ice/snow_02_1k/snow_02_nor_gl_1k.png b/assets/textures/snow_ice/snow_02_1k/snow_02_nor_gl_1k.png new file mode 100644 index 0000000..8eba652 Binary files /dev/null and b/assets/textures/snow_ice/snow_02_1k/snow_02_nor_gl_1k.png differ diff --git a/assets/textures/snow_ice/snow_02_1k/snow_02_nor_gl_1k.png.import b/assets/textures/snow_ice/snow_02_1k/snow_02_nor_gl_1k.png.import new file mode 100644 index 0000000..b392c44 --- /dev/null +++ b/assets/textures/snow_ice/snow_02_1k/snow_02_nor_gl_1k.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://csa67615ta3qo" +path="res://.godot/imported/snow_02_nor_gl_1k.png-4ceafee078f65812e166729fd5ba75c0.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/snow_ice/snow_02_1k/snow_02_nor_gl_1k.png" +dest_files=["res://.godot/imported/snow_02_nor_gl_1k.png-4ceafee078f65812e166729fd5ba75c0.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/snow_ice/snow_02_1k/snow_02_rough_1k.png b/assets/textures/snow_ice/snow_02_1k/snow_02_rough_1k.png new file mode 100644 index 0000000..87d1afa Binary files /dev/null and b/assets/textures/snow_ice/snow_02_1k/snow_02_rough_1k.png differ diff --git a/assets/textures/snow_ice/snow_02_1k/snow_02_rough_1k.png.import b/assets/textures/snow_ice/snow_02_1k/snow_02_rough_1k.png.import new file mode 100644 index 0000000..dba1e8e --- /dev/null +++ b/assets/textures/snow_ice/snow_02_1k/snow_02_rough_1k.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://du5bkdtuw20tb" +path="res://.godot/imported/snow_02_rough_1k.png-1e712a7f7578038bdfa1144f1015dc02.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/snow_ice/snow_02_1k/snow_02_rough_1k.png" +dest_files=["res://.godot/imported/snow_02_rough_1k.png-1e712a7f7578038bdfa1144f1015dc02.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/stone_rocks/Rock013_1K-PNG_Color.png b/assets/textures/stone_rocks/Rock013_1K-PNG_Color.png new file mode 100644 index 0000000..30320e0 Binary files /dev/null and b/assets/textures/stone_rocks/Rock013_1K-PNG_Color.png differ diff --git a/assets/textures/stone_rocks/Rock013_1K-PNG_Color.png.import b/assets/textures/stone_rocks/Rock013_1K-PNG_Color.png.import new file mode 100644 index 0000000..19d36be --- /dev/null +++ b/assets/textures/stone_rocks/Rock013_1K-PNG_Color.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://gktcbleyxtm5" +path.s3tc="res://.godot/imported/Rock013_1K-PNG_Color.png-bfeb9c14fe9b5e8ade9929bf55bf414d.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/stone_rocks/Rock013_1K-PNG_Color.png" +dest_files=["res://.godot/imported/Rock013_1K-PNG_Color.png-bfeb9c14fe9b5e8ade9929bf55bf414d.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/stone_rocks/ambeintCG_Clay001_1K-PNG/Clay001.png b/assets/textures/stone_rocks/ambeintCG_Clay001_1K-PNG/Clay001.png new file mode 100644 index 0000000..0107086 Binary files /dev/null and b/assets/textures/stone_rocks/ambeintCG_Clay001_1K-PNG/Clay001.png differ diff --git a/assets/textures/stone_rocks/ambeintCG_Clay001_1K-PNG/Clay001.png.import b/assets/textures/stone_rocks/ambeintCG_Clay001_1K-PNG/Clay001.png.import new file mode 100644 index 0000000..645bdff --- /dev/null +++ b/assets/textures/stone_rocks/ambeintCG_Clay001_1K-PNG/Clay001.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://85pno3amtk71" +path="res://.godot/imported/Clay001.png-ee72bb3980cd6113a2a3fd016c7cf827.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/stone_rocks/ambeintCG_Clay001_1K-PNG/Clay001.png" +dest_files=["res://.godot/imported/Clay001.png-ee72bb3980cd6113a2a3fd016c7cf827.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/stone_rocks/ambeintCG_Clay001_1K-PNG/Clay001_1K-PNG_AmbientOcclusion.png b/assets/textures/stone_rocks/ambeintCG_Clay001_1K-PNG/Clay001_1K-PNG_AmbientOcclusion.png new file mode 100644 index 0000000..fb50865 Binary files /dev/null and b/assets/textures/stone_rocks/ambeintCG_Clay001_1K-PNG/Clay001_1K-PNG_AmbientOcclusion.png differ diff --git a/assets/textures/stone_rocks/ambeintCG_Clay001_1K-PNG/Clay001_1K-PNG_AmbientOcclusion.png.import b/assets/textures/stone_rocks/ambeintCG_Clay001_1K-PNG/Clay001_1K-PNG_AmbientOcclusion.png.import new file mode 100644 index 0000000..e951f84 --- /dev/null +++ b/assets/textures/stone_rocks/ambeintCG_Clay001_1K-PNG/Clay001_1K-PNG_AmbientOcclusion.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dd3cuvyipnsyr" +path="res://.godot/imported/Clay001_1K-PNG_AmbientOcclusion.png-5f37ac80b460e2be9388e946fab965e6.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/stone_rocks/ambeintCG_Clay001_1K-PNG/Clay001_1K-PNG_AmbientOcclusion.png" +dest_files=["res://.godot/imported/Clay001_1K-PNG_AmbientOcclusion.png-5f37ac80b460e2be9388e946fab965e6.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/stone_rocks/ambeintCG_Clay001_1K-PNG/Clay001_1K-PNG_Color.png b/assets/textures/stone_rocks/ambeintCG_Clay001_1K-PNG/Clay001_1K-PNG_Color.png new file mode 100644 index 0000000..384e59a Binary files /dev/null and b/assets/textures/stone_rocks/ambeintCG_Clay001_1K-PNG/Clay001_1K-PNG_Color.png differ diff --git a/assets/textures/stone_rocks/ambeintCG_Clay001_1K-PNG/Clay001_1K-PNG_Color.png.import b/assets/textures/stone_rocks/ambeintCG_Clay001_1K-PNG/Clay001_1K-PNG_Color.png.import new file mode 100644 index 0000000..dc2bd31 --- /dev/null +++ b/assets/textures/stone_rocks/ambeintCG_Clay001_1K-PNG/Clay001_1K-PNG_Color.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ue5eee631uic" +path.s3tc="res://.godot/imported/Clay001_1K-PNG_Color.png-83589e20db1edf0252717f484ba86391.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/stone_rocks/ambeintCG_Clay001_1K-PNG/Clay001_1K-PNG_Color.png" +dest_files=["res://.godot/imported/Clay001_1K-PNG_Color.png-83589e20db1edf0252717f484ba86391.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/stone_rocks/ambeintCG_Clay001_1K-PNG/Clay001_1K-PNG_Displacement.png b/assets/textures/stone_rocks/ambeintCG_Clay001_1K-PNG/Clay001_1K-PNG_Displacement.png new file mode 100644 index 0000000..2dee062 Binary files /dev/null and b/assets/textures/stone_rocks/ambeintCG_Clay001_1K-PNG/Clay001_1K-PNG_Displacement.png differ diff --git a/assets/textures/stone_rocks/ambeintCG_Clay001_1K-PNG/Clay001_1K-PNG_Displacement.png.import b/assets/textures/stone_rocks/ambeintCG_Clay001_1K-PNG/Clay001_1K-PNG_Displacement.png.import new file mode 100644 index 0000000..24c6106 --- /dev/null +++ b/assets/textures/stone_rocks/ambeintCG_Clay001_1K-PNG/Clay001_1K-PNG_Displacement.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://t8hmv1rrr328" +path="res://.godot/imported/Clay001_1K-PNG_Displacement.png-94184a1e2b77224efa9a1d8b17a21ebd.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/stone_rocks/ambeintCG_Clay001_1K-PNG/Clay001_1K-PNG_Displacement.png" +dest_files=["res://.godot/imported/Clay001_1K-PNG_Displacement.png-94184a1e2b77224efa9a1d8b17a21ebd.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/stone_rocks/ambeintCG_Clay001_1K-PNG/Clay001_1K-PNG_NormalGL.png b/assets/textures/stone_rocks/ambeintCG_Clay001_1K-PNG/Clay001_1K-PNG_NormalGL.png new file mode 100644 index 0000000..78469f4 Binary files /dev/null and b/assets/textures/stone_rocks/ambeintCG_Clay001_1K-PNG/Clay001_1K-PNG_NormalGL.png differ diff --git a/assets/textures/stone_rocks/ambeintCG_Clay001_1K-PNG/Clay001_1K-PNG_NormalGL.png.import b/assets/textures/stone_rocks/ambeintCG_Clay001_1K-PNG/Clay001_1K-PNG_NormalGL.png.import new file mode 100644 index 0000000..a3fd226 --- /dev/null +++ b/assets/textures/stone_rocks/ambeintCG_Clay001_1K-PNG/Clay001_1K-PNG_NormalGL.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://6uiw2k5ucl1h" +path.s3tc="res://.godot/imported/Clay001_1K-PNG_NormalGL.png-1e8f08f34bcb73f99c5a93ad4e3cd4b3.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/stone_rocks/ambeintCG_Clay001_1K-PNG/Clay001_1K-PNG_NormalGL.png" +dest_files=["res://.godot/imported/Clay001_1K-PNG_NormalGL.png-1e8f08f34bcb73f99c5a93ad4e3cd4b3.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=1 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=1 +roughness/src_normal="res://assets/textures/stone_rocks/ambeintCG_Clay001_1K-PNG/Clay001_1K-PNG_NormalGL.png" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/stone_rocks/ambeintCG_Clay001_1K-PNG/Clay001_1K-PNG_Roughness.png b/assets/textures/stone_rocks/ambeintCG_Clay001_1K-PNG/Clay001_1K-PNG_Roughness.png new file mode 100644 index 0000000..6db33cc Binary files /dev/null and b/assets/textures/stone_rocks/ambeintCG_Clay001_1K-PNG/Clay001_1K-PNG_Roughness.png differ diff --git a/assets/textures/stone_rocks/ambeintCG_Clay001_1K-PNG/Clay001_1K-PNG_Roughness.png.import b/assets/textures/stone_rocks/ambeintCG_Clay001_1K-PNG/Clay001_1K-PNG_Roughness.png.import new file mode 100644 index 0000000..5b46085 --- /dev/null +++ b/assets/textures/stone_rocks/ambeintCG_Clay001_1K-PNG/Clay001_1K-PNG_Roughness.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://urtllcvum86g" +path.s3tc="res://.godot/imported/Clay001_1K-PNG_Roughness.png-5bb192ac0b0deda2049fbe0bbbb14d38.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/stone_rocks/ambeintCG_Clay001_1K-PNG/Clay001_1K-PNG_Roughness.png" +dest_files=["res://.godot/imported/Clay001_1K-PNG_Roughness.png-5bb192ac0b0deda2049fbe0bbbb14d38.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/stone_rocks/clay_plaster_1k/clay_plaster_diff_1k.png b/assets/textures/stone_rocks/clay_plaster_1k/clay_plaster_diff_1k.png new file mode 100644 index 0000000..6d82689 Binary files /dev/null and b/assets/textures/stone_rocks/clay_plaster_1k/clay_plaster_diff_1k.png differ diff --git a/assets/textures/stone_rocks/clay_plaster_1k/clay_plaster_diff_1k.png.import b/assets/textures/stone_rocks/clay_plaster_1k/clay_plaster_diff_1k.png.import new file mode 100644 index 0000000..4116e56 --- /dev/null +++ b/assets/textures/stone_rocks/clay_plaster_1k/clay_plaster_diff_1k.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ckkwk62beegyh" +path.s3tc="res://.godot/imported/clay_plaster_diff_1k.png-a23f43f4ac297828d671a4c95cfba91a.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/stone_rocks/clay_plaster_1k/clay_plaster_diff_1k.png" +dest_files=["res://.godot/imported/clay_plaster_diff_1k.png-a23f43f4ac297828d671a4c95cfba91a.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/stone_rocks/clay_plaster_1k/clay_plaster_nor_gl_1k.png b/assets/textures/stone_rocks/clay_plaster_1k/clay_plaster_nor_gl_1k.png new file mode 100644 index 0000000..077eb42 Binary files /dev/null and b/assets/textures/stone_rocks/clay_plaster_1k/clay_plaster_nor_gl_1k.png differ diff --git a/assets/textures/stone_rocks/clay_plaster_1k/clay_plaster_nor_gl_1k.png.import b/assets/textures/stone_rocks/clay_plaster_1k/clay_plaster_nor_gl_1k.png.import new file mode 100644 index 0000000..8628493 --- /dev/null +++ b/assets/textures/stone_rocks/clay_plaster_1k/clay_plaster_nor_gl_1k.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bkg5issxesj5b" +path="res://.godot/imported/clay_plaster_nor_gl_1k.png-d1332445e58fa83284bcd8c34815bb4a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/stone_rocks/clay_plaster_1k/clay_plaster_nor_gl_1k.png" +dest_files=["res://.godot/imported/clay_plaster_nor_gl_1k.png-d1332445e58fa83284bcd8c34815bb4a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/stone_rocks/clay_plaster_1k/clay_plaster_rough_1k.png b/assets/textures/stone_rocks/clay_plaster_1k/clay_plaster_rough_1k.png new file mode 100644 index 0000000..869bb99 Binary files /dev/null and b/assets/textures/stone_rocks/clay_plaster_1k/clay_plaster_rough_1k.png differ diff --git a/assets/textures/stone_rocks/clay_plaster_1k/clay_plaster_rough_1k.png.import b/assets/textures/stone_rocks/clay_plaster_1k/clay_plaster_rough_1k.png.import new file mode 100644 index 0000000..fef79a0 --- /dev/null +++ b/assets/textures/stone_rocks/clay_plaster_1k/clay_plaster_rough_1k.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b7nouav5q7ecl" +path="res://.godot/imported/clay_plaster_rough_1k.png-d35b854619811f53f4b5dce563517897.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/stone_rocks/clay_plaster_1k/clay_plaster_rough_1k.png" +dest_files=["res://.godot/imported/clay_plaster_rough_1k.png-d35b854619811f53f4b5dce563517897.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/stone_rocks/cobblestone_floor_07_1k/cobblestone_floor_07_diff_1k.png b/assets/textures/stone_rocks/cobblestone_floor_07_1k/cobblestone_floor_07_diff_1k.png new file mode 100644 index 0000000..a7c8e12 Binary files /dev/null and b/assets/textures/stone_rocks/cobblestone_floor_07_1k/cobblestone_floor_07_diff_1k.png differ diff --git a/assets/textures/stone_rocks/cobblestone_floor_07_1k/cobblestone_floor_07_diff_1k.png.import b/assets/textures/stone_rocks/cobblestone_floor_07_1k/cobblestone_floor_07_diff_1k.png.import new file mode 100644 index 0000000..61976bf --- /dev/null +++ b/assets/textures/stone_rocks/cobblestone_floor_07_1k/cobblestone_floor_07_diff_1k.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bwhxetamb6xdo" +path.s3tc="res://.godot/imported/cobblestone_floor_07_diff_1k.png-f4cdb70244fe758824c95385d7d2f718.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/stone_rocks/cobblestone_floor_07_1k/cobblestone_floor_07_diff_1k.png" +dest_files=["res://.godot/imported/cobblestone_floor_07_diff_1k.png-f4cdb70244fe758824c95385d7d2f718.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/stone_rocks/cobblestone_floor_07_1k/cobblestone_floor_07_nor_gl_1k.png b/assets/textures/stone_rocks/cobblestone_floor_07_1k/cobblestone_floor_07_nor_gl_1k.png new file mode 100644 index 0000000..ea46239 Binary files /dev/null and b/assets/textures/stone_rocks/cobblestone_floor_07_1k/cobblestone_floor_07_nor_gl_1k.png differ diff --git a/assets/textures/stone_rocks/cobblestone_floor_07_1k/cobblestone_floor_07_nor_gl_1k.png.import b/assets/textures/stone_rocks/cobblestone_floor_07_1k/cobblestone_floor_07_nor_gl_1k.png.import new file mode 100644 index 0000000..0605390 --- /dev/null +++ b/assets/textures/stone_rocks/cobblestone_floor_07_1k/cobblestone_floor_07_nor_gl_1k.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://crc7rpbrbvh7u" +path.s3tc="res://.godot/imported/cobblestone_floor_07_nor_gl_1k.png-3c413044a5579d3515d73afeee5c13b5.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/stone_rocks/cobblestone_floor_07_1k/cobblestone_floor_07_nor_gl_1k.png" +dest_files=["res://.godot/imported/cobblestone_floor_07_nor_gl_1k.png-3c413044a5579d3515d73afeee5c13b5.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=1 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=1 +roughness/src_normal="res://assets/textures/cobblestone_floor_07_1k/cobblestone_floor_07_nor_gl_1k.png" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/stone_rocks/cobblestone_floor_07_1k/cobblestone_floor_07_rough_1k.png b/assets/textures/stone_rocks/cobblestone_floor_07_1k/cobblestone_floor_07_rough_1k.png new file mode 100644 index 0000000..1db3997 Binary files /dev/null and b/assets/textures/stone_rocks/cobblestone_floor_07_1k/cobblestone_floor_07_rough_1k.png differ diff --git a/assets/textures/stone_rocks/cobblestone_floor_07_1k/cobblestone_floor_07_rough_1k.png.import b/assets/textures/stone_rocks/cobblestone_floor_07_1k/cobblestone_floor_07_rough_1k.png.import new file mode 100644 index 0000000..d020cc9 --- /dev/null +++ b/assets/textures/stone_rocks/cobblestone_floor_07_1k/cobblestone_floor_07_rough_1k.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dtumthh6pjkna" +path="res://.godot/imported/cobblestone_floor_07_rough_1k.png-8318cf3de8d9df32df2dda814d336803.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/stone_rocks/cobblestone_floor_07_1k/cobblestone_floor_07_rough_1k.png" +dest_files=["res://.godot/imported/cobblestone_floor_07_rough_1k.png-8318cf3de8d9df32df2dda814d336803.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/stone_rocks/concrete_panels_1k/concrete_panels_diff_1k.png b/assets/textures/stone_rocks/concrete_panels_1k/concrete_panels_diff_1k.png new file mode 100644 index 0000000..8ff3603 Binary files /dev/null and b/assets/textures/stone_rocks/concrete_panels_1k/concrete_panels_diff_1k.png differ diff --git a/assets/textures/stone_rocks/concrete_panels_1k/concrete_panels_diff_1k.png.import b/assets/textures/stone_rocks/concrete_panels_1k/concrete_panels_diff_1k.png.import new file mode 100644 index 0000000..1ddabdd --- /dev/null +++ b/assets/textures/stone_rocks/concrete_panels_1k/concrete_panels_diff_1k.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bweh2smlnge6w" +path.s3tc="res://.godot/imported/concrete_panels_diff_1k.png-7172a2a3f616dd6b5acde9d32b94bce5.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/stone_rocks/concrete_panels_1k/concrete_panels_diff_1k.png" +dest_files=["res://.godot/imported/concrete_panels_diff_1k.png-7172a2a3f616dd6b5acde9d32b94bce5.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/stone_rocks/concrete_panels_1k/concrete_panels_nor_gl_1k.png b/assets/textures/stone_rocks/concrete_panels_1k/concrete_panels_nor_gl_1k.png new file mode 100644 index 0000000..a02e416 Binary files /dev/null and b/assets/textures/stone_rocks/concrete_panels_1k/concrete_panels_nor_gl_1k.png differ diff --git a/assets/textures/stone_rocks/concrete_panels_1k/concrete_panels_nor_gl_1k.png.import b/assets/textures/stone_rocks/concrete_panels_1k/concrete_panels_nor_gl_1k.png.import new file mode 100644 index 0000000..faf8946 --- /dev/null +++ b/assets/textures/stone_rocks/concrete_panels_1k/concrete_panels_nor_gl_1k.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://clgooehwcjvj0" +path="res://.godot/imported/concrete_panels_nor_gl_1k.png-652d97628159961f2879c85fe841364d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/stone_rocks/concrete_panels_1k/concrete_panels_nor_gl_1k.png" +dest_files=["res://.godot/imported/concrete_panels_nor_gl_1k.png-652d97628159961f2879c85fe841364d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/stone_rocks/concrete_panels_1k/concrete_panels_rough_1k.png b/assets/textures/stone_rocks/concrete_panels_1k/concrete_panels_rough_1k.png new file mode 100644 index 0000000..e0a5461 Binary files /dev/null and b/assets/textures/stone_rocks/concrete_panels_1k/concrete_panels_rough_1k.png differ diff --git a/assets/textures/stone_rocks/concrete_panels_1k/concrete_panels_rough_1k.png.import b/assets/textures/stone_rocks/concrete_panels_1k/concrete_panels_rough_1k.png.import new file mode 100644 index 0000000..0c24a48 --- /dev/null +++ b/assets/textures/stone_rocks/concrete_panels_1k/concrete_panels_rough_1k.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d2yae2aacwthb" +path="res://.godot/imported/concrete_panels_rough_1k.png-7decd524698c82f6f13ce4374f29a13d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/stone_rocks/concrete_panels_1k/concrete_panels_rough_1k.png" +dest_files=["res://.godot/imported/concrete_panels_rough_1k.png-7decd524698c82f6f13ce4374f29a13d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/stone_rocks/gravel_concrete_03_1k/gravel_concrete_03_ao_1k.png b/assets/textures/stone_rocks/gravel_concrete_03_1k/gravel_concrete_03_ao_1k.png new file mode 100644 index 0000000..0c95e06 Binary files /dev/null and b/assets/textures/stone_rocks/gravel_concrete_03_1k/gravel_concrete_03_ao_1k.png differ diff --git a/assets/textures/stone_rocks/gravel_concrete_03_1k/gravel_concrete_03_ao_1k.png.import b/assets/textures/stone_rocks/gravel_concrete_03_1k/gravel_concrete_03_ao_1k.png.import new file mode 100644 index 0000000..20f43ee --- /dev/null +++ b/assets/textures/stone_rocks/gravel_concrete_03_1k/gravel_concrete_03_ao_1k.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://co6hwv4jxky5j" +path.s3tc="res://.godot/imported/gravel_concrete_03_ao_1k.png-af51ab4f7e2655a5182d551db3f3bc91.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/stone_rocks/gravel_concrete_03_1k/gravel_concrete_03_ao_1k.png" +dest_files=["res://.godot/imported/gravel_concrete_03_ao_1k.png-af51ab4f7e2655a5182d551db3f3bc91.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/stone_rocks/gravel_concrete_03_1k/gravel_concrete_03_arm_1k.png b/assets/textures/stone_rocks/gravel_concrete_03_1k/gravel_concrete_03_arm_1k.png new file mode 100644 index 0000000..50c6f8f Binary files /dev/null and b/assets/textures/stone_rocks/gravel_concrete_03_1k/gravel_concrete_03_arm_1k.png differ diff --git a/assets/textures/stone_rocks/gravel_concrete_03_1k/gravel_concrete_03_arm_1k.png.import b/assets/textures/stone_rocks/gravel_concrete_03_1k/gravel_concrete_03_arm_1k.png.import new file mode 100644 index 0000000..2d95505 --- /dev/null +++ b/assets/textures/stone_rocks/gravel_concrete_03_1k/gravel_concrete_03_arm_1k.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://jkyf013gnoay" +path="res://.godot/imported/gravel_concrete_03_arm_1k.png-8c3cec123b4e35a702cf4ece2758564c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/stone_rocks/gravel_concrete_03_1k/gravel_concrete_03_arm_1k.png" +dest_files=["res://.godot/imported/gravel_concrete_03_arm_1k.png-8c3cec123b4e35a702cf4ece2758564c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/stone_rocks/gravel_concrete_03_1k/gravel_concrete_03_nor_gl_1k.png b/assets/textures/stone_rocks/gravel_concrete_03_1k/gravel_concrete_03_nor_gl_1k.png new file mode 100644 index 0000000..e9808a8 Binary files /dev/null and b/assets/textures/stone_rocks/gravel_concrete_03_1k/gravel_concrete_03_nor_gl_1k.png differ diff --git a/assets/textures/stone_rocks/gravel_concrete_03_1k/gravel_concrete_03_nor_gl_1k.png.import b/assets/textures/stone_rocks/gravel_concrete_03_1k/gravel_concrete_03_nor_gl_1k.png.import new file mode 100644 index 0000000..11230f0 --- /dev/null +++ b/assets/textures/stone_rocks/gravel_concrete_03_1k/gravel_concrete_03_nor_gl_1k.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b8rhqbwmq5c7r" +path="res://.godot/imported/gravel_concrete_03_nor_gl_1k.png-9a8a8bd542b381344a808b17a684fbd7.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/stone_rocks/gravel_concrete_03_1k/gravel_concrete_03_nor_gl_1k.png" +dest_files=["res://.godot/imported/gravel_concrete_03_nor_gl_1k.png-9a8a8bd542b381344a808b17a684fbd7.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/stone_rocks/gravel_concrete_03_1k/gravel_concrete_03_rough_1k.png b/assets/textures/stone_rocks/gravel_concrete_03_1k/gravel_concrete_03_rough_1k.png new file mode 100644 index 0000000..2fd723e Binary files /dev/null and b/assets/textures/stone_rocks/gravel_concrete_03_1k/gravel_concrete_03_rough_1k.png differ diff --git a/assets/textures/stone_rocks/gravel_concrete_03_1k/gravel_concrete_03_rough_1k.png.import b/assets/textures/stone_rocks/gravel_concrete_03_1k/gravel_concrete_03_rough_1k.png.import new file mode 100644 index 0000000..4318597 --- /dev/null +++ b/assets/textures/stone_rocks/gravel_concrete_03_1k/gravel_concrete_03_rough_1k.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cvk0m1glvij4e" +path="res://.godot/imported/gravel_concrete_03_rough_1k.png-bbd17ff9f9a0ac9386a3f62ed5d6e6a3.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/stone_rocks/gravel_concrete_03_1k/gravel_concrete_03_rough_1k.png" +dest_files=["res://.godot/imported/gravel_concrete_03_rough_1k.png-bbd17ff9f9a0ac9386a3f62ed5d6e6a3.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/stone_rocks/monastery_stone_floor_1k/monastery_stone_floor_diff_1k.png b/assets/textures/stone_rocks/monastery_stone_floor_1k/monastery_stone_floor_diff_1k.png new file mode 100644 index 0000000..4b99bcd Binary files /dev/null and b/assets/textures/stone_rocks/monastery_stone_floor_1k/monastery_stone_floor_diff_1k.png differ diff --git a/assets/textures/stone_rocks/monastery_stone_floor_1k/monastery_stone_floor_diff_1k.png.import b/assets/textures/stone_rocks/monastery_stone_floor_1k/monastery_stone_floor_diff_1k.png.import new file mode 100644 index 0000000..45af0da --- /dev/null +++ b/assets/textures/stone_rocks/monastery_stone_floor_1k/monastery_stone_floor_diff_1k.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://7bxoyr6j5oc7" +path.s3tc="res://.godot/imported/monastery_stone_floor_diff_1k.png-14aa3f0cf714c4e9b8701a8ac3f56460.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/stone_rocks/monastery_stone_floor_1k/monastery_stone_floor_diff_1k.png" +dest_files=["res://.godot/imported/monastery_stone_floor_diff_1k.png-14aa3f0cf714c4e9b8701a8ac3f56460.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/stone_rocks/monastery_stone_floor_1k/monastery_stone_floor_nor_gl_1k.png b/assets/textures/stone_rocks/monastery_stone_floor_1k/monastery_stone_floor_nor_gl_1k.png new file mode 100644 index 0000000..ca92101 Binary files /dev/null and b/assets/textures/stone_rocks/monastery_stone_floor_1k/monastery_stone_floor_nor_gl_1k.png differ diff --git a/assets/textures/stone_rocks/monastery_stone_floor_1k/monastery_stone_floor_nor_gl_1k.png.import b/assets/textures/stone_rocks/monastery_stone_floor_1k/monastery_stone_floor_nor_gl_1k.png.import new file mode 100644 index 0000000..f997e84 --- /dev/null +++ b/assets/textures/stone_rocks/monastery_stone_floor_1k/monastery_stone_floor_nor_gl_1k.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b18amp7n51w0" +path="res://.godot/imported/monastery_stone_floor_nor_gl_1k.png-acde26319f797efe349ae5607e664202.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/stone_rocks/monastery_stone_floor_1k/monastery_stone_floor_nor_gl_1k.png" +dest_files=["res://.godot/imported/monastery_stone_floor_nor_gl_1k.png-acde26319f797efe349ae5607e664202.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/stone_rocks/monastery_stone_floor_1k/monastery_stone_floor_rough_1k.png b/assets/textures/stone_rocks/monastery_stone_floor_1k/monastery_stone_floor_rough_1k.png new file mode 100644 index 0000000..8a99e56 Binary files /dev/null and b/assets/textures/stone_rocks/monastery_stone_floor_1k/monastery_stone_floor_rough_1k.png differ diff --git a/assets/textures/stone_rocks/monastery_stone_floor_1k/monastery_stone_floor_rough_1k.png.import b/assets/textures/stone_rocks/monastery_stone_floor_1k/monastery_stone_floor_rough_1k.png.import new file mode 100644 index 0000000..a899e6f --- /dev/null +++ b/assets/textures/stone_rocks/monastery_stone_floor_1k/monastery_stone_floor_rough_1k.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ckth304j3xfnr" +path="res://.godot/imported/monastery_stone_floor_rough_1k.png-bee1868f8d7ecebb0c4ab7025f2e188e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/stone_rocks/monastery_stone_floor_1k/monastery_stone_floor_rough_1k.png" +dest_files=["res://.godot/imported/monastery_stone_floor_rough_1k.png-bee1868f8d7ecebb0c4ab7025f2e188e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/stone_rocks/pavement_02_1k/pavement_02_diff_1k.png b/assets/textures/stone_rocks/pavement_02_1k/pavement_02_diff_1k.png new file mode 100644 index 0000000..47ed7c5 Binary files /dev/null and b/assets/textures/stone_rocks/pavement_02_1k/pavement_02_diff_1k.png differ diff --git a/assets/textures/stone_rocks/pavement_02_1k/pavement_02_diff_1k.png.import b/assets/textures/stone_rocks/pavement_02_1k/pavement_02_diff_1k.png.import new file mode 100644 index 0000000..60a4aeb --- /dev/null +++ b/assets/textures/stone_rocks/pavement_02_1k/pavement_02_diff_1k.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://sqlhgqqadf2u" +path.s3tc="res://.godot/imported/pavement_02_diff_1k.png-b5fd94a4d2ed72d8956a9846ac35afa7.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/stone_rocks/pavement_02_1k/pavement_02_diff_1k.png" +dest_files=["res://.godot/imported/pavement_02_diff_1k.png-b5fd94a4d2ed72d8956a9846ac35afa7.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/stone_rocks/pavement_02_1k/pavement_02_nor_gl_1k.png b/assets/textures/stone_rocks/pavement_02_1k/pavement_02_nor_gl_1k.png new file mode 100644 index 0000000..ad26cf8 Binary files /dev/null and b/assets/textures/stone_rocks/pavement_02_1k/pavement_02_nor_gl_1k.png differ diff --git a/assets/textures/stone_rocks/pavement_02_1k/pavement_02_nor_gl_1k.png.import b/assets/textures/stone_rocks/pavement_02_1k/pavement_02_nor_gl_1k.png.import new file mode 100644 index 0000000..48e25c4 --- /dev/null +++ b/assets/textures/stone_rocks/pavement_02_1k/pavement_02_nor_gl_1k.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bl6bs6a2yxwpo" +path="res://.godot/imported/pavement_02_nor_gl_1k.png-514939ea4d980db015e1e3f1f954f9af.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/stone_rocks/pavement_02_1k/pavement_02_nor_gl_1k.png" +dest_files=["res://.godot/imported/pavement_02_nor_gl_1k.png-514939ea4d980db015e1e3f1f954f9af.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/stone_rocks/pavement_02_1k/pavement_02_rough_1k.png b/assets/textures/stone_rocks/pavement_02_1k/pavement_02_rough_1k.png new file mode 100644 index 0000000..5c1912e Binary files /dev/null and b/assets/textures/stone_rocks/pavement_02_1k/pavement_02_rough_1k.png differ diff --git a/assets/textures/stone_rocks/pavement_02_1k/pavement_02_rough_1k.png.import b/assets/textures/stone_rocks/pavement_02_1k/pavement_02_rough_1k.png.import new file mode 100644 index 0000000..44c66e4 --- /dev/null +++ b/assets/textures/stone_rocks/pavement_02_1k/pavement_02_rough_1k.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://digqbaic5e3sl" +path="res://.godot/imported/pavement_02_rough_1k.png-35699740e79cf2f4dc08e519ead451db.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/stone_rocks/pavement_02_1k/pavement_02_rough_1k.png" +dest_files=["res://.godot/imported/pavement_02_rough_1k.png-35699740e79cf2f4dc08e519ead451db.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/stone_rocks/red_brick_1k/red_brick_diff_1k.png b/assets/textures/stone_rocks/red_brick_1k/red_brick_diff_1k.png new file mode 100644 index 0000000..9847ca3 Binary files /dev/null and b/assets/textures/stone_rocks/red_brick_1k/red_brick_diff_1k.png differ diff --git a/assets/textures/stone_rocks/red_brick_1k/red_brick_diff_1k.png.import b/assets/textures/stone_rocks/red_brick_1k/red_brick_diff_1k.png.import new file mode 100644 index 0000000..e65d3f5 --- /dev/null +++ b/assets/textures/stone_rocks/red_brick_1k/red_brick_diff_1k.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c73agoqjjbht1" +path.s3tc="res://.godot/imported/red_brick_diff_1k.png-d007d7c881149a754e2bda09dcb45404.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/stone_rocks/red_brick_1k/red_brick_diff_1k.png" +dest_files=["res://.godot/imported/red_brick_diff_1k.png-d007d7c881149a754e2bda09dcb45404.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/stone_rocks/red_brick_1k/red_brick_nor_gl_1k.png b/assets/textures/stone_rocks/red_brick_1k/red_brick_nor_gl_1k.png new file mode 100644 index 0000000..a3e8727 Binary files /dev/null and b/assets/textures/stone_rocks/red_brick_1k/red_brick_nor_gl_1k.png differ diff --git a/assets/textures/stone_rocks/red_brick_1k/red_brick_nor_gl_1k.png.import b/assets/textures/stone_rocks/red_brick_1k/red_brick_nor_gl_1k.png.import new file mode 100644 index 0000000..6ccea82 --- /dev/null +++ b/assets/textures/stone_rocks/red_brick_1k/red_brick_nor_gl_1k.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://46oyxw7r24fd" +path.s3tc="res://.godot/imported/red_brick_nor_gl_1k.png-1c712a0c9f29e3cb71d66f2ac305583e.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/stone_rocks/red_brick_1k/red_brick_nor_gl_1k.png" +dest_files=["res://.godot/imported/red_brick_nor_gl_1k.png-1c712a0c9f29e3cb71d66f2ac305583e.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=1 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=1 +roughness/src_normal="res://assets/textures/red_brick_1k/red_brick_nor_gl_1k.png" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/stone_rocks/red_brick_1k/red_brick_rough_1k.png b/assets/textures/stone_rocks/red_brick_1k/red_brick_rough_1k.png new file mode 100644 index 0000000..4e5f1f2 Binary files /dev/null and b/assets/textures/stone_rocks/red_brick_1k/red_brick_rough_1k.png differ diff --git a/assets/textures/stone_rocks/red_brick_1k/red_brick_rough_1k.png.import b/assets/textures/stone_rocks/red_brick_1k/red_brick_rough_1k.png.import new file mode 100644 index 0000000..3cf367b --- /dev/null +++ b/assets/textures/stone_rocks/red_brick_1k/red_brick_rough_1k.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dlyp6ik6jsmkd" +path.s3tc="res://.godot/imported/red_brick_rough_1k.png-8449e62f7af703402cfc79c02a8d59d8.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/stone_rocks/red_brick_1k/red_brick_rough_1k.png" +dest_files=["res://.godot/imported/red_brick_rough_1k.png-8449e62f7af703402cfc79c02a8d59d8.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/stone_rocks/rock_wall_08_1k/rock_wall_08_diff_1k.png b/assets/textures/stone_rocks/rock_wall_08_1k/rock_wall_08_diff_1k.png new file mode 100644 index 0000000..91f51b6 Binary files /dev/null and b/assets/textures/stone_rocks/rock_wall_08_1k/rock_wall_08_diff_1k.png differ diff --git a/assets/textures/stone_rocks/rock_wall_08_1k/rock_wall_08_diff_1k.png.import b/assets/textures/stone_rocks/rock_wall_08_1k/rock_wall_08_diff_1k.png.import new file mode 100644 index 0000000..58ed7b9 --- /dev/null +++ b/assets/textures/stone_rocks/rock_wall_08_1k/rock_wall_08_diff_1k.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cicxindxxehw" +path.s3tc="res://.godot/imported/rock_wall_08_diff_1k.png-778fde5943b90d8571f5c657759001c0.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/stone_rocks/rock_wall_08_1k/rock_wall_08_diff_1k.png" +dest_files=["res://.godot/imported/rock_wall_08_diff_1k.png-778fde5943b90d8571f5c657759001c0.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/stone_rocks/rock_wall_08_1k/rock_wall_08_nor_gl_1k.png b/assets/textures/stone_rocks/rock_wall_08_1k/rock_wall_08_nor_gl_1k.png new file mode 100644 index 0000000..c7401d7 Binary files /dev/null and b/assets/textures/stone_rocks/rock_wall_08_1k/rock_wall_08_nor_gl_1k.png differ diff --git a/assets/textures/stone_rocks/rock_wall_08_1k/rock_wall_08_nor_gl_1k.png.import b/assets/textures/stone_rocks/rock_wall_08_1k/rock_wall_08_nor_gl_1k.png.import new file mode 100644 index 0000000..8e9403c --- /dev/null +++ b/assets/textures/stone_rocks/rock_wall_08_1k/rock_wall_08_nor_gl_1k.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cg2ly41m40qbs" +path="res://.godot/imported/rock_wall_08_nor_gl_1k.png-dd78f459d16b773692c59ddcd91c2d09.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/stone_rocks/rock_wall_08_1k/rock_wall_08_nor_gl_1k.png" +dest_files=["res://.godot/imported/rock_wall_08_nor_gl_1k.png-dd78f459d16b773692c59ddcd91c2d09.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/stone_rocks/rock_wall_08_1k/rock_wall_08_rough_1k.png b/assets/textures/stone_rocks/rock_wall_08_1k/rock_wall_08_rough_1k.png new file mode 100644 index 0000000..93643c3 Binary files /dev/null and b/assets/textures/stone_rocks/rock_wall_08_1k/rock_wall_08_rough_1k.png differ diff --git a/assets/textures/stone_rocks/rock_wall_08_1k/rock_wall_08_rough_1k.png.import b/assets/textures/stone_rocks/rock_wall_08_1k/rock_wall_08_rough_1k.png.import new file mode 100644 index 0000000..ae4a6fb --- /dev/null +++ b/assets/textures/stone_rocks/rock_wall_08_1k/rock_wall_08_rough_1k.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dh8kml2tmoiil" +path="res://.godot/imported/rock_wall_08_rough_1k.png-eb5eed86e5657187255b3937c53936cf.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/stone_rocks/rock_wall_08_1k/rock_wall_08_rough_1k.png" +dest_files=["res://.godot/imported/rock_wall_08_rough_1k.png-eb5eed86e5657187255b3937c53936cf.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/stone_rocks/seaside_rock_1k/seaside_rock_ao_1k.png b/assets/textures/stone_rocks/seaside_rock_1k/seaside_rock_ao_1k.png new file mode 100644 index 0000000..ba8531a Binary files /dev/null and b/assets/textures/stone_rocks/seaside_rock_1k/seaside_rock_ao_1k.png differ diff --git a/assets/textures/stone_rocks/seaside_rock_1k/seaside_rock_ao_1k.png.import b/assets/textures/stone_rocks/seaside_rock_1k/seaside_rock_ao_1k.png.import new file mode 100644 index 0000000..2c7522a --- /dev/null +++ b/assets/textures/stone_rocks/seaside_rock_1k/seaside_rock_ao_1k.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bxlo31dkr1go" +path.s3tc="res://.godot/imported/seaside_rock_ao_1k.png-a320872243d5a9523dc1601e23cd470b.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/stone_rocks/seaside_rock_1k/seaside_rock_ao_1k.png" +dest_files=["res://.godot/imported/seaside_rock_ao_1k.png-a320872243d5a9523dc1601e23cd470b.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/stone_rocks/seaside_rock_1k/seaside_rock_arm_1k.png b/assets/textures/stone_rocks/seaside_rock_1k/seaside_rock_arm_1k.png new file mode 100644 index 0000000..92ed402 Binary files /dev/null and b/assets/textures/stone_rocks/seaside_rock_1k/seaside_rock_arm_1k.png differ diff --git a/assets/textures/stone_rocks/seaside_rock_1k/seaside_rock_arm_1k.png.import b/assets/textures/stone_rocks/seaside_rock_1k/seaside_rock_arm_1k.png.import new file mode 100644 index 0000000..8665a66 --- /dev/null +++ b/assets/textures/stone_rocks/seaside_rock_1k/seaside_rock_arm_1k.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b5cq6ydr38qxj" +path="res://.godot/imported/seaside_rock_arm_1k.png-cf15d5a34712258c31bb899729ce0883.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/stone_rocks/seaside_rock_1k/seaside_rock_arm_1k.png" +dest_files=["res://.godot/imported/seaside_rock_arm_1k.png-cf15d5a34712258c31bb899729ce0883.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/stone_rocks/seaside_rock_1k/seaside_rock_nor_gl_1k.png b/assets/textures/stone_rocks/seaside_rock_1k/seaside_rock_nor_gl_1k.png new file mode 100644 index 0000000..d10385f Binary files /dev/null and b/assets/textures/stone_rocks/seaside_rock_1k/seaside_rock_nor_gl_1k.png differ diff --git a/assets/textures/stone_rocks/seaside_rock_1k/seaside_rock_nor_gl_1k.png.import b/assets/textures/stone_rocks/seaside_rock_1k/seaside_rock_nor_gl_1k.png.import new file mode 100644 index 0000000..e65b30b --- /dev/null +++ b/assets/textures/stone_rocks/seaside_rock_1k/seaside_rock_nor_gl_1k.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b1r11j2tsllkv" +path="res://.godot/imported/seaside_rock_nor_gl_1k.png-5cce66ce83838c78c7e0851be3d8daa6.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/stone_rocks/seaside_rock_1k/seaside_rock_nor_gl_1k.png" +dest_files=["res://.godot/imported/seaside_rock_nor_gl_1k.png-5cce66ce83838c78c7e0851be3d8daa6.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/stone_rocks/seaside_rock_1k/seaside_rock_rough_1k.png b/assets/textures/stone_rocks/seaside_rock_1k/seaside_rock_rough_1k.png new file mode 100644 index 0000000..2eb4799 Binary files /dev/null and b/assets/textures/stone_rocks/seaside_rock_1k/seaside_rock_rough_1k.png differ diff --git a/assets/textures/stone_rocks/seaside_rock_1k/seaside_rock_rough_1k.png.import b/assets/textures/stone_rocks/seaside_rock_1k/seaside_rock_rough_1k.png.import new file mode 100644 index 0000000..29b9093 --- /dev/null +++ b/assets/textures/stone_rocks/seaside_rock_1k/seaside_rock_rough_1k.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b0wdlcily1s7s" +path="res://.godot/imported/seaside_rock_rough_1k.png-58eb3a5a8a238bb980f45759fd5ed4f5.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/stone_rocks/seaside_rock_1k/seaside_rock_rough_1k.png" +dest_files=["res://.godot/imported/seaside_rock_rough_1k.png-58eb3a5a8a238bb980f45759fd5ed4f5.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/tile/RoofingTiles011A_1K-PNG/RoofingTiles011A.png b/assets/textures/tile/RoofingTiles011A_1K-PNG/RoofingTiles011A.png new file mode 100644 index 0000000..561bdcd Binary files /dev/null and b/assets/textures/tile/RoofingTiles011A_1K-PNG/RoofingTiles011A.png differ diff --git a/assets/textures/tile/RoofingTiles011A_1K-PNG/RoofingTiles011A.png.import b/assets/textures/tile/RoofingTiles011A_1K-PNG/RoofingTiles011A.png.import new file mode 100644 index 0000000..c65accb --- /dev/null +++ b/assets/textures/tile/RoofingTiles011A_1K-PNG/RoofingTiles011A.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c37a4vu3t1m4q" +path="res://.godot/imported/RoofingTiles011A.png-dc10c1d8779e2bf65ca05600fea802a4.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/tile/RoofingTiles011A_1K-PNG/RoofingTiles011A.png" +dest_files=["res://.godot/imported/RoofingTiles011A.png-dc10c1d8779e2bf65ca05600fea802a4.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/tile/RoofingTiles011A_1K-PNG/RoofingTiles011A_1K-PNG.mtlx b/assets/textures/tile/RoofingTiles011A_1K-PNG/RoofingTiles011A_1K-PNG.mtlx new file mode 100644 index 0000000..b9a7890 --- /dev/null +++ b/assets/textures/tile/RoofingTiles011A_1K-PNG/RoofingTiles011A_1K-PNG.mtlx @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/textures/tile/RoofingTiles011A_1K-PNG/RoofingTiles011A_1K-PNG.usdc b/assets/textures/tile/RoofingTiles011A_1K-PNG/RoofingTiles011A_1K-PNG.usdc new file mode 100644 index 0000000..b587417 Binary files /dev/null and b/assets/textures/tile/RoofingTiles011A_1K-PNG/RoofingTiles011A_1K-PNG.usdc differ diff --git a/assets/textures/tile/RoofingTiles011A_1K-PNG/RoofingTiles011A_1K-PNG_AmbientOcclusion.png b/assets/textures/tile/RoofingTiles011A_1K-PNG/RoofingTiles011A_1K-PNG_AmbientOcclusion.png new file mode 100644 index 0000000..36c7bf0 Binary files /dev/null and b/assets/textures/tile/RoofingTiles011A_1K-PNG/RoofingTiles011A_1K-PNG_AmbientOcclusion.png differ diff --git a/assets/textures/tile/RoofingTiles011A_1K-PNG/RoofingTiles011A_1K-PNG_AmbientOcclusion.png.import b/assets/textures/tile/RoofingTiles011A_1K-PNG/RoofingTiles011A_1K-PNG_AmbientOcclusion.png.import new file mode 100644 index 0000000..cb7f365 --- /dev/null +++ b/assets/textures/tile/RoofingTiles011A_1K-PNG/RoofingTiles011A_1K-PNG_AmbientOcclusion.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://2reffgnghhgh" +path="res://.godot/imported/RoofingTiles011A_1K-PNG_AmbientOcclusion.png-9550ebc03ed82e58009a9f2affeed652.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/tile/RoofingTiles011A_1K-PNG/RoofingTiles011A_1K-PNG_AmbientOcclusion.png" +dest_files=["res://.godot/imported/RoofingTiles011A_1K-PNG_AmbientOcclusion.png-9550ebc03ed82e58009a9f2affeed652.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/tile/RoofingTiles011A_1K-PNG/RoofingTiles011A_1K-PNG_Color.png b/assets/textures/tile/RoofingTiles011A_1K-PNG/RoofingTiles011A_1K-PNG_Color.png new file mode 100644 index 0000000..4756e9f Binary files /dev/null and b/assets/textures/tile/RoofingTiles011A_1K-PNG/RoofingTiles011A_1K-PNG_Color.png differ diff --git a/assets/textures/tile/RoofingTiles011A_1K-PNG/RoofingTiles011A_1K-PNG_Color.png.import b/assets/textures/tile/RoofingTiles011A_1K-PNG/RoofingTiles011A_1K-PNG_Color.png.import new file mode 100644 index 0000000..5d26556 --- /dev/null +++ b/assets/textures/tile/RoofingTiles011A_1K-PNG/RoofingTiles011A_1K-PNG_Color.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://swm2n1sf70e1" +path.s3tc="res://.godot/imported/RoofingTiles011A_1K-PNG_Color.png-e93261e09791f29e0c6b5d70d050d9c8.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/tile/RoofingTiles011A_1K-PNG/RoofingTiles011A_1K-PNG_Color.png" +dest_files=["res://.godot/imported/RoofingTiles011A_1K-PNG_Color.png-e93261e09791f29e0c6b5d70d050d9c8.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/tile/RoofingTiles011A_1K-PNG/RoofingTiles011A_1K-PNG_Displacement.png b/assets/textures/tile/RoofingTiles011A_1K-PNG/RoofingTiles011A_1K-PNG_Displacement.png new file mode 100644 index 0000000..3e4e5c4 Binary files /dev/null and b/assets/textures/tile/RoofingTiles011A_1K-PNG/RoofingTiles011A_1K-PNG_Displacement.png differ diff --git a/assets/textures/tile/RoofingTiles011A_1K-PNG/RoofingTiles011A_1K-PNG_Displacement.png.import b/assets/textures/tile/RoofingTiles011A_1K-PNG/RoofingTiles011A_1K-PNG_Displacement.png.import new file mode 100644 index 0000000..9ba34bf --- /dev/null +++ b/assets/textures/tile/RoofingTiles011A_1K-PNG/RoofingTiles011A_1K-PNG_Displacement.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dgu2budyixtbk" +path="res://.godot/imported/RoofingTiles011A_1K-PNG_Displacement.png-eff6bbb8c25dc797c29ed18c5e33a424.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/tile/RoofingTiles011A_1K-PNG/RoofingTiles011A_1K-PNG_Displacement.png" +dest_files=["res://.godot/imported/RoofingTiles011A_1K-PNG_Displacement.png-eff6bbb8c25dc797c29ed18c5e33a424.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/tile/RoofingTiles011A_1K-PNG/RoofingTiles011A_1K-PNG_NormalDX.png b/assets/textures/tile/RoofingTiles011A_1K-PNG/RoofingTiles011A_1K-PNG_NormalDX.png new file mode 100644 index 0000000..756b342 Binary files /dev/null and b/assets/textures/tile/RoofingTiles011A_1K-PNG/RoofingTiles011A_1K-PNG_NormalDX.png differ diff --git a/assets/textures/tile/RoofingTiles011A_1K-PNG/RoofingTiles011A_1K-PNG_NormalDX.png.import b/assets/textures/tile/RoofingTiles011A_1K-PNG/RoofingTiles011A_1K-PNG_NormalDX.png.import new file mode 100644 index 0000000..d2509b1 --- /dev/null +++ b/assets/textures/tile/RoofingTiles011A_1K-PNG/RoofingTiles011A_1K-PNG_NormalDX.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://nfgbqhmqllw0" +path="res://.godot/imported/RoofingTiles011A_1K-PNG_NormalDX.png-ad8a62f8d274e2ab45307bfb0c75a6c2.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/tile/RoofingTiles011A_1K-PNG/RoofingTiles011A_1K-PNG_NormalDX.png" +dest_files=["res://.godot/imported/RoofingTiles011A_1K-PNG_NormalDX.png-ad8a62f8d274e2ab45307bfb0c75a6c2.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/tile/RoofingTiles011A_1K-PNG/RoofingTiles011A_1K-PNG_NormalGL.png b/assets/textures/tile/RoofingTiles011A_1K-PNG/RoofingTiles011A_1K-PNG_NormalGL.png new file mode 100644 index 0000000..4bb3ef9 Binary files /dev/null and b/assets/textures/tile/RoofingTiles011A_1K-PNG/RoofingTiles011A_1K-PNG_NormalGL.png differ diff --git a/assets/textures/tile/RoofingTiles011A_1K-PNG/RoofingTiles011A_1K-PNG_NormalGL.png.import b/assets/textures/tile/RoofingTiles011A_1K-PNG/RoofingTiles011A_1K-PNG_NormalGL.png.import new file mode 100644 index 0000000..9ebb211 --- /dev/null +++ b/assets/textures/tile/RoofingTiles011A_1K-PNG/RoofingTiles011A_1K-PNG_NormalGL.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cerfe5q2uihjc" +path="res://.godot/imported/RoofingTiles011A_1K-PNG_NormalGL.png-707463d2d58d7f8953c9266afccff517.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/tile/RoofingTiles011A_1K-PNG/RoofingTiles011A_1K-PNG_NormalGL.png" +dest_files=["res://.godot/imported/RoofingTiles011A_1K-PNG_NormalGL.png-707463d2d58d7f8953c9266afccff517.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/tile/RoofingTiles011A_1K-PNG/RoofingTiles011A_1K-PNG_Opacity.png b/assets/textures/tile/RoofingTiles011A_1K-PNG/RoofingTiles011A_1K-PNG_Opacity.png new file mode 100644 index 0000000..0a762bc Binary files /dev/null and b/assets/textures/tile/RoofingTiles011A_1K-PNG/RoofingTiles011A_1K-PNG_Opacity.png differ diff --git a/assets/textures/tile/RoofingTiles011A_1K-PNG/RoofingTiles011A_1K-PNG_Opacity.png.import b/assets/textures/tile/RoofingTiles011A_1K-PNG/RoofingTiles011A_1K-PNG_Opacity.png.import new file mode 100644 index 0000000..45ab822 --- /dev/null +++ b/assets/textures/tile/RoofingTiles011A_1K-PNG/RoofingTiles011A_1K-PNG_Opacity.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://buh2te37hwa0k" +path="res://.godot/imported/RoofingTiles011A_1K-PNG_Opacity.png-587e8f4986200f55bff66229d55810ad.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/tile/RoofingTiles011A_1K-PNG/RoofingTiles011A_1K-PNG_Opacity.png" +dest_files=["res://.godot/imported/RoofingTiles011A_1K-PNG_Opacity.png-587e8f4986200f55bff66229d55810ad.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/tile/RoofingTiles011A_1K-PNG/RoofingTiles011A_1K-PNG_Roughness.png b/assets/textures/tile/RoofingTiles011A_1K-PNG/RoofingTiles011A_1K-PNG_Roughness.png new file mode 100644 index 0000000..8da9cd7 Binary files /dev/null and b/assets/textures/tile/RoofingTiles011A_1K-PNG/RoofingTiles011A_1K-PNG_Roughness.png differ diff --git a/assets/textures/tile/RoofingTiles011A_1K-PNG/RoofingTiles011A_1K-PNG_Roughness.png.import b/assets/textures/tile/RoofingTiles011A_1K-PNG/RoofingTiles011A_1K-PNG_Roughness.png.import new file mode 100644 index 0000000..a9d1dbd --- /dev/null +++ b/assets/textures/tile/RoofingTiles011A_1K-PNG/RoofingTiles011A_1K-PNG_Roughness.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ct7r2tf3illub" +path="res://.godot/imported/RoofingTiles011A_1K-PNG_Roughness.png-dc715a5e1cd1e035bdbc7e2b6cf21f82.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/tile/RoofingTiles011A_1K-PNG/RoofingTiles011A_1K-PNG_Roughness.png" +dest_files=["res://.godot/imported/RoofingTiles011A_1K-PNG_Roughness.png-dc715a5e1cd1e035bdbc7e2b6cf21f82.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/tile/Tiles133A_1K-PNG/Tiles133A.png b/assets/textures/tile/Tiles133A_1K-PNG/Tiles133A.png new file mode 100644 index 0000000..725d895 Binary files /dev/null and b/assets/textures/tile/Tiles133A_1K-PNG/Tiles133A.png differ diff --git a/assets/textures/tile/Tiles133A_1K-PNG/Tiles133A.png.import b/assets/textures/tile/Tiles133A_1K-PNG/Tiles133A.png.import new file mode 100644 index 0000000..7a8e471 --- /dev/null +++ b/assets/textures/tile/Tiles133A_1K-PNG/Tiles133A.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dklpfu0r3devo" +path="res://.godot/imported/Tiles133A.png-f7486ee664cdaaf30ceba671c3884597.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/tile/Tiles133A_1K-PNG/Tiles133A.png" +dest_files=["res://.godot/imported/Tiles133A.png-f7486ee664cdaaf30ceba671c3884597.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/tile/Tiles133A_1K-PNG/Tiles133A_1K-PNG_AmbientOcclusion.png b/assets/textures/tile/Tiles133A_1K-PNG/Tiles133A_1K-PNG_AmbientOcclusion.png new file mode 100644 index 0000000..f70f047 Binary files /dev/null and b/assets/textures/tile/Tiles133A_1K-PNG/Tiles133A_1K-PNG_AmbientOcclusion.png differ diff --git a/assets/textures/tile/Tiles133A_1K-PNG/Tiles133A_1K-PNG_AmbientOcclusion.png.import b/assets/textures/tile/Tiles133A_1K-PNG/Tiles133A_1K-PNG_AmbientOcclusion.png.import new file mode 100644 index 0000000..0f21da0 --- /dev/null +++ b/assets/textures/tile/Tiles133A_1K-PNG/Tiles133A_1K-PNG_AmbientOcclusion.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bvaaifn4es6by" +path="res://.godot/imported/Tiles133A_1K-PNG_AmbientOcclusion.png-d19d6902c341e43e915c39013721126e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/tile/Tiles133A_1K-PNG/Tiles133A_1K-PNG_AmbientOcclusion.png" +dest_files=["res://.godot/imported/Tiles133A_1K-PNG_AmbientOcclusion.png-d19d6902c341e43e915c39013721126e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/tile/Tiles133A_1K-PNG/Tiles133A_1K-PNG_Color.png b/assets/textures/tile/Tiles133A_1K-PNG/Tiles133A_1K-PNG_Color.png new file mode 100644 index 0000000..91176f2 Binary files /dev/null and b/assets/textures/tile/Tiles133A_1K-PNG/Tiles133A_1K-PNG_Color.png differ diff --git a/assets/textures/tile/Tiles133A_1K-PNG/Tiles133A_1K-PNG_Color.png.import b/assets/textures/tile/Tiles133A_1K-PNG/Tiles133A_1K-PNG_Color.png.import new file mode 100644 index 0000000..8972392 --- /dev/null +++ b/assets/textures/tile/Tiles133A_1K-PNG/Tiles133A_1K-PNG_Color.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b4i54jq34xvyd" +path.s3tc="res://.godot/imported/Tiles133A_1K-PNG_Color.png-2674f64df443837ccdc62bc1d7261034.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/tile/Tiles133A_1K-PNG/Tiles133A_1K-PNG_Color.png" +dest_files=["res://.godot/imported/Tiles133A_1K-PNG_Color.png-2674f64df443837ccdc62bc1d7261034.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/tile/Tiles133A_1K-PNG/Tiles133A_1K-PNG_Displacement.png b/assets/textures/tile/Tiles133A_1K-PNG/Tiles133A_1K-PNG_Displacement.png new file mode 100644 index 0000000..214e4e3 Binary files /dev/null and b/assets/textures/tile/Tiles133A_1K-PNG/Tiles133A_1K-PNG_Displacement.png differ diff --git a/assets/textures/tile/Tiles133A_1K-PNG/Tiles133A_1K-PNG_Displacement.png.import b/assets/textures/tile/Tiles133A_1K-PNG/Tiles133A_1K-PNG_Displacement.png.import new file mode 100644 index 0000000..15593cf --- /dev/null +++ b/assets/textures/tile/Tiles133A_1K-PNG/Tiles133A_1K-PNG_Displacement.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dp8dxddlijvgl" +path="res://.godot/imported/Tiles133A_1K-PNG_Displacement.png-74494f3c29984de4189cc2f5836cb2ad.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/tile/Tiles133A_1K-PNG/Tiles133A_1K-PNG_Displacement.png" +dest_files=["res://.godot/imported/Tiles133A_1K-PNG_Displacement.png-74494f3c29984de4189cc2f5836cb2ad.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/tile/Tiles133A_1K-PNG/Tiles133A_1K-PNG_NormalGL.png b/assets/textures/tile/Tiles133A_1K-PNG/Tiles133A_1K-PNG_NormalGL.png new file mode 100644 index 0000000..8122355 Binary files /dev/null and b/assets/textures/tile/Tiles133A_1K-PNG/Tiles133A_1K-PNG_NormalGL.png differ diff --git a/assets/textures/tile/Tiles133A_1K-PNG/Tiles133A_1K-PNG_NormalGL.png.import b/assets/textures/tile/Tiles133A_1K-PNG/Tiles133A_1K-PNG_NormalGL.png.import new file mode 100644 index 0000000..a27f8c5 --- /dev/null +++ b/assets/textures/tile/Tiles133A_1K-PNG/Tiles133A_1K-PNG_NormalGL.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://doce1tosns0ny" +path.s3tc="res://.godot/imported/Tiles133A_1K-PNG_NormalGL.png-ae18f75558830c000b7231ab9a6c4f86.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/tile/Tiles133A_1K-PNG/Tiles133A_1K-PNG_NormalGL.png" +dest_files=["res://.godot/imported/Tiles133A_1K-PNG_NormalGL.png-ae18f75558830c000b7231ab9a6c4f86.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=1 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=1 +roughness/src_normal="res://assets/textures/Tiles133A_1K-PNG/Tiles133A_1K-PNG_NormalGL.png" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/tile/Tiles133A_1K-PNG/Tiles133A_1K-PNG_Roughness.png b/assets/textures/tile/Tiles133A_1K-PNG/Tiles133A_1K-PNG_Roughness.png new file mode 100644 index 0000000..bf1e9d1 Binary files /dev/null and b/assets/textures/tile/Tiles133A_1K-PNG/Tiles133A_1K-PNG_Roughness.png differ diff --git a/assets/textures/tile/Tiles133A_1K-PNG/Tiles133A_1K-PNG_Roughness.png.import b/assets/textures/tile/Tiles133A_1K-PNG/Tiles133A_1K-PNG_Roughness.png.import new file mode 100644 index 0000000..0916bf5 --- /dev/null +++ b/assets/textures/tile/Tiles133A_1K-PNG/Tiles133A_1K-PNG_Roughness.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b3rpmyu0uq3vv" +path.s3tc="res://.godot/imported/Tiles133A_1K-PNG_Roughness.png-0e5305e232dfefb9ce8470ca8c9fcd85.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/tile/Tiles133A_1K-PNG/Tiles133A_1K-PNG_Roughness.png" +dest_files=["res://.godot/imported/Tiles133A_1K-PNG_Roughness.png-0e5305e232dfefb9ce8470ca8c9fcd85.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/tile/Tiles134A_1K-PNG/Tiles134A.png b/assets/textures/tile/Tiles134A_1K-PNG/Tiles134A.png new file mode 100644 index 0000000..22da5c6 Binary files /dev/null and b/assets/textures/tile/Tiles134A_1K-PNG/Tiles134A.png differ diff --git a/assets/textures/tile/Tiles134A_1K-PNG/Tiles134A.png.import b/assets/textures/tile/Tiles134A_1K-PNG/Tiles134A.png.import new file mode 100644 index 0000000..1d9d324 --- /dev/null +++ b/assets/textures/tile/Tiles134A_1K-PNG/Tiles134A.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c88djy675fgce" +path="res://.godot/imported/Tiles134A.png-2e445dc7a4175bff41f32077e305310d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/tile/Tiles134A_1K-PNG/Tiles134A.png" +dest_files=["res://.godot/imported/Tiles134A.png-2e445dc7a4175bff41f32077e305310d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/tile/Tiles134A_1K-PNG/Tiles134A_1K-PNG_AmbientOcclusion.png b/assets/textures/tile/Tiles134A_1K-PNG/Tiles134A_1K-PNG_AmbientOcclusion.png new file mode 100644 index 0000000..e0e1d31 Binary files /dev/null and b/assets/textures/tile/Tiles134A_1K-PNG/Tiles134A_1K-PNG_AmbientOcclusion.png differ diff --git a/assets/textures/tile/Tiles134A_1K-PNG/Tiles134A_1K-PNG_AmbientOcclusion.png.import b/assets/textures/tile/Tiles134A_1K-PNG/Tiles134A_1K-PNG_AmbientOcclusion.png.import new file mode 100644 index 0000000..8f59ef0 --- /dev/null +++ b/assets/textures/tile/Tiles134A_1K-PNG/Tiles134A_1K-PNG_AmbientOcclusion.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://t2wdiquldrha" +path="res://.godot/imported/Tiles134A_1K-PNG_AmbientOcclusion.png-149dff3c8837371c3fd54c538833c8b7.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/tile/Tiles134A_1K-PNG/Tiles134A_1K-PNG_AmbientOcclusion.png" +dest_files=["res://.godot/imported/Tiles134A_1K-PNG_AmbientOcclusion.png-149dff3c8837371c3fd54c538833c8b7.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/tile/Tiles134A_1K-PNG/Tiles134A_1K-PNG_Color.png b/assets/textures/tile/Tiles134A_1K-PNG/Tiles134A_1K-PNG_Color.png new file mode 100644 index 0000000..481265d Binary files /dev/null and b/assets/textures/tile/Tiles134A_1K-PNG/Tiles134A_1K-PNG_Color.png differ diff --git a/assets/textures/tile/Tiles134A_1K-PNG/Tiles134A_1K-PNG_Color.png.import b/assets/textures/tile/Tiles134A_1K-PNG/Tiles134A_1K-PNG_Color.png.import new file mode 100644 index 0000000..3cb3f91 --- /dev/null +++ b/assets/textures/tile/Tiles134A_1K-PNG/Tiles134A_1K-PNG_Color.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cssr4h5a1yaj7" +path.s3tc="res://.godot/imported/Tiles134A_1K-PNG_Color.png-40f44b3063221f579835ba80cd86125b.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/tile/Tiles134A_1K-PNG/Tiles134A_1K-PNG_Color.png" +dest_files=["res://.godot/imported/Tiles134A_1K-PNG_Color.png-40f44b3063221f579835ba80cd86125b.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/tile/Tiles134A_1K-PNG/Tiles134A_1K-PNG_Displacement.png b/assets/textures/tile/Tiles134A_1K-PNG/Tiles134A_1K-PNG_Displacement.png new file mode 100644 index 0000000..f88f9fb Binary files /dev/null and b/assets/textures/tile/Tiles134A_1K-PNG/Tiles134A_1K-PNG_Displacement.png differ diff --git a/assets/textures/tile/Tiles134A_1K-PNG/Tiles134A_1K-PNG_Displacement.png.import b/assets/textures/tile/Tiles134A_1K-PNG/Tiles134A_1K-PNG_Displacement.png.import new file mode 100644 index 0000000..dca550c --- /dev/null +++ b/assets/textures/tile/Tiles134A_1K-PNG/Tiles134A_1K-PNG_Displacement.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bqfxhv0c4y8ty" +path="res://.godot/imported/Tiles134A_1K-PNG_Displacement.png-b1f0f4dd796142b8f5db37c530b6dadf.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/tile/Tiles134A_1K-PNG/Tiles134A_1K-PNG_Displacement.png" +dest_files=["res://.godot/imported/Tiles134A_1K-PNG_Displacement.png-b1f0f4dd796142b8f5db37c530b6dadf.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/tile/Tiles134A_1K-PNG/Tiles134A_1K-PNG_NormalGL.png b/assets/textures/tile/Tiles134A_1K-PNG/Tiles134A_1K-PNG_NormalGL.png new file mode 100644 index 0000000..0817af9 Binary files /dev/null and b/assets/textures/tile/Tiles134A_1K-PNG/Tiles134A_1K-PNG_NormalGL.png differ diff --git a/assets/textures/tile/Tiles134A_1K-PNG/Tiles134A_1K-PNG_NormalGL.png.import b/assets/textures/tile/Tiles134A_1K-PNG/Tiles134A_1K-PNG_NormalGL.png.import new file mode 100644 index 0000000..4d8f5e5 --- /dev/null +++ b/assets/textures/tile/Tiles134A_1K-PNG/Tiles134A_1K-PNG_NormalGL.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cr8lynqj802dv" +path.s3tc="res://.godot/imported/Tiles134A_1K-PNG_NormalGL.png-c3b9cc82df13c16d41c25d6555d2a364.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/tile/Tiles134A_1K-PNG/Tiles134A_1K-PNG_NormalGL.png" +dest_files=["res://.godot/imported/Tiles134A_1K-PNG_NormalGL.png-c3b9cc82df13c16d41c25d6555d2a364.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=1 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=1 +roughness/src_normal="res://assets/textures/Tiles134A_1K-PNG/Tiles134A_1K-PNG_NormalGL.png" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/tile/Tiles134A_1K-PNG/Tiles134A_1K-PNG_Roughness.png b/assets/textures/tile/Tiles134A_1K-PNG/Tiles134A_1K-PNG_Roughness.png new file mode 100644 index 0000000..d4d904d Binary files /dev/null and b/assets/textures/tile/Tiles134A_1K-PNG/Tiles134A_1K-PNG_Roughness.png differ diff --git a/assets/textures/tile/Tiles134A_1K-PNG/Tiles134A_1K-PNG_Roughness.png.import b/assets/textures/tile/Tiles134A_1K-PNG/Tiles134A_1K-PNG_Roughness.png.import new file mode 100644 index 0000000..950c78a --- /dev/null +++ b/assets/textures/tile/Tiles134A_1K-PNG/Tiles134A_1K-PNG_Roughness.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://7erox76todcl" +path.s3tc="res://.godot/imported/Tiles134A_1K-PNG_Roughness.png-991fce9c7c48bc823aeeefcdfb2bb207.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/tile/Tiles134A_1K-PNG/Tiles134A_1K-PNG_Roughness.png" +dest_files=["res://.godot/imported/Tiles134A_1K-PNG_Roughness.png-991fce9c7c48bc823aeeefcdfb2bb207.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/tile/terrazzo_tiles_1k/terrazzo_tiles_diff_1k.png b/assets/textures/tile/terrazzo_tiles_1k/terrazzo_tiles_diff_1k.png new file mode 100644 index 0000000..1f30d52 Binary files /dev/null and b/assets/textures/tile/terrazzo_tiles_1k/terrazzo_tiles_diff_1k.png differ diff --git a/assets/textures/tile/terrazzo_tiles_1k/terrazzo_tiles_diff_1k.png.import b/assets/textures/tile/terrazzo_tiles_1k/terrazzo_tiles_diff_1k.png.import new file mode 100644 index 0000000..f1ed146 --- /dev/null +++ b/assets/textures/tile/terrazzo_tiles_1k/terrazzo_tiles_diff_1k.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://chq07fgoxrsr0" +path.s3tc="res://.godot/imported/terrazzo_tiles_diff_1k.png-94d651349e80dcc89ad50b1804cd4860.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/tile/terrazzo_tiles_1k/terrazzo_tiles_diff_1k.png" +dest_files=["res://.godot/imported/terrazzo_tiles_diff_1k.png-94d651349e80dcc89ad50b1804cd4860.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/tile/terrazzo_tiles_1k/terrazzo_tiles_nor_gl_1k.png b/assets/textures/tile/terrazzo_tiles_1k/terrazzo_tiles_nor_gl_1k.png new file mode 100644 index 0000000..faae58d Binary files /dev/null and b/assets/textures/tile/terrazzo_tiles_1k/terrazzo_tiles_nor_gl_1k.png differ diff --git a/assets/textures/tile/terrazzo_tiles_1k/terrazzo_tiles_nor_gl_1k.png.import b/assets/textures/tile/terrazzo_tiles_1k/terrazzo_tiles_nor_gl_1k.png.import new file mode 100644 index 0000000..f8b2187 --- /dev/null +++ b/assets/textures/tile/terrazzo_tiles_1k/terrazzo_tiles_nor_gl_1k.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://jysmfdtetd38" +path="res://.godot/imported/terrazzo_tiles_nor_gl_1k.png-c39c478a3d8f34dda03ce9f43785d9db.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/tile/terrazzo_tiles_1k/terrazzo_tiles_nor_gl_1k.png" +dest_files=["res://.godot/imported/terrazzo_tiles_nor_gl_1k.png-c39c478a3d8f34dda03ce9f43785d9db.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/tile/terrazzo_tiles_1k/terrazzo_tiles_rough_1k.png b/assets/textures/tile/terrazzo_tiles_1k/terrazzo_tiles_rough_1k.png new file mode 100644 index 0000000..1c21860 Binary files /dev/null and b/assets/textures/tile/terrazzo_tiles_1k/terrazzo_tiles_rough_1k.png differ diff --git a/assets/textures/tile/terrazzo_tiles_1k/terrazzo_tiles_rough_1k.png.import b/assets/textures/tile/terrazzo_tiles_1k/terrazzo_tiles_rough_1k.png.import new file mode 100644 index 0000000..a895d45 --- /dev/null +++ b/assets/textures/tile/terrazzo_tiles_1k/terrazzo_tiles_rough_1k.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b671b3b0e8urq" +path="res://.godot/imported/terrazzo_tiles_rough_1k.png-9d7c8138acb4295b64de78fa85be96b0.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/tile/terrazzo_tiles_1k/terrazzo_tiles_rough_1k.png" +dest_files=["res://.godot/imported/terrazzo_tiles_rough_1k.png-9d7c8138acb4295b64de78fa85be96b0.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/wallpaper_walls/flower_wallpaper/Flowers1_N.jpg b/assets/textures/wallpaper_walls/flower_wallpaper/Flowers1_N.jpg new file mode 100644 index 0000000..a29a2a4 Binary files /dev/null and b/assets/textures/wallpaper_walls/flower_wallpaper/Flowers1_N.jpg differ diff --git a/assets/textures/wallpaper_walls/flower_wallpaper/Flowers1_N.jpg.import b/assets/textures/wallpaper_walls/flower_wallpaper/Flowers1_N.jpg.import new file mode 100644 index 0000000..393a96f --- /dev/null +++ b/assets/textures/wallpaper_walls/flower_wallpaper/Flowers1_N.jpg.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dyiq4dhr3ldnt" +path.s3tc="res://.godot/imported/Flowers1_N.jpg-1df6b293e9a342f99b38a3fca07b41d0.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/wallpaper_walls/flower_wallpaper/Flowers1_N.jpg" +dest_files=["res://.godot/imported/Flowers1_N.jpg-1df6b293e9a342f99b38a3fca07b41d0.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=1 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=1 +roughness/src_normal="res://assets/textures/Flowers1_N.jpg" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/wallpaper_walls/flower_wallpaper/Flowers1_S.jpg b/assets/textures/wallpaper_walls/flower_wallpaper/Flowers1_S.jpg new file mode 100644 index 0000000..869a28f Binary files /dev/null and b/assets/textures/wallpaper_walls/flower_wallpaper/Flowers1_S.jpg differ diff --git a/assets/textures/wallpaper_walls/flower_wallpaper/Flowers1_S.jpg.import b/assets/textures/wallpaper_walls/flower_wallpaper/Flowers1_S.jpg.import new file mode 100644 index 0000000..7dcff61 --- /dev/null +++ b/assets/textures/wallpaper_walls/flower_wallpaper/Flowers1_S.jpg.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dh1j8y8gb3v8a" +path.s3tc="res://.godot/imported/Flowers1_S.jpg-114e2053bc5df2db2cf9dc43dfa998e0.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/wallpaper_walls/flower_wallpaper/Flowers1_S.jpg" +dest_files=["res://.godot/imported/Flowers1_S.jpg-114e2053bc5df2db2cf9dc43dfa998e0.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/wallpaper_walls/plastered_wall_1k/plastered_wall_diff_1k.png b/assets/textures/wallpaper_walls/plastered_wall_1k/plastered_wall_diff_1k.png new file mode 100644 index 0000000..fc2e522 Binary files /dev/null and b/assets/textures/wallpaper_walls/plastered_wall_1k/plastered_wall_diff_1k.png differ diff --git a/assets/textures/wallpaper_walls/plastered_wall_1k/plastered_wall_diff_1k.png.import b/assets/textures/wallpaper_walls/plastered_wall_1k/plastered_wall_diff_1k.png.import new file mode 100644 index 0000000..8365bed --- /dev/null +++ b/assets/textures/wallpaper_walls/plastered_wall_1k/plastered_wall_diff_1k.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://du5na6vot1f10" +path.s3tc="res://.godot/imported/plastered_wall_diff_1k.png-a787f4782c1c1860b587f50aa0c515de.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/wallpaper_walls/plastered_wall_1k/plastered_wall_diff_1k.png" +dest_files=["res://.godot/imported/plastered_wall_diff_1k.png-a787f4782c1c1860b587f50aa0c515de.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/wallpaper_walls/plastered_wall_1k/plastered_wall_nor_gl_1k.png b/assets/textures/wallpaper_walls/plastered_wall_1k/plastered_wall_nor_gl_1k.png new file mode 100644 index 0000000..c15a83a Binary files /dev/null and b/assets/textures/wallpaper_walls/plastered_wall_1k/plastered_wall_nor_gl_1k.png differ diff --git a/assets/textures/wallpaper_walls/plastered_wall_1k/plastered_wall_nor_gl_1k.png.import b/assets/textures/wallpaper_walls/plastered_wall_1k/plastered_wall_nor_gl_1k.png.import new file mode 100644 index 0000000..3031c6f --- /dev/null +++ b/assets/textures/wallpaper_walls/plastered_wall_1k/plastered_wall_nor_gl_1k.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bgt2k6lmiglab" +path="res://.godot/imported/plastered_wall_nor_gl_1k.png-03b1d91ed27db9cdfd367bda767f8d16.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/wallpaper_walls/plastered_wall_1k/plastered_wall_nor_gl_1k.png" +dest_files=["res://.godot/imported/plastered_wall_nor_gl_1k.png-03b1d91ed27db9cdfd367bda767f8d16.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/wallpaper_walls/plastered_wall_1k/plastered_wall_rough_1k.png b/assets/textures/wallpaper_walls/plastered_wall_1k/plastered_wall_rough_1k.png new file mode 100644 index 0000000..d7a67d8 Binary files /dev/null and b/assets/textures/wallpaper_walls/plastered_wall_1k/plastered_wall_rough_1k.png differ diff --git a/assets/textures/wallpaper_walls/plastered_wall_1k/plastered_wall_rough_1k.png.import b/assets/textures/wallpaper_walls/plastered_wall_1k/plastered_wall_rough_1k.png.import new file mode 100644 index 0000000..94b4af3 --- /dev/null +++ b/assets/textures/wallpaper_walls/plastered_wall_1k/plastered_wall_rough_1k.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dw375inbmek4v" +path="res://.godot/imported/plastered_wall_rough_1k.png-31991bcf2b7e448c390727b0d2f53f14.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/wallpaper_walls/plastered_wall_1k/plastered_wall_rough_1k.png" +dest_files=["res://.godot/imported/plastered_wall_rough_1k.png-31991bcf2b7e448c390727b0d2f53f14.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/wallpaper_walls/shitty_test_wallpaper.png b/assets/textures/wallpaper_walls/shitty_test_wallpaper.png new file mode 100644 index 0000000..72423dc Binary files /dev/null and b/assets/textures/wallpaper_walls/shitty_test_wallpaper.png differ diff --git a/assets/textures/wallpaper_walls/shitty_test_wallpaper.png.import b/assets/textures/wallpaper_walls/shitty_test_wallpaper.png.import new file mode 100644 index 0000000..9ab6b23 --- /dev/null +++ b/assets/textures/wallpaper_walls/shitty_test_wallpaper.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b4en72x5rudcb" +path.s3tc="res://.godot/imported/shitty_test_wallpaper.png-3f424db77c48e9c4078bca721f364aa1.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/wallpaper_walls/shitty_test_wallpaper.png" +dest_files=["res://.godot/imported/shitty_test_wallpaper.png-3f424db77c48e9c4078bca721f364aa1.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/wallpaper_walls/texpaint/PT_BEIGE.png b/assets/textures/wallpaper_walls/texpaint/PT_BEIGE.png new file mode 100644 index 0000000..00e8e9d Binary files /dev/null and b/assets/textures/wallpaper_walls/texpaint/PT_BEIGE.png differ diff --git a/assets/textures/wallpaper_walls/texpaint/PT_BEIGE.png.import b/assets/textures/wallpaper_walls/texpaint/PT_BEIGE.png.import new file mode 100644 index 0000000..c748b02 --- /dev/null +++ b/assets/textures/wallpaper_walls/texpaint/PT_BEIGE.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cncjhm6ehbbpp" +path.s3tc="res://.godot/imported/PT_BEIGE.png-b0c3d5ac4dd487bc040631f69aa02a19.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/wallpaper_walls/texpaint/PT_BEIGE.png" +dest_files=["res://.godot/imported/PT_BEIGE.png-b0c3d5ac4dd487bc040631f69aa02a19.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/wallpaper_walls/texpaint/PT_BLACK.png b/assets/textures/wallpaper_walls/texpaint/PT_BLACK.png new file mode 100644 index 0000000..de287d9 Binary files /dev/null and b/assets/textures/wallpaper_walls/texpaint/PT_BLACK.png differ diff --git a/assets/textures/wallpaper_walls/texpaint/PT_BLACK.png.import b/assets/textures/wallpaper_walls/texpaint/PT_BLACK.png.import new file mode 100644 index 0000000..9439a50 --- /dev/null +++ b/assets/textures/wallpaper_walls/texpaint/PT_BLACK.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b81pd8ix4mrdg" +path.s3tc="res://.godot/imported/PT_BLACK.png-928be8950d8c6d043e0902146076a3e8.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/wallpaper_walls/texpaint/PT_BLACK.png" +dest_files=["res://.godot/imported/PT_BLACK.png-928be8950d8c6d043e0902146076a3e8.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/wallpaper_walls/texpaint/PT_BLUE.png b/assets/textures/wallpaper_walls/texpaint/PT_BLUE.png new file mode 100644 index 0000000..5542611 Binary files /dev/null and b/assets/textures/wallpaper_walls/texpaint/PT_BLUE.png differ diff --git a/assets/textures/wallpaper_walls/texpaint/PT_BLUE.png.import b/assets/textures/wallpaper_walls/texpaint/PT_BLUE.png.import new file mode 100644 index 0000000..0e51bde --- /dev/null +++ b/assets/textures/wallpaper_walls/texpaint/PT_BLUE.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dsh1sqaq0dp7b" +path.s3tc="res://.godot/imported/PT_BLUE.png-8d3fc400741208f7b9e0597aa05584ff.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/wallpaper_walls/texpaint/PT_BLUE.png" +dest_files=["res://.godot/imported/PT_BLUE.png-8d3fc400741208f7b9e0597aa05584ff.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/wallpaper_walls/texpaint/PT_BROWN.png b/assets/textures/wallpaper_walls/texpaint/PT_BROWN.png new file mode 100644 index 0000000..edd312f Binary files /dev/null and b/assets/textures/wallpaper_walls/texpaint/PT_BROWN.png differ diff --git a/assets/textures/wallpaper_walls/texpaint/PT_BROWN.png.import b/assets/textures/wallpaper_walls/texpaint/PT_BROWN.png.import new file mode 100644 index 0000000..014593e --- /dev/null +++ b/assets/textures/wallpaper_walls/texpaint/PT_BROWN.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dgp1mm1uo2vem" +path="res://.godot/imported/PT_BROWN.png-c773afff89b960936833dd917f119a3d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/wallpaper_walls/texpaint/PT_BROWN.png" +dest_files=["res://.godot/imported/PT_BROWN.png-c773afff89b960936833dd917f119a3d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/wallpaper_walls/texpaint/PT_COAL.png b/assets/textures/wallpaper_walls/texpaint/PT_COAL.png new file mode 100644 index 0000000..f1edbfe Binary files /dev/null and b/assets/textures/wallpaper_walls/texpaint/PT_COAL.png differ diff --git a/assets/textures/wallpaper_walls/texpaint/PT_COAL.png.import b/assets/textures/wallpaper_walls/texpaint/PT_COAL.png.import new file mode 100644 index 0000000..6966ad9 --- /dev/null +++ b/assets/textures/wallpaper_walls/texpaint/PT_COAL.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dxalo466sr8wy" +path.s3tc="res://.godot/imported/PT_COAL.png-e11c975e4322d2114987265467c5a06c.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/wallpaper_walls/texpaint/PT_COAL.png" +dest_files=["res://.godot/imported/PT_COAL.png-e11c975e4322d2114987265467c5a06c.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/wallpaper_walls/texpaint/PT_DIRT.png b/assets/textures/wallpaper_walls/texpaint/PT_DIRT.png new file mode 100644 index 0000000..3180117 Binary files /dev/null and b/assets/textures/wallpaper_walls/texpaint/PT_DIRT.png differ diff --git a/assets/textures/wallpaper_walls/texpaint/PT_DIRT.png.import b/assets/textures/wallpaper_walls/texpaint/PT_DIRT.png.import new file mode 100644 index 0000000..9858027 --- /dev/null +++ b/assets/textures/wallpaper_walls/texpaint/PT_DIRT.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c876qtivvcfsl" +path.s3tc="res://.godot/imported/PT_DIRT.png-a61cc890fab487b549a808d34e6e4f20.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/wallpaper_walls/texpaint/PT_DIRT.png" +dest_files=["res://.godot/imported/PT_DIRT.png-a61cc890fab487b549a808d34e6e4f20.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/wallpaper_walls/texpaint/PT_GOLD.png b/assets/textures/wallpaper_walls/texpaint/PT_GOLD.png new file mode 100644 index 0000000..4487761 Binary files /dev/null and b/assets/textures/wallpaper_walls/texpaint/PT_GOLD.png differ diff --git a/assets/textures/wallpaper_walls/texpaint/PT_GOLD.png.import b/assets/textures/wallpaper_walls/texpaint/PT_GOLD.png.import new file mode 100644 index 0000000..3d13030 --- /dev/null +++ b/assets/textures/wallpaper_walls/texpaint/PT_GOLD.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bwm0fvouixtee" +path.s3tc="res://.godot/imported/PT_GOLD.png-f898fb8cf7b4762e3f77ad42f96f3943.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/wallpaper_walls/texpaint/PT_GOLD.png" +dest_files=["res://.godot/imported/PT_GOLD.png-f898fb8cf7b4762e3f77ad42f96f3943.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/wallpaper_walls/texpaint/PT_GREEN.png b/assets/textures/wallpaper_walls/texpaint/PT_GREEN.png new file mode 100644 index 0000000..89c8bc6 Binary files /dev/null and b/assets/textures/wallpaper_walls/texpaint/PT_GREEN.png differ diff --git a/assets/textures/wallpaper_walls/texpaint/PT_GREEN.png.import b/assets/textures/wallpaper_walls/texpaint/PT_GREEN.png.import new file mode 100644 index 0000000..26ec83a --- /dev/null +++ b/assets/textures/wallpaper_walls/texpaint/PT_GREEN.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://byo74v2l4rsfi" +path="res://.godot/imported/PT_GREEN.png-2ec48f243d0a304b657e781158b8cb88.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/wallpaper_walls/texpaint/PT_GREEN.png" +dest_files=["res://.godot/imported/PT_GREEN.png-2ec48f243d0a304b657e781158b8cb88.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/wallpaper_walls/texpaint/PT_GREY.png b/assets/textures/wallpaper_walls/texpaint/PT_GREY.png new file mode 100644 index 0000000..5f30d48 Binary files /dev/null and b/assets/textures/wallpaper_walls/texpaint/PT_GREY.png differ diff --git a/assets/textures/wallpaper_walls/texpaint/PT_GREY.png.import b/assets/textures/wallpaper_walls/texpaint/PT_GREY.png.import new file mode 100644 index 0000000..1093713 --- /dev/null +++ b/assets/textures/wallpaper_walls/texpaint/PT_GREY.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://23iybsls08ot" +path="res://.godot/imported/PT_GREY.png-43326f7c903d69ea87c8461465a5a232.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/wallpaper_walls/texpaint/PT_GREY.png" +dest_files=["res://.godot/imported/PT_GREY.png-43326f7c903d69ea87c8461465a5a232.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/wallpaper_walls/texpaint/PT_LAVE.png b/assets/textures/wallpaper_walls/texpaint/PT_LAVE.png new file mode 100644 index 0000000..440d11a Binary files /dev/null and b/assets/textures/wallpaper_walls/texpaint/PT_LAVE.png differ diff --git a/assets/textures/wallpaper_walls/texpaint/PT_LAVE.png.import b/assets/textures/wallpaper_walls/texpaint/PT_LAVE.png.import new file mode 100644 index 0000000..b051dd5 --- /dev/null +++ b/assets/textures/wallpaper_walls/texpaint/PT_LAVE.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://8gloprmhmcv1" +path="res://.godot/imported/PT_LAVE.png-83cfa8a51215a13385b63bf1e1617d65.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/wallpaper_walls/texpaint/PT_LAVE.png" +dest_files=["res://.godot/imported/PT_LAVE.png-83cfa8a51215a13385b63bf1e1617d65.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/wallpaper_walls/texpaint/PT_LIME.png b/assets/textures/wallpaper_walls/texpaint/PT_LIME.png new file mode 100644 index 0000000..38241f5 Binary files /dev/null and b/assets/textures/wallpaper_walls/texpaint/PT_LIME.png differ diff --git a/assets/textures/wallpaper_walls/texpaint/PT_LIME.png.import b/assets/textures/wallpaper_walls/texpaint/PT_LIME.png.import new file mode 100644 index 0000000..68fdeca --- /dev/null +++ b/assets/textures/wallpaper_walls/texpaint/PT_LIME.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://drvvwmvh6ajkc" +path="res://.godot/imported/PT_LIME.png-a690050562cf970f63a54feb56eaefac.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/wallpaper_walls/texpaint/PT_LIME.png" +dest_files=["res://.godot/imported/PT_LIME.png-a690050562cf970f63a54feb56eaefac.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/wallpaper_walls/texpaint/PT_NAVY.png b/assets/textures/wallpaper_walls/texpaint/PT_NAVY.png new file mode 100644 index 0000000..16d412f Binary files /dev/null and b/assets/textures/wallpaper_walls/texpaint/PT_NAVY.png differ diff --git a/assets/textures/wallpaper_walls/texpaint/PT_NAVY.png.import b/assets/textures/wallpaper_walls/texpaint/PT_NAVY.png.import new file mode 100644 index 0000000..6e7a745 --- /dev/null +++ b/assets/textures/wallpaper_walls/texpaint/PT_NAVY.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://vtyti4l5wjlt" +path="res://.godot/imported/PT_NAVY.png-df8d843892b02bb2dc14e70536b4b34f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/wallpaper_walls/texpaint/PT_NAVY.png" +dest_files=["res://.godot/imported/PT_NAVY.png-df8d843892b02bb2dc14e70536b4b34f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/wallpaper_walls/texpaint/PT_OLIVE.png b/assets/textures/wallpaper_walls/texpaint/PT_OLIVE.png new file mode 100644 index 0000000..f422110 Binary files /dev/null and b/assets/textures/wallpaper_walls/texpaint/PT_OLIVE.png differ diff --git a/assets/textures/wallpaper_walls/texpaint/PT_OLIVE.png.import b/assets/textures/wallpaper_walls/texpaint/PT_OLIVE.png.import new file mode 100644 index 0000000..8954009 --- /dev/null +++ b/assets/textures/wallpaper_walls/texpaint/PT_OLIVE.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://p17eobhwbn8l" +path="res://.godot/imported/PT_OLIVE.png-16454247eca636db2f7a10cc8ecad599.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/wallpaper_walls/texpaint/PT_OLIVE.png" +dest_files=["res://.godot/imported/PT_OLIVE.png-16454247eca636db2f7a10cc8ecad599.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/wallpaper_walls/texpaint/PT_ORAN.png b/assets/textures/wallpaper_walls/texpaint/PT_ORAN.png new file mode 100644 index 0000000..9d39414 Binary files /dev/null and b/assets/textures/wallpaper_walls/texpaint/PT_ORAN.png differ diff --git a/assets/textures/wallpaper_walls/texpaint/PT_ORAN.png.import b/assets/textures/wallpaper_walls/texpaint/PT_ORAN.png.import new file mode 100644 index 0000000..f6f7344 --- /dev/null +++ b/assets/textures/wallpaper_walls/texpaint/PT_ORAN.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cebafg6phqgeo" +path.s3tc="res://.godot/imported/PT_ORAN.png-7496b0a37a5251d0798df72fedb207e2.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/wallpaper_walls/texpaint/PT_ORAN.png" +dest_files=["res://.godot/imported/PT_ORAN.png-7496b0a37a5251d0798df72fedb207e2.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/wallpaper_walls/texpaint/PT_PEACH.png b/assets/textures/wallpaper_walls/texpaint/PT_PEACH.png new file mode 100644 index 0000000..39e9a77 Binary files /dev/null and b/assets/textures/wallpaper_walls/texpaint/PT_PEACH.png differ diff --git a/assets/textures/wallpaper_walls/texpaint/PT_PEACH.png.import b/assets/textures/wallpaper_walls/texpaint/PT_PEACH.png.import new file mode 100644 index 0000000..c2092f7 --- /dev/null +++ b/assets/textures/wallpaper_walls/texpaint/PT_PEACH.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dhaaa3xi6hlj6" +path.s3tc="res://.godot/imported/PT_PEACH.png-d19cd21b49f01fae1ccab1b769118aa8.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/wallpaper_walls/texpaint/PT_PEACH.png" +dest_files=["res://.godot/imported/PT_PEACH.png-d19cd21b49f01fae1ccab1b769118aa8.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/wallpaper_walls/texpaint/PT_RED.png b/assets/textures/wallpaper_walls/texpaint/PT_RED.png new file mode 100644 index 0000000..606117a Binary files /dev/null and b/assets/textures/wallpaper_walls/texpaint/PT_RED.png differ diff --git a/assets/textures/wallpaper_walls/texpaint/PT_RED.png.import b/assets/textures/wallpaper_walls/texpaint/PT_RED.png.import new file mode 100644 index 0000000..0e67e94 --- /dev/null +++ b/assets/textures/wallpaper_walls/texpaint/PT_RED.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cyvex51qvkxnf" +path="res://.godot/imported/PT_RED.png-664498964b7e5c0e8bc955ea39b25955.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/wallpaper_walls/texpaint/PT_RED.png" +dest_files=["res://.godot/imported/PT_RED.png-664498964b7e5c0e8bc955ea39b25955.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/wallpaper_walls/texpaint/PT_ROSE.png b/assets/textures/wallpaper_walls/texpaint/PT_ROSE.png new file mode 100644 index 0000000..1765f57 Binary files /dev/null and b/assets/textures/wallpaper_walls/texpaint/PT_ROSE.png differ diff --git a/assets/textures/wallpaper_walls/texpaint/PT_ROSE.png.import b/assets/textures/wallpaper_walls/texpaint/PT_ROSE.png.import new file mode 100644 index 0000000..e8c7227 --- /dev/null +++ b/assets/textures/wallpaper_walls/texpaint/PT_ROSE.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c0pl8qvkshk15" +path.s3tc="res://.godot/imported/PT_ROSE.png-20d76096cd3a7aec4e77b273d48f2385.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/wallpaper_walls/texpaint/PT_ROSE.png" +dest_files=["res://.godot/imported/PT_ROSE.png-20d76096cd3a7aec4e77b273d48f2385.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/wallpaper_walls/texpaint/PT_SKY.png b/assets/textures/wallpaper_walls/texpaint/PT_SKY.png new file mode 100644 index 0000000..4a904e2 Binary files /dev/null and b/assets/textures/wallpaper_walls/texpaint/PT_SKY.png differ diff --git a/assets/textures/wallpaper_walls/texpaint/PT_SKY.png.import b/assets/textures/wallpaper_walls/texpaint/PT_SKY.png.import new file mode 100644 index 0000000..251c44a --- /dev/null +++ b/assets/textures/wallpaper_walls/texpaint/PT_SKY.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://32hy5qte6u1e" +path="res://.godot/imported/PT_SKY.png-c2aca2a578dd8a5268185fb9467e7272.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/wallpaper_walls/texpaint/PT_SKY.png" +dest_files=["res://.godot/imported/PT_SKY.png-c2aca2a578dd8a5268185fb9467e7272.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/wallpaper_walls/texpaint/PT_TAN.png b/assets/textures/wallpaper_walls/texpaint/PT_TAN.png new file mode 100644 index 0000000..bcfedb9 Binary files /dev/null and b/assets/textures/wallpaper_walls/texpaint/PT_TAN.png differ diff --git a/assets/textures/wallpaper_walls/texpaint/PT_TAN.png.import b/assets/textures/wallpaper_walls/texpaint/PT_TAN.png.import new file mode 100644 index 0000000..3a3b8db --- /dev/null +++ b/assets/textures/wallpaper_walls/texpaint/PT_TAN.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://blll2xn8r66t3" +path.s3tc="res://.godot/imported/PT_TAN.png-27132b4dba0ae35c0feaa44f86e76685.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/wallpaper_walls/texpaint/PT_TAN.png" +dest_files=["res://.godot/imported/PT_TAN.png-27132b4dba0ae35c0feaa44f86e76685.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/wallpaper_walls/texpaint/PT_TURQ.png b/assets/textures/wallpaper_walls/texpaint/PT_TURQ.png new file mode 100644 index 0000000..8827e65 Binary files /dev/null and b/assets/textures/wallpaper_walls/texpaint/PT_TURQ.png differ diff --git a/assets/textures/wallpaper_walls/texpaint/PT_TURQ.png.import b/assets/textures/wallpaper_walls/texpaint/PT_TURQ.png.import new file mode 100644 index 0000000..eaca98d --- /dev/null +++ b/assets/textures/wallpaper_walls/texpaint/PT_TURQ.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ji13gr5rv7qj" +path="res://.godot/imported/PT_TURQ.png-2aeba8a9da054c7725e7d34d3e10d11d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/wallpaper_walls/texpaint/PT_TURQ.png" +dest_files=["res://.godot/imported/PT_TURQ.png-2aeba8a9da054c7725e7d34d3e10d11d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/wallpaper_walls/texpaint/PT_WHITE.png b/assets/textures/wallpaper_walls/texpaint/PT_WHITE.png new file mode 100644 index 0000000..382cbea Binary files /dev/null and b/assets/textures/wallpaper_walls/texpaint/PT_WHITE.png differ diff --git a/assets/textures/wallpaper_walls/texpaint/PT_WHITE.png.import b/assets/textures/wallpaper_walls/texpaint/PT_WHITE.png.import new file mode 100644 index 0000000..b48a6b9 --- /dev/null +++ b/assets/textures/wallpaper_walls/texpaint/PT_WHITE.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bq2kmpim35oaa" +path="res://.godot/imported/PT_WHITE.png-050b3e47d60f344e408f8c3df8b3493a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/wallpaper_walls/texpaint/PT_WHITE.png" +dest_files=["res://.godot/imported/PT_WHITE.png-050b3e47d60f344e408f8c3df8b3493a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/wallpaper_walls/texpaint/PT_YELO.png b/assets/textures/wallpaper_walls/texpaint/PT_YELO.png new file mode 100644 index 0000000..3988c3b Binary files /dev/null and b/assets/textures/wallpaper_walls/texpaint/PT_YELO.png differ diff --git a/assets/textures/wallpaper_walls/texpaint/PT_YELO.png.import b/assets/textures/wallpaper_walls/texpaint/PT_YELO.png.import new file mode 100644 index 0000000..e13d2c2 --- /dev/null +++ b/assets/textures/wallpaper_walls/texpaint/PT_YELO.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://yfaxjp3v0k1r" +path.s3tc="res://.godot/imported/PT_YELO.png-a25049caa5987eceff64fa314d752498.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/wallpaper_walls/texpaint/PT_YELO.png" +dest_files=["res://.godot/imported/PT_YELO.png-a25049caa5987eceff64fa314d752498.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/wood/Wood013_1K-PNG/Wood013.png b/assets/textures/wood/Wood013_1K-PNG/Wood013.png new file mode 100644 index 0000000..949f8bd Binary files /dev/null and b/assets/textures/wood/Wood013_1K-PNG/Wood013.png differ diff --git a/assets/textures/wood/Wood013_1K-PNG/Wood013.png.import b/assets/textures/wood/Wood013_1K-PNG/Wood013.png.import new file mode 100644 index 0000000..a426951 --- /dev/null +++ b/assets/textures/wood/Wood013_1K-PNG/Wood013.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b1ogtmrs1mic2" +path="res://.godot/imported/Wood013.png-d9b120da2beaf5decab8443b1d185704.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/wood/Wood013_1K-PNG/Wood013.png" +dest_files=["res://.godot/imported/Wood013.png-d9b120da2beaf5decab8443b1d185704.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/wood/Wood013_1K-PNG/Wood013_1K-PNG.mtlx b/assets/textures/wood/Wood013_1K-PNG/Wood013_1K-PNG.mtlx new file mode 100644 index 0000000..ee34382 --- /dev/null +++ b/assets/textures/wood/Wood013_1K-PNG/Wood013_1K-PNG.mtlx @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/textures/wood/Wood013_1K-PNG/Wood013_1K-PNG.usdc b/assets/textures/wood/Wood013_1K-PNG/Wood013_1K-PNG.usdc new file mode 100644 index 0000000..cc26d23 Binary files /dev/null and b/assets/textures/wood/Wood013_1K-PNG/Wood013_1K-PNG.usdc differ diff --git a/assets/textures/wood/Wood013_1K-PNG/Wood013_1K-PNG_Color.png b/assets/textures/wood/Wood013_1K-PNG/Wood013_1K-PNG_Color.png new file mode 100644 index 0000000..8db967e Binary files /dev/null and b/assets/textures/wood/Wood013_1K-PNG/Wood013_1K-PNG_Color.png differ diff --git a/assets/textures/wood/Wood013_1K-PNG/Wood013_1K-PNG_Color.png.import b/assets/textures/wood/Wood013_1K-PNG/Wood013_1K-PNG_Color.png.import new file mode 100644 index 0000000..eb28fe3 --- /dev/null +++ b/assets/textures/wood/Wood013_1K-PNG/Wood013_1K-PNG_Color.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://df826g11mrjod" +path.s3tc="res://.godot/imported/Wood013_1K-PNG_Color.png-fd1fff026b7f10a9f021923b24508511.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/wood/Wood013_1K-PNG/Wood013_1K-PNG_Color.png" +dest_files=["res://.godot/imported/Wood013_1K-PNG_Color.png-fd1fff026b7f10a9f021923b24508511.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/wood/Wood013_1K-PNG/Wood013_1K-PNG_Displacement.png b/assets/textures/wood/Wood013_1K-PNG/Wood013_1K-PNG_Displacement.png new file mode 100644 index 0000000..f95b6a6 Binary files /dev/null and b/assets/textures/wood/Wood013_1K-PNG/Wood013_1K-PNG_Displacement.png differ diff --git a/assets/textures/wood/Wood013_1K-PNG/Wood013_1K-PNG_Displacement.png.import b/assets/textures/wood/Wood013_1K-PNG/Wood013_1K-PNG_Displacement.png.import new file mode 100644 index 0000000..8b7b921 --- /dev/null +++ b/assets/textures/wood/Wood013_1K-PNG/Wood013_1K-PNG_Displacement.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://xhw801lr4rdp" +path="res://.godot/imported/Wood013_1K-PNG_Displacement.png-9a18c8c0460ec4a308162630bc44b63f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/wood/Wood013_1K-PNG/Wood013_1K-PNG_Displacement.png" +dest_files=["res://.godot/imported/Wood013_1K-PNG_Displacement.png-9a18c8c0460ec4a308162630bc44b63f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/wood/Wood013_1K-PNG/Wood013_1K-PNG_NormalDX.png b/assets/textures/wood/Wood013_1K-PNG/Wood013_1K-PNG_NormalDX.png new file mode 100644 index 0000000..4dd0f4c Binary files /dev/null and b/assets/textures/wood/Wood013_1K-PNG/Wood013_1K-PNG_NormalDX.png differ diff --git a/assets/textures/wood/Wood013_1K-PNG/Wood013_1K-PNG_NormalDX.png.import b/assets/textures/wood/Wood013_1K-PNG/Wood013_1K-PNG_NormalDX.png.import new file mode 100644 index 0000000..02b9a08 --- /dev/null +++ b/assets/textures/wood/Wood013_1K-PNG/Wood013_1K-PNG_NormalDX.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ck1nkq3ar3be2" +path="res://.godot/imported/Wood013_1K-PNG_NormalDX.png-022ebd9205f8379333bd271d70fb9910.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/wood/Wood013_1K-PNG/Wood013_1K-PNG_NormalDX.png" +dest_files=["res://.godot/imported/Wood013_1K-PNG_NormalDX.png-022ebd9205f8379333bd271d70fb9910.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/wood/Wood013_1K-PNG/Wood013_1K-PNG_NormalGL.png b/assets/textures/wood/Wood013_1K-PNG/Wood013_1K-PNG_NormalGL.png new file mode 100644 index 0000000..cb4929f Binary files /dev/null and b/assets/textures/wood/Wood013_1K-PNG/Wood013_1K-PNG_NormalGL.png differ diff --git a/assets/textures/wood/Wood013_1K-PNG/Wood013_1K-PNG_NormalGL.png.import b/assets/textures/wood/Wood013_1K-PNG/Wood013_1K-PNG_NormalGL.png.import new file mode 100644 index 0000000..a88eeec --- /dev/null +++ b/assets/textures/wood/Wood013_1K-PNG/Wood013_1K-PNG_NormalGL.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cydetx4hbmcti" +path.s3tc="res://.godot/imported/Wood013_1K-PNG_NormalGL.png-7842969ef580bac54764f6d29dd4ca3e.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/wood/Wood013_1K-PNG/Wood013_1K-PNG_NormalGL.png" +dest_files=["res://.godot/imported/Wood013_1K-PNG_NormalGL.png-7842969ef580bac54764f6d29dd4ca3e.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=1 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=1 +roughness/src_normal="res://assets/textures/Wood013_1K-PNG/Wood013_1K-PNG_NormalGL.png" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/wood/Wood013_1K-PNG/Wood013_1K-PNG_Roughness.png b/assets/textures/wood/Wood013_1K-PNG/Wood013_1K-PNG_Roughness.png new file mode 100644 index 0000000..01c57cf Binary files /dev/null and b/assets/textures/wood/Wood013_1K-PNG/Wood013_1K-PNG_Roughness.png differ diff --git a/assets/textures/wood/Wood013_1K-PNG/Wood013_1K-PNG_Roughness.png.import b/assets/textures/wood/Wood013_1K-PNG/Wood013_1K-PNG_Roughness.png.import new file mode 100644 index 0000000..928ba24 --- /dev/null +++ b/assets/textures/wood/Wood013_1K-PNG/Wood013_1K-PNG_Roughness.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bwk3t7yqsxj2d" +path.s3tc="res://.godot/imported/Wood013_1K-PNG_Roughness.png-095a813b129bf24c3b332ae03e780c73.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/wood/Wood013_1K-PNG/Wood013_1K-PNG_Roughness.png" +dest_files=["res://.godot/imported/Wood013_1K-PNG_Roughness.png-095a813b129bf24c3b332ae03e780c73.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/wood/WoodFloor008/WoodFloor008_1K-PNG_Color.png b/assets/textures/wood/WoodFloor008/WoodFloor008_1K-PNG_Color.png new file mode 100644 index 0000000..030e3bf Binary files /dev/null and b/assets/textures/wood/WoodFloor008/WoodFloor008_1K-PNG_Color.png differ diff --git a/assets/textures/wood/WoodFloor008/WoodFloor008_1K-PNG_Color.png.import b/assets/textures/wood/WoodFloor008/WoodFloor008_1K-PNG_Color.png.import new file mode 100644 index 0000000..0b853eb --- /dev/null +++ b/assets/textures/wood/WoodFloor008/WoodFloor008_1K-PNG_Color.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dnujqpqdxqltf" +path.s3tc="res://.godot/imported/WoodFloor008_1K-PNG_Color.png-24a919e144298e4c2c31c0f516f7382b.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/wood/WoodFloor008/WoodFloor008_1K-PNG_Color.png" +dest_files=["res://.godot/imported/WoodFloor008_1K-PNG_Color.png-24a919e144298e4c2c31c0f516f7382b.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/wood/WoodFloor008/WoodFloor008_1K-PNG_NormalGL.png b/assets/textures/wood/WoodFloor008/WoodFloor008_1K-PNG_NormalGL.png new file mode 100644 index 0000000..926fb0c Binary files /dev/null and b/assets/textures/wood/WoodFloor008/WoodFloor008_1K-PNG_NormalGL.png differ diff --git a/assets/textures/wood/WoodFloor008/WoodFloor008_1K-PNG_NormalGL.png.import b/assets/textures/wood/WoodFloor008/WoodFloor008_1K-PNG_NormalGL.png.import new file mode 100644 index 0000000..f7b88e1 --- /dev/null +++ b/assets/textures/wood/WoodFloor008/WoodFloor008_1K-PNG_NormalGL.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cxoriofrlup4b" +path.s3tc="res://.godot/imported/WoodFloor008_1K-PNG_NormalGL.png-55e23e3da28fda40ca2ef045a52bd9a4.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/wood/WoodFloor008/WoodFloor008_1K-PNG_NormalGL.png" +dest_files=["res://.godot/imported/WoodFloor008_1K-PNG_NormalGL.png-55e23e3da28fda40ca2ef045a52bd9a4.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=1 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=1 +roughness/src_normal="res://assets/textures/WoodFloor008/WoodFloor008_1K-PNG_NormalGL.png" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/wood/WoodFloor008/WoodFloor008_1K-PNG_Roughness.png b/assets/textures/wood/WoodFloor008/WoodFloor008_1K-PNG_Roughness.png new file mode 100644 index 0000000..7778440 Binary files /dev/null and b/assets/textures/wood/WoodFloor008/WoodFloor008_1K-PNG_Roughness.png differ diff --git a/assets/textures/wood/WoodFloor008/WoodFloor008_1K-PNG_Roughness.png.import b/assets/textures/wood/WoodFloor008/WoodFloor008_1K-PNG_Roughness.png.import new file mode 100644 index 0000000..cb89210 --- /dev/null +++ b/assets/textures/wood/WoodFloor008/WoodFloor008_1K-PNG_Roughness.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://qb7i37d7q6pu" +path.s3tc="res://.godot/imported/WoodFloor008_1K-PNG_Roughness.png-ec7d81d17cb055f51d2e4d357afa7cdd.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/wood/WoodFloor008/WoodFloor008_1K-PNG_Roughness.png" +dest_files=["res://.godot/imported/WoodFloor008_1K-PNG_Roughness.png-ec7d81d17cb055f51d2e4d357afa7cdd.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/wood/WoodFloor043_1K-PNG/WoodFloor043.png b/assets/textures/wood/WoodFloor043_1K-PNG/WoodFloor043.png new file mode 100644 index 0000000..ad4a031 Binary files /dev/null and b/assets/textures/wood/WoodFloor043_1K-PNG/WoodFloor043.png differ diff --git a/assets/textures/wood/WoodFloor043_1K-PNG/WoodFloor043.png.import b/assets/textures/wood/WoodFloor043_1K-PNG/WoodFloor043.png.import new file mode 100644 index 0000000..6f03ae4 --- /dev/null +++ b/assets/textures/wood/WoodFloor043_1K-PNG/WoodFloor043.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bhan7fcqa7yqy" +path="res://.godot/imported/WoodFloor043.png-ce0240531558afad1a83d78cde262f67.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/wood/WoodFloor043_1K-PNG/WoodFloor043.png" +dest_files=["res://.godot/imported/WoodFloor043.png-ce0240531558afad1a83d78cde262f67.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/wood/WoodFloor043_1K-PNG/WoodFloor043_1K-PNG.mtlx b/assets/textures/wood/WoodFloor043_1K-PNG/WoodFloor043_1K-PNG.mtlx new file mode 100644 index 0000000..e4fc25f --- /dev/null +++ b/assets/textures/wood/WoodFloor043_1K-PNG/WoodFloor043_1K-PNG.mtlx @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/textures/wood/WoodFloor043_1K-PNG/WoodFloor043_1K-PNG.usdc b/assets/textures/wood/WoodFloor043_1K-PNG/WoodFloor043_1K-PNG.usdc new file mode 100644 index 0000000..f8c713d Binary files /dev/null and b/assets/textures/wood/WoodFloor043_1K-PNG/WoodFloor043_1K-PNG.usdc differ diff --git a/assets/textures/wood/WoodFloor043_1K-PNG/WoodFloor043_1K-PNG_AmbientOcclusion.png b/assets/textures/wood/WoodFloor043_1K-PNG/WoodFloor043_1K-PNG_AmbientOcclusion.png new file mode 100644 index 0000000..154e73b Binary files /dev/null and b/assets/textures/wood/WoodFloor043_1K-PNG/WoodFloor043_1K-PNG_AmbientOcclusion.png differ diff --git a/assets/textures/wood/WoodFloor043_1K-PNG/WoodFloor043_1K-PNG_AmbientOcclusion.png.import b/assets/textures/wood/WoodFloor043_1K-PNG/WoodFloor043_1K-PNG_AmbientOcclusion.png.import new file mode 100644 index 0000000..81fdf5d --- /dev/null +++ b/assets/textures/wood/WoodFloor043_1K-PNG/WoodFloor043_1K-PNG_AmbientOcclusion.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dvl72vmtnyjrl" +path="res://.godot/imported/WoodFloor043_1K-PNG_AmbientOcclusion.png-48977c397e895c7b0213679e523c9b5e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/wood/WoodFloor043_1K-PNG/WoodFloor043_1K-PNG_AmbientOcclusion.png" +dest_files=["res://.godot/imported/WoodFloor043_1K-PNG_AmbientOcclusion.png-48977c397e895c7b0213679e523c9b5e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/wood/WoodFloor043_1K-PNG/WoodFloor043_1K-PNG_Color.png b/assets/textures/wood/WoodFloor043_1K-PNG/WoodFloor043_1K-PNG_Color.png new file mode 100644 index 0000000..2d1477a Binary files /dev/null and b/assets/textures/wood/WoodFloor043_1K-PNG/WoodFloor043_1K-PNG_Color.png differ diff --git a/assets/textures/wood/WoodFloor043_1K-PNG/WoodFloor043_1K-PNG_Color.png.import b/assets/textures/wood/WoodFloor043_1K-PNG/WoodFloor043_1K-PNG_Color.png.import new file mode 100644 index 0000000..248ff65 --- /dev/null +++ b/assets/textures/wood/WoodFloor043_1K-PNG/WoodFloor043_1K-PNG_Color.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dg8t4foaqplop" +path.s3tc="res://.godot/imported/WoodFloor043_1K-PNG_Color.png-83194282e3eb39417e997f65063e01df.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/wood/WoodFloor043_1K-PNG/WoodFloor043_1K-PNG_Color.png" +dest_files=["res://.godot/imported/WoodFloor043_1K-PNG_Color.png-83194282e3eb39417e997f65063e01df.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/wood/WoodFloor043_1K-PNG/WoodFloor043_1K-PNG_Displacement.png b/assets/textures/wood/WoodFloor043_1K-PNG/WoodFloor043_1K-PNG_Displacement.png new file mode 100644 index 0000000..9b31cd0 Binary files /dev/null and b/assets/textures/wood/WoodFloor043_1K-PNG/WoodFloor043_1K-PNG_Displacement.png differ diff --git a/assets/textures/wood/WoodFloor043_1K-PNG/WoodFloor043_1K-PNG_Displacement.png.import b/assets/textures/wood/WoodFloor043_1K-PNG/WoodFloor043_1K-PNG_Displacement.png.import new file mode 100644 index 0000000..e6af8a9 --- /dev/null +++ b/assets/textures/wood/WoodFloor043_1K-PNG/WoodFloor043_1K-PNG_Displacement.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://5pfgvnj3ismh" +path="res://.godot/imported/WoodFloor043_1K-PNG_Displacement.png-18b8e31053655613a33481706337fdb6.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/wood/WoodFloor043_1K-PNG/WoodFloor043_1K-PNG_Displacement.png" +dest_files=["res://.godot/imported/WoodFloor043_1K-PNG_Displacement.png-18b8e31053655613a33481706337fdb6.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/wood/WoodFloor043_1K-PNG/WoodFloor043_1K-PNG_Metalness.png b/assets/textures/wood/WoodFloor043_1K-PNG/WoodFloor043_1K-PNG_Metalness.png new file mode 100644 index 0000000..e57d9d4 Binary files /dev/null and b/assets/textures/wood/WoodFloor043_1K-PNG/WoodFloor043_1K-PNG_Metalness.png differ diff --git a/assets/textures/wood/WoodFloor043_1K-PNG/WoodFloor043_1K-PNG_Metalness.png.import b/assets/textures/wood/WoodFloor043_1K-PNG/WoodFloor043_1K-PNG_Metalness.png.import new file mode 100644 index 0000000..237b72b --- /dev/null +++ b/assets/textures/wood/WoodFloor043_1K-PNG/WoodFloor043_1K-PNG_Metalness.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c6ekdaqrwdb64" +path="res://.godot/imported/WoodFloor043_1K-PNG_Metalness.png-4071c566919091f71d368e0f2cdfa344.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/wood/WoodFloor043_1K-PNG/WoodFloor043_1K-PNG_Metalness.png" +dest_files=["res://.godot/imported/WoodFloor043_1K-PNG_Metalness.png-4071c566919091f71d368e0f2cdfa344.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/wood/WoodFloor043_1K-PNG/WoodFloor043_1K-PNG_NormalDX.png b/assets/textures/wood/WoodFloor043_1K-PNG/WoodFloor043_1K-PNG_NormalDX.png new file mode 100644 index 0000000..28cba3f Binary files /dev/null and b/assets/textures/wood/WoodFloor043_1K-PNG/WoodFloor043_1K-PNG_NormalDX.png differ diff --git a/assets/textures/wood/WoodFloor043_1K-PNG/WoodFloor043_1K-PNG_NormalDX.png.import b/assets/textures/wood/WoodFloor043_1K-PNG/WoodFloor043_1K-PNG_NormalDX.png.import new file mode 100644 index 0000000..ce6fb56 --- /dev/null +++ b/assets/textures/wood/WoodFloor043_1K-PNG/WoodFloor043_1K-PNG_NormalDX.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cnfmvaqjvhp3k" +path="res://.godot/imported/WoodFloor043_1K-PNG_NormalDX.png-220b4017581fa75f18e5adb0321ca942.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/wood/WoodFloor043_1K-PNG/WoodFloor043_1K-PNG_NormalDX.png" +dest_files=["res://.godot/imported/WoodFloor043_1K-PNG_NormalDX.png-220b4017581fa75f18e5adb0321ca942.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/wood/WoodFloor043_1K-PNG/WoodFloor043_1K-PNG_NormalGL.png b/assets/textures/wood/WoodFloor043_1K-PNG/WoodFloor043_1K-PNG_NormalGL.png new file mode 100644 index 0000000..f68cc8e Binary files /dev/null and b/assets/textures/wood/WoodFloor043_1K-PNG/WoodFloor043_1K-PNG_NormalGL.png differ diff --git a/assets/textures/wood/WoodFloor043_1K-PNG/WoodFloor043_1K-PNG_NormalGL.png.import b/assets/textures/wood/WoodFloor043_1K-PNG/WoodFloor043_1K-PNG_NormalGL.png.import new file mode 100644 index 0000000..4069eea --- /dev/null +++ b/assets/textures/wood/WoodFloor043_1K-PNG/WoodFloor043_1K-PNG_NormalGL.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dcv8i3iqsdqmc" +path="res://.godot/imported/WoodFloor043_1K-PNG_NormalGL.png-8e64cb0f8e47ec3e9eb067729da03246.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/wood/WoodFloor043_1K-PNG/WoodFloor043_1K-PNG_NormalGL.png" +dest_files=["res://.godot/imported/WoodFloor043_1K-PNG_NormalGL.png-8e64cb0f8e47ec3e9eb067729da03246.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/wood/WoodFloor043_1K-PNG/WoodFloor043_1K-PNG_Roughness.png b/assets/textures/wood/WoodFloor043_1K-PNG/WoodFloor043_1K-PNG_Roughness.png new file mode 100644 index 0000000..1462bf8 Binary files /dev/null and b/assets/textures/wood/WoodFloor043_1K-PNG/WoodFloor043_1K-PNG_Roughness.png differ diff --git a/assets/textures/wood/WoodFloor043_1K-PNG/WoodFloor043_1K-PNG_Roughness.png.import b/assets/textures/wood/WoodFloor043_1K-PNG/WoodFloor043_1K-PNG_Roughness.png.import new file mode 100644 index 0000000..d372c13 --- /dev/null +++ b/assets/textures/wood/WoodFloor043_1K-PNG/WoodFloor043_1K-PNG_Roughness.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cbrtmb73s8mqp" +path="res://.godot/imported/WoodFloor043_1K-PNG_Roughness.png-6b3a3235d8fb05e4cdea1bcdfacdb555.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/wood/WoodFloor043_1K-PNG/WoodFloor043_1K-PNG_Roughness.png" +dest_files=["res://.godot/imported/WoodFloor043_1K-PNG_Roughness.png-6b3a3235d8fb05e4cdea1bcdfacdb555.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/wood/pine_bark_1k/pine_bark_diff_1k.png b/assets/textures/wood/pine_bark_1k/pine_bark_diff_1k.png new file mode 100644 index 0000000..120ba4e Binary files /dev/null and b/assets/textures/wood/pine_bark_1k/pine_bark_diff_1k.png differ diff --git a/assets/textures/wood/pine_bark_1k/pine_bark_diff_1k.png.import b/assets/textures/wood/pine_bark_1k/pine_bark_diff_1k.png.import new file mode 100644 index 0000000..a4b8979 --- /dev/null +++ b/assets/textures/wood/pine_bark_1k/pine_bark_diff_1k.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bte1deufy2k6e" +path.s3tc="res://.godot/imported/pine_bark_diff_1k.png-effaedcfc957f86428934bfe770ae711.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/wood/pine_bark_1k/pine_bark_diff_1k.png" +dest_files=["res://.godot/imported/pine_bark_diff_1k.png-effaedcfc957f86428934bfe770ae711.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/wood/pine_bark_1k/pine_bark_nor_gl_1k.png b/assets/textures/wood/pine_bark_1k/pine_bark_nor_gl_1k.png new file mode 100644 index 0000000..bff7e95 Binary files /dev/null and b/assets/textures/wood/pine_bark_1k/pine_bark_nor_gl_1k.png differ diff --git a/assets/textures/wood/pine_bark_1k/pine_bark_nor_gl_1k.png.import b/assets/textures/wood/pine_bark_1k/pine_bark_nor_gl_1k.png.import new file mode 100644 index 0000000..d871ab0 --- /dev/null +++ b/assets/textures/wood/pine_bark_1k/pine_bark_nor_gl_1k.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ckunuepqhc333" +path="res://.godot/imported/pine_bark_nor_gl_1k.png-ee1a41699a8f5a53113e5f8334c40ccb.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/wood/pine_bark_1k/pine_bark_nor_gl_1k.png" +dest_files=["res://.godot/imported/pine_bark_nor_gl_1k.png-ee1a41699a8f5a53113e5f8334c40ccb.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/wood/pine_bark_1k/pine_bark_rough_1k.png b/assets/textures/wood/pine_bark_1k/pine_bark_rough_1k.png new file mode 100644 index 0000000..cf583f7 Binary files /dev/null and b/assets/textures/wood/pine_bark_1k/pine_bark_rough_1k.png differ diff --git a/assets/textures/wood/pine_bark_1k/pine_bark_rough_1k.png.import b/assets/textures/wood/pine_bark_1k/pine_bark_rough_1k.png.import new file mode 100644 index 0000000..b7cf56f --- /dev/null +++ b/assets/textures/wood/pine_bark_1k/pine_bark_rough_1k.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dpp54m2nr0x4t" +path="res://.godot/imported/pine_bark_rough_1k.png-b166a3dd85f1edd34f300f8e68b8b37e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/wood/pine_bark_1k/pine_bark_rough_1k.png" +dest_files=["res://.godot/imported/pine_bark_rough_1k.png-b166a3dd85f1edd34f300f8e68b8b37e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/wood/planks.png b/assets/textures/wood/planks.png new file mode 100644 index 0000000..47f0ee1 Binary files /dev/null and b/assets/textures/wood/planks.png differ diff --git a/assets/textures/wood/planks.png.import b/assets/textures/wood/planks.png.import new file mode 100644 index 0000000..a716365 --- /dev/null +++ b/assets/textures/wood/planks.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d4cff8rbyc2gs" +path.s3tc="res://.godot/imported/planks.png-4015fda32a0c8c8ef14dad4e0d42bb16.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/wood/planks.png" +dest_files=["res://.godot/imported/planks.png-4015fda32a0c8c8ef14dad4e0d42bb16.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/wood/rough_wood_1k/rough_wood_diff_1k.png b/assets/textures/wood/rough_wood_1k/rough_wood_diff_1k.png new file mode 100644 index 0000000..8b66b4e Binary files /dev/null and b/assets/textures/wood/rough_wood_1k/rough_wood_diff_1k.png differ diff --git a/assets/textures/wood/rough_wood_1k/rough_wood_diff_1k.png.import b/assets/textures/wood/rough_wood_1k/rough_wood_diff_1k.png.import new file mode 100644 index 0000000..0db59f3 --- /dev/null +++ b/assets/textures/wood/rough_wood_1k/rough_wood_diff_1k.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://chs86io42mwow" +path.s3tc="res://.godot/imported/rough_wood_diff_1k.png-b8d71dd09a7c429d482599b16ab98aed.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/wood/rough_wood_1k/rough_wood_diff_1k.png" +dest_files=["res://.godot/imported/rough_wood_diff_1k.png-b8d71dd09a7c429d482599b16ab98aed.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/wood/rough_wood_1k/rough_wood_nor_gl_1k.png b/assets/textures/wood/rough_wood_1k/rough_wood_nor_gl_1k.png new file mode 100644 index 0000000..21f159e Binary files /dev/null and b/assets/textures/wood/rough_wood_1k/rough_wood_nor_gl_1k.png differ diff --git a/assets/textures/wood/rough_wood_1k/rough_wood_nor_gl_1k.png.import b/assets/textures/wood/rough_wood_1k/rough_wood_nor_gl_1k.png.import new file mode 100644 index 0000000..eb6dfa7 --- /dev/null +++ b/assets/textures/wood/rough_wood_1k/rough_wood_nor_gl_1k.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cesdpwgnatik4" +path.s3tc="res://.godot/imported/rough_wood_nor_gl_1k.png-ea2c5e8b83b788bcf38bcc4eab821fda.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/wood/rough_wood_1k/rough_wood_nor_gl_1k.png" +dest_files=["res://.godot/imported/rough_wood_nor_gl_1k.png-ea2c5e8b83b788bcf38bcc4eab821fda.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=1 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=1 +roughness/src_normal="res://assets/textures/wood/rough_wood_1k/rough_wood_nor_gl_1k.png" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/wood/rough_wood_1k/rough_wood_rough_1k.png b/assets/textures/wood/rough_wood_1k/rough_wood_rough_1k.png new file mode 100644 index 0000000..e5516da Binary files /dev/null and b/assets/textures/wood/rough_wood_1k/rough_wood_rough_1k.png differ diff --git a/assets/textures/wood/rough_wood_1k/rough_wood_rough_1k.png.import b/assets/textures/wood/rough_wood_1k/rough_wood_rough_1k.png.import new file mode 100644 index 0000000..1585f71 --- /dev/null +++ b/assets/textures/wood/rough_wood_1k/rough_wood_rough_1k.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cil1qwxtkmu4a" +path.s3tc="res://.godot/imported/rough_wood_rough_1k.png-d54413d8126761acc2bf58378685b35a.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/wood/rough_wood_1k/rough_wood_rough_1k.png" +dest_files=["res://.godot/imported/rough_wood_rough_1k.png-d54413d8126761acc2bf58378685b35a.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/wood/wood_trunk_wall/wood_trunk_wall_diff_1k.png b/assets/textures/wood/wood_trunk_wall/wood_trunk_wall_diff_1k.png new file mode 100644 index 0000000..0e0bf41 Binary files /dev/null and b/assets/textures/wood/wood_trunk_wall/wood_trunk_wall_diff_1k.png differ diff --git a/assets/textures/wood/wood_trunk_wall/wood_trunk_wall_diff_1k.png.import b/assets/textures/wood/wood_trunk_wall/wood_trunk_wall_diff_1k.png.import new file mode 100644 index 0000000..8911082 --- /dev/null +++ b/assets/textures/wood/wood_trunk_wall/wood_trunk_wall_diff_1k.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c5qw31dhbpkph" +path.s3tc="res://.godot/imported/wood_trunk_wall_diff_1k.png-0db2408d7c77f8dd0c9551d1ae79185e.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/wood/wood_trunk_wall/wood_trunk_wall_diff_1k.png" +dest_files=["res://.godot/imported/wood_trunk_wall_diff_1k.png-0db2408d7c77f8dd0c9551d1ae79185e.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/wood/wood_trunk_wall/wood_trunk_wall_nor_gl_1k.png b/assets/textures/wood/wood_trunk_wall/wood_trunk_wall_nor_gl_1k.png new file mode 100644 index 0000000..913f138 Binary files /dev/null and b/assets/textures/wood/wood_trunk_wall/wood_trunk_wall_nor_gl_1k.png differ diff --git a/assets/textures/wood/wood_trunk_wall/wood_trunk_wall_nor_gl_1k.png.import b/assets/textures/wood/wood_trunk_wall/wood_trunk_wall_nor_gl_1k.png.import new file mode 100644 index 0000000..b0ba007 --- /dev/null +++ b/assets/textures/wood/wood_trunk_wall/wood_trunk_wall_nor_gl_1k.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://0gj2juljndej" +path.s3tc="res://.godot/imported/wood_trunk_wall_nor_gl_1k.png-b14e51a17d0ea9cb5171a598fce92c8e.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/wood/wood_trunk_wall/wood_trunk_wall_nor_gl_1k.png" +dest_files=["res://.godot/imported/wood_trunk_wall_nor_gl_1k.png-b14e51a17d0ea9cb5171a598fce92c8e.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=1 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=1 +roughness/src_normal="res://assets/textures/wood_trunk_wall/wood_trunk_wall_nor_gl_1k.png" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/wood/wood_trunk_wall/wood_trunk_wall_rough_1k.png b/assets/textures/wood/wood_trunk_wall/wood_trunk_wall_rough_1k.png new file mode 100644 index 0000000..f3531f9 Binary files /dev/null and b/assets/textures/wood/wood_trunk_wall/wood_trunk_wall_rough_1k.png differ diff --git a/assets/textures/wood/wood_trunk_wall/wood_trunk_wall_rough_1k.png.import b/assets/textures/wood/wood_trunk_wall/wood_trunk_wall_rough_1k.png.import new file mode 100644 index 0000000..b7f9ee7 --- /dev/null +++ b/assets/textures/wood/wood_trunk_wall/wood_trunk_wall_rough_1k.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b4ehdtlf7hwgc" +path.s3tc="res://.godot/imported/wood_trunk_wall_rough_1k.png-9328690ee905782c0df6c224a512456b.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/wood/wood_trunk_wall/wood_trunk_wall_rough_1k.png" +dest_files=["res://.godot/imported/wood_trunk_wall_rough_1k.png-9328690ee905782c0df6c224a512456b.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/default_bus_layout.tres b/default_bus_layout.tres new file mode 100644 index 0000000..c40e77b --- /dev/null +++ b/default_bus_layout.tres @@ -0,0 +1,3 @@ +[gd_resource type="AudioBusLayout" format=3 uid="uid://yr6udl4u03bk"] + +[resource] diff --git a/dialogue/cooking_pot.dialogue b/dialogue/cooking_pot.dialogue new file mode 100644 index 0000000..eb33d86 --- /dev/null +++ b/dialogue/cooking_pot.dialogue @@ -0,0 +1,18 @@ +~ start +set Global.dialogue_wait = true +Would you like to add ingredients to the pot? +- Yes => yes +- No => no +set Global.dialogue_wait = false +=> END + +~ yes +What would you like to add to the pot? +- +set Global.dialogue_wait = false +=> END + +~ no +I'm just getting take out baby! +set Global.dialogue_wait = false +=> END \ No newline at end of file diff --git a/dialogue/cooking_pot.dialogue.import b/dialogue/cooking_pot.dialogue.import new file mode 100644 index 0000000..89cda0b --- /dev/null +++ b/dialogue/cooking_pot.dialogue.import @@ -0,0 +1,16 @@ +[remap] + +importer="dialogue_manager" +importer_version=15 +type="Resource" +uid="uid://b3u755q3v7wek" +path="res://.godot/imported/cooking_pot.dialogue-25fb28066be67d5ba8a08d97944e56bc.tres" + +[deps] + +source_file="res://dialogue/cooking_pot.dialogue" +dest_files=["res://.godot/imported/cooking_pot.dialogue-25fb28066be67d5ba8a08d97944e56bc.tres"] + +[params] + +defaults=true diff --git a/dialogue/dialogue.dialogue b/dialogue/dialogue.dialogue new file mode 100644 index 0000000..417c8a1 --- /dev/null +++ b/dialogue/dialogue.dialogue @@ -0,0 +1,18 @@ +~ start +set Global.dialogue_wait = true +Judging Voice: [[Greetings|Salutations]], What is it that you seek? +- Control + Subservient Voice: As you wish. + Subservient Voice: You escape the conversation. + set Global.dialogue_wait = false + => END +- Happiness + Judging Voice: Don't we all. + Judging Voice: Wrong choice. Try again. => start +- Release + Judging Voice: You just want to let go? + Judging Voice: Very well then. + set Global.dialogue_wait = false + => END +- To end this conversation + Baer: No way out. => start \ No newline at end of file diff --git a/dialogue/dialogue.dialogue.import b/dialogue/dialogue.dialogue.import new file mode 100644 index 0000000..b207fa6 --- /dev/null +++ b/dialogue/dialogue.dialogue.import @@ -0,0 +1,16 @@ +[remap] + +importer="dialogue_manager" +importer_version=15 +type="Resource" +uid="uid://d1eqq7oycefcy" +path="res://.godot/imported/dialogue.dialogue-45417e75e16eba4a3d713e8559abbf2c.tres" + +[deps] + +source_file="res://dialogue/dialogue.dialogue" +dest_files=["res://.godot/imported/dialogue.dialogue-45417e75e16eba4a3d713e8559abbf2c.tres"] + +[params] + +defaults=true diff --git a/dialogue/mariana.dialogue b/dialogue/mariana.dialogue new file mode 100644 index 0000000..a5c6a4b --- /dev/null +++ b/dialogue/mariana.dialogue @@ -0,0 +1,22 @@ +~ start +set Global.dialogue_wait = true +do Global.get_char_mood("mariana") +if Global.char_mood < 3 + set Global.mariana_current_name = "Angry Person" + {{Global.mariana_current_name}}: FUCK OFF!!! +else + {{Global.mariana_current_name}}: [[Who|What|Where|Why|How]] are you today? + - Fine. How are you? => small_talk + - Good. Now that you are here. + do Global.change_char("mariana", 3) + - I was doing good till I saw you. + do Global.change_char("mariana", -3) +set Global.dialogue_wait = false +=> END + +~ small_talk +{{Global.mariana_current_name}}: I'm doing okay, but I feel kind of lost in this place. +{{Global.mariana_current_name}}: Do you know where you are going? +- I feel just as lost as you +set Global.dialogue_wait = false +=> END \ No newline at end of file diff --git a/dialogue/mariana.dialogue.import b/dialogue/mariana.dialogue.import new file mode 100644 index 0000000..136d914 --- /dev/null +++ b/dialogue/mariana.dialogue.import @@ -0,0 +1,16 @@ +[remap] + +importer="dialogue_manager" +importer_version=15 +type="Resource" +uid="uid://bqklrxmril6p" +path="res://.godot/imported/mariana.dialogue-cf1c2b2c5d710fdda60adaeb98af95fe.tres" + +[deps] + +source_file="res://dialogue/mariana.dialogue" +dest_files=["res://.godot/imported/mariana.dialogue-cf1c2b2c5d710fdda60adaeb98af95fe.tres"] + +[params] + +defaults=true diff --git a/dialogue/savvy_consumer.dialogue b/dialogue/savvy_consumer.dialogue new file mode 100644 index 0000000..a4cfeda --- /dev/null +++ b/dialogue/savvy_consumer.dialogue @@ -0,0 +1,6 @@ +~ start +set Global.dialogue_wait = true +Savvy Consumer: Some call this junk food. +Savvy Consumer: Me. I call it treasured calories! +set Global.dialogue_wait = false +=> END \ No newline at end of file diff --git a/dialogue/savvy_consumer.dialogue.import b/dialogue/savvy_consumer.dialogue.import new file mode 100644 index 0000000..177dfd6 --- /dev/null +++ b/dialogue/savvy_consumer.dialogue.import @@ -0,0 +1,16 @@ +[remap] + +importer="dialogue_manager" +importer_version=15 +type="Resource" +uid="uid://cjkstvj0yhyqf" +path="res://.godot/imported/savvy_consumer.dialogue-c3f7a212d5c659e0aae7c5088276fa64.tres" + +[deps] + +source_file="res://dialogue/savvy_consumer.dialogue" +dest_files=["res://.godot/imported/savvy_consumer.dialogue-c3f7a212d5c659e0aae7c5088276fa64.tres"] + +[params] + +defaults=true diff --git a/export_presets.cfg b/export_presets.cfg new file mode 100644 index 0000000..a604d43 --- /dev/null +++ b/export_presets.cfg @@ -0,0 +1,168 @@ +[preset.0] + +name="Windows Desktop" +platform="Windows Desktop" +runnable=true +dedicated_server=false +custom_features="" +export_filter="all_resources" +include_filter="" +exclude_filter="" +export_path="../../export/rem_drifting.exe" +patches=PackedStringArray() +patch_delta_encoding=false +patch_delta_compression_level_zstd=19 +patch_delta_min_reduction=0.1 +patch_delta_include_filters="*" +patch_delta_exclude_filters="" +encryption_include_filters="" +encryption_exclude_filters="" +seed=0 +encrypt_pck=false +encrypt_directory=false +script_export_mode=2 + +[preset.0.options] + +custom_template/debug="" +custom_template/release="" +debug/export_console_wrapper=1 +binary_format/embed_pck=true +texture_format/s3tc_bptc=true +texture_format/etc2_astc=false +shader_baker/enabled=false +binary_format/architecture="x86_64" +codesign/enable=false +codesign/timestamp=true +codesign/timestamp_server_url="" +codesign/digest_algorithm=1 +codesign/description="" +codesign/custom_options=PackedStringArray() +application/modify_resources=true +application/icon="" +application/console_wrapper_icon="" +application/icon_interpolation=4 +application/file_version="" +application/product_version="" +application/company_name="Baer" +application/product_name="R.E.M. Drifting" +application/file_description="" +application/copyright="" +application/trademarks="" +application/export_angle=0 +application/export_d3d12=0 +application/d3d12_agility_sdk_multiarch=true +ssh_remote_deploy/enabled=false +ssh_remote_deploy/host="user@host_ip" +ssh_remote_deploy/port="22" +ssh_remote_deploy/extra_args_ssh="" +ssh_remote_deploy/extra_args_scp="" +ssh_remote_deploy/run_script="Expand-Archive -LiteralPath '{temp_dir}\\{archive_name}' -DestinationPath '{temp_dir}' +$action = New-ScheduledTaskAction -Execute '{temp_dir}\\{exe_name}' -Argument '{cmd_args}' +$trigger = New-ScheduledTaskTrigger -Once -At 00:00 +$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries +$task = New-ScheduledTask -Action $action -Trigger $trigger -Settings $settings +Register-ScheduledTask godot_remote_debug -InputObject $task -Force:$true +Start-ScheduledTask -TaskName godot_remote_debug +while (Get-ScheduledTask -TaskName godot_remote_debug | ? State -eq running) { Start-Sleep -Milliseconds 100 } +Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue" +ssh_remote_deploy/cleanup_script="Stop-ScheduledTask -TaskName godot_remote_debug -ErrorAction:SilentlyContinue +Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue +Remove-Item -Recurse -Force '{temp_dir}'" + +[preset.1] + +name="Linux" +platform="Linux" +runnable=true +dedicated_server=false +custom_features="" +export_filter="all_resources" +include_filter="" +exclude_filter="" +export_path="../../export/rem_drifting.x86_64" +patches=PackedStringArray() +patch_delta_encoding=false +patch_delta_compression_level_zstd=19 +patch_delta_min_reduction=0.1 +patch_delta_include_filters="*" +patch_delta_exclude_filters="" +encryption_include_filters="" +encryption_exclude_filters="" +seed=0 +encrypt_pck=false +encrypt_directory=false +script_export_mode=2 + +[preset.1.options] + +custom_template/debug="" +custom_template/release="" +debug/export_console_wrapper=2 +binary_format/embed_pck=false +texture_format/s3tc_bptc=true +texture_format/etc2_astc=false +shader_baker/enabled=false +binary_format/architecture="x86_64" +ssh_remote_deploy/enabled=false +ssh_remote_deploy/host="user@host_ip" +ssh_remote_deploy/port="22" +ssh_remote_deploy/extra_args_ssh="" +ssh_remote_deploy/extra_args_scp="" +ssh_remote_deploy/run_script="#!/usr/bin/env bash +export DISPLAY=:0 +unzip -o -q \"{temp_dir}/{archive_name}\" -d \"{temp_dir}\" +\"{temp_dir}/{exe_name}\" {cmd_args}" +ssh_remote_deploy/cleanup_script="#!/usr/bin/env bash +kill $(pgrep -x -f \"{temp_dir}/{exe_name} {cmd_args}\") +rm -rf \"{temp_dir}\"" + +[preset.2] + +name="Web" +platform="Web" +runnable=true +dedicated_server=false +custom_features="" +export_filter="all_resources" +include_filter="" +exclude_filter="" +export_path="../../../Downloads/REM_Drifting_Web.html" +patches=PackedStringArray() +patch_delta_encoding=false +patch_delta_compression_level_zstd=19 +patch_delta_min_reduction=0.1 +patch_delta_include_filters="*" +patch_delta_exclude_filters="" +encryption_include_filters="" +encryption_exclude_filters="" +seed=0 +encrypt_pck=false +encrypt_directory=false +script_export_mode=2 + +[preset.2.options] + +custom_template/debug="" +custom_template/release="" +variant/extensions_support=false +variant/thread_support=false +vram_texture_compression/for_desktop=true +vram_texture_compression/for_mobile=false +html/export_icon=true +html/custom_html_shell="" +html/head_include="" +html/canvas_resize_policy=2 +html/focus_canvas_on_start=true +html/experimental_virtual_keyboard=false +progressive_web_app/enabled=false +progressive_web_app/ensure_cross_origin_isolation_headers=true +progressive_web_app/offline_page="" +progressive_web_app/display=1 +progressive_web_app/orientation=0 +progressive_web_app/icon_144x144="" +progressive_web_app/icon_180x180="" +progressive_web_app/icon_512x512="" +progressive_web_app/background_color=Color(0, 0, 0, 1) +threads/emscripten_pool_size=8 +threads/godot_pool_size=4 diff --git a/icon.svg b/icon.svg new file mode 100644 index 0000000..b370ceb --- /dev/null +++ b/icon.svg @@ -0,0 +1 @@ + diff --git a/icon.svg.import b/icon.svg.import new file mode 100644 index 0000000..974aa2d --- /dev/null +++ b/icon.svg.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dpp3jlx0k2rw1" +path="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://icon.svg" +dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/project.godot b/project.godot new file mode 100644 index 0000000..094a618 --- /dev/null +++ b/project.godot @@ -0,0 +1,206 @@ +; Engine configuration file. +; It's best edited using the editor UI and not directly, +; since the parameters that go here are not all obvious. +; +; Format: +; [section] ; section goes between [] +; param=value ; assign values to parameters + +config_version=5 + +[animation] + +compatibility/default_parent_skeleton_in_mesh_instance_3d=true + +[application] + +config/name="Dream Game" +run/main_scene="uid://dadipes760e3q" +config/features=PackedStringArray("4.6", "Forward Plus") +config/icon="uid://dpp3jlx0k2rw1" + +[autoload] + +Global="*res://scripts/global.gd" +DialogueManager="*res://addons/dialogue_manager/dialogue_manager.gd" + +[display] + +window/size/viewport_width=1920 +window/size/viewport_height=800 + +[editor_plugins] + +enabled=PackedStringArray("res://addons/dialogue_manager/plugin.cfg") + +[filesystem] + +import/blender/enabled=false + +[global_group] + +enemy="" +interactable="" +locked_door="" +breakable="" +timer_door="" +timer="" +exit_label="" +generator="" +VanishingBody="" +snow_floor="" +wood_floor="" +Constructs="" +fixable="" +player="" +player_ray="" +mariana="Mariana: deep like the trench" +pause_menu="" +inventory="" +grass_floor="" +level="" +locked="" +grapple_point="" +snow_spot="" +path_area="" +dirt_floor="" + +[input] + +Left={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":97,"location":0,"echo":false,"script":null) +] +} +Right={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"key_label":0,"unicode":100,"location":0,"echo":false,"script":null) +] +} +Forward={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":87,"key_label":0,"unicode":119,"location":0,"echo":false,"script":null) +] +} +Back={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":115,"location":0,"echo":false,"script":null) +] +} +Run={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194325,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +] +} +Jump={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":32,"key_label":0,"unicode":32,"location":0,"echo":false,"script":null) +] +} +interact={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":69,"key_label":0,"unicode":101,"location":0,"echo":false,"script":null) +] +} +UseConstruct={ +"deadzone": 0.5, +"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":1,"position":Vector2(71, 19),"global_position":Vector2(75, 60),"factor":1.0,"button_index":1,"canceled":false,"pressed":true,"double_click":false,"script":null) +] +} +UseConstructAlt={ +"deadzone": 0.2, +"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":2,"canceled":false,"pressed":false,"double_click":false,"script":null) +] +} +Crouch={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":67,"key_label":0,"unicode":99,"location":0,"echo":false,"script":null) +] +} +shift={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":81,"key_label":0,"unicode":113,"location":0,"echo":false,"script":null) +] +} +construct1={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":49,"key_label":0,"unicode":49,"location":0,"echo":false,"script":null) +] +} +construct2={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":50,"key_label":0,"unicode":50,"location":0,"echo":false,"script":null) +] +} +construct3={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":51,"key_label":0,"unicode":51,"location":0,"echo":false,"script":null) +] +} +construct4={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":52,"key_label":0,"unicode":52,"location":0,"echo":false,"script":null) +] +} +construct5={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":53,"key_label":0,"unicode":53,"location":0,"echo":false,"script":null) +] +} +construct6={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":54,"key_label":0,"unicode":54,"location":0,"echo":false,"script":null) +] +} +construct7={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":55,"key_label":0,"unicode":55,"location":0,"echo":false,"script":null) +] +} +construct8={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":56,"key_label":0,"unicode":56,"location":0,"echo":false,"script":null) +] +} +construct9={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":57,"key_label":0,"unicode":57,"location":0,"echo":false,"script":null) +] +} +construct10={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":48,"key_label":0,"unicode":48,"location":0,"echo":false,"script":null) +] +} +con_up={ +"deadzone": 0.2, +"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":8,"position":Vector2(182, 23),"global_position":Vector2(191, 71),"factor":1.0,"button_index":4,"canceled":false,"pressed":true,"double_click":false,"script":null) +] +} +con_down={ +"deadzone": 0.2, +"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":16,"position":Vector2(132, 20),"global_position":Vector2(141, 68),"factor":1.0,"button_index":5,"canceled":false,"pressed":true,"double_click":false,"script":null) +] +} +pause_game={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194305,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +] +} +inventory={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194306,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +] +} + +[internationalization] + +locale/translations_pot_files=PackedStringArray("res://dialogue/dialogue.dialogue", "res://dialogue/savvy_consumer.dialogue", "res://dialogue/mariana.dialogue", "res://dialogue/cooking_pot.dialogue") + +[layer_names] + +3d_render/layer_1="Default" +3d_render/layer_2="Construct" +3d_physics/layer_1="Player_Level_Collision" +3d_physics/layer_2="Interaction" +3d_physics/layer_3="PlayerCollision" diff --git a/resources/lighting_fixes.tres b/resources/lighting_fixes.tres new file mode 100644 index 0000000..3528b10 --- /dev/null +++ b/resources/lighting_fixes.tres @@ -0,0 +1,28 @@ +[gd_resource type="Environment" format=3 uid="uid://cuo3it6ypvhty"] + +[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_5npsl"] +sky_top_color = Color(0.25970435, 0.55582976, 0.6660876, 1) +sky_horizon_color = Color(0.25882354, 0.5568628, 0.6666667, 1) +ground_bottom_color = Color(1, 1, 1, 1) + +[sub_resource type="Sky" id="Sky_dm0e8"] +sky_material = SubResource("ProceduralSkyMaterial_5npsl") + +[resource] +background_mode = 2 +sky = SubResource("Sky_dm0e8") +ambient_light_source = 2 +ambient_light_color = Color(1, 1, 1, 1) +ambient_light_energy = 0.1 +reflected_light_source = 2 +tonemap_mode = 4 +ssao_enabled = true +glow_enabled = true +glow_blend_mode = 0 +fog_light_color = Color(0.898559, 0.909031, 0.925495, 1) +fog_light_energy = 1.2 +volumetric_fog_density = 1.0 +volumetric_fog_emission = Color(1, 1, 1, 1) +volumetric_fog_emission_energy = 0.2 +volumetric_fog_sky_affect = 0.1 +volumetric_fog_temporal_reprojection_amount = 0.99 diff --git a/resources/night_sky.tres b/resources/night_sky.tres new file mode 100644 index 0000000..c8e90ed --- /dev/null +++ b/resources/night_sky.tres @@ -0,0 +1,8 @@ +[gd_resource type="ProceduralSkyMaterial" format=3 uid="uid://dh85uxw6c6f1x"] + +[resource] +sky_top_color = Color(0.14208, 0.0768, 0.24, 1) +sky_horizon_color = Color(0.09472, 0.0512, 0.16, 1) +ground_bottom_color = Color(0.135733, 0.16, 0.048, 1) +ground_horizon_color = Color(0.0941176, 0.0509804, 0.160784, 1) +energy_multiplier = 3.0 diff --git a/scenes/audio.gd b/scenes/audio.gd new file mode 100644 index 0000000..24149c2 --- /dev/null +++ b/scenes/audio.gd @@ -0,0 +1,10 @@ +extends Control + +func _ready(): + $VBoxContainer/MasterVolume.value = db_to_linear(AudioServer.get_bus_volume_db(0)) + +func _process(_delta: float) -> void: + AudioServer.set_bus_volume_db(0,linear_to_db($VBoxContainer/MasterVolume.value)) + +func _on_master_volume_mouse_exited() -> void: + release_focus() diff --git a/scenes/audio.gd.uid b/scenes/audio.gd.uid new file mode 100644 index 0000000..8fa8ec0 --- /dev/null +++ b/scenes/audio.gd.uid @@ -0,0 +1 @@ +uid://bgn75ug5kfftd diff --git a/scenes/characters/generic_character.tscn b/scenes/characters/generic_character.tscn new file mode 100644 index 0000000..3816b0f --- /dev/null +++ b/scenes/characters/generic_character.tscn @@ -0,0 +1,52 @@ +[gd_scene load_steps=7 format=3 uid="uid://colksumpxc6a7"] + +[ext_resource type="Script" uid="uid://c70rhipr6hxjl" path="res://scripts/dialogue_test.gd" id="1_eb8tr"] + +[sub_resource type="BoxShape3D" id="BoxShape3D_eb8tr"] +size = Vector3(1.78448, 4.99799, 1) + +[sub_resource type="BoxMesh" id="BoxMesh_o8r3d"] +size = Vector3(1, 2, 0.5) + +[sub_resource type="SphereMesh" id="SphereMesh_du3o0"] + +[sub_resource type="CapsuleMesh" id="CapsuleMesh_u411o"] +radius = 0.2 + +[sub_resource type="CapsuleMesh" id="CapsuleMesh_1bf1x"] +radius = 0.2 + +[node name="GenericCharacter" type="CharacterBody3D" groups=["interactable"]] +transform = Transform3D(0.375, 0, 0, 0, 0.375, 0, 0, 0, 0.375, 0, 0, 0) +script = ExtResource("1_eb8tr") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0136604, -0.507294, 0) +shape = SubResource("BoxShape3D_eb8tr") + +[node name="BodyMesh" type="MeshInstance3D" parent="."] +mesh = SubResource("BoxMesh_o8r3d") + +[node name="HeadMesh" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.46111, 0) +mesh = SubResource("SphereMesh_du3o0") + +[node name="ArmMesh" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.7, -0.00577807, 0) +mesh = SubResource("CapsuleMesh_u411o") + +[node name="ArmMesh2" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.7, -0.00577807, 0) +mesh = SubResource("CapsuleMesh_u411o") + +[node name="LegMesh" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.288149, -2.00845, 0) +mesh = SubResource("CapsuleMesh_1bf1x") + +[node name="LegMesh2" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.287789, -2.00845, 0) +mesh = SubResource("CapsuleMesh_1bf1x") + +[node name="InteractLabel" type="Label3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.652842, 0.6477) +text = "[E] Talk" diff --git a/scenes/characters/mariana.tscn b/scenes/characters/mariana.tscn new file mode 100644 index 0000000..ad0a608 --- /dev/null +++ b/scenes/characters/mariana.tscn @@ -0,0 +1,62 @@ +[gd_scene load_steps=9 format=3 uid="uid://bku2nrxiu6x15"] + +[ext_resource type="Script" uid="uid://c70rhipr6hxjl" path="res://scripts/dialogue_test.gd" id="1_nbewh"] + +[sub_resource type="BoxShape3D" id="BoxShape3D_ah0lk"] +size = Vector3(1.78448, 4.99799, 1) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_mqnsu"] +albedo_color = Color(1, 0.07450981, 0.30588236, 1) + +[sub_resource type="BoxMesh" id="BoxMesh_eym8k"] +material = SubResource("StandardMaterial3D_mqnsu") +size = Vector3(1, 2, 0.5) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_jomje"] +albedo_color = Color(1, 0.07450981, 0.30588236, 1) + +[sub_resource type="SphereMesh" id="SphereMesh_7eapc"] +material = SubResource("StandardMaterial3D_jomje") + +[sub_resource type="CapsuleMesh" id="CapsuleMesh_7sveg"] +material = SubResource("StandardMaterial3D_jomje") +radius = 0.2 + +[sub_resource type="CapsuleMesh" id="CapsuleMesh_eatc5"] +material = SubResource("StandardMaterial3D_jomje") +radius = 0.2 + +[node name="Mariana" type="CharacterBody3D" groups=["interactable", "mariana"]] +transform = Transform3D(0.325, 0, 0, 0, 0.325, 0, 0, 0, 0.325, 0, 0, 0) +script = ExtResource("1_nbewh") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0136604, -0.507294, 0) +shape = SubResource("BoxShape3D_ah0lk") + +[node name="BodyMesh" type="MeshInstance3D" parent="."] +mesh = SubResource("BoxMesh_eym8k") + +[node name="HeadMesh" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.46111, 0) +mesh = SubResource("SphereMesh_7eapc") + +[node name="ArmMesh" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.7, -0.00577807, 0) +mesh = SubResource("CapsuleMesh_7sveg") + +[node name="ArmMesh2" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.7, -0.00577807, 0) +mesh = SubResource("CapsuleMesh_7sveg") + +[node name="LegMesh" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.288149, -2.00845, 0) +mesh = SubResource("CapsuleMesh_eatc5") + +[node name="LegMesh2" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.287789, -2.00845, 0) +mesh = SubResource("CapsuleMesh_eatc5") + +[node name="InteractLabel" type="Label3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.652842, 0.6477) +text = "[E] Talk" diff --git a/scenes/constructs/construct.tscn b/scenes/constructs/construct.tscn new file mode 100644 index 0000000..2023ae1 --- /dev/null +++ b/scenes/constructs/construct.tscn @@ -0,0 +1,115 @@ +[gd_scene format=3 uid="uid://ci7kg8ouj7cvu"] + +[ext_resource type="Script" uid="uid://c22qt040vk62r" path="res://scripts/constructs/init_construct.gd" id="1_xl0tc"] + +[node name="Construct" type="Node3D" unique_id=1349159747 groups=["Constructs"]] +script = ExtResource("1_xl0tc") + +[node name="ConstructMesh" type="MeshInstance3D" parent="." unique_id=1432858867] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0) +cast_shadow = 0 + +[node name="labels_time" type="Node3D" parent="ConstructMesh" unique_id=1523747844] +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, 0) +visible = false + +[node name="label_1" type="Label3D" parent="ConstructMesh/labels_time" unique_id=1690775828] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0.474768, 0.101, -0.769231) +text = "1" +font_size = 40 + +[node name="label_2" type="Label3D" parent="ConstructMesh/labels_time" unique_id=1417768577] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0.800423, 0.101, -0.421844) +text = "2 +" +font_size = 40 + +[node name="label_3" type="Label3D" parent="ConstructMesh/labels_time" unique_id=602074109] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0.9, 0.101, 0) +text = "3 +" +font_size = 40 + +[node name="label_4" type="Label3D" parent="ConstructMesh/labels_time" unique_id=693771798] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0.8, 0.101, 0.422) +text = "4 +" +font_size = 40 + +[node name="label_5" type="Label3D" parent="ConstructMesh/labels_time" unique_id=1141155976] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0.475, 0.101, 0.769) +text = "5" +font_size = 40 + +[node name="label_6" type="Label3D" parent="ConstructMesh/labels_time" unique_id=1676058768] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 0.101, 0.9) +text = "6" +font_size = 40 + +[node name="label_7" type="Label3D" parent="ConstructMesh/labels_time" unique_id=570552953] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, -0.475, 0.101, 0.769) +text = "7" +font_size = 40 + +[node name="label_8" type="Label3D" parent="ConstructMesh/labels_time" unique_id=1765860056] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, -0.8, 0.101, 0.422) +text = "8 +" +font_size = 40 + +[node name="label_9" type="Label3D" parent="ConstructMesh/labels_time" unique_id=664359230] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, -0.9, 0.101, 0) +text = "9 +" +font_size = 40 + +[node name="label_10" type="Label3D" parent="ConstructMesh/labels_time" unique_id=1142721281] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, -0.760619, 0.101, -0.422) +text = "10 +" +font_size = 40 + +[node name="label_11" type="Label3D" parent="ConstructMesh/labels_time" unique_id=1515347297] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, -0.475, 0.101, -0.746864) +text = "11" +font_size = 40 + +[node name="label_12" type="Label3D" parent="ConstructMesh/labels_time" unique_id=998422574] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 0.101, -0.9) +text = "12" +font_size = 40 + +[node name="ConstructMesh2" type="MeshInstance3D" parent="." unique_id=1915948086] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.12519, 0) +cast_shadow = 0 + +[node name="ConstructMesh3" type="MeshInstance3D" parent="ConstructMesh2" unique_id=1795609686] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.389532) +skeleton = NodePath("../..") + +[node name="ConstructMesh4" type="MeshInstance3D" parent="ConstructMesh2" unique_id=1598442498] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, 0.782195) +skeleton = NodePath("../..") + +[node name="ConstructShadow" type="MeshInstance3D" parent="." unique_id=493486346] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0) +visible = false + +[node name="ConstructOmniLight" type="OmniLight3D" parent="." unique_id=308866569] +visible = false +light_color = Color(1, 1, 0.109804, 1) +light_energy = 5.0 +omni_range = 3.0 + +[node name="ConstructDirectionalLight" type="DirectionalLight3D" parent="." unique_id=1786964701] +visible = false +sky_mode = 1 + +[node name="ConstructSpotLight" type="SpotLight3D" parent="." unique_id=779248555] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, 0) +visible = false +light_energy = 5.0 +light_volumetric_fog_energy = 0.0 +spot_range = 106.575 +spot_attenuation = 2.0 +spot_angle = 15.0 diff --git a/scenes/constructs/fishing_rod/fishing_rod.tres b/scenes/constructs/fishing_rod/fishing_rod.tres new file mode 100644 index 0000000..5de5517 --- /dev/null +++ b/scenes/constructs/fishing_rod/fishing_rod.tres @@ -0,0 +1,12 @@ +[gd_resource type="Resource" script_class="Constructs" load_steps=3 format=3 uid="uid://becojxwrm6v6j"] + +[ext_resource type="CylinderMesh" uid="uid://cocx33eyrcjab" path="res://scenes/constructs/fishing_rod/fishing_rod_mesh.tres" id="1_3hvut"] +[ext_resource type="Script" uid="uid://d0hoytht5yf8c" path="res://scripts/constructs/constructs.gd" id="2_wms0l"] + +[resource] +script = ExtResource("2_wms0l") +name = &"fishing_rod" +position = Vector3(0.5, -0.6, -0.7) +scale = Vector3(0.3, 0.3, 0.3) +mesh = ExtResource("1_3hvut") +metadata/_custom_type_script = "uid://d0hoytht5yf8c" diff --git a/scenes/constructs/fishing_rod/fishing_rod.tscn b/scenes/constructs/fishing_rod/fishing_rod.tscn new file mode 100644 index 0000000..1e8d893 --- /dev/null +++ b/scenes/constructs/fishing_rod/fishing_rod.tscn @@ -0,0 +1,23 @@ +[gd_scene load_steps=4 format=3 uid="uid://daaplkoow5hiy"] + +[ext_resource type="Script" uid="uid://cdg27cwpw8rn7" path="res://scripts/constructs/construct_pickup.gd" id="1_x07y2"] +[ext_resource type="CylinderMesh" uid="uid://cocx33eyrcjab" path="res://scenes/constructs/fishing_rod/fishing_rod_mesh.tres" id="2_x07y2"] + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_ndvjp"] +radius = 0.2 + +[node name="fishing_rod" type="StaticBody3D" groups=["interactable"]] +script = ExtResource("1_x07y2") + +[node name="MeshInstance3D" type="MeshInstance3D" parent="."] +mesh = ExtResource("2_x07y2") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="."] +visible = false +shape = SubResource("CylinderShape3D_ndvjp") + +[node name="InteractLabel" type="Label3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.27622, 0) +visible = false +billboard = 2 +text = "[E] Pickup" diff --git a/scenes/constructs/fishing_rod/fishing_rod_mesh.tres b/scenes/constructs/fishing_rod/fishing_rod_mesh.tres new file mode 100644 index 0000000..575ba14 --- /dev/null +++ b/scenes/constructs/fishing_rod/fishing_rod_mesh.tres @@ -0,0 +1,14 @@ +[gd_resource type="CylinderMesh" format=3 uid="uid://cocx33eyrcjab"] + +[ext_resource type="Texture2D" uid="uid://chs86io42mwow" path="res://assets/textures/wood/rough_wood_1k/rough_wood_diff_1k.png" id="1_4lxt0"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_y8kk7"] +albedo_texture = ExtResource("1_4lxt0") +uv1_scale = Vector3(0.2, 0.2, 0.2) +uv1_triplanar = true +texture_filter = 0 + +[resource] +material = SubResource("StandardMaterial3D_y8kk7") +top_radius = 0.1 +bottom_radius = 0.1 diff --git a/scenes/constructs/flashlight/flashlight.glb b/scenes/constructs/flashlight/flashlight.glb new file mode 100644 index 0000000..3e9ccf1 Binary files /dev/null and b/scenes/constructs/flashlight/flashlight.glb differ diff --git a/scenes/constructs/flashlight/flashlight.glb.import b/scenes/constructs/flashlight/flashlight.glb.import new file mode 100644 index 0000000..7508581 --- /dev/null +++ b/scenes/constructs/flashlight/flashlight.glb.import @@ -0,0 +1,37 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://bin8jrb0lcky8" +path="res://.godot/imported/flashlight.glb-4fe44a6bf13cc05e7332eecc8e78d3e8.scn" + +[deps] + +source_file="res://scenes/constructs/flashlight/flashlight.glb" +dest_files=["res://.godot/imported/flashlight.glb-4fe44a6bf13cc05e7332eecc8e78d3e8.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +_subresources={} +gltf/naming_version=1 +gltf/embedded_image_handling=1 diff --git a/scenes/constructs/flashlight/flashlight.tres b/scenes/constructs/flashlight/flashlight.tres new file mode 100644 index 0000000..353d1f8 --- /dev/null +++ b/scenes/constructs/flashlight/flashlight.tres @@ -0,0 +1,14 @@ +[gd_resource type="Resource" script_class="Constructs" load_steps=3 format=3 uid="uid://blcd3ivb2d42i"] + +[ext_resource type="ArrayMesh" uid="uid://bksxntoov35kd" path="res://scenes/constructs/flashlight/flashlight_mesh.tres" id="1_ceusa"] +[ext_resource type="Script" uid="uid://d0hoytht5yf8c" path="res://scripts/constructs/constructs.gd" id="1_ddjnb"] + +[resource] +script = ExtResource("1_ddjnb") +name = &"Flashlight" +position = Vector3(0.3, -0.2, -0.3) +rotation = Vector3(-90, 0, 0) +scale = Vector3(0.05, 0.05, 0.05) +mesh = ExtResource("1_ceusa") +shadow = false +metadata/_custom_type_script = "uid://d0hoytht5yf8c" diff --git a/scenes/constructs/flashlight/flashlight.tscn b/scenes/constructs/flashlight/flashlight.tscn new file mode 100644 index 0000000..bca232d --- /dev/null +++ b/scenes/constructs/flashlight/flashlight.tscn @@ -0,0 +1,9 @@ +[gd_scene load_steps=3 format=3 uid="uid://dt7kas6sg5aa3"] + +[ext_resource type="PackedScene" uid="uid://bin8jrb0lcky8" path="res://scenes/constructs/flashlight/flashlight.glb" id="1_ypg2f"] +[ext_resource type="ArrayMesh" uid="uid://bksxntoov35kd" path="res://scenes/constructs/flashlight/flashlight_mesh.tres" id="2_cj7j2"] + +[node name="flashlight" instance=ExtResource("1_ypg2f")] + +[node name="Cylinder" parent="." index="0"] +mesh = ExtResource("2_cj7j2") diff --git a/scenes/constructs/flashlight/flashlight_mesh.tres b/scenes/constructs/flashlight/flashlight_mesh.tres new file mode 100644 index 0000000..42e86c0 --- /dev/null +++ b/scenes/constructs/flashlight/flashlight_mesh.tres @@ -0,0 +1,119 @@ +[gd_resource type="ArrayMesh" load_steps=7 format=4 uid="uid://bksxntoov35kd"] + +[ext_resource type="Texture2D" uid="uid://7fagq33bixhr" path="res://assets/textures/metal/Metal029_1K-PNG/Metal029_1K-PNG_Color.png" id="1_ml71j"] +[ext_resource type="Texture2D" uid="uid://6fdgkbvnwnph" path="res://assets/textures/metal/Metal029_1K-PNG/Metal029_1K-PNG_Metalness.png" id="2_jj1od"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_53wyl"] +resource_name = "Material.002" +cull_mode = 2 +albedo_texture = ExtResource("1_ml71j") +metallic = 1.0 +metallic_texture = ExtResource("2_jj1od") +roughness = 0.5 +uv1_scale = Vector3(0.2, 0.2, 0.2) +uv1_triplanar = true +texture_filter = 0 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_y0lvj"] +resource_name = "Material.002" +cull_mode = 2 +albedo_texture = ExtResource("1_ml71j") +metallic = 1.0 +metallic_texture = ExtResource("2_jj1od") +roughness = 0.5 +uv1_scale = Vector3(0.2, 0.2, 0.2) +uv1_triplanar = true +texture_filter = 0 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_rmvmy"] +resource_name = "Material.002" +cull_mode = 2 +albedo_texture = ExtResource("1_ml71j") +metallic = 1.0 +metallic_texture = ExtResource("2_jj1od") +roughness = 0.5 +uv1_scale = Vector3(0.2, 0.2, 0.2) +uv1_triplanar = true +texture_filter = 0 + +[sub_resource type="ArrayMesh" id="ArrayMesh_l024e"] +_surfaces = [{ +"aabb": AABB(-1, -2.5, -1, 2, 5, 2), +"format": 34896613377, +"index_count": 372, +"index_data": PackedByteArray("AAAKAAIAAAAiAAoAIwACAAoAIgAjAAoAJAAAAAIAJAAiAAAAJAACACUAAgAmACUAIwAmAAIADAAkACUADAAlACYAJwAkAAwAJwAMACYAJwAmABYAIAAnABYAJgAhABYAIAAWACEAKAAnACAAKAAgACEAKAAkACcAJgApACEAIwApACYAKAAhABAAIQApABAAAwAoABAAAwAQACkAKgAoAAMAKgADACkAKwAoACoAKwAkACgAKgApAA8ALAAqAA8AKwAqACwALAAPAB8AKQAfAA8AKwAsAB8AKQAtAB8AKwAfAAcAHwAtAAcAHgArAAcAHgAHAC0ALgArAB4ALgAeAC0ALgAtABEAHAAuABEAKQAvAC0ALQAdABEAHAARAB0ALQAvAB0AMAAuABwAMAArAC4AMAAcAB0AIwAvACkAMAAdAAkAHQAvAAkACAAwAAkACAAJAC8AMQArADAAMgAwAAgAMQAwADIAMgAIAC8AMQAkACsAMgAvAA4AMwAyAA4AMQAyADMAMwAOABsALwAbAA4AMQAzABsALwA0ABsAMQAbABoAGwA0ABoADQAxABoADQAaADQANQAxAA0ANQANADQANQA0AAQAFwA1AAQALwA2ADQANAAZAAQAFwAEABkANAA2ABkANwA1ABcANwAxADUANwAXABkAGQA2ABgANwAZABgABQA3ABgABQAYADYAOAAxADcAOQA3AAUAOAA3ADkAOQAFADYAJAAxADgAOAA5ADoAOgA5AAYAOQA2AAYAOgAGADsANgA7AAYAOAA6ADsANgA8ADsAOAA7ABUAOwA8ABUACwA4ABUACwAVADwAJAA4AD0APgA4AAsAPQA4AD4APgALADwAJAA9ACIAPgA8AAEAFAA+AAEAPQA+ABQAFAABAD8APQAUAD8APAA/AAEAIgA9ABIAPQA/ABMAEgA9ABMAIgASACMAEgATACMAPwAjABMAPAAjAD8ANgAjADwALwAjADYA"), +"lods": [0.056825, PackedByteArray("AAAKAAIADAAAAAIAAAASAAoADAASAAAAEgATAAoAEgAUABMADAAUABIAFAABABMAAQAKABMAFAALAAEADAALABQACwAVAAEABgABABUACwAGABUABgAKAAEACwAFAAYACgAWAAIADAACABYACgAPABYADAANAAsACwAXAAUACwANABcABQAXABgABQAYAAYAFwAZABgAGQAGABgAFwAEABkABAAGABkAFwANAAQADgAKAAYADgAGAAQACgAOAA8ADQAaAAQAGwAEABoADgAEABsADQAbABoADQAOABsADQAIAA4ACAAJAA4ADQAcAAgACAAcAAkAHQAOAAkAHAAdAAkAEQAOAB0AHAARAB0ADwAOABEADQAeABwAHAAeABEADQAMAB4ADwARAB8AHwARAAcAHgAHABEAHgAfAAcAHgAPAB8AHgADAA8AHgAMACAAHgAgAAMAIAAMABYAAwAQAA8AAwAgABAAIQAPABAAFgAPACEAIAAhABAAIAAWACEA"), 0.236799, PackedByteArray("AAAKAAIAAAABAAoAAAALAAEABgAKAAEACwAGAAEADAALAAAADAAAAAIACwAFAAYADAANAAsACwANAAUABQAEAAYABQANAAQADgAGAAQADgAKAAYADQAOAAQACgAPAAIACgAOAA8AAwAMAAIADQAMAAMAAgAPABAAAwACABAAAwAQAA8AAwAPAAcADwARAAcAAwAHABEADwAOABEADQADAAgADQAIAA4ACAADABEAEQAOAAkACAAJAA4ACAARAAkA"), 0.498359, PackedByteArray("AAABAAIAAAAFAAEABgACAAEABQAGAAEAAwAAAAIAAwAFAAAAAwACAAcABQAEAAYAAwAIAAUABQAIAAQACAADAAcACQAGAAQACAAJAAQACQACAAYACAAHAAkAAgAJAAcA"), 1.35235, PackedByteArray("AAABAAIAAgABAAQAAwAAAAIABQAEAAEAAAAFAAEAAwAFAAAABQACAAQABQADAAIA"), 1.46287, PackedByteArray("AAABAAIAAAACAAEAAwAAAAIAAAADAAIA")], +"name": "Material.001", +"primitive": 3, +"uv_scale": Vector4(0, 0, 0, 0), +"vertex_count": 64, +"vertex_data": PackedByteArray("/38AAAAAAABs6v//4jgAAP9///8AAAAAvgkAAANPAAAcx///bOoAAED2AAD7sAAAif3///iYAAB1Av//+JgAAANPAABA9gAA4jj//2zqAAD4mP//dQIAAED2AAADTwAAA08AAL4JAAD7sAAAQPYAAAZn//+J/QAAdQL//wZnAACSFf//4jgAAJIV//8cxwAA+7AAAL4JAAAcx///khUAAIHaAAB9JQAAif3//wZnAADiOP//khUAAIHaAACB2gAAbOr//xzHAACB2v//gdoAAPiY//+J/QAA/3//////AAB9JQAAgdoAAH0l//+B2gAAvgkAAPuwAAAAAP///38AAH0lAAB9JQAAfSX//30lAAD4mAAAdQIAAPuw//++CQAABmcAAHUCAAAGZ///dQIAAANP//++CQAA4jgAAJIVAACSFQAA4jgAAL4J//8DTwAAdQIAAAZnAAB1AgAA+JgAAAAAAAD/fwAAvgn///uwAACSFQAAHMcAAANP//9A9gAA4jgAAGzqAAD4mAAAif0AAAZnAACJ/QAA/38AAP//AAD7sP//QPYAABzHAABs6gAAQPb///uwAABs6gAAHMcAAIn9AAAGZwAAif0AAPiYAAD//wAA/38AAP//////fwAAQPb//wNPAAAcxwAAkhUAAGzqAADiOAAAgdr//30lAAA=") +}, { +"aabb": AABB(-1.68327, 2.46103, -1.68327, 3.36655, 1.78923, 3.36655), +"format": 34896613377, +"index_count": 372, +"index_data": PackedByteArray("AAASAAIAAAAiABIAIwACABIAIgAjABIAJAAAAAIAJAAiAAAAJAACACUAAgAmACUAIwAmAAIAFAAkACUAFAAlACYAJwAkABQAJwAUACYAJwAmABUAKAAnABUAJgAYABUAKAAVABgAKQAnACgAKQAoABgAKQAkACcAJgAqABgAIwAqACYAKQAYABEAGAAqABEABQApABEABQARACoAKwApAAUAKwAFACoALAApACsALAAkACkAKwAqABAALQArABAALAArAC0ALQAQABsAKgAbABAALAAtABsAKgAcABsALAAbAAQAGwAcAAQAGQAsAAQAGQAEABwALgAsABkALgAZABwALgAcAA8ALwAuAA8AKgAwABwAHAAdAA8ALwAPAB0AHAAwAB0AMQAuAC8AMQAsAC4AMQAvAB0AIwAwACoAMQAdAAcAHQAwAAcADQAxAAcADQAHADAAMgAsADEAMwAxAA0AMgAxADMAMwANADAAMgAkACwAMwAwAA4ANAAzAA4AMgAzADQANAAOAB4AMAAeAA4AMgA0AB4AMAAfAB4AMgAeAAMAHgAfAAMAGgAyAAMAGgADAB8ANQAyABoANQAaAB8ANQAfAAwANgA1AAwAMAA3AB8AHwAgAAwANgAMACAAHwA3ACAAOAA1ADYAOAAyADUAOAA2ACAAIAA3AAkAOAAgAAkABgA4AAkABgAJADcAOQAyADgAOgA4AAYAOQA4ADoAOgAGADcAJAAyADkAOQA6ADsAOwA6AAsAOgA3AAsAOwALACEANwAhAAsAOQA7ACEANwAWACEAOQAhAAEAIQAWAAEAFwA5AAEAFwABABYAJAA5ADwAPQA5ABcAPAA5AD0APQAXABYAJAA8ACIAPQAWAAoAPgA9AAoAPAA9AD4APgAKAD8APAA+AD8AFgA/AAoAIgA8ABMAPAA/AAgAEwA8AAgAIgATACMAEwAIACMAPwAjAAgAFgAjAD8ANwAjABYAMAAjADcA"), +"lods": [0.0987712, PackedByteArray("AAASAAIAAAATABIAFAAAAAIAFAATAAAAFAACABUAEwAIABIAEwAKAAgAFgAIAAoAFgASAAgAEwAXAAoAFwAWAAoAFAAXABMAAgAYABUABQAUABUABQAVABgAAgAQABgAEgAQAAIABQAYABEAGAAQABEABQARABAAGQAUAAUAGQAFABAAGgAUABkAFAAaABcAGQAQABsAEAAcABsAGQAbAAQAGwAcAAQAGQAEABwAGQAcAA8AEAAOABwAEgAOABAAHAAdAA8AHAAOAB0ADQAZAA8ADQAPAB0AGgAZAA0ADQAdAAcAHQAOAAcADQAHAA4AGgANAA4ADgASAAsACwASABYAGgAOAB4ADgAfAB4ADgALAB8AGgAeAAMAHgAfAAMAGgADAB8AGgAfAAwAHwAgAAwAHwALACAABgAaAAwABgAMACAAFwAaAAYAFwAGAAsABgAgAAkAIAALAAkABgAJAAsAFwALACEACwAWACEAFwABABYAIQAWAAEAFwAhAAEA"), 0.243358, PackedByteArray("AAAIAAIAAAAKAAgACgACAAgAAAAGAAoABgABAAoACwAKAAEABgALAAEACwACAAoABgAJAAsABQAGAAAABQAAAAIABgAMAAkADAALAAkABgANAAwABQANAAYADgALAAwADgACAAsADQADAAwADgAMAAMADQAOAAMADQAHAA4ADQAPAAcADwAOAAcADQAFAA8AAgAOABAAEAAOAA8ABQACABEAAgAQABEABQARABAABQAQAAQAEAAPAAQABQAEAA8A"), 0.699988, PackedByteArray("AAAIAAIAAAABAAgABQAAAAIAAAAGAAEABQAGAAAABQACAAQABgAFAAQAAgAHAAQABgAEAAcACAAHAAIACQAIAAEABwAIAAkABgAJAAEABwAJAAMABgADAAkABgAHAAMA"), 1.01883, PackedByteArray("AAAGAAIABgAHAAIAAAACAAcABgAAAAcA"), 1.29019, PackedByteArray("AAABAAIAAwACAAEAAAADAAEAAgADAAQAAAAEAAMABQACAAQABQAAAAIAAAAFAAQA")], +"name": "Material.003", +"primitive": 3, +"uv_scale": Vector4(0, 0, 0, 0), +"vertex_count": 64, +"vertex_data": PackedByteArray("/38AAPQzAACJ/f//BmcAAP9///8AAAAA+Jj//4n9AAB1Av//+JgAAL45AADlYgAAQMYAABmdAADiOP//bOoAABzH//+SFQAAbOr//xzHAABs6v//4jgAAIn9///4mAAAHMf//2zqAADlYgAAQMYAAAZn//+J/QAAkhX//xzHAAB1Av//BmcAAJIV///iOAAA+Jj//3UCAAAZnQAAvjkAAOViAAC+OQAA4jj//5IVAABA9v//A08AAEDGAADlYgAAfSX//30lAAC+OQAAGZ0AABmdAABAxgAAAAD///9/AAC+Cf//+7AAAH0l//+B2gAA/3//////AAD7sP//QPYAAIHa//+B2gAA//////9/AADVjgAAazUAAPuw//++CQAAKXEAAGs1AAAGZ///dQIAAANP//++CQAAwFUAAMVAAAA6SgAAOkoAAMVAAADAVQAAvgn//wNPAABrNQAAKXEAAGs1AADVjgAA9DMAAP9/AADFQAAAPqoAADpKAADEtQAAA0///0D2AADAVQAAOb8AANWOAACTygAAKXEAAJPKAAD/fwAACswAAD6qAAA5vwAAxLUAAMS1AABA9v//+7AAADm/AAA+qgAAk8oAAClxAACTygAA1Y4AAArMAAD/fwAAPqoAAMVAAAA5vwAAwFUAAMS1AAA6SgAAgdr//30lAAA=") +}, { +"aabb": AABB(-1.69595, 4.20986, -1.69595, 3.39191, 1.2303, 3.39191), +"format": 34896613377, +"index_count": 372, +"index_data": PackedByteArray("AAASAAIAAAAiABIAIwACABIAIgAjABIAJAAAAAIAJAAiAAAAJAACACUAAgAmACUAIwAmAAIACwAkACUACwAlACYAIQAkAAsAIQALACYAIQAmAA8AIAAhAA8AJgAnAA8AIAAPACcAKAAhACAAKAAgACcAKAAkACEAJgApACcAIwApACYAKAAnABEAJwApABEABQAoABEABQARACkAKgAoAAUAKgAFACkAKwAoACoAKwAkACgAKgApAB8AHQAqAB8AKwAqAB0AHQAfACwAKQAsAB8AKwAdACwAKQAtACwAKwAsAAkALAAtAAkAEAArAAkAEAAJAC0ALgArABAALgAQAC0ALgAtAB4AHAAuAB4AKQAvAC0ALQAwAB4AHAAeADAALQAvADAAMQAuABwAMQArAC4AMQAcADAAIwAvACkAMQAwAAMAMAAvAAMACAAxAAMACAADAC8AMgArADEAMwAxAAgAMgAxADMAMwAIAC8AMgAkACsAMwAvABkAGgAzABkAMgAzABoAGgAZABsALwAbABkAMgAaABsALwA0ABsAMgAbAAcAGwA0AAcADgAyAAcADgAHADQANQAyAA4ANQAOADQANQA0ABgAFwA1ABgALwA2ADQANAA3ABgAFwAYADcANAA2ADcAOAA1ABcAOAAyADUAOAAXADcANwA2AAYAOAA3AAYAAQA4AAYAAQAGADYAOQAyADgAOgA4AAEAOQA4ADoAOgABADYAJAAyADkAOQA6ABUAFQA6ABYAOgA2ABYAFQAWADsANgA7ABYAOQAVADsANgA8ADsAOQA7AAQAOwA8AAQADQA5AAQADQAEADwAJAA5AD0APgA5AA0APQA5AD4APgANADwAJAA9ACIAPgA8ABQAEwA+ABQAPQA+ABMAEwAUAD8APQATAD8APAA/ABQAIgA9AAoAPQA/AAwACgA9AAwAIgAKACMACgAMACMAPwAjAAwAPAAjAD8ANgAjADwALwAjADYA"), +"lods": [0.0443934, PackedByteArray("AAASAAIACwAAAAIAEgAPAAIACwACAA8AAAAKABIACwAKAAAACgAMABIACgATAAwACwATAAoAEwAUAAwAFAASAAwAEwANABQADQAEABQAEwAVAA0ADQAVAAQACwAVABMAFgAUAAQAFgASABQAFQAWAAQAFQABABYAAQAGABYAFQAXAAEAAQAXAAYAGAAWAAYAFwAYAAYAGQASABYAGQAWABgAFwAOABgAFQAaABcAFwAaAA4ACwAaABUADgAHABgADgAaAAcAGwAYAAcAGQAYABsAGgAbAAcAGgAZABsAGgAIABkACAADABkAGgAcAAgACAAcAAMAGgALAB0AGgAdABwAHgAZAAMAHAAeAAMAHAAQAB4AHAAdABAAEAAJAB4AEAAdAAkAHwAZAB4AHwAeAAkAHQAfAAkAEgAZAB8AHQAFAB8AEgAfAA8ABQARAB8ADwAfABEABQAgABEAHQAgAAUAIAAPABEAHQALACAAIQALAA8AIAALACEAIAAhAA8A"), 0.0967261, PackedByteArray("AAAKAAIACwAKAAAACwAAAAIACgAMAAIACgAEAAwABAACAAwACgANAAQACwANAAoADQAGAAQABgACAAQADQABAAYAAQAHAAYADQAOAAEAAQAOAAcACwAOAA0AAwAGAAcAAwACAAYADgADAAcACwACAA8ADgAIAAMABQALAA8ADgALABAAEAALAAUADgAQAAgACAAJAAMACAAQAAkAAgADABEAAgARAA8AEQADAAkABQAPABEAEAARAAkAEAAFABEA"), 0.686629, PackedByteArray("AAAEAAIAAAABAAQAAQAGAAQABgACAAQAAQAHAAYABQAAAAIAAAAIAAEACAAAAAUAAQAIAAcABQACAAkACAAFAAkAAwACAAYAAwAGAAcAAgADAAkACAADAAcACAAJAAMA"), 1.15822, PackedByteArray("AAAEAAIAAwACAAQABQAAAAIABQACAAMAAAABAAQAAQAAAAUAAQADAAQAAQAFAAMA"), 1.37141, PackedByteArray("AAABAAIAAQADAAIAAAACAAMAAQAAAAMA")], +"name": "Material.002", +"primitive": 3, +"uv_scale": Vector4(0, 0, 0, 0), +"vertex_count": 64, +"vertex_data": PackedByteArray("/38AAAAAAABA9gAA+7AAAP9///8AAAAA4jj//2zqAACJ/f//BmcAAL4JAAADTwAAbOr//xzHAAD4mP//if0AAANPAABA9gAAdQL///iYAAD7sAAAvgkAAANPAAC+CQAAHMf//5IVAABA9gAAA08AAPuwAABA9gAA4jj//5IVAAC+CQAA+7AAAJIV///iOAAA+Jj//3UCAACB2gAAfSUAAGzq///iOAAA//8AAP9/AACJ/f//+JgAAIHaAACB2gAAHMf//2zqAAAGZ///if0AAP9/AAD//wAA/3//////AAB9JQAAgdoAAAAAAAD/fwAAkhX//xzHAAB1Av//BmcAAH0lAAB9JQAA4jgAAJIVAAD4mAAAdQIAAPuw//++CQAABmcAAHUCAAAGZ///dQIAAANP//++CQAAfSX//30lAACSFQAA4jgAAL4J//8DTwAAdQIAAAZnAAB1AgAA+JgAAAAA////fwAAvgn///uwAACSFQAAHMcAAANP//9A9gAAfSX//4HaAADiOAAAbOoAAPiYAACJ/QAABmcAAIn9AAD7sP//QPYAABzHAABs6gAAQPb///uwAACB2v//gdoAAGzqAAAcxwAAif0AAAZnAACJ/QAA+JgAAP//////fwAAQPb//wNPAAAcxwAAkhUAAGzqAADiOAAAgdr//30lAAA=") +}] +blend_shape_mode = 0 + +[resource] +resource_name = "flashlight_Cylinder" +_surfaces = [{ +"aabb": AABB(-1, -2.5, -1, 2, 5, 2), +"attribute_data": PackedByteArray("////f//XAAD//wAAAAAAAP8v/38AAP9//6//f/+XAAD/P46CFXPdnSFiFPM8h3yowviC1/+/joL/twAA/2//f/9nAAD/RwAA3R0U870D+8tBfPvLfKjC+P/3AAD/z/9//4//f/93AAD/VwAA/zcAAP8nAAD/D/9/vQMCtOoM3Z38S72D6gwh4gM0Qfx8qDyHwvh8qILXwvj/7/9//+cAAP/f/3//xwAA/6cAAP+f/3//nwAA/4cAAP9/AAD/X/9//18AAP9P/3//PwAA/x//f/8fAAD/FwAAjhSNlN0d6YyPAv+/jhRw6yFi6YxBfAK0/z9v/fxLQfxxa3DrFXMh4oLXPIdw642UcOtw6zyHgteNlI2UjZRw6//3/3//7wAA/+f/f//fAAD/1/9//88AAP/H/3//vwAA/7//f/+3/3//rwAA/6f/f/+X/3//jwAA/4f/f/9//3//d/9//28AAP9n/3//V/9//08AAP9H/3//P/9//zf/f/8vAAD/J/9//xf/f/8PAAD/BwAA/wf/f4JXPId8KDyHAzS9gzwHfKg8B4LXfCjC+IJXwvjCeILXcWuNlMJ4fKhwff+/ArS9g/vLvYMh4umMFPPdnUH8ArRB/PvLb/3/vxTzIeL7y0H8IeIU8wK0Qfz/v2/93Z0U872D+8vpjCHi3Z3pjOmM3Z29gwK0joL/vw=="), +"format": 34896613399, +"index_count": 372, +"index_data": PackedByteArray("AAAWAAIAAABGABYARgBHABYARgAmAEcAJgAnAEcAJgBIACcASABJACcASAAoAEkAKAABAEkAKABKAAEASgBLAAEASgAXAEsAFwApAEsAFwBMACkATABNACkATABOAE0ATgAOAE0ATgBPAA4ATwBQAA4ATwAGAFAABgAqAFAABgBRACoAUQAsACoAUQArACwAKwAHACwAKwBSAAcAUgBTAAcAUgAYAFMAGAAtAFMAGABUAC0AVAAuAC0AVABVAC4AVQAZAC4AVQBWABkAVgBXABkAVgAPAFcADwAQAFcADwBYABAAWAAwABAAWAAvADAALwAaADAALwBZABoAWQBaABoAWQAxAFoAMQARAFoAMQBbABEAWwAyABEAWwBcADIAXAAbADIAXABdABsAXQBeABsAXQAEAF4ABAAcAF4ABABfABwAXwA0ABwAXwAzADQAMwA1ADQAMwBgADUAYABhADUAYAAdAGEAHQBiAGEAHQBjAGIAYwADAGIAYwAFAAMAZAAIACAACABlAGYAZABlAAgAZQA2ADcAZQBnADYANgBnAB8AZABnAGUAZwA4AB4AZwBoADgAOABoABMAZwBpAGgAZABpAGcAaAA5ACEAaABpADkAOQBpABIAaQA8ACIAaQBqADwAPABqAD0AaQBkAGsAaQBrAGoAagA+AAoAagBrAD4APgBrAD8AbABkADoAbQBkAGwAawBkAG0AbQBsAAkAawBtAG4AbgBtADsAawBuABQAbwBwAA0AcABxAEAAbwBxAHAAcQByAEEAcQBzAHIAcgBzACQAbwBzAHEAcwB0AHUAcwB2AHQAdAB2AAwAcwB3AHYAbwB3AHMAdgB4AEIAdgB3AHgAeAB3ACUAdwB5AHoAdwB7AHkAeQB7ABUAdwBvAHwAdwB8AHsAewB9AEUAewB8AH0AfQB8AEMAfgBvACMAfwBvAH4AfABvAH8AfwB+AEQAfAB/AIAAgAB/AAsAfACAAIEA"), +"lods": [0.056825, PackedByteArray("AAAWAAIAAAAmABYAJgAnABYAJgAoACcAKAABACcAKAAXAAEAFwApAAEAFwAOACkAFwAGAA4ABgAqAA4ABgArACoAKwAsACoAKwAHACwAKwAYAAcAGAAtAAcAGAAuAC0AGAAZAC4AGAAPABkADwAQABkADwAvABAALwAwABAALwAaADAALwAxABoAMQARABoAMQAyABEAMQAbADIAMQAEABsABAAcABsABAAzABwAMwA0ABwAMwA1ADQAMwAdADUAHQADADUAHQAFAAMANgAeAB8ANwAeADYAIAAeADcAIAA3AAgAIAAiAB4AHgAiACEAHgAhADgAOAAhABMAIQAiADkAOQAiABIACQAgADoAFAAgAAkAIgAgABQAFAAJADsAIgAUAAoAIgAKADwAPAAKAD0ACgAUAD4APgAUAD8AIwBAAA0AIwBBAEAAIwAkAEEAJABCAAwAJAAlAEIAIwAlACQAJQAjAEMAQwAjAEQAQwBEAAsAJQBDAEUAJQBFABUA"), 0.236799, PackedByteArray("AAAWAAIAAAABABYAAAAXAAEAFwAOAAEAFwAGAA4ABgAHAA4ABgAYAAcAGAAZAAcAGAAPABkADwAQABkADwAaABAADwAEABoABAARABoABAAbABEABAAcABsABAADABwABAAdAAMAHQAFAAMACAAeAB8AIAAeAAgAHgAhABMAHgAiACEAIAAiAB4AIQAiABIAIgAgABQAFAAgAAkAIgAUAAoAIwAkAA0AIwAlACQAJAAlAAwAJQAjAAsAJQALABUA"), 0.498359, PackedByteArray("AAABAAIAAAAGAAEABgAOAAEABgAHAA4ABgAPAAcADwAQAAcADwARABAADwAEABEABAADABEABAAFAAMACAASABMAEgAIABQAFAAIAAkAEgAUAAoACwAMAA0ACwAVAAwA"), 1.35235, PackedByteArray("AAABAAIAAAAGAAEABgAHAAEABgADAAcABgAEAAMABAAFAAMACAAJAAoACwAMAA0A"), 1.46287, PackedByteArray("AAABAAIAAAADAAEAAAAEAAMABAAFAAMA")], +"material": SubResource("StandardMaterial3D_53wyl"), +"name": "Material.001", +"primitive": 3, +"uv_scale": Vector4(0, 0, 0, 0), +"vertex_count": 130, +"vertex_data": PackedByteArray("/38AAAAA//9s6v//4jj/1/9///8AAP///3///wAA//++CQAAA0//z/9/AAAAAP//QPYAAPuw/68cx///bOr/l/9///8AAP+/bOr//+I4/78cx///bOr/v74JAAADT/8/QPYAAPuw/z//fwAAAAD/P4n9///4mP+3A08AAED2/4/iOP//bOr/l3UC///4mP+34jj//2zq/791Av//+Jj/v4n9///4mP+/A08AAED2/z/4mP//dQL+90D2AAADT//P+7AAAED2/48GZ///if3/h5IV//8cx/+ndQL//wZn/8eSFf//4jj/1wNPAAC+Cf7vdQL//wZn/7+SFf//4jj/v/iY//91Av+/khX//xzH/78GZ///if3/vwNPAAC+Cf8/QPYAAANP/z/7sAAAQPb/P/uwAAC+Cf7vHMf//5IV/+eB2gAAfSX/34n9//8GZ//HbOr//xzH/6eB2gAAgdr/n4Ha//+B2v+f+Jj//4n9/4f/f/////8AgH0lAACB2v+ffSX//4Ha/5++CQAA+7D/rwAA////f/+/fSUAAH0l/999Jf//fSX/3+I4//+SFf/nfSX//30l/7/iOP//khX/vwAA////f/+/fSX//4Ha/78cx///khX/v4n9//8GZ/+//3///////7/4mP//if3/v4Ha//+B2v+/bOr//xzH/7/7sAAAvgn/P4HaAAB9Jf8/gdoAAIHa/z++CQAA+7D/P30lAAB9Jf8/fSUAAIHa/z/4mAAAdQL+9/uw//++Cf7vHMcAAJIV/+eB2v//fSX/32zqAADiOP/XQPb//wNP/8+J/QAABmf/x///////f/+///8AAP9//7+J/QAA+Jj/t0D2///7sP+vbOoAABzH/6ccxwAAbOr/l/uw//9A9v+P+JgAAIn9/4f/fwAA//8AgAZnAACJ/f+HA0///0D2/4/iOAAAbOr/l5IVAAAcx/+nvgn///uw/691AgAA+Jj/twAAAAD/f/+/dQIAAAZn/8e+Cf//A0//z5IVAADiOP/X4jgAAJIV/+cDT///vgn+7wZn//91Av73BmcAAHUC/vf7sP//vgn/vwNP//++Cf+/Bmf//3UC/7++Cf//A0//v74J///7sP+/A0///0D2/7/7sP//QPb/v0D2///7sP+/gdr//30l/79A9v//A0//v///////f/+/BmcAAHUC/z/4mAAAdQL/PxzHAACSFf8/bOoAAOI4/z+J/QAABmf/P4n9AAD4mP8///8AAP9//z9s6gAAHMf/P/iYAACJ/f8/HMcAAGzq/z8GZwAAif3/P/9/AAD///8/4jgAAGzq/z91AgAA+Jj/P5IVAAAcx/8/4jgAAJIV/z+SFQAA4jj/P3UCAAAGZ/8/AAAAAP9//z//f////38AAP9/////f////3////9/////fwAA/38AAP///3/+//9//v//fwAA/38AAP9/AAD/f/9/AAD/f////3////9////+//9//v//f/7//38AAP9//38AAP9/AAD/fwAA/3////9/////f////3////9////+//9//v//f/7//3/+//9//v//fwAA/38AAP9/AAD/f/9/AAD/fwAA/38AAP9/AAD/fwAA/38AAP9/AAD/fwAA/3////9/////f////3////9/////f////3////9////+//9//v//f////3/+//9//v//f/7//3////9//v//f/7//3/+//9/AAD/fwAA/38AAP9/AAD/fwAA/38AAP9//38AAP9/AAD/fwAA/38AAP9/AAD/fwAA/38AAP9/AAD/fwAA/38AAP9/AAD/fwAA/38AAP9/AAD/fwAA/3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f///////f////3/+//9//v//f////3////9/////f/7//3/+//9/////f////38AAP9/AAD/fwAA/38AAP9/AAD/fwAA/38AAP9/AAD/fwAA/38AAP9/AAD/fwAA/38AAP9/AAD/fwAA/38AAP9/AAD/fwAA/38AAP9/") +}, { +"aabb": AABB(-1.68327, 2.46103, -1.68327, 3.36655, 1.78923, 3.36655), +"attribute_data": PackedByteArray("////f//HAAD//wAA/4cAAP9HAAD/L/9/AAAAAAAA/3//P46C/EtB/L0D+8tBfAK0/6//f/9nAAD/5wAA/6cAAN0dFPMhYumMFXMh4jyHfKjC+ILX/7+Ogv/XAAD/twAA/5cAAP9v/3//dwAA/1cAAP83AAD/JwAAvQMCtOoM3Z3qDCHiAzRB/BVz3Z1BfPvLIWIU83yowvj/9wAA/+//f//P/3//zwAA/78AAP+fAAD/j/9//48AAP9/AAD/XwAA/0//f/9PAAD/PwAA/x8AAP8XAAD/D/9/jhSNlN0d6Yz8S72DPAeC148C/7+OFHDrwnh8qHB9/7+CV8L4/z9v/XFrcOt8qDyHgtc8h8L4fKiC18L4PIeC1//3/3//7wAA/+f/f//fAAD/3/9//9f/f//H/3//v/9//7f/f/+vAAD/p/9//5//f/+X/3//h/9//3//f/93/3//bwAA/2f/f/9f/3//V/9//0f/f/8//3//N/9//y8AAP8n/3//H/9//xf/f/8PAAD/BwAA/wf/f4JXPId8KDyHAzS9gzwHfKh8KML4wniC13FrjZQCtL2D+8u9gyHi6YwU892dcOuNlEH8ArRB/PvLb/3/vxTzIeL7y0H8IeIU83DrcOsCtEH8/79v/d2dFPO9g/vL6Ywh4o2UcOvdnemM6YzdnY2UjZS9gwK0joL/vw=="), +"format": 34896613399, +"index_count": 372, +"index_data": PackedByteArray("AAAmAAIAAABGACYARgBHACYARgAnAEcAJwAOAEcAJwBIAA4ASABJAA4ASABKAEkASgAWAEkASgBLABYASwApABYASwAoACkAKAABACkAKABMAAEATAAqAAEATABNACoATQAXACoATQBOABcATgBPABcATgAMAE8ADAAPAE8ADABQAA8AUAArAA8AUABRACsAUQAYACsAUQBSABgAUgAtABgAUgAsAC0ALAADAC0ALABTAAMAUwAuAAMAUwBUAC4AVAAaAC4AVABVABoAVQBWABoAVQAZAFYAGQANAFYAGQBXAA0AVwAvAA0AVwBYAC8AWAAbAC8AWABZABsAWQAxABsAWQAwADEAMAAEADEAMABaAAQAWgAyAAQAWgBbADIAWwAcADIAWwBcABwAXABdABwAXAAFAF0ABQAdAF0ABQBeAB0AXgAzAB0AXgBfADMAXwA0ADMAXwBgADQAYABhADQAYAA1AGEANQBiAGEANQBjAGIAYwAGAGIAYwAHAAYAZAAIADgACABlAGYAZABlAAgAZQA2ADcAZQBnADYANgBnAB8AZABnAGUAZwA6AB4AZwA5ADoAOgA5AAoAZwBoADkAZABoAGcAOQA7ACAAOQBoADsAOwBoABAAaAA/ACEAaAA+AD8APwA+AAkAaABkAGkAaABpAD4APgBAACQAPgBpAEAAQABpABIAagBkABEAPABkAGoAaQBkADwAPABqACIAaQA8AD0APQA8AAsAaQA9ACMAawBsABUAbABtAEIAawBtAGwAbQBuAG8AbQBwAG4AbgBwAEMAawBwAG0AcABxAHIAcABzAHEAcQBzABQAcAB0AHMAawB0AHAAcwB1AHYAcwB0AHUAdQB0AEQAdAB3AHgAdAB5AHcAdwB5ACUAdABrAHoAdAB6AHkAeQB7AHwAeQB6AHsAewB6AEUAfQBrAEEAfgBrAH0AegBrAH4AfgB9AH8AegB+AIAAgAB+ABMAegCAAIEA"), +"lods": [0.0987712, PackedByteArray("AAAmAAIAAAAnACYAJwAOACYAJwAWAA4AJwAoABYAKAApABYAKAABACkAKAAqAAEAKAAXACoAKAAMABcADAAPABcADAArAA8ADAAYACsADAAsABgALAAtABgALAADAC0ALAAuAAMALAAaAC4ALAAZABoAGQANABoAGQAvAA0AGQAbAC8AGQAwABsAMAAxABsAMAAEADEAMAAyAAQAMAAcADIAMAAFABwABQAdABwABQAzAB0ABQA0ADMABQA1ADQANQAGADQANQAHAAYACAA2ADcACAAeADYANgAeAB8AOAAeAAgAOAAhAB4AHgAhADkAHgA5ADoAOgA5AAoAOQAhADsAOQA7ACAAOwAhABAAIQA4ACMAIwA4ADwAPAA4ABEAPAARACIAIwA8AD0APQA8AAsAIQAjAD4AIQA+AD8APwA+AAkAPgAjAEAAQAAjABIAPgBAACQAQQBCABUAQQBDAEIAQQBEAEMAQwBEABQARABBAEUARQBBABMARABFACUA"), 0.243358, PackedByteArray("AAAOAAIAAAAWAA4AAAAMABYADAABABYADAAXAAEADAAPABcADAAYAA8ADAAZABgAGQADABgAGQAaAAMAGQANABoAGQAbAA0AGQAFABsABQAEABsABQAcAAQABQAdABwABQAGAB0ABQAHAAYACAAeAB8AHgAgAAoAHgAhACAACAAhAB4AIAAhABAAIgAIABEAIwAIACIAIQAIACMAIwAiAAsAIQAjACQAJAAjABIAIQAkAAkAEwAUABUAEwAlABQA"), 0.699988, PackedByteArray("AAAOAAIAAAABAA4AAAAMAAEADAAPAAEADAADAA8ADAANAAMADAAEAA0ADAAFAAQABQAGAAQABQAHAAYACAAQAAoAEQAQAAgAEAARABIAEgARAAsAEAASAAkAEwAUABUA"), 1.01883, PackedByteArray("AAAMAAIADAANAAIADAAHAA0ABwAGAA0A"), 1.29019, PackedByteArray("AAABAAIAAAADAAEAAAAEAAMAAAAFAAQABQAGAAQABQAHAAYACAAJAAoACQAIAAsA")], +"material": SubResource("StandardMaterial3D_y0lvj"), +"name": "Material.003", +"primitive": 3, +"uv_scale": Vector4(0, 0, 0, 0), +"vertex_count": 130, +"vertex_data": PackedByteArray("/38AAPQzvP+J/f//Bmcayf9///8AALz/+Jj//4n925B1Av//+Jifub45AADlYuXQ/3///wAAvP//fwAA9DO8//9///8AAP+/+Jj//4n9/791Av//+Jj/v4n9//8GZ/+/QMYAABmd/LHiOP//bOocnBzH//+SFWjobOr//xzHdariOP//bOr/vxzH//+SFf+/bOr//xzH/7++OQAA5WL/P0DGAAAZnf8//38AAPQz/z9s6v//4ji32In9///4mJ+5HMf//2zqHJzlYgAAQMbFlQZn//+J/duQkhX//xzHdap1Av//BmcayZIV///iOLfYdQL//wZn/7+SFf//4jj/v5IV//8cx/+/Bmf//4n9/79s6v//4jj/v4n9///4mP+/HMf//2zq/7/lYgAAQMb/P/iY//91AiD4GZ0AAL45Q/BAxgAA5WLl0ED2//8DT+XQ//////9/VsGB2v//gdoeoxmdAABAxsWV+7D//0D2xZX/f//////cjn0l//+B2h6jvjkAABmd/LG+Cf//+7D8sQAA////f1bBfSX//30ljuDiOP//khVo6OViAAC+OUPwfSX//30l/7/iOP//khX/v/iY//91Av+/vgn///uw/78AAP///3//v30l//+B2v+/QPb//wNP/7///////3//v/uw//9A9v+//3///////7+B2v//gdr/v+ViAAC+Of8/GZ0AAL45/z9AxgAA5WL/PxmdAABAxv8/vjkAABmd/z/VjgAAazUg+Puw//++CUPwPqoAAMVAaOiB2v//fSWO4MS1AAA6So7gOb8AAMBVt9iTygAAKXEayQrMAAD/f1bBk8oAANWOn7lA9v//+7D8sTm/AAA+qnWqxLUAAMS1HqM+qgAAOb8cnNWOAACTytuQ/38AAArM3I4pcQAAk8rbkANP//9A9sWVwFUAADm/HJw6SgAAxLUeo8VAAAA+qnWqazUAANWOn7n0MwAA/39WwWs1AAApcRrJvgn//wNP5dDFQAAAwFW32DpKAAA6So7gwFUAAMVAaOgDT///vglD8AZn//91AiD4KXEAAGs1IPj7sP//vgn/vwNP//++Cf+/Bmf//3UC/7++Cf//A0//vwNP//9A9v+/QPb///uw/7+B2v//fSX/vylxAABrNf8/1Y4AAGs1/z8+qgAAxUD/Pzm/AADAVf8/xLUAADpK/z+TygAAKXH/P5PKAADVjv8/CswAAP9//z85vwAAPqr/P9WOAACTyv8/PqoAADm//z/EtQAAxLX/PylxAACTyv8//38AAArM/z/AVQAAOb//P2s1AADVjv8/xUAAAD6q/z86SgAAxLX/P8BVAADFQP8/xUAAAMBV/z86SgAAOkr/P2s1AAApcf8/9DMAAP9//z8gfoMVfXEuICB+gxWXMSBW01qU6+Bh7vN8aiD+fGog/v///3/+//9//v//f/7//3/NZ1woZ0eS1Dl6zxgeY1As/v//f/7//3/+//9/AAD/fwAA/38AAP9/KXY8HJRrLCWTVJg4mzzJx98pl7GvUx3j0V998cJjKfb+//9//v//f/7//3/+//9//v//f/7//3/+//9/AAD/fxB+kRUmfC4X73MeHu9zHh6/bn8iBV12McpHY0PKR2NDAAD/f4lOBd2jV83no1fN54Bdv+6EZT34MGc4+tFoJvz+//9//v//f/7//3////9/////f/7//3////9/////f////3////9//v//fwAA/38AAP9/AAD/fwAA/38AAP9/EH6RFSZ8Lhc5es8YPXh7Gj14exopdjwcfXEuIL9ufyKUaywlzWdcKB5jUCwFXXYxk1SYOJcxIFYAAP9/3ymXsZs8ycdnR5LUiU4F3a9THePTWpTrgF2/7tFfffHgYe7zwmMp9oRlPfgwZzj60Wgm/G5qEP5uahD+////f////3/+//9//v//f////3/+//9//v//fwAA/38AAP9/AAD/fwAA/38AAP9/AAD/fwAA/38AAP9/AAD/fwAA/38AAP9/AAD/fwAA/38AAP9/AAD/fwAA/38AAP9/AAD/fwAA/38AAP9/AAD/fwAA/38AAP9/") +}, { +"aabb": AABB(-1.69595, 4.20986, -1.69595, 3.39191, 1.2303, 3.39191), +"attribute_data": PackedByteArray("////f/+v/3///wAA/2cAAAAA/38AAAAA/8cAAP8v/3/dHRTz/z+OgkF8ArTC+ILX/7+OgjyHfKj/pwAA/4cAAP9v/3//RwAAvQP7yxVzIeL8S0H8fKjC+P/v/3//5wAA/8//f/+P/3//T/9//ycAAP8XAAD/D/9/IWLpjOoM3Z3dHemMfKg8h4LXPIfC+HyogtfC+DyHgtf/9wAA/9//f//XAAD/v/9//7cAAP+f/3//lwAA/3//f/9/AAD/dwAA/1//f/9XAAD/P/9//zcAAP8f/3//F/9//z9v/SFiFPMDNEH8QXz7yxVz3Z38S72D6gwh4r0DArRw642Ub/3/v3DrcOv/v2/9jZSNlN2d6YyOgv+/jZRw6//3/3//7wAA/+f/f//fAAD/1/9//88AAP/H/3//vwAA/7f/f/+vAAD/p/9//58AAP+X/3//jwAA/4f/f/93/3//bwAA/2f/f/9fAAD/V/9//08AAP9H/3//PwAA/zf/f/8vAAD/J/9//x8AAP8PAAD/BwAA/wf/f4JXPId8KDyHAzS9g44UjZQ8B3yojwL/vzwHgtd8KML4jhRw64JXwvjCeILXcWtw63FrjZTCeHyocH3/vwK0vYP7y72DIeLpjBTz3Z1B/AK0Qfz7yxTzIeL7y0H8IeIU8wK0QfzdnRTzvYP7y+mMIeLpjN2dvYMCtA=="), +"format": 34896613399, +"index_count": 372, +"index_data": PackedByteArray("AAAmAAIAAABGACYARgBHACYARgAWAEcAFgAXAEcAFgBIABcASABJABcASAAnAEkAJwAoAEkAJwBKACgASgBLACgASgAYAEsAGAAGAEsAGABMAAYATABNAAYATAApAE0AKQAqAE0AKQBOACoATgBPACoATgABAE8AAQAOAE8AAQBQAA4AUABRAA4AUAArAFEAKwAsAFEAKwBSACwAUgBTACwAUgAZAFMAGQAPAFMAGQBUAA8AVAAuAA8AVAAtAC4ALQAvAC4ALQBVAC8AVQBWAC8AVQAQAFYAEAADAFYAEABXAAMAVwBYAAMAVwAwAFgAMAAxAFgAMABZADEAWQBaADEAWQAaAFoAGgARAFoAGgBbABEAWwBcABEAWwAyAFwAMgAzAFwAMgBdADMAXQBeADMAXQAHAF4ABwAbAF4ABwBfABsAXwBgABsAXwA0AGAANAAcAGAANAA1ABwANQBhABwANQAdAGEAHQBiAGEAHQBjAGIAYwAFAGIAYwAEAAUAZAAJADsACQBlAGYAZABlAAkAZQBnACAAZQBoAGcAZwBoAB8AZABoAGUAaABpAD0AaABqAGkAaQBqABIAaABrAGoAZABrAGgAagBsADwAagBrAGwAbABrAAgAawA2ADgAawBtADYANgBtABQAawBkAG4AawBuAG0AbQBvADcAbQBuAG8AbwBuABMAcABkAB4AcQBkAHAAbgBkAHEAcQBwADoAbgBxAHIAcgBxAAoAbgByADkAcwB0AAwAdAB1ACIAcwB1AHQAdQB2AD4AdQB3AHYAdgB3ACMAcwB3AHUAdwB4AD8AdwB5AHgAeAB5AAsAdwB6AHkAcwB6AHcAeQB7AEAAeQB6AHsAewB6ACQAegB8AEEAegB9AHwAfAB9ABUAegBzAH4AegB+AH0AfQB/AEUAfQB+AH8AfwB+ACUAQwBzACEAgABzAEMAfgBzAIAAgABDAEIAfgCAAIEAgQCAAA0AfgCBAEQA"), +"lods": [0.0443934, PackedByteArray("AAAmAAIAAAAWACYAFgAXACYAFgAnABcAJwAoABcAJwAYACgAGAAGACgAGAApAAYAKQAqAAYAKQABACoAAQAOACoAAQArAA4AKwAsAA4AKwAZACwAGQAPACwAGQAtAA8ALQAuAA8ALQAvAC4ALQAQAC8AEAADAC8AEAAwAAMAMAAxAAMAMAAaADEAGgARADEAGgAyABEAMgAzABEAMgAHADMABwAbADMABwA0ABsANAAcABsANAA1ABwANQAdABwAHQAFABwAHQAEAAUANgA3ABQAOAA3ADYANwA5ABMAOAA5ADcAOQA6AAoAOQA7ADoAOAA7ADkAOgA7AB4APAA4AAgAPQA4ADwAOwA4AD0APQA8ABIAOwA9ACAAIAA9AB8AOwAgAAkAIQAiAAwAIQA+ACIAPgA/ACMAIQA/AD4APwBAAAsAPwBBAEAAIQBBAD8AQABBACQAQgAhAEMARAAhAEIAQQAhAEQARABCAA0AQQBEAEUARQBEACUAQQBFABUA"), 0.0967261, PackedByteArray("AAAWAAIAFgAXAAIAFgAGABcAFgAYAAYAGAAOAAYAGAABAA4AAQAPAA4AAQAZAA8AGQADAA8AGQAQAAMAEAARAAMAEAAaABEAGgAbABEAGgAHABsABwAcABsABwAdABwAHQAFABwAHQAEAAUACgAJAB4AEwAJAAoACAAJABMACAATABQACQAIAB8AHwAIABIACQAfACAAIQAiAAwAIQAjACIAIQAkACMAIwAkAAsAJAAhACUAJQAhAA0AJAAlABUA"), 0.686629, PackedByteArray("AAAGAAIAAAABAAYAAQAOAAYAAQAPAA4AAQAQAA8AEAADAA8AEAARAAMAEAAHABEABwAFABEABwAEAAUACQAIABIACAAJABMAEwAJAAoACAATABQADAAVAAsAFQAMAA0A"), 1.15822, PackedByteArray("AAAGAAIAAAABAAYAAQADAAYAAQAHAAMABwAFAAMABwAEAAUACAAJAAoACwAMAA0A"), 1.37141, PackedByteArray("AAABAAIAAQADAAIAAQAEAAMABAAFAAMA")], +"material": SubResource("StandardMaterial3D_rmvmy"), +"name": "Material.002", +"primitive": 3, +"uv_scale": Vector4(0, 0, 0, 0), +"vertex_count": 130, +"vertex_data": PackedByteArray("/38AAAAA//9A9gAA+7D/r/9///8AAP//4jj//2zq/5f/fwAAAAD///9///8AAP//if3//wZn/8e+CQAAA0//z+I4//9s6v+//3///wAA/7+J/f//Bmf/v0D2AAD7sP8//38AAAAA/z++CQAAA0//P2zq//8cx/+n+Jj//4n9/4cDTwAAQPb/j3UC///4mP+3dQL///iY/79s6v//HMf/v/iY//+J/f+/A08AAED2/z/7sAAAvgn+7xzH//+SFf/nQPYAAANP/8/7sAAAQPb/j74JAAD7sP+vkhX//+I4/9fiOP//khX/5wNPAAC+Cf7vHMf//5IV/7+SFf//4jj/v+I4//+SFf+/A08AAL4J/z/7sAAAvgn/P0D2AAADT/8/+7AAAED2/z++CQAA+7D/P/iY//91Av73gdoAAH0l/99s6v//4jj/1///AAD/f/+/if3///iY/7eB2gAAgdr/nxzH//9s6v+X/38AAP//AID/f/////8AgAZn//+J/f+HfSUAAIHa/5+SFf//HMf/pwAAAAD/f/+/dQL//wZn/8d9JQAAfSX/3+I4AACSFf/n/3///////78cx///bOr/vwZn//+J/f+/if3///iY/79s6v//4jj/v/iY//91Av+/khX//xzH/791Av//Bmf/v4HaAAB9Jf8///8AAP9//z+B2gAAgdr/P/9/AAD///8/fSUAAH0l/z/iOAAAkhX/PwAAAAD/f/8/fSUAAIHa/z/4mAAAdQL+9/uw//++Cf7vHMcAAJIV/+eB2v//fSX/32zqAADiOP/XQPb//wNP/8+J/QAABmf/x///////f/+/if0AAPiY/7dA9v//+7D/r2zqAAAcx/+ngdr//4Ha/58cxwAAbOr/l/uw//9A9v+P+JgAAIn9/4cGZwAAif3/hwNP//9A9v+P4jgAAGzq/5d9Jf//gdr/n5IVAAAcx/+nvgn///uw/691AgAA+Jj/twAA////f/+/dQIAAAZn/8e+Cf//A0//z5IVAADiOP/XfSX//30l/98DT///vgn+7wZn//91Av73BmcAAHUC/vf7sP//vgn/vwNP//++Cf+/Bmf//3UC/799Jf//fSX/v74J//8DT/+/AAD///9//7++Cf//+7D/vwNP//9A9v+/fSX//4Ha/7/7sP//QPb/v0D2///7sP+/gdr//4Ha/7+B2v//fSX/v0D2//8DT/+///////9//78GZwAAdQL/P/iYAAB1Av8/HMcAAJIV/z9s6gAA4jj/P4n9AAAGZ/8/if0AAPiY/z9s6gAAHMf/P/iYAACJ/f8/HMcAAGzq/z8GZwAAif3/P+I4AABs6v8/dQIAAPiY/z+SFQAAHMf/P5IVAADiOP8/dQIAAAZn/z//f////38AAP9/////f////3////9/////fwAA/3////7//3////9//v//fwAA/38AAP9/AAD/f/9/AAD/fwAA/3////9////+//9//v//f/7//38AAP9//38AAP9/AAD/fwAA/38AAP9/////f////3////9////+//9//v//f/7//38AAP9/AAD/fwAA/38AAP9/AAD/f/9/AAD/fwAA/38AAP9/AAD/fwAA/38AAP9/AAD/f////3////9/////f////3////9/////f////3////9///////9//v//f/7//3/+//9//v//f/7//3/+//9//v//fwAA/38AAP9/AAD/fwAA/38AAP9/AAD/fwAA/38AAP9//38AAP9/AAD/fwAA/38AAP9/AAD/fwAA/38AAP9/AAD/fwAA/38AAP9/AAD/fwAA/38AAP9/AAD/fwAA/3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f///////f////3/+//9//v//f/7//3////9/////f////3/+//9/////f/7//3/+//9//v//f////3////9/AAD/fwAA/38AAP9/AAD/fwAA/38AAP9/AAD/fwAA/38AAP9/AAD/fwAA/38AAP9/AAD/fwAA/38AAP9/") +}] +blend_shape_mode = 0 +shadow_mesh = SubResource("ArrayMesh_l024e") diff --git a/scenes/constructs/hammer/hammer.glb b/scenes/constructs/hammer/hammer.glb new file mode 100644 index 0000000..3952386 Binary files /dev/null and b/scenes/constructs/hammer/hammer.glb differ diff --git a/scenes/constructs/hammer/hammer.glb.import b/scenes/constructs/hammer/hammer.glb.import new file mode 100644 index 0000000..c09bbfc --- /dev/null +++ b/scenes/constructs/hammer/hammer.glb.import @@ -0,0 +1,37 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://cw1cvns1kcxpj" +path="res://.godot/imported/hammer.glb-b7f52e55d5e228d5546665eef961511e.scn" + +[deps] + +source_file="res://scenes/constructs/hammer/hammer.glb" +dest_files=["res://.godot/imported/hammer.glb-b7f52e55d5e228d5546665eef961511e.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +_subresources={} +gltf/naming_version=1 +gltf/embedded_image_handling=1 diff --git a/scenes/constructs/hammer/hammer.tres b/scenes/constructs/hammer/hammer.tres new file mode 100644 index 0000000..8168cb4 --- /dev/null +++ b/scenes/constructs/hammer/hammer.tres @@ -0,0 +1,14 @@ +[gd_resource type="Resource" script_class="Constructs" load_steps=3 format=3 uid="uid://bewoocmm6687l"] + +[ext_resource type="ArrayMesh" uid="uid://dp0jdbqf8q6f6" path="res://scenes/constructs/hammer/hammer_mesh.tres" id="1_3st65"] +[ext_resource type="Script" uid="uid://d0hoytht5yf8c" path="res://scripts/constructs/constructs.gd" id="1_81tih"] + +[resource] +script = ExtResource("1_81tih") +name = &"Hammer" +position = Vector3(0.41, -0.35, -0.55) +rotation = Vector3(0, 110, 0) +scale = Vector3(0.1, 0.1, 0.1) +mesh = ExtResource("1_3st65") +shadow = false +metadata/_custom_type_script = "uid://d0hoytht5yf8c" diff --git a/scenes/constructs/hammer/hammer.tscn b/scenes/constructs/hammer/hammer.tscn new file mode 100644 index 0000000..368bc01 --- /dev/null +++ b/scenes/constructs/hammer/hammer.tscn @@ -0,0 +1,9 @@ +[gd_scene load_steps=3 format=3 uid="uid://dvoqejwncn4ej"] + +[ext_resource type="PackedScene" uid="uid://cw1cvns1kcxpj" path="res://scenes/constructs/hammer/hammer.glb" id="1_y10u7"] +[ext_resource type="ArrayMesh" uid="uid://dp0jdbqf8q6f6" path="res://scenes/constructs/hammer/hammer_mesh.tres" id="2_dyj3b"] + +[node name="hammer" instance=ExtResource("1_y10u7")] + +[node name="Cylinder_001" parent="." index="0"] +mesh = ExtResource("2_dyj3b") diff --git a/scenes/constructs/hammer/hammer0.bin b/scenes/constructs/hammer/hammer0.bin new file mode 100644 index 0000000..0134562 Binary files /dev/null and b/scenes/constructs/hammer/hammer0.bin differ diff --git a/scenes/constructs/hammer/hammer_mesh.tres b/scenes/constructs/hammer/hammer_mesh.tres new file mode 100644 index 0000000..c3d5c94 --- /dev/null +++ b/scenes/constructs/hammer/hammer_mesh.tres @@ -0,0 +1,78 @@ +[gd_resource type="ArrayMesh" load_steps=7 format=4 uid="uid://dp0jdbqf8q6f6"] + +[ext_resource type="Texture2D" uid="uid://chs86io42mwow" path="res://assets/textures/wood/rough_wood_1k/rough_wood_diff_1k.png" id="1_x2pr6"] +[ext_resource type="Texture2D" uid="uid://du8pmu4oobma3" path="res://assets/textures/metal/Metal052C_1K-PNG/Metal052C_1K-PNG_Color.png" id="2_2mo1d"] +[ext_resource type="Texture2D" uid="uid://bcanjh1x7hesr" path="res://assets/textures/metal/Metal052C_1K-PNG/Metal052C_1K-PNG_Metalness.png" id="3_2mo1d"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_7c8is"] +albedo_texture = ExtResource("1_x2pr6") +uv1_scale = Vector3(0.2, 0.2, 0.2) +uv1_triplanar = true +texture_filter = 0 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_fauph"] +resource_name = "Material.004" +albedo_texture = ExtResource("2_2mo1d") +metallic = 1.0 +metallic_texture = ExtResource("3_2mo1d") +roughness = 0.5 +uv1_triplanar = true +texture_filter = 0 + +[sub_resource type="ArrayMesh" id="ArrayMesh_6bd4m"] +_surfaces = [{ +"aabb": AABB(-0.3, -2, -0.3, 0.6, 4, 0.6), +"format": 34896613377, +"index_count": 180, +"index_data": PackedByteArray("EwALAAwADAALAA4ADwATAAwADAAOAA8AEwAUAAsAFAAOAAsAAQAUABMAEwACAAEADwACABMAFAABAAAAAAABAAoACgAUAAAACgABAAIAFAAVAA4AFgAUAAoAFgAVABQAFgAKAA0ABAANAAoABAAKAAIAFwANAAQAAgAXAAQAFwAWAA0AAgAHABcADgAVABgAGAAZAA4AFQAZABgADgAZAA8ABgACAA8AAgAGAAcAGgAPABkAGQAVABoABgAPABoAGgAVAAUAGgAFAAMABgAaAAMAAwAFABEAAwARAAYAFQARAAUAFQAbABEAFQAWABsAEQAJAAYAHAAJABEAEQAbABwAGwAJABwAEgAGAAkACQAbABIABwAGABIAEgAbAB0ABwASAAgAEgAdAAgAGwAQAB0ACAAdABAAGwAWABAACAAQAAcAEAAWAB4AEAAfAAcAHgAfABAAFgAfAB4AFwAHAB8AHwAWABcA"), +"lods": [0.0466455, PackedByteArray("CgABAAIACwABAAoAAQALAAwADAACAAEADQALAAoADAALAA4ADQAOAAsABAANAAoABAAKAAIADwACAAwADAAOAA8AAgAHAAQADQAEABAAEAAEAAcABgACAA8AAgAGAAcACAAQAAcAEQANABAACAARABAADgANABEABwASAAgABwAGABIAEgARAAgAEgAGAAkACQARABIAEQAJAAYADgARAAUAAwARAAYAAwAFABEAAwAOAAUABgAPAAMADgADAA8A"), 0.422441, PackedByteArray("AAABAAIAAQAAAAMAAwACAAEABAAAAAIAAwAAAAUABAAFAAAABgACAAMAAwAFAAYAAgAHAAQABQAEAAcAAgAGAAcACAAFAAcABwAGAAgABQAJAAYACAAGAAkACQAFAAgA")], +"name": "Material.005", +"primitive": 3, +"uv_scale": Vector4(0, 0, 0, 0), +"vertex_count": 32, +"vertex_data": PackedByteArray("vgkAAPuwAAC+Cf//+7AAAJIV//8cxwAA/3///wAAAAD/f/////8AAP9/AAAAAAAAbOr//+I4AABs6v//HMcAAP//////fwAAQPb//wNPAACSFQAAHMcAAAAAAAD/fwAAAAD///9/AAD/fwAA//8AAJIVAADiOAAAkhX//+I4AABs6gAAHMcAAGzqAADiOAAAif3//wZnAAB1Av//+JgAAHUCAAD4mAAAA08AAL4JAAD7sAAAQPYAAPuw//9A9gAA4jgAAJIVAADiOP//khUAAANP//++CQAAif0AAAZnAABA9gAAA08AAP//AAD/fwAAHMcAAGzqAAAcx///bOoAAA==") +}, { +"aabb": AABB(-1.45534, 1.97996, -1.13784, 2.91069, 1.38304, 2.27568), +"format": 34896613377, +"index_count": 132, +"index_data": PackedByteArray("AAABAAIADQACAAEADQAOAAIADQABAAMAAgAOAA8AAgAPAAAAEAAOAA0AEAANAAMAEQAPAA4AEAASAA4AEQAOABIABwAAAA8ABwAPABEAEwAAAAcAEwAEAAAAAAAEAAEAFAATAAcABwARAAsAFAAHAAsACwARAAkAEgAJABEACwAMABQACwAJAAwAEgAIAAkADAAJAAgAEAAIABIAFAAVABMAEwAVAAQAFAAMABYAFAAWABUADAAIAAoACgAWAAwABgAIABAABgAKAAgAEAADAAYACgAFABYABgAFAAoAFQAWAAUAAwAFAAYAFQAFABcAAwAXAAUABAAVABcAAQAXAAMABAAXAAEA"), +"lods": [0.393103, PackedByteArray("AAABAAIAAgABAAMAAAAEAAEAAwABAAUABAAFAAEAAwAFAAYABAAAAAcACAACAAMACAADAAYACQAAAAIACQACAAgABwAAAAkABgAFAAoABgAKAAgABwAJAAsABAAHAAsADAAJAAgADAAIAAoACwAJAAwACgAFAAwACwAMAAQABAAMAAUA")], +"name": "Material.004", +"primitive": 3, +"uv_scale": Vector4(0, 0, 0, 0), +"vertex_count": 24, +"vertex_data": PackedByteArray("////H2OUAABh0f/f//8AAP///99jlAAANbf//3LtAABh0f8f//8AAGcS/98XkAAALBr//yh+AADS5QAA1oEAAJ0u/98AAAAAnS7/HwAAAAAAAP/fm2sAAMlIAACMEgAAAAD/H5trAADS5f//1oEAAJft/9/nbwAAl+3/H+dvAADJSP//jBIAAI5Q/x+dAAAAjlD/350AAAA1twAAcu0AACwaAAAofgAAcK//H2H/AABnEv8fF5AAAHCv/99h/wAA") +}] +blend_shape_mode = 0 + +[resource] +resource_name = "hammer_Cylinder_001" +_surfaces = [{ +"aabb": AABB(-0.3, -2, -0.3, 0.6, 4, 0.6), +"attribute_data": PackedByteArray("/0//f/9PAAD/VwAAAAAAAAAA/3//fwAA////f/+nAAD/vwAA/88AAP/XAAD//wAA/z+OguoMIeI8B4LXFXPdnRVzIeL/P2/9cH3/v8J4fKj/V/9//z//f/9//3//PwAA/6f/f/8n/3//JwAA/9f/f//HAACPAv+/6gzdnUF8ArTpjN2dFPPdnf+/joL/v2/9FPMh4o6C/7/pjCHi/0cAAP9H/3//TwAA/0//f/9X/3//VwAA/w8AAP8P/3//FwAA/xf/f/+PAAD/j/9//5cAAP+X/3//p/9//6cAAP+//3//fwAA/3//f/+//3//vwAA/8f/f//PAAD/z/9//9f/f//XAAD/z/9//z8AAP8n/3//JwAA/z//f3woPIfdHemMvQP7y4JXwvghYhTzfKg8h0H8ArTC+Hyob/3/v4LXwvgh4hTz3Z3pjL2D+8s8h4LX"), +"format": 34896613399, +"index_count": 180, +"index_data": PackedByteArray("JwAVABcAJwAoABUAKQAoACcAKAApACoAKwABACwAAAABACsALQAEAAMALQAuAAQALwAuAC0ALgAvADAAMAAvABkAGQAvABoAMQAWAAUAMQAyABYAMwAyADEAMgAzADQANAAzABgAGAAzAAcACAA1ADYACAA3ADUAOAAUAAIAOAA5ABQAHAA6ADsAHAA8ADoAPQA8ABwAPAA9AD4APwAJAEAAQQAJAD8AQgBDAEQAQgBFAEMADwBGAAwARgAeAEcADwAeAEYAHgBIAB0AHgANAEgADwANAB4ASAANAA4AHwAPABMAEAAPAB8ADQAPABAAEAAfABIADQAQAEkASQAQAEoADQBJABEASwAhACIAIQBMAE0ASwBMACEATAAkAE4ATABPACQASwBPAEwAJABPAFAAIABLAFEAUgBLACAATwBLAFIAUgAgACUATwBSACYAJgBSAFMATwAmACMACwAbAAoACwAGABsA"), +"lods": [0.0466455, PackedByteArray("FAABAAIABQAUAAIAFQABABQABQAWABQAAQAVABcAFgAFABgAFwAVABkAGAAFAAcAFwAZABoAGQADABoAAwAZAAQACAAYAAcACAAbABgAHAAbAAgACQAbABwAGwAJAAoACwAbAAoACwAGABsAHQANAA4AHgANAB0ADwANAB4ADwAeAAwADQAPABAADQAQABEAEAAPAB8AHwAPABMAEAAfABIAIAAhACIAIAAjACEAIQAjACQAIwAgACUAIwAlACYA"), 0.422441, PackedByteArray("AAABAAIAAQAAAAMAAwAAAAQABQAAAAIABQAGAAAABgAFAAcACAAGAAcACQAGAAgABgAJAAoACwAGAAoADAANAA4ADwANAAwADQAPABAADQAQABEAEAAPABIAEgAPABMA")], +"material": SubResource("StandardMaterial3D_7c8is"), +"name": "Material.005", +"primitive": 3, +"uv_scale": Vector4(0, 0, 0, 0), +"vertex_count": 84, +"vertex_data": PackedByteArray("vgkAAPuw/rO+Cf//+7D+s5IV//8cx/+T/3///wAA/uv/fwAAAAD+6/9///////+T/38AAAAA/uts6v//HMf/k///////f/+zQPb//wNPAMxs6v//4jj+6/9///8AAP7r/3///wAA/7+SFf//HMf/v74J///7sP+/bOr//+I4/79s6v//HMf/v/9///////+///////9//79A9v//A0//v5IVAAAcx/+TAAAAAP9//7P/fwAA////kwAA////f/+zbOoAABzH/5OSFQAA4jj+65IV///iOP7rbOoAAOI4/uuJ/f//Bmf/ywAA////f/+/khX//+I4/7+J/f//Bmf/v5IVAADiOP8/bOoAAOI4/z//fwAAAAD/P/9/AAD///8/bOoAABzH/z8AAAAA/3//P5IVAAAcx/8/dQL///iY/7N1AgAA+Jj/s74J///7sP+zvgkAAPuw/7OSFQAAHMf+s5IV//8cx/6zA0///74J/usDTwAAvgn+6+I4//+SFf7r4jgAAJIV/uv7sP//QPb/k/uwAABA9v+THMf//2zq/5McxwAAbOr/k2zqAAAcx/+zbOr//xzH/7P//wAA/3//s/9///////+T/38AAP///5P//wAA/3//y///////f//Lif0AAAZn/8tA9v//A0//y0D2AAADT//LbOoAAOI4AMxs6v//4jgAzED2AAADTwDMAAD///9//8uSFQAA4jj/y5IV///iOP/LAAAAAP9//8sDT///vgn/v+I4//+SFf+/dQL///iY/7/7sP//QPb/vxzH//9s6v+/A08AAL4J/z+J/QAABmf/P0D2AAADT/8///8AAP9//z/7sAAAQPb/PxzHAABs6v8/4jgAAJIV/z91AgAA+Jj/P74JAAD7sP8//3////9/////f////3////9/////fwAA/38AAP9/AAD/fwAA/38AAP9/AAD/fwAA/v//f////3/+//9/////f////3/+//9//v//f/7//3//f////3////9/AAD/f////38AAP9/////f////38AAP9/AAD+//9/////f/7//38AAP9/AAD/fwAA/38AAP9/AAD/fwAA/38AAP9//3////9/////f////3////9/////f////3////9/////f////3////9/AAD/fwAA/38AAP9/AAD/fwAA/38AAP9/AAD/f////3////9/AAD/fwAA/38AAP9/AAD/fwAA/38AAP9/AAD/fwAA/3////9/////f////3///////3/+//9//v//f////3/+//9/AAD/fwAA/38AAP9/AAD/fwAA/38AAP9/AAD/fwAA/38AAP9/") +}, { +"aabb": AABB(-1.45534, 1.97996, -1.13784, 2.91069, 1.38304, 2.27568), +"attribute_data": PackedByteArray("/2f/N/+X/wf/l/83/2f/B/9n/4f/l/83/5f/h//X/0f/1/93/2f/N/+f/7f/l/+3/1f/R/9X/3f/J/8//1f/P/8n/3//V/9//2f///+X/8f/l////5//9/9n/7f/l/+3/5//x/+X/7//Z/+3/5f/h/+X/7f/Z/+H/5f/N/+X/wf/n/8H/2f/d/+X/0f/l/93/2f/R/+n/3f/p/9H/2f/9/+X/8f/l//3/2f/x/8n/0f/H/9H/yf/P/+X//f/J/93/yf/f/8f/3f/n//H/5f/x/9X/0f/V/8//1//R/+f/zf/l/8//5f/N/9X/3f/X/93/5//h/+X/3//J/93/x//R/8n/0f/H/93/5f/9/+X////Z//3/5//9/+X//f/Z//H/5f/x/9X/3f/J/93/1f/f/+X/4f/n/+H/5f/d/9n/3f/l/+H/1f/R/9n/3f/V/93/2f/R/+n/3f/l/9H/6f/R/+X/3f/Z/9H/5f/R/8n/0f/V/9H/5//N/8n/3f/J/9H"), +"format": 34896613399, +"index_count": 132, +"index_data": PackedByteArray("AAABAAIAAAADAAEAIQAiACMAIQAkACIAJQAHAAgAJQAmAAcAJwAoACkAJwAqACgAGgAbABwAGgAdABsAKwAsAC0AFAAuABUALwAwADEAMgAzABkANAA1ADYANwA4ADkAOgA7ABEAPAAGAD0APgA/AEAAPgBBAD8AEgBCAEMAEgBEAEIARQATABgARQBGABMAFwBHABYAFwBIAEcASQAQAEoASQBLABAACgBMAE0ACgALAEwATgAEAE8ATgBQAAQAUQBSAFMAUQBUAFIAVQBWAFcAVQBYAFYABQBZAAkABQBaAFkAWwAPAFwAWwAOAA8AXQAfACAAXQAeAB8AXgAMAA0AXgBfAAwA"), +"lods": [0.393103, PackedByteArray("AAABAAIAAAADAAEABAAFAAYABgAFAAcABgAHAAgABAAJAAUACgALAAYADAAJAAQADAAEAA0ADgAMAA0ADgAPAAwADQAQAA4ADQARABAAEgATABQAFQAUABMAEgAWABMAFwATABYAFQATABgAGAATABkAGgAbABwAGgAdABsAHgAfACAA")], +"material": SubResource("StandardMaterial3D_fauph"), +"name": "Material.004", +"primitive": 3, +"uv_scale": Vector4(0, 0, 0, 0), +"vertex_count": 96, +"vertex_data": PackedByteArray("////H2OUncph0f/f//+dyv///99jlJ3KYdH/H///ncqdLv8fAACX/////99jlN7jnS7/3wAAbeM1t///cu0U4iwa//8ofhTi////H2OU3uMsGv//KH4HyQAA/9+bawfJ0uUAANaBncrJSAAAjBKdymHR/x///8m8////H2OUybwAAP8fm2vp2Z0u/x8AAN/mYdH/H////79nEv/fF5DxwGHR/9///yO5Nbf//3LtI7kAAP8fm2toyQAA/9+ba2jJLBr//yh+8cAAAP/fm2tWygAA/x+baxTinS7/3wAAFOIAAP/fm2sU4p0u/x8AABTi////32OUdORh0f/f//905DW3//9y7XTkjlD/H50Af/GX7f/f529/8Y5Q/9+dAH/xl+3/H+dvf/HJSP//jBIU4tLl///WgRTicK//H2H/jcJnEv/fF5CNwnCv/99h/43CZxL/HxeQjcI1twAAcu0kuXCv/x9h/yS5YdH/H///JLlwr//fYf8juSwaAAAoflbKAAD/H5trVspnEv8fF5BWyiwa//8oflbKZxL/3xeQVsrS5QAA1oGj0P///x9jlKPQl+3/H+dvo9DS5f//1oHS5Zft/9/nb9Ll////32OU0uXJSAAAjBLf5o5Q/x+dAN/myUj//4wSbeOOUP/fnQBt4ywaAAAofvHAcK//H2H/8cA1twAAcu3xwGcS/x8XkPHAcK//32H//79h0f/f////v3Cv/x9h//+/Nbf//3Lt8cBwr//fYf/xwGcS/x8XkGjJZxL/3xeQaMnJSAAAjBLp2SwaAAAofunZnS7/HwAA6dmdLv/fAAAHyclI//+MEgfJjlD/350Al/+OUP8fnQCX/50u/98AAJf/0uUAANaBg9uOUP8fnQCD28lIAACMEoPbl+3/H+dvg9vJSP//jBIz95ft/9/nbzP30uX//9aBM/eOUP/fnQAz95ft/x/nb97jl+3/3+dv3uM1twAAcu3JvNLlAADWgcm80uX//9aBdOQsGgAAKH6dyjW3AABy7Z3KniKeIp4iniKeIp4iniKeIsY/xj9LMksyvtX1nR+db7EfnW+xSzJLMhTWX6gU1l+oPEVhXTxFYV3KTclPyk3JT2A+R2jKPqNSG/8b/3XzYzLV5mAl1eZgJZ/en96f3p/edfNjMhv/Zj6Pzo/Oj86Pzo/Oj86Pzo/OhsQ0AYbENAGGxDQBrDisOKw4rDisOKw4rDisOB+db7EfnW+xLuou6i7qLuou6i7qLuou6p9a1mafWtZmn1rWZtXmYCWZQRt/mUEbf5lBG38b/2Y+G/9mPiA+tkIgPrZCID62QuVMdgnlTHYJ5Ux2Cco+o1LKPqNSvtX1nb7V9Z2cTXVznE11c5xNdXOcTXVzG/8b/xv/G/8b/xv/dfNjMnXzYzKf3p/en96f3mA+R2hgPkdoYD5HaBTWX6gU1l+oxj/GP8Y/xj/GP8Y/fz6YS38+mEt/PphLfz6YS1Kq5rRSqua0UqrmtFKq5rRLMksySzJLMspNyU/KTclPhsQ0ATxFYV08RWFd") +}] +blend_shape_mode = 0 +shadow_mesh = SubResource("ArrayMesh_6bd4m") diff --git a/scenes/constructs/hammer/stick.blend1 b/scenes/constructs/hammer/stick.blend1 new file mode 100644 index 0000000..422f391 Binary files /dev/null and b/scenes/constructs/hammer/stick.blend1 differ diff --git a/scenes/constructs/light/light.tres b/scenes/constructs/light/light.tres new file mode 100644 index 0000000..24aab64 --- /dev/null +++ b/scenes/constructs/light/light.tres @@ -0,0 +1,14 @@ +[gd_resource type="Resource" script_class="Constructs" load_steps=3 format=3 uid="uid://cvo5aprm2ido6"] + +[ext_resource type="Script" uid="uid://d0hoytht5yf8c" path="res://scripts/constructs/constructs.gd" id="1_0dof5"] +[ext_resource type="SphereMesh" uid="uid://dpko0tp0fatfs" path="res://scenes/constructs/light/light_mesh.tres" id="1_jh1g6"] + +[resource] +script = ExtResource("1_0dof5") +name = &"Light" +position = Vector3(0.5, -0.3, -0.7) +rotation = Vector3(0, 0, 0) +scale = Vector3(0.2, 0.2, 0.2) +mesh = ExtResource("1_jh1g6") +shadow = false +metadata/_custom_type_script = "uid://d0hoytht5yf8c" diff --git a/scenes/constructs/light/light.tscn b/scenes/constructs/light/light.tscn new file mode 100644 index 0000000..dd8929a --- /dev/null +++ b/scenes/constructs/light/light.tscn @@ -0,0 +1,26 @@ +[gd_scene format=3 uid="uid://d13g103evs3mi"] + +[ext_resource type="Script" uid="uid://cdg27cwpw8rn7" path="res://scripts/constructs/construct_pickup.gd" id="1_hckbr"] +[ext_resource type="SphereMesh" uid="uid://dpko0tp0fatfs" path="res://scenes/constructs/light/light_mesh.tres" id="2_uj6jg"] + +[sub_resource type="SphereShape3D" id="SphereShape3D_wh4k6"] + +[node name="light" type="StaticBody3D" unique_id=2011832244 groups=["interactable"]] +collision_layer = 3 +script = ExtResource("1_hckbr") + +[node name="MeshInstance3D" type="MeshInstance3D" parent="." unique_id=2007114551] +cast_shadow = 0 +mesh = ExtResource("2_uj6jg") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="." unique_id=1637046563] +shape = SubResource("SphereShape3D_wh4k6") + +[node name="OmniLight3D" type="OmniLight3D" parent="." unique_id=1798655836] +light_color = Color(1, 1, 0.109804, 1) + +[node name="InteractLabel" type="Label3D" parent="." unique_id=1971887548] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.746029, 0) +visible = false +billboard = 2 +text = "[E] Pickup" diff --git a/scenes/constructs/light/light_mesh.tres b/scenes/constructs/light/light_mesh.tres new file mode 100644 index 0000000..2e480d9 --- /dev/null +++ b/scenes/constructs/light/light_mesh.tres @@ -0,0 +1,10 @@ +[gd_resource type="SphereMesh" format=3 uid="uid://dpko0tp0fatfs"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_wh4k6"] +albedo_color = Color(33.149, 32.597, 0.137, 1) +emission = Color(0.709804, 0.619608, 0.0823529, 0.933333) +emission_energy_multiplier = 12.73 +disable_receive_shadows = true + +[resource] +material = SubResource("StandardMaterial3D_wh4k6") diff --git a/scenes/constructs/nothing/nothing.tres b/scenes/constructs/nothing/nothing.tres new file mode 100644 index 0000000..2c68f6f --- /dev/null +++ b/scenes/constructs/nothing/nothing.tres @@ -0,0 +1,22 @@ +[gd_resource type="Resource" script_class="Constructs" load_steps=2 format=3 uid="uid://wm12fuu3goss"] + +[ext_resource type="Script" uid="uid://d0hoytht5yf8c" path="res://scripts/constructs/constructs.gd" id="1_nf65w"] + +[resource] +script = ExtResource("1_nf65w") +name = &"nothing" +position = Vector3(0, 0, 0) +rotation = Vector3(0, 0, 0) +scale = Vector3(1, 1, 1) +position2 = Vector3(0, 0, 0) +rotation2 = Vector3(0, 0, 0) +scale2 = Vector3(1, 1, 1) +position3 = Vector3(0, 0, 0) +rotation3 = Vector3(0, 0, 0) +scale3 = Vector3(1, 1, 1) +position4 = Vector3(0, 0, 0) +rotation4 = Vector3(0, 0, 0) +scale4 = Vector3(1, 1, 1) +shadow = false +heavy = false +metadata/_custom_type_script = "uid://d0hoytht5yf8c" diff --git a/scenes/constructs/shovel/shovel.tres b/scenes/constructs/shovel/shovel.tres new file mode 100644 index 0000000..e18bcd6 --- /dev/null +++ b/scenes/constructs/shovel/shovel.tres @@ -0,0 +1,10 @@ +[gd_resource type="Resource" script_class="Constructs" format=3 uid="uid://bainuvfarr8mo"] + +[ext_resource type="Script" uid="uid://d0hoytht5yf8c" path="res://scripts/constructs/constructs.gd" id="1_yjsf3"] + +[resource] +script = ExtResource("1_yjsf3") +name = &"shovel" +position = Vector3(0.5, -0.6, -0.7) +scale = Vector3(0.3, 0.3, 0.3) +metadata/_custom_type_script = "uid://d0hoytht5yf8c" diff --git a/scenes/constructs/shovel/shovel.tscn b/scenes/constructs/shovel/shovel.tscn new file mode 100644 index 0000000..ed0f0ad --- /dev/null +++ b/scenes/constructs/shovel/shovel.tscn @@ -0,0 +1,68 @@ +[gd_scene format=3 uid="uid://bhxbstcygbcp1"] + +[ext_resource type="Texture2D" uid="uid://chs86io42mwow" path="res://assets/textures/wood/rough_wood_1k/rough_wood_diff_1k.png" id="1_oktb6"] +[ext_resource type="Texture2D" uid="uid://cesdpwgnatik4" path="res://assets/textures/wood/rough_wood_1k/rough_wood_nor_gl_1k.png" id="2_1ydj6"] +[ext_resource type="Texture2D" uid="uid://vwnrymaoxu3l" path="res://assets/textures/snow_ice/snow.png" id="2_cvrdf"] +[ext_resource type="Texture2D" uid="uid://cil1qwxtkmu4a" path="res://assets/textures/wood/rough_wood_1k/rough_wood_rough_1k.png" id="3_08kmg"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_8aoko"] +albedo_texture = ExtResource("1_oktb6") +roughness_texture = ExtResource("3_08kmg") +normal_enabled = true +normal_texture = ExtResource("2_1ydj6") +uv1_triplanar = true + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ili16"] +albedo_color = Color(0.18039216, 0.22352941, 1, 1) +roughness = 0.2 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_jdlrg"] +albedo_texture = ExtResource("2_cvrdf") +uv1_triplanar = true + +[node name="shovel" type="StaticBody3D" unique_id=679823297 groups=["interactable"]] + +[node name="InteractLabel" type="Label3D" parent="." unique_id=177704081] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.27622, 0) +visible = false +billboard = 2 +text = "[E] Pickup" + +[node name="shovel_shape" type="CSGCylinder3D" parent="." unique_id=1350466663] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.8961921, 0) +radius = 0.11669922 +height = 3.6333008 +sides = 6 +material = SubResource("StandardMaterial3D_8aoko") + +[node name="CSGBox3D" type="CSGBox3D" parent="shovel_shape" unique_id=989360984] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0014953613, 2.1650558, -0.09560275) +size = Vector3(1.4917603, 0.5545654, 0.072753906) +material = SubResource("StandardMaterial3D_ili16") + +[node name="CSGBox3D2" type="CSGBox3D" parent="shovel_shape" unique_id=1117998374] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.69665647, 2.4278154, 0.10745767) +size = Vector3(0.11230469, 1.5657473, 0.33218384) +material = SubResource("StandardMaterial3D_ili16") + +[node name="CSGBox3D3" type="CSGBox3D" parent="shovel_shape" unique_id=1507130229] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.6929772, 2.4356039, 0.09634927) +size = Vector3(0.11779785, 1.5487016, 0.33816528) +material = SubResource("StandardMaterial3D_ili16") + +[node name="CSGBox3D4" type="CSGBox3D" parent="shovel_shape" unique_id=1313541103] +transform = Transform3D(1, 0, 0, 0, 0.7071067, -0.7071067, 0, 0.7071067, 0.7071067, 0, 1.772, 0.068) +size = Vector3(1.5, 0.12, 0.455) +material = SubResource("StandardMaterial3D_ili16") + +[node name="CSGBox3D5" type="CSGBox3D" parent="shovel_shape" unique_id=683706394] +transform = Transform3D(1, 0, 0, 0, 0.25881904, 0.9659257, 0, -0.9659257, 0.25881904, 0.00060272217, 2.822288, 0.01547694) +size = Vector3(1.4967804, 0.1123867, 0.8336487) +material = SubResource("StandardMaterial3D_ili16") + +[node name="snow" type="CSGPolygon3D" parent="shovel_shape" unique_id=16912018] +transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, -0.6608049, 2.2445667, -0.016147256) +visible = false +polygon = PackedVector2Array(0, 0, 0.061971247, 0.88455486, 0.26078922, 0.9537766, 0.26004454, -0.6069006) +depth = 1.29 +material = SubResource("StandardMaterial3D_jdlrg") diff --git a/scenes/constructs/shovel/shovel_mesh.tres b/scenes/constructs/shovel/shovel_mesh.tres new file mode 100644 index 0000000..70632a5 --- /dev/null +++ b/scenes/constructs/shovel/shovel_mesh.tres @@ -0,0 +1,14 @@ +[gd_resource type="CylinderMesh" format=3 uid="uid://dbblgcnbirj82"] + +[ext_resource type="Texture2D" uid="uid://chs86io42mwow" path="res://assets/textures/wood/rough_wood_1k/rough_wood_diff_1k.png" id="1_eom5w"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_y8kk7"] +albedo_texture = ExtResource("1_eom5w") +uv1_scale = Vector3(0.2, 0.2, 0.2) +uv1_triplanar = true +texture_filter = 0 + +[resource] +material = SubResource("StandardMaterial3D_y8kk7") +top_radius = 0.1 +bottom_radius = 0.1 diff --git a/scenes/constructs/stick/stick.tres b/scenes/constructs/stick/stick.tres new file mode 100644 index 0000000..843c2b0 --- /dev/null +++ b/scenes/constructs/stick/stick.tres @@ -0,0 +1,15 @@ +[gd_resource type="Resource" script_class="Constructs" load_steps=3 format=3 uid="uid://bo7m0g7qwi8nk"] + +[ext_resource type="CylinderMesh" uid="uid://c0tuyikx44ed3" path="res://scenes/constructs/stick/stick_mesh.tres" id="1_365u4"] +[ext_resource type="Script" uid="uid://d0hoytht5yf8c" path="res://scripts/constructs/constructs.gd" id="2_cf6o1"] + +[resource] +script = ExtResource("2_cf6o1") +name = &"Stick" +position = Vector3(0.5, -0.6, -0.7) +rotation = Vector3(0, 0, 0) +scale = Vector3(0.3, 0.3, 0.3) +mesh = ExtResource("1_365u4") +shadow = false +heavy = false +metadata/_custom_type_script = "uid://d0hoytht5yf8c" diff --git a/scenes/constructs/stick/stick.tscn b/scenes/constructs/stick/stick.tscn new file mode 100644 index 0000000..4cae00a --- /dev/null +++ b/scenes/constructs/stick/stick.tscn @@ -0,0 +1,24 @@ +[gd_scene format=3 uid="uid://2h1ihabmdug0"] + +[ext_resource type="CylinderMesh" uid="uid://c0tuyikx44ed3" path="res://scenes/constructs/stick/stick_mesh.tres" id="1_4ytjg"] +[ext_resource type="Script" uid="uid://cdg27cwpw8rn7" path="res://scripts/constructs/construct_pickup.gd" id="1_ndvjp"] + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_ndvjp"] +radius = 0.2 + +[node name="stick" type="StaticBody3D" unique_id=1669663943 groups=["interactable"]] +collision_layer = 3 +script = ExtResource("1_ndvjp") + +[node name="MeshInstance3D" type="MeshInstance3D" parent="." unique_id=1237858758] +mesh = ExtResource("1_4ytjg") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="." unique_id=2040240101] +visible = false +shape = SubResource("CylinderShape3D_ndvjp") + +[node name="InteractLabel" type="Label3D" parent="." unique_id=1540893663] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.27622, 0) +visible = false +billboard = 2 +text = "[E] Pickup" diff --git a/scenes/constructs/stick/stick_mesh.tres b/scenes/constructs/stick/stick_mesh.tres new file mode 100644 index 0000000..397dbac --- /dev/null +++ b/scenes/constructs/stick/stick_mesh.tres @@ -0,0 +1,14 @@ +[gd_resource type="CylinderMesh" format=3 uid="uid://c0tuyikx44ed3"] + +[ext_resource type="Texture2D" uid="uid://chs86io42mwow" path="res://assets/textures/wood/rough_wood_1k/rough_wood_diff_1k.png" id="1_ryoyh"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_y8kk7"] +albedo_texture = ExtResource("1_ryoyh") +uv1_scale = Vector3(0.2, 0.2, 0.2) +uv1_triplanar = true +texture_filter = 0 + +[resource] +material = SubResource("StandardMaterial3D_y8kk7") +top_radius = 0.1 +bottom_radius = 0.1 diff --git a/scenes/constructs/time/hour_hand.tres b/scenes/constructs/time/hour_hand.tres new file mode 100644 index 0000000..e97a138 --- /dev/null +++ b/scenes/constructs/time/hour_hand.tres @@ -0,0 +1,10 @@ +[gd_resource type="CylinderMesh" format=3 uid="uid://d1xqremupl3uf"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_n4euv"] +albedo_color = Color(0, 0, 0, 1) + +[resource] +material = SubResource("StandardMaterial3D_n4euv") +top_radius = 0.1 +bottom_radius = 0.1 +height = 0.05 diff --git a/scenes/constructs/time/hour_hand_2.tres b/scenes/constructs/time/hour_hand_2.tres new file mode 100644 index 0000000..88544c1 --- /dev/null +++ b/scenes/constructs/time/hour_hand_2.tres @@ -0,0 +1,8 @@ +[gd_resource type="BoxMesh" format=3 uid="uid://c2q7h7la4vjve"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_gl6g2"] +albedo_color = Color(0, 0, 0, 1) + +[resource] +material = SubResource("StandardMaterial3D_gl6g2") +size = Vector3(0.05, 0.05, 0.6) diff --git a/scenes/constructs/time/hour_hand_3.tres b/scenes/constructs/time/hour_hand_3.tres new file mode 100644 index 0000000..4c4ea0a --- /dev/null +++ b/scenes/constructs/time/hour_hand_3.tres @@ -0,0 +1,8 @@ +[gd_resource type="PrismMesh" format=3 uid="uid://k3cg327ia4wi"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_oenvg"] +albedo_color = Color(0, 0, 0, 1) + +[resource] +material = SubResource("StandardMaterial3D_oenvg") +size = Vector3(0.2, 0.2, 0.05) diff --git a/scenes/constructs/time/time.tres b/scenes/constructs/time/time.tres new file mode 100644 index 0000000..67b3f6d --- /dev/null +++ b/scenes/constructs/time/time.tres @@ -0,0 +1,30 @@ +[gd_resource type="Resource" script_class="Constructs" load_steps=6 format=3 uid="uid://dssmp514i81ft"] + +[ext_resource type="CylinderMesh" uid="uid://dgequug0a5tps" path="res://scenes/constructs/time/time_mesh_base.tres" id="1_5roua"] +[ext_resource type="Script" uid="uid://d0hoytht5yf8c" path="res://scripts/constructs/constructs.gd" id="1_miywo"] +[ext_resource type="CylinderMesh" uid="uid://d1xqremupl3uf" path="res://scenes/constructs/time/hour_hand.tres" id="2_wie3a"] +[ext_resource type="BoxMesh" uid="uid://c2q7h7la4vjve" path="res://scenes/constructs/time/hour_hand_2.tres" id="3_yj7jg"] +[ext_resource type="PrismMesh" uid="uid://k3cg327ia4wi" path="res://scenes/constructs/time/hour_hand_3.tres" id="4_ap2tt"] + +[resource] +script = ExtResource("1_miywo") +name = &"Time" +position = Vector3(0.5, -0.3, -1.5) +rotation = Vector3(-90, 180, 0) +scale = Vector3(0.3, 0.3, 0.3) +position2 = Vector3(0, 0, 0) +rotation2 = Vector3(0, 90, 0) +scale2 = Vector3(1, 1, 1) +position3 = Vector3(0, 0, 0) +rotation3 = Vector3(0, 0, 0) +scale3 = Vector3(1, 1, 1) +position4 = Vector3(0, 0, 0) +rotation4 = Vector3(0, 0, 0) +scale4 = Vector3(1, 1, 1) +mesh = ExtResource("1_5roua") +mesh2 = ExtResource("2_wie3a") +mesh3 = ExtResource("3_yj7jg") +mesh4 = ExtResource("4_ap2tt") +shadow = false +heavy = false +metadata/_custom_type_script = "uid://d0hoytht5yf8c" diff --git a/scenes/constructs/time/time.tscn b/scenes/constructs/time/time.tscn new file mode 100644 index 0000000..e0ce121 --- /dev/null +++ b/scenes/constructs/time/time.tscn @@ -0,0 +1,109 @@ +[gd_scene format=3 uid="uid://c2c1blgyrfkks"] + +[ext_resource type="Script" uid="uid://c62lyddb4ue2t" path="res://scripts/time_interact.gd" id="1_21vt2"] +[ext_resource type="CylinderMesh" uid="uid://dgequug0a5tps" path="res://scenes/constructs/time/time_mesh_base.tres" id="1_gl6g2"] +[ext_resource type="CylinderMesh" uid="uid://d1xqremupl3uf" path="res://scenes/constructs/time/hour_hand.tres" id="2_gl6g2"] +[ext_resource type="BoxMesh" uid="uid://c2q7h7la4vjve" path="res://scenes/constructs/time/hour_hand_2.tres" id="3_t7ksw"] +[ext_resource type="PrismMesh" uid="uid://k3cg327ia4wi" path="res://scenes/constructs/time/hour_hand_3.tres" id="4_21vt2"] + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_75bgv"] +height = 0.2 +radius = 1.0 + +[node name="Time" type="StaticBody3D" unique_id=2089530974] +collision_layer = 3 +script = ExtResource("1_21vt2") + +[node name="TimeBase" type="MeshInstance3D" parent="." unique_id=942464560] +mesh = ExtResource("1_gl6g2") + +[node name="HourHand" type="MeshInstance3D" parent="." unique_id=45534497] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.106329, 0) +mesh = ExtResource("2_gl6g2") + +[node name="HourHand2" type="MeshInstance3D" parent="HourHand" unique_id=125657698] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -4.46141e-05, -0.299) +mesh = ExtResource("3_t7ksw") +skeleton = NodePath("../..") + +[node name="HourHand3" type="MeshInstance3D" parent="HourHand" unique_id=1438851720] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, -0.000232786, -0.698276) +mesh = ExtResource("4_21vt2") +skeleton = NodePath("../..") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="." unique_id=1525989939] +shape = SubResource("CylinderShape3D_75bgv") + +[node name="labels" type="Node3D" parent="." unique_id=1215213620] + +[node name="label_1" type="Label3D" parent="labels" unique_id=1225746966] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0.474768, 0.101, -0.769231) +text = "1" +font_size = 40 + +[node name="label_2" type="Label3D" parent="labels" unique_id=1320403484] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0.800423, 0.101, -0.421844) +text = "2 +" +font_size = 40 + +[node name="label_3" type="Label3D" parent="labels" unique_id=261642791] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0.9, 0.101, 0) +text = "3 +" +font_size = 40 + +[node name="label_4" type="Label3D" parent="labels" unique_id=1024008961] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0.8, 0.101, 0.422) +text = "4 +" +font_size = 40 + +[node name="label_5" type="Label3D" parent="labels" unique_id=423656028] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0.475, 0.101, 0.769) +text = "5" +font_size = 40 + +[node name="label_6" type="Label3D" parent="labels" unique_id=1566597233] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 0.101, 0.9) +text = "6" +font_size = 40 + +[node name="label_7" type="Label3D" parent="labels" unique_id=748278899] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, -0.475, 0.101, 0.769) +text = "7" +font_size = 40 + +[node name="label_8" type="Label3D" parent="labels" unique_id=1361464161] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, -0.8, 0.101, 0.422) +text = "8 +" +font_size = 40 + +[node name="label_9" type="Label3D" parent="labels" unique_id=545255822] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, -0.9, 0.101, 0) +text = "9 +" +font_size = 40 + +[node name="label_10" type="Label3D" parent="labels" unique_id=908442339] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, -0.760619, 0.101, -0.422) +text = "10 +" +font_size = 40 + +[node name="label_11" type="Label3D" parent="labels" unique_id=2060319217] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, -0.475, 0.101, -0.746864) +text = "11" +font_size = 40 + +[node name="label_12" type="Label3D" parent="labels" unique_id=1354942941] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 0.101, -0.9) +text = "12" +font_size = 40 + +[node name="InteractLabel" type="Label3D" parent="." unique_id=2004060282] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.601012, 0) +visible = false +billboard = 2 +text = "[E] Pickup" diff --git a/scenes/constructs/time/time_mesh_base.tres b/scenes/constructs/time/time_mesh_base.tres new file mode 100644 index 0000000..7043537 --- /dev/null +++ b/scenes/constructs/time/time_mesh_base.tres @@ -0,0 +1,9 @@ +[gd_resource type="CylinderMesh" load_steps=2 format=3 uid="uid://dgequug0a5tps"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_j7pbf"] + +[resource] +material = SubResource("StandardMaterial3D_j7pbf") +top_radius = 1.0 +bottom_radius = 1.0 +height = 0.2 diff --git a/scenes/constructs/weight/weight.tres b/scenes/constructs/weight/weight.tres new file mode 100644 index 0000000..1b1fa30 --- /dev/null +++ b/scenes/constructs/weight/weight.tres @@ -0,0 +1,26 @@ +[gd_resource type="Resource" script_class="Constructs" load_steps=4 format=3 uid="uid://bfjg81ek3i1ba"] + +[ext_resource type="CylinderMesh" uid="uid://cslcchwfxxvka" path="res://scenes/constructs/weight/weight_mesh.tres" id="1_mskjh"] +[ext_resource type="TorusMesh" uid="uid://d2wu0ohumpxqe" path="res://scenes/constructs/weight/weight_handle_mesh.tres" id="2_7lskv"] +[ext_resource type="Script" uid="uid://d0hoytht5yf8c" path="res://scripts/constructs/constructs.gd" id="2_a8d67"] + +[resource] +script = ExtResource("2_a8d67") +name = &"Weight" +position = Vector3(0.5, -0.3, -0.7) +rotation = Vector3(0, 90, 0) +scale = Vector3(0.3, 0.3, 0.3) +position2 = Vector3(0, 0, 0) +rotation2 = Vector3(0, 0, 0) +scale2 = Vector3(1, 1, 1) +position3 = Vector3(0, 0, 0) +rotation3 = Vector3(0, 0, 0) +scale3 = Vector3(1, 1, 1) +position4 = Vector3(0, 0, 0) +rotation4 = Vector3(0, 0, 0) +scale4 = Vector3(1, 1, 1) +mesh = ExtResource("1_mskjh") +mesh2 = ExtResource("2_7lskv") +shadow = false +heavy = true +metadata/_custom_type_script = "uid://d0hoytht5yf8c" diff --git a/scenes/constructs/weight/weight.tscn b/scenes/constructs/weight/weight.tscn new file mode 100644 index 0000000..5d4af9f --- /dev/null +++ b/scenes/constructs/weight/weight.tscn @@ -0,0 +1,29 @@ +[gd_scene format=3 uid="uid://b12yul3p1ha3d"] + +[ext_resource type="Script" uid="uid://cdg27cwpw8rn7" path="res://scripts/constructs/construct_pickup.gd" id="1_k13el"] +[ext_resource type="CylinderMesh" uid="uid://cslcchwfxxvka" path="res://scenes/constructs/weight/weight_mesh.tres" id="2_l5nq2"] +[ext_resource type="TorusMesh" uid="uid://d2wu0ohumpxqe" path="res://scenes/constructs/weight/weight_handle_mesh.tres" id="3_l5nq2"] + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_lhpor"] +height = 0.5 +radius = 0.3 + +[node name="weight" type="StaticBody3D" unique_id=1793827281 groups=["interactable"]] +collision_layer = 3 +script = ExtResource("1_k13el") + +[node name="MeshInstance3D" type="MeshInstance3D" parent="." unique_id=676123263] +mesh = ExtResource("2_l5nq2") + +[node name="MeshInstance3D2" type="MeshInstance3D" parent="." unique_id=1437798368] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0.231752, 0) +mesh = ExtResource("3_l5nq2") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="." unique_id=697215283] +shape = SubResource("CylinderShape3D_lhpor") + +[node name="InteractLabel" type="Label3D" parent="." unique_id=1478020517] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.601012, 0) +visible = false +billboard = 2 +text = "[E] Pickup" diff --git a/scenes/constructs/weight/weight_handle_mesh.tres b/scenes/constructs/weight/weight_handle_mesh.tres new file mode 100644 index 0000000..662f10b --- /dev/null +++ b/scenes/constructs/weight/weight_handle_mesh.tres @@ -0,0 +1,19 @@ +[gd_resource type="TorusMesh" format=3 uid="uid://d2wu0ohumpxqe"] + +[ext_resource type="Texture2D" uid="uid://du8pmu4oobma3" path="res://assets/textures/metal/Metal052C_1K-PNG/Metal052C_1K-PNG_Color.png" id="1_4foxd"] +[ext_resource type="Texture2D" uid="uid://bcanjh1x7hesr" path="res://assets/textures/metal/Metal052C_1K-PNG/Metal052C_1K-PNG_Metalness.png" id="2_su8lm"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_2uuyt"] +resource_name = "Material.004" +cull_mode = 2 +albedo_texture = ExtResource("1_4foxd") +metallic = 1.0 +metallic_texture = ExtResource("2_su8lm") +roughness = 0.5 +uv1_triplanar = true +texture_filter = 0 + +[resource] +material = SubResource("StandardMaterial3D_2uuyt") +inner_radius = 0.1 +outer_radius = 0.2 diff --git a/scenes/constructs/weight/weight_mesh.tres b/scenes/constructs/weight/weight_mesh.tres new file mode 100644 index 0000000..6cd7a96 --- /dev/null +++ b/scenes/constructs/weight/weight_mesh.tres @@ -0,0 +1,20 @@ +[gd_resource type="CylinderMesh" format=3 uid="uid://cslcchwfxxvka"] + +[ext_resource type="Texture2D" uid="uid://du8pmu4oobma3" path="res://assets/textures/metal/Metal052C_1K-PNG/Metal052C_1K-PNG_Color.png" id="1_m4tf2"] +[ext_resource type="Texture2D" uid="uid://bcanjh1x7hesr" path="res://assets/textures/metal/Metal052C_1K-PNG/Metal052C_1K-PNG_Metalness.png" id="2_imfam"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ev1wa"] +resource_name = "Material.004" +cull_mode = 2 +albedo_texture = ExtResource("1_m4tf2") +metallic = 1.0 +metallic_texture = ExtResource("2_imfam") +roughness = 0.5 +uv1_triplanar = true +texture_filter = 0 + +[resource] +material = SubResource("StandardMaterial3D_ev1wa") +top_radius = 0.2 +bottom_radius = 0.35 +height = 0.5 diff --git a/scenes/entities/godless_pawn.tscn b/scenes/entities/godless_pawn.tscn new file mode 100644 index 0000000..92c6a6f --- /dev/null +++ b/scenes/entities/godless_pawn.tscn @@ -0,0 +1,162 @@ +[gd_scene load_steps=17 format=3 uid="uid://qb07sbwi5pda"] + +[ext_resource type="Texture2D" uid="uid://df826g11mrjod" path="res://assets/textures/wood/Wood013_1K-PNG/Wood013_1K-PNG_Color.png" id="1_fbu6r"] +[ext_resource type="Script" uid="uid://bmnjry0jqpbfa" path="res://scripts/entities/godless_pawn.gd" id="1_x65bg"] +[ext_resource type="Texture2D" uid="uid://cydetx4hbmcti" path="res://assets/textures/wood/Wood013_1K-PNG/Wood013_1K-PNG_NormalGL.png" id="2_ky7mn"] +[ext_resource type="Texture2D" uid="uid://bwk3t7yqsxj2d" path="res://assets/textures/wood/Wood013_1K-PNG/Wood013_1K-PNG_Roughness.png" id="3_ot4u1"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_cha18"] +albedo_texture = ExtResource("1_fbu6r") +roughness_texture = ExtResource("3_ot4u1") +normal_enabled = true +normal_texture = ExtResource("2_ky7mn") +uv1_triplanar = true + +[sub_resource type="SphereMesh" id="SphereMesh_7vrf0"] +material = SubResource("StandardMaterial3D_cha18") + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_3tmy3"] +albedo_texture = ExtResource("1_fbu6r") +roughness_texture = ExtResource("3_ot4u1") +normal_enabled = true +normal_texture = ExtResource("2_ky7mn") +uv1_triplanar = true +uv1_world_triplanar = true + +[sub_resource type="TorusMesh" id="TorusMesh_m3f75"] +material = SubResource("StandardMaterial3D_3tmy3") +inner_radius = 0.299 +outer_radius = 0.823 +ring_segments = 7 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_7w70w"] +albedo_texture = ExtResource("1_fbu6r") +roughness_texture = ExtResource("3_ot4u1") +normal_enabled = true +normal_texture = ExtResource("2_ky7mn") +uv1_triplanar = true +uv1_world_triplanar = true + +[sub_resource type="CylinderMesh" id="CylinderMesh_wh266"] +material = SubResource("StandardMaterial3D_7w70w") +bottom_radius = 0.25 +height = 0.75 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_3s55v"] +albedo_texture = ExtResource("1_fbu6r") +roughness_texture = ExtResource("3_ot4u1") +normal_enabled = true +normal_texture = ExtResource("2_ky7mn") +uv1_triplanar = true +uv1_world_triplanar = true + +[sub_resource type="TorusMesh" id="TorusMesh_02g78"] +material = SubResource("StandardMaterial3D_3s55v") +inner_radius = 0.412 +outer_radius = 0.823 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_4c8vu"] +height = 3.25732 +radius = 0.866044 + +[sub_resource type="Animation" id="Animation_lceoc"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector3(0, 0, 0)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath(".:rotation") +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_fwxf4"] +resource_name = "pawn_move" +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.5, 1), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Vector3(0, 0, 0), Vector3(0, 1, 0), Vector3(0, 0, 0)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath(".:rotation") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 0.5, 1), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Vector3(0, 0, 0), Vector3(0.785398, 0, 0), Vector3(0, 0, 0)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_bos6y"] +_data = { +&"RESET": SubResource("Animation_lceoc"), +&"pawn_move": SubResource("Animation_fwxf4") +} + +[node name="GodlessPawn" type="CharacterBody3D" groups=["enemy", "grapple_point"]] +script = ExtResource("1_x65bg") + +[node name="MeshInstance3D" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.69815, 0) +mesh = SubResource("SphereMesh_7vrf0") + +[node name="MeshInstance3D" type="MeshInstance3D" parent="MeshInstance3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.424539, 0) +mesh = SubResource("TorusMesh_m3f75") + +[node name="MeshInstance3D2" type="MeshInstance3D" parent="MeshInstance3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.944649, 0) +mesh = SubResource("CylinderMesh_wh266") + +[node name="MeshInstance3D3" type="MeshInstance3D" parent="MeshInstance3D/MeshInstance3D2"] +transform = Transform3D(1, 0, 0, 0, -1, 8.74228e-08, 0, -8.74228e-08, -1, 0, -0.734622, 0) +mesh = SubResource("CylinderMesh_wh266") +skeleton = NodePath("../..") + +[node name="MeshInstance3D4" type="MeshInstance3D" parent="MeshInstance3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -2.17003, 0) +mesh = SubResource("TorusMesh_02g78") + +[node name="MeshInstance3D5" type="MeshInstance3D" parent="MeshInstance3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -2.46494, 0) +mesh = SubResource("TorusMesh_m3f75") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.6778, 0) +shape = SubResource("CylinderShape3D_4c8vu") + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +libraries = { +&"": SubResource("AnimationLibrary_bos6y") +} + +[node name="Timer" type="Timer" parent="."] +autostart = true + +[connection signal="timeout" from="Timer" to="." method="_on_timer_timeout"] diff --git a/scenes/generators/cleaner.tscn b/scenes/generators/cleaner.tscn new file mode 100644 index 0000000..b144d64 --- /dev/null +++ b/scenes/generators/cleaner.tscn @@ -0,0 +1,24 @@ +[gd_scene load_steps=5 format=3 uid="uid://wcxem4vbt0d0"] + +[ext_resource type="Script" uid="uid://bt1pta3noegsk" path="res://scripts/debris_cleaner.gd" id="1_jgypq"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_jgypq"] +albedo_color = Color(0.180392, 1, 1, 1) + +[sub_resource type="BoxMesh" id="BoxMesh_gsjug"] +material = SubResource("StandardMaterial3D_jgypq") +size = Vector3(10, 0.2, 10) + +[sub_resource type="BoxShape3D" id="BoxShape3D_gsjug"] +size = Vector3(10, 0.2, 10) + +[node name="Cleaner" type="Area3D"] +collision_layer = 7 +collision_mask = 7 +script = ExtResource("1_jgypq") + +[node name="MeshInstance3D" type="MeshInstance3D" parent="."] +mesh = SubResource("BoxMesh_gsjug") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="."] +shape = SubResource("BoxShape3D_gsjug") diff --git a/scenes/generators/debris_generator.tscn b/scenes/generators/debris_generator.tscn new file mode 100644 index 0000000..2f44b5d --- /dev/null +++ b/scenes/generators/debris_generator.tscn @@ -0,0 +1,11 @@ +[gd_scene load_steps=3 format=3 uid="uid://bjniumpje1tj5"] + +[ext_resource type="Script" uid="uid://bmxyctbcdeakw" path="res://scripts/debris_generator.gd" id="1_465jf"] +[ext_resource type="AudioStream" uid="uid://ck1np3er0cbw0" path="res://assets/SFX/debris_fixed_length_and_audio_balance.mp3" id="2_a31d5"] + +[node name="DebrisGenerator" type="Node3D" groups=["generator"]] +script = ExtResource("1_465jf") + +[node name="DebrisSounds" type="AudioStreamPlayer3D" parent="."] +stream = ExtResource("2_a31d5") +volume_db = 30.0 diff --git a/scenes/generators/object_generator.tscn b/scenes/generators/object_generator.tscn new file mode 100644 index 0000000..cc5acaa --- /dev/null +++ b/scenes/generators/object_generator.tscn @@ -0,0 +1,8 @@ +[gd_scene load_steps=2 format=3 uid="uid://cfysmb53c7jrx"] + +[ext_resource type="Script" uid="uid://c5js2667jpmsh" path="res://scripts/object_generator.gd" id="1_hp7fn"] + +[node name="ObjectGenerator" type="Node3D"] +script = ExtResource("1_hp7fn") + +[node name="AudioStreamPlayer3D" type="AudioStreamPlayer3D" parent="."] diff --git a/scenes/joint_test.tscn b/scenes/joint_test.tscn new file mode 100644 index 0000000..20c8687 --- /dev/null +++ b/scenes/joint_test.tscn @@ -0,0 +1,68 @@ +[gd_scene load_steps=7 format=3 uid="uid://dxgmrd5662ebs"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_geypk"] +albedo_color = Color(1, 0.137255, 0.121569, 1) + +[sub_resource type="SphereMesh" id="SphereMesh_52p0h"] +material = SubResource("StandardMaterial3D_geypk") + +[sub_resource type="SphereShape3D" id="SphereShape3D_geypk"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_1dkwx"] +albedo_color = Color(0.133333, 0.278431, 1, 1) + +[sub_resource type="SphereMesh" id="SphereMesh_tiacx"] +material = SubResource("StandardMaterial3D_1dkwx") + +[sub_resource type="SphereShape3D" id="SphereShape3D_52p0h"] + +[node name="JointTest" type="Node3D"] + +[node name="HingeJoint3D" type="HingeJoint3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.743261, 0, 0) +node_b = NodePath("../Sphere1") +exclude_nodes_from_collision = false + +[node name="Hinge2" type="HingeJoint3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.681596, -0.191683, 0) +node_a = NodePath("../Sphere1") +node_b = NodePath("../Sphere2") +exclude_nodes_from_collision = false + +[node name="HingeJoint3D2" type="HingeJoint3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.85342, -0.218071, 0) +node_a = NodePath("../Sphere2") +node_b = NodePath("../Sphere3") + +[node name="HingeJoint3D3" type="HingeJoint3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.2288, 0, 0) +node_b = NodePath("../Sphere3") + +[node name="Sphere1" type="RigidBody3D" parent="."] +collision_layer = 2 + +[node name="MeshInstance3D" type="MeshInstance3D" parent="Sphere1"] +mesh = SubResource("SphereMesh_52p0h") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="Sphere1"] +shape = SubResource("SphereShape3D_geypk") + +[node name="Sphere2" type="RigidBody3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.31067, -0.48792, 0) +collision_layer = 2 + +[node name="MeshInstance3D" type="MeshInstance3D" parent="Sphere2"] +mesh = SubResource("SphereMesh_tiacx") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="Sphere2"] +shape = SubResource("SphereShape3D_52p0h") + +[node name="Sphere3" type="RigidBody3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.4844, 0, 0) +collision_layer = 2 + +[node name="MeshInstance3D" type="MeshInstance3D" parent="Sphere3"] +mesh = SubResource("SphereMesh_tiacx") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="Sphere3"] +shape = SubResource("SphereShape3D_52p0h") diff --git a/scenes/levels/Projections/arctic_base.tscn b/scenes/levels/Projections/arctic_base.tscn new file mode 100644 index 0000000..a0f7923 --- /dev/null +++ b/scenes/levels/Projections/arctic_base.tscn @@ -0,0 +1,82 @@ +[gd_scene load_steps=10 format=3 uid="uid://hw8oat2k4uwd"] + +[ext_resource type="PackedScene" uid="uid://ser0oa3o1n56" path="res://scenes/player/Player.tscn" id="1_360lx"] +[ext_resource type="Texture2D" uid="uid://vwnrymaoxu3l" path="res://assets/textures/snow_ice/snow.png" id="3_wxrv6"] + +[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_u35dn"] +sky_top_color = Color(0.28485027, 0.28485027, 0.28485027, 1) +sky_horizon_color = Color(0.28649348, 0.29255292, 0.3046836, 1) +ground_bottom_color = Color(0.892134, 0.895121, 0.901088, 1) + +[sub_resource type="Sky" id="Sky_qcdjg"] +sky_material = SubResource("ProceduralSkyMaterial_u35dn") + +[sub_resource type="Environment" id="Environment_360lx"] +background_mode = 2 +background_color = Color(1, 1, 1, 1) +sky = SubResource("Sky_qcdjg") +ambient_light_source = 3 +ambient_light_color = Color(0.947199, 0.947199, 0.947199, 1) +reflected_light_source = 2 +ssao_enabled = true +fog_light_color = Color(0.898559, 0.909031, 0.925495, 1) +fog_light_energy = 0.1 +volumetric_fog_enabled = true +volumetric_fog_density = 0.01 +volumetric_fog_emission = Color(1, 1, 1, 1) +volumetric_fog_temporal_reprojection_amount = 0.99 + +[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_muaee"] +emission_shape = 3 +emission_box_extents = Vector3(300, 300, 10) +gravity = Vector3(0, -0.5, 0) +collision_mode = 1 +collision_friction = 0.4 +collision_bounce = 0.0 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_cxgtq"] +albedo_texture = ExtResource("3_wxrv6") + +[sub_resource type="CylinderMesh" id="CylinderMesh_5bsrp"] +material = SubResource("StandardMaterial3D_cxgtq") +top_radius = 0.1 +bottom_radius = 0.1 +height = 0.01 +radial_segments = 6 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_w65tx"] +albedo_texture = ExtResource("3_wxrv6") +uv1_scale = Vector3(0.2, 0.2, 0.2) +uv1_triplanar = true +uv1_world_triplanar = true +texture_filter = 4 + +[node name="Arctic_Base" type="Node"] + +[node name="Player" parent="." instance=ExtResource("1_360lx")] +transform = Transform3D(-0.9989298, 0, -0.04625211, 0, 1, 0, 0.04625211, 0, -0.9989298, 0, 1.2670245, 0) + +[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +environment = SubResource("Environment_360lx") + +[node name="SnowParticles" type="GPUParticles3D" parent="."] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 50, 0) +transparency = 0.1 +cast_shadow = 0 +amount = 15000 +lifetime = 30.0 +preprocess = 15.0 +visibility_aabb = AABB(-400, -391.896, -235.395, 747.336, 783.783, 245.591) +draw_order = 3 +transform_align = 1 +process_material = SubResource("ParticleProcessMaterial_muaee") +draw_pass_1 = SubResource("CylinderMesh_5bsrp") + +[node name="CSGBox3D" type="CSGBox3D" parent="."] +use_collision = true +size = Vector3(50, 0.1, 50) +material = SubResource("StandardMaterial3D_w65tx") + +[node name="GPUParticlesCollisionBox3D" type="GPUParticlesCollisionBox3D" parent="CSGBox3D"] +transform = Transform3D(1, -2.98023e-08, 0, 2.98023e-08, 1, 0, 0, 0, 1, -0.470581, 0.04638958, 0.03479) +size = Vector3(50, 0.2, 50) diff --git a/scenes/levels/Projections/cooking_show.tscn b/scenes/levels/Projections/cooking_show.tscn new file mode 100644 index 0000000..cdaa9a1 --- /dev/null +++ b/scenes/levels/Projections/cooking_show.tscn @@ -0,0 +1,110 @@ +[gd_scene load_steps=11 format=3 uid="uid://b4qsuh2j82cq3"] + +[ext_resource type="PackedScene" uid="uid://ser0oa3o1n56" path="res://scenes/player/Player.tscn" id="1_44xn4"] +[ext_resource type="Texture2D" uid="uid://dnujqpqdxqltf" path="res://assets/textures/wood/WoodFloor008/WoodFloor008_1K-PNG_Color.png" id="1_jtcy8"] +[ext_resource type="PackedScene" uid="uid://bnpdtikvxiipa" path="res://scenes/props/Cooking_Show/kitchen_island.tscn" id="3_mr010"] +[ext_resource type="Texture2D" uid="uid://gktcbleyxtm5" path="res://assets/textures/stone_rocks/Rock013_1K-PNG_Color.png" id="4_scmk1"] +[ext_resource type="PackedScene" uid="uid://c0m6hupfp3ncp" path="res://scenes/props/Theater/fresnel_light.tscn" id="5_pfpui"] +[ext_resource type="PackedScene" uid="uid://b48lml18a55me" path="res://scenes/props/Theater/spotlight_large.tscn" id="6_f13ik"] +[ext_resource type="PackedScene" uid="uid://dqnhslk6wuo0t" path="res://scenes/props/Cooking_Show/cooking_pot.tscn" id="7_dvhab"] + +[sub_resource type="Environment" id="Environment_jtcy8"] +ambient_light_source = 2 +ambient_light_color = Color(1, 1, 1, 1) +ambient_light_energy = 0.1 +reflected_light_source = 2 +tonemap_mode = 2 +ssao_enabled = true +glow_enabled = true +glow_blend_mode = 0 +fog_light_color = Color(0.898559, 0.909031, 0.925495, 1) +fog_light_energy = 1.2 +volumetric_fog_density = 1.0 +volumetric_fog_emission = Color(1, 1, 1, 1) +volumetric_fog_emission_energy = 0.2 +volumetric_fog_sky_affect = 0.1 +volumetric_fog_temporal_reprojection_amount = 0.99 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_44xn4"] +albedo_texture = ExtResource("1_jtcy8") +uv1_scale = Vector3(0.2, 0.2, 0.2) +uv1_triplanar = true +uv1_world_triplanar = true + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_pfpui"] +albedo_texture = ExtResource("4_scmk1") +uv1_triplanar = true +uv1_world_triplanar = true + +[node name="CookingShow" type="Node"] + +[node name="Player" parent="." instance=ExtResource("1_44xn4")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.2447128, 0) + +[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +environment = SubResource("Environment_jtcy8") + +[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."] +transform = Transform3D(1, 0, 0, 0, -0.103243865, 0.9946561, 0, -0.9946561, -0.103243865, 0, 23.349861, 0) +light_energy = 0.35 +sky_mode = 1 + +[node name="Floor" type="CSGBox3D" parent="."] +use_collision = true +size = Vector3(50, 0.1, 50) +material = SubResource("StandardMaterial3D_44xn4") + +[node name="KitchenIsland" parent="." instance=ExtResource("3_mr010")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5886791, -3.1981711) + +[node name="KitchenCounter" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.508348, 0.5, -7.767955) +use_collision = true +size = Vector3(8.382385, 1, 1) + +[node name="Countertop" type="CSGBox3D" parent="KitchenCounter"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0029613972, 0.54653716, 0.04037857) +use_collision = true +size = Vector3(8.378658, 0.08, 1.1) +material = SubResource("StandardMaterial3D_pfpui") + +[node name="KitchenCounter2" type="CSGBox3D" parent="."] +transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 5.2259107, 0.5, -3.8544767) +use_collision = true +size = Vector3(5.4262695, 1, 1) + +[node name="Countertop" type="CSGBox3D" parent="KitchenCounter2"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0054211617, 0.54653716, 0.04037857) +use_collision = true +size = Vector3(5.419922, 0.08, 1.1) +material = SubResource("StandardMaterial3D_pfpui") + +[node name="Corner_Pantry" type="CSGPolygon3D" parent="."] +transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, 4.6982317, 3.03715, -7.508854) +polygon = PackedVector2Array(-1.0203924, -0.3157158, -1.0242367, 0.7577143, 1.0334597, 0.7758465, 1.0257225, -0.9381571, -0.09221959, -0.9384084) +depth = 3.0 + +[node name="KitchenWall" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.40943718, 1.2565234, -8.296772) +use_collision = true +size = Vector3(8.539333, 3.5134425, 0.01) + +[node name="KitchenWall2" type="CSGBox3D" parent="."] +transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 5.7382255, 1.2565234, -3.883267) +use_collision = true +size = Vector3(5.4653254, 3.5134425, 0.01) + +[node name="Fresnel_Light" parent="." instance=ExtResource("5_pfpui")] +transform = Transform3D(-0.32962987, 0, -0.01562566, 0.0014905949, 0.3284951, -0.03144473, 0.015554401, -0.031480037, -0.3281266, -1.7622259, 3.6870542, 1.6371394) + +[node name="Fresnel_Light2" parent="." instance=ExtResource("5_pfpui")] +transform = Transform3D(-0.32962987, 0, -0.01562566, 0.0014905949, 0.3284951, -0.03144473, 0.015554401, -0.031480037, -0.3281266, 0.15593815, 3.6870542, 1.6371394) + +[node name="Fresnel_Light3" parent="." instance=ExtResource("5_pfpui")] +transform = Transform3D(-0.32962987, 0, -0.01562566, 0.0014905949, 0.3284951, -0.03144473, 0.015554401, -0.031480037, -0.3281266, 1.7376955, 3.6870542, 1.6371394) + +[node name="Spotlight_Large" parent="." instance=ExtResource("6_f13ik")] +transform = Transform3D(-0.6793901, 0, -0.7337773, 0, 1, 0, 0.7337773, 0, -0.6793901, 0, 1.4136477, 5.5866146) + +[node name="Cooking_Pot" parent="." instance=ExtResource("7_dvhab")] +transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, -0.19812503, 1.1171324, -3.9441965) diff --git a/scenes/levels/Projections/puzzle_test_room.tscn b/scenes/levels/Projections/puzzle_test_room.tscn new file mode 100644 index 0000000..6b9736c --- /dev/null +++ b/scenes/levels/Projections/puzzle_test_room.tscn @@ -0,0 +1,72 @@ +[gd_scene load_steps=10 format=3 uid="uid://dbq1k1mm6lqdn"] + +[ext_resource type="Texture2D" uid="uid://c1bbxiqr5x5qv" path="res://assets/textures/blockout_textures/64/basic/gray_check.png" id="1_kj0hg"] +[ext_resource type="PackedScene" uid="uid://ser0oa3o1n56" path="res://scenes/player/Player.tscn" id="1_xvdxc"] +[ext_resource type="PackedScene" uid="uid://dqnhslk6wuo0t" path="res://scenes/props/Cooking_Show/cooking_pot.tscn" id="4_lmpvt"] +[ext_resource type="PackedScene" uid="uid://cbyvle3mfwjkf" path="res://scenes/props/generic_key.tscn" id="5_sxad6"] +[ext_resource type="PackedScene" uid="uid://b47ka5ju0myi1" path="res://scenes/props/keyhole.tscn" id="6_3hjlu"] + +[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_5npsl"] +sky_top_color = Color(0.25970435, 0.55582976, 0.6660876, 1) +sky_horizon_color = Color(0.25882354, 0.5568628, 0.6666667, 1) +ground_bottom_color = Color(1, 1, 1, 1) + +[sub_resource type="Sky" id="Sky_dm0e8"] +sky_material = SubResource("ProceduralSkyMaterial_5npsl") + +[sub_resource type="Environment" id="Environment_sxad6"] +background_mode = 2 +sky = SubResource("Sky_dm0e8") +ambient_light_source = 2 +ambient_light_color = Color(1, 1, 1, 1) +ambient_light_energy = 0.1 +reflected_light_source = 2 +tonemap_mode = 4 +ssao_enabled = true +glow_enabled = true +glow_blend_mode = 0 +fog_light_color = Color(0.898559, 0.909031, 0.925495, 1) +fog_light_energy = 1.2 +volumetric_fog_density = 1.0 +volumetric_fog_emission = Color(1, 1, 1, 1) +volumetric_fog_emission_energy = 0.2 +volumetric_fog_sky_affect = 0.1 +volumetric_fog_temporal_reprojection_amount = 0.99 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_xvdxc"] +albedo_texture = ExtResource("1_kj0hg") +uv1_scale = Vector3(0.1, 0.1, 0.1) +uv1_triplanar = true +uv1_world_triplanar = true + +[node name="PuzzleTestRoom" type="Node3D"] + +[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +environment = SubResource("Environment_sxad6") + +[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."] +transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, 0, 0, 0) + +[node name="Player" parent="." instance=ExtResource("1_xvdxc")] +transform = Transform3D(-0.9989298, 0, -0.04625211, 0, 1, 0, 0.04625211, 0, -0.9989298, 0, 1.2670245, 0) + +[node name="The_Cutting_Room_Floor" type="CSGBox3D" parent="."] +use_collision = true +size = Vector3(1000, 0.1, 1000) +material = SubResource("StandardMaterial3D_xvdxc") + +[node name="Cooking_Show" type="Node" parent="."] + +[node name="Kitchen_Counter" type="CSGBox3D" parent="Cooking_Show"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.37445068, 0.3555063, 16.427824) +use_collision = true +size = Vector3(1.7489014, 0.6557007, 5.695404) + +[node name="Cooking_Pot" parent="Cooking_Show" instance=ExtResource("4_lmpvt")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.38856453, 0.6761284, 16.308498) + +[node name="pristine_key" parent="Cooking_Show" instance=ExtResource("5_sxad6")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.4196815, 1.2642736, 15.72282) + +[node name="Keyhole" parent="Cooking_Show" instance=ExtResource("6_3hjlu")] +transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 3.1280203, 1.4784951, 18.265358) diff --git a/scenes/levels/Projections/the_office.tscn b/scenes/levels/Projections/the_office.tscn new file mode 100644 index 0000000..ec57fad --- /dev/null +++ b/scenes/levels/Projections/the_office.tscn @@ -0,0 +1,404 @@ +[gd_scene load_steps=20 format=3 uid="uid://cii8op3ad7atp"] + +[ext_resource type="Environment" uid="uid://cuo3it6ypvhty" path="res://resources/lighting_fixes.tres" id="1_xo2sb"] +[ext_resource type="PackedScene" uid="uid://ser0oa3o1n56" path="res://scenes/player/Player.tscn" id="1_y37so"] +[ext_resource type="PackedScene" uid="uid://60mcq1xuxwyn" path="res://scenes/props/Office/office_chair.tscn" id="4_4avjr"] +[ext_resource type="PackedScene" uid="uid://ch4vtgcvmmlb4" path="res://scenes/props/Office/office_desk.tscn" id="4_8lj0m"] +[ext_resource type="PackedScene" uid="uid://cs7ihjlyx6ax5" path="res://scenes/props/Office/monitor.tscn" id="5_8lj0m"] +[ext_resource type="PackedScene" uid="uid://cgbtnid81krqp" path="res://scenes/props/Office/keyboard.tscn" id="6_km4tc"] +[ext_resource type="PackedScene" uid="uid://b744jtx5047ai" path="res://scenes/props/Office/mouse.tscn" id="7_y1rkt"] +[ext_resource type="PackedScene" uid="uid://0ammn4ociseh" path="res://scenes/props/snake_plant_potter.tscn" id="8_fpcdv"] +[ext_resource type="PackedScene" uid="uid://b55nbp4i8cfsb" path="res://scenes/props/Office/overhead_office_light.tscn" id="8_vm3lc"] +[ext_resource type="PackedScene" uid="uid://cqc7a7324pe8q" path="res://scenes/props/bookshelf.tscn" id="9_fcnq1"] +[ext_resource type="Texture2D" uid="uid://cyqix1881ye4b" path="res://assets/textures/fabric_carpet/Carpet006_1K-PNG/Carpet006_1K-PNG_Color.png" id="10_fpcdv"] +[ext_resource type="PackedScene" uid="uid://4qpj3ofufu2f" path="res://scenes/props/Office/coffe_mug.tscn" id="11_7go6x"] +[ext_resource type="Texture2D" uid="uid://blll2xn8r66t3" path="res://assets/textures/wallpaper_walls/texpaint/PT_TAN.png" id="12_jeq46"] +[ext_resource type="Texture2D" uid="uid://c55a38jwcix6k" path="res://assets/textures/ceiling_interior/ceiling_interior_diff_1k.jpg" id="13_pycgh"] +[ext_resource type="Material" uid="uid://b6gm2sotwdai" path="res://assets/material/glass_window.tres" id="13_xo2sb"] +[ext_resource type="Texture2D" uid="uid://bvmpkbnupwxyc" path="res://assets/textures/ceiling_interior/ceiling_interior_disp_1k.png" id="14_xo2sb"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_fpcdv"] +albedo_texture = ExtResource("10_fpcdv") +uv1_scale = Vector3(0.2, 0.2, 0.2) +uv1_triplanar = true +uv1_world_triplanar = true + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_y1rkt"] +albedo_texture = ExtResource("12_jeq46") +uv1_triplanar = true +uv1_world_triplanar = true + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_pycgh"] +albedo_color = Color(1.353256, 1.353256, 1.353256, 1) +albedo_texture = ExtResource("13_pycgh") +roughness_texture = ExtResource("14_xo2sb") +uv1_triplanar = true +uv1_world_triplanar = true + +[node name="The_Office" type="Node"] + +[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +environment = ExtResource("1_xo2sb") + +[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 0.23004976, 0.97317886, 0, -0.97317886, 0.23004976, 0, 0, 0) +visible = false + +[node name="Player" parent="." instance=ExtResource("1_y37so")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.7553077, 1.6109016, 1.5490227) +WALK = 3 +RUN = 6 + +[node name="Lights" type="Node" parent="."] + +[node name="Overhead_Office_Light" parent="Lights" instance=ExtResource("8_vm3lc")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.0887284, 7.565593, -6.090226) + +[node name="Overhead_Office_Light2" parent="Lights" instance=ExtResource("8_vm3lc")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.15245962, 7.565593, -6.090226) + +[node name="Overhead_Office_Light3" parent="Lights" instance=ExtResource("8_vm3lc")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.015186, 7.565593, -6.090226) + +[node name="Overhead_Office_Light4" parent="Lights" instance=ExtResource("8_vm3lc")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.0887284, 7.565593, 0.060627937) + +[node name="Overhead_Office_Light5" parent="Lights" instance=ExtResource("8_vm3lc")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.15245962, 7.565593, 0.060627937) + +[node name="Overhead_Office_Light6" parent="Lights" instance=ExtResource("8_vm3lc")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.015186, 7.565593, 0.060627937) + +[node name="Overhead_Office_Light7" parent="Lights" instance=ExtResource("8_vm3lc")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.0887284, 7.565593, 6.1487656) + +[node name="Overhead_Office_Light8" parent="Lights" instance=ExtResource("8_vm3lc")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.15245962, 7.565593, 6.1487656) + +[node name="Overhead_Office_Light9" parent="Lights" instance=ExtResource("8_vm3lc")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.015186, 7.565593, 6.1487656) + +[node name="Props" type="Node" parent="."] + +[node name="Office_Pod" type="Node3D" parent="Props"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.9382217, 0, -1.5343828) + +[node name="Office_Desk" parent="Props/Office_Pod" instance=ExtResource("4_8lj0m")] +transform = Transform3D(0.75, 0, 0, 0, 0.75, 0, 0, 0, 0.75, 0, 1.352157, -2.813759) + +[node name="Office_Desk2" parent="Props/Office_Pod" instance=ExtResource("4_8lj0m")] +transform = Transform3D(-0.75, 0, 1.13246855e-07, 0, 0.75, 0, -1.13246855e-07, 0, -0.75, 0, 1.3532928, -3.9648197) + +[node name="Office_Desk3" parent="Props/Office_Pod" instance=ExtResource("4_8lj0m")] +transform = Transform3D(-3.278354e-08, 0, -0.75, 0, 0.75, 0, 0.75, 0, -3.278354e-08, -1.7393074, 1.3578684, -3.387137) + +[node name="Office_Chair" parent="Props/Office_Pod" instance=ExtResource("4_4avjr")] +transform = Transform3D(0.66, 0, 0, 0, 0.66, 0, 0, 0, 0.66, -0.23851931, 1.0609316, -4.853547) + +[node name="Office_Chair2" parent="Props/Office_Pod" instance=ExtResource("4_4avjr")] +transform = Transform3D(0.1247012, 0, 0.6481124, 0, 0.66, 0, -0.6481124, 0, 0.1247012, -2.6406705, 1.0609316, -3.2286005) + +[node name="Monitor" parent="Props/Office_Pod" instance=ExtResource("5_8lj0m")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.15851128, 1.9640553, -2.8607042) + +[node name="Keyboard" parent="Props/Office_Pod" instance=ExtResource("6_km4tc")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.15851128, 1.4388576, -2.498792) + +[node name="Mouse" parent="Props/Office_Pod" instance=ExtResource("7_y1rkt")] +transform = Transform3D(0.1, 0, 0, 0, 0.1, 0, 0, 0, 0.1, 0.62711626, 1.4287469, -2.5237336) + +[node name="Monitor2" parent="Props/Office_Pod" instance=ExtResource("5_8lj0m")] +transform = Transform3D(-4.3711385e-08, 0, -0.99999994, 0, 1, 0, 0.99999994, 0, -4.3711385e-08, -1.6716522, 1.9640553, -3.1459289) + +[node name="Keyboard2" parent="Props/Office_Pod" instance=ExtResource("6_km4tc")] +transform = Transform3D(-4.3711385e-08, 0, -0.99999994, 0, 1, 0, 0.99999994, 0, -4.3711385e-08, -1.9899147, 1.4388576, -3.1459742) + +[node name="Mouse2" parent="Props/Office_Pod" instance=ExtResource("7_y1rkt")] +transform = Transform3D(-4.371139e-09, 0, -0.1, 0, 0.1, 0, 0.1, 0, -4.371139e-09, -1.995927, 1.4287469, -2.6332443) + +[node name="Monitor3" parent="Props/Office_Pod" instance=ExtResource("5_8lj0m")] +transform = Transform3D(-1, 0, 8.742278e-08, 0, 1, 0, -8.742278e-08, 0, -1, -0.16850698, 1.9640553, -3.9068875) + +[node name="Keyboard3" parent="Props/Office_Pod" instance=ExtResource("6_km4tc")] +transform = Transform3D(-1, 0, 8.742278e-08, 0, 1, 0, -8.742278e-08, 0, -1, -0.25900024, 1.4388576, -4.257303) + +[node name="Mouse3" parent="Props/Office_Pod" instance=ExtResource("7_y1rkt")] +transform = Transform3D(-0.10000001, 0, 8.742278e-09, 0, 0.1, 0, -8.742278e-09, 0, -0.10000001, -0.7064835, 1.4287469, -4.115983) + +[node name="Office_Chair3" parent="Props/Office_Pod" instance=ExtResource("4_4avjr")] +transform = Transform3D(0.007003531, 0, -0.65996283, 0, 0.66, 0, 0.65996283, 0, 0.007003531, 0.19418639, 1.0609316, -1.5899546) + +[node name="Office_Pod2" type="Node3D" parent="Props"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7.722659, 0, -3.9375148) + +[node name="Office_Desk" parent="Props/Office_Pod2" instance=ExtResource("4_8lj0m")] +transform = Transform3D(0.75, 0, 0, 0, 0.75, 0, 0, 0, 0.75, 0, 1.352157, -2.813759) + +[node name="Office_Desk2" parent="Props/Office_Pod2" instance=ExtResource("4_8lj0m")] +transform = Transform3D(-0.75, 0, 1.13246855e-07, 0, 0.75, 0, -1.13246855e-07, 0, -0.75, 0, 1.3532928, -3.9648197) + +[node name="Office_Desk3" parent="Props/Office_Pod2" instance=ExtResource("4_8lj0m")] +transform = Transform3D(-3.278354e-08, 0, -0.75, 0, 0.75, 0, 0.75, 0, -3.278354e-08, -1.7393074, 1.3578684, -3.387137) + +[node name="Office_Chair" parent="Props/Office_Pod2" instance=ExtResource("4_4avjr")] +transform = Transform3D(0.66, 0, 0, 0, 0.66, 0, 0, 0, 0.66, -0.23851931, 1.0609316, -4.853547) + +[node name="Office_Chair2" parent="Props/Office_Pod2" instance=ExtResource("4_4avjr")] +transform = Transform3D(0.1247012, 0, 0.6481124, 0, 0.66, 0, -0.6481124, 0, 0.1247012, -2.6406705, 1.0609316, -3.2286005) + +[node name="Monitor" parent="Props/Office_Pod2" instance=ExtResource("5_8lj0m")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.15851128, 1.9640553, -2.8607042) + +[node name="Keyboard" parent="Props/Office_Pod2" instance=ExtResource("6_km4tc")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.15851128, 1.4388576, -2.498792) + +[node name="Mouse" parent="Props/Office_Pod2" instance=ExtResource("7_y1rkt")] +transform = Transform3D(0.1, 0, 0, 0, 0.1, 0, 0, 0, 0.1, 0.62711626, 1.4287469, -2.5237336) + +[node name="Monitor2" parent="Props/Office_Pod2" instance=ExtResource("5_8lj0m")] +transform = Transform3D(-4.3711385e-08, 0, -0.99999994, 0, 1, 0, 0.99999994, 0, -4.3711385e-08, -1.6716522, 1.9640553, -3.1459289) + +[node name="Keyboard2" parent="Props/Office_Pod2" instance=ExtResource("6_km4tc")] +transform = Transform3D(-4.3711385e-08, 0, -0.99999994, 0, 1, 0, 0.99999994, 0, -4.3711385e-08, -1.9899147, 1.4388576, -3.1459742) + +[node name="Mouse2" parent="Props/Office_Pod2" instance=ExtResource("7_y1rkt")] +transform = Transform3D(-4.371139e-09, 0, -0.1, 0, 0.1, 0, 0.1, 0, -4.371139e-09, -1.995927, 1.4287469, -2.6332443) + +[node name="Monitor3" parent="Props/Office_Pod2" instance=ExtResource("5_8lj0m")] +transform = Transform3D(-1, 0, 8.742278e-08, 0, 1, 0, -8.742278e-08, 0, -1, -0.16850698, 1.9640553, -3.9068875) + +[node name="Keyboard3" parent="Props/Office_Pod2" instance=ExtResource("6_km4tc")] +transform = Transform3D(-1, 0, 8.742278e-08, 0, 1, 0, -8.742278e-08, 0, -1, -0.25900024, 1.4388576, -4.257303) + +[node name="Mouse3" parent="Props/Office_Pod2" instance=ExtResource("7_y1rkt")] +transform = Transform3D(-0.10000001, 0, 8.742278e-09, 0, 0.1, 0, -8.742278e-09, 0, -0.10000001, -0.7064835, 1.4287469, -4.115983) + +[node name="Office_Chair3" parent="Props/Office_Pod2" instance=ExtResource("4_4avjr")] +transform = Transform3D(0.007003531, 0, -0.65996283, 0, 0.66, 0, 0.65996283, 0, 0.007003531, 0.19418639, 1.0609316, -1.5899546) + +[node name="Office_Pod3" type="Node3D" parent="Props"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.682285, 0, 4.283859) + +[node name="Office_Desk" parent="Props/Office_Pod3" instance=ExtResource("4_8lj0m")] +transform = Transform3D(0.75, 0, 0, 0, 0.75, 0, 0, 0, 0.75, 0, 1.352157, -2.813759) + +[node name="Office_Desk2" parent="Props/Office_Pod3" instance=ExtResource("4_8lj0m")] +transform = Transform3D(-0.75, 0, 1.13246855e-07, 0, 0.75, 0, -1.13246855e-07, 0, -0.75, 0, 1.3532928, -3.9648197) + +[node name="Office_Desk3" parent="Props/Office_Pod3" instance=ExtResource("4_8lj0m")] +transform = Transform3D(-3.278354e-08, 0, -0.75, 0, 0.75, 0, 0.75, 0, -3.278354e-08, -1.7393074, 1.3578684, -3.387137) + +[node name="Office_Chair" parent="Props/Office_Pod3" instance=ExtResource("4_4avjr")] +transform = Transform3D(0.66, 0, 0, 0, 0.66, 0, 0, 0, 0.66, -0.23851931, 1.0609316, -4.853547) + +[node name="Office_Chair2" parent="Props/Office_Pod3" instance=ExtResource("4_4avjr")] +transform = Transform3D(0.1247012, 0, 0.6481124, 0, 0.66, 0, -0.6481124, 0, 0.1247012, -2.6406705, 1.0609316, -3.2286005) + +[node name="Monitor" parent="Props/Office_Pod3" instance=ExtResource("5_8lj0m")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.15851128, 1.9640553, -2.8607042) + +[node name="Keyboard" parent="Props/Office_Pod3" instance=ExtResource("6_km4tc")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.15851128, 1.4388576, -2.498792) + +[node name="Mouse" parent="Props/Office_Pod3" instance=ExtResource("7_y1rkt")] +transform = Transform3D(0.1, 0, 0, 0, 0.1, 0, 0, 0, 0.1, 0.62711626, 1.4287469, -2.5237336) + +[node name="Monitor2" parent="Props/Office_Pod3" instance=ExtResource("5_8lj0m")] +transform = Transform3D(-4.3711385e-08, 0, -0.99999994, 0, 1, 0, 0.99999994, 0, -4.3711385e-08, -1.6716522, 1.9640553, -3.1459289) + +[node name="Keyboard2" parent="Props/Office_Pod3" instance=ExtResource("6_km4tc")] +transform = Transform3D(-4.3711385e-08, 0, -0.99999994, 0, 1, 0, 0.99999994, 0, -4.3711385e-08, -1.9899147, 1.4388576, -3.1459742) + +[node name="Mouse2" parent="Props/Office_Pod3" instance=ExtResource("7_y1rkt")] +transform = Transform3D(-4.371139e-09, 0, -0.1, 0, 0.1, 0, 0.1, 0, -4.371139e-09, -1.995927, 1.4287469, -2.6332443) + +[node name="Monitor3" parent="Props/Office_Pod3" instance=ExtResource("5_8lj0m")] +transform = Transform3D(-1, 0, 8.742278e-08, 0, 1, 0, -8.742278e-08, 0, -1, -0.16850698, 1.9640553, -3.9068875) + +[node name="Keyboard3" parent="Props/Office_Pod3" instance=ExtResource("6_km4tc")] +transform = Transform3D(-1, 0, 8.742278e-08, 0, 1, 0, -8.742278e-08, 0, -1, -0.25900024, 1.4388576, -4.257303) + +[node name="Mouse3" parent="Props/Office_Pod3" instance=ExtResource("7_y1rkt")] +transform = Transform3D(-0.10000001, 0, 8.742278e-09, 0, 0.1, 0, -8.742278e-09, 0, -0.10000001, -0.7064835, 1.4287469, -4.115983) + +[node name="Office_Chair3" parent="Props/Office_Pod3" instance=ExtResource("4_4avjr")] +transform = Transform3D(0.007003531, 0, -0.65996283, 0, 0.66, 0, 0.65996283, 0, 0.007003531, 0.19418639, 1.0609316, -1.5899546) + +[node name="Office_Pod4" type="Node3D" parent="Props"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.24865, 0, 10.614584) + +[node name="Office_Desk" parent="Props/Office_Pod4" instance=ExtResource("4_8lj0m")] +transform = Transform3D(0.75, 0, 0, 0, 0.75, 0, 0, 0, 0.75, 0, 1.352157, -2.813759) + +[node name="Office_Desk2" parent="Props/Office_Pod4" instance=ExtResource("4_8lj0m")] +transform = Transform3D(-0.75, 0, 1.13246855e-07, 0, 0.75, 0, -1.13246855e-07, 0, -0.75, 0, 1.3532928, -3.9648197) + +[node name="Office_Desk3" parent="Props/Office_Pod4" instance=ExtResource("4_8lj0m")] +transform = Transform3D(-3.278354e-08, 0, -0.75, 0, 0.75, 0, 0.75, 0, -3.278354e-08, -1.7393074, 1.3578684, -3.387137) + +[node name="Office_Chair" parent="Props/Office_Pod4" instance=ExtResource("4_4avjr")] +transform = Transform3D(0.66, 0, 0, 0, 0.66, 0, 0, 0, 0.66, -0.23851931, 1.0609316, -4.853547) + +[node name="Office_Chair2" parent="Props/Office_Pod4" instance=ExtResource("4_4avjr")] +transform = Transform3D(0.1247012, 0, 0.6481124, 0, 0.66, 0, -0.6481124, 0, 0.1247012, -2.6406705, 1.0609316, -3.2286005) + +[node name="Monitor" parent="Props/Office_Pod4" instance=ExtResource("5_8lj0m")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.15851128, 1.9640553, -2.8607042) + +[node name="Keyboard" parent="Props/Office_Pod4" instance=ExtResource("6_km4tc")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.15851128, 1.4388576, -2.498792) + +[node name="Mouse" parent="Props/Office_Pod4" instance=ExtResource("7_y1rkt")] +transform = Transform3D(0.1, 0, 0, 0, 0.1, 0, 0, 0, 0.1, 0.62711626, 1.4287469, -2.5237336) + +[node name="Monitor2" parent="Props/Office_Pod4" instance=ExtResource("5_8lj0m")] +transform = Transform3D(-4.3711385e-08, 0, -0.99999994, 0, 1, 0, 0.99999994, 0, -4.3711385e-08, -1.6716522, 1.9640553, -3.1459289) + +[node name="Keyboard2" parent="Props/Office_Pod4" instance=ExtResource("6_km4tc")] +transform = Transform3D(-4.3711385e-08, 0, -0.99999994, 0, 1, 0, 0.99999994, 0, -4.3711385e-08, -1.9899147, 1.4388576, -3.1459742) + +[node name="Mouse2" parent="Props/Office_Pod4" instance=ExtResource("7_y1rkt")] +transform = Transform3D(-4.371139e-09, 0, -0.1, 0, 0.1, 0, 0.1, 0, -4.371139e-09, -1.995927, 1.4287469, -2.6332443) + +[node name="Monitor3" parent="Props/Office_Pod4" instance=ExtResource("5_8lj0m")] +transform = Transform3D(-1, 0, 8.742278e-08, 0, 1, 0, -8.742278e-08, 0, -1, -0.16850698, 1.9640553, -3.9068875) + +[node name="Keyboard3" parent="Props/Office_Pod4" instance=ExtResource("6_km4tc")] +transform = Transform3D(-1, 0, 8.742278e-08, 0, 1, 0, -8.742278e-08, 0, -1, -0.25900024, 1.4388576, -4.257303) + +[node name="Mouse3" parent="Props/Office_Pod4" instance=ExtResource("7_y1rkt")] +transform = Transform3D(-0.10000001, 0, 8.742278e-09, 0, 0.1, 0, -8.742278e-09, 0, -0.10000001, -0.7064835, 1.4287469, -4.115983) + +[node name="Office_Chair3" parent="Props/Office_Pod4" instance=ExtResource("4_4avjr")] +transform = Transform3D(0.007003531, 0, -0.65996283, 0, 0.66, 0, 0.65996283, 0, 0.007003531, 0.19418639, 1.0609316, -1.5899546) + +[node name="Office_Pod5" type="Node3D" parent="Props"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.866678, 0, 9.89132) + +[node name="Office_Desk" parent="Props/Office_Pod5" instance=ExtResource("4_8lj0m")] +transform = Transform3D(0.75, 0, 0, 0, 0.75, 0, 0, 0, 0.75, 0, 1.352157, -2.813759) + +[node name="Office_Desk2" parent="Props/Office_Pod5" instance=ExtResource("4_8lj0m")] +transform = Transform3D(-0.75, 0, 1.13246855e-07, 0, 0.75, 0, -1.13246855e-07, 0, -0.75, 0, 1.3532928, -3.9648197) + +[node name="Office_Desk3" parent="Props/Office_Pod5" instance=ExtResource("4_8lj0m")] +transform = Transform3D(-3.278354e-08, 0, -0.75, 0, 0.75, 0, 0.75, 0, -3.278354e-08, -1.7393074, 1.3578684, -3.387137) + +[node name="Office_Chair" parent="Props/Office_Pod5" instance=ExtResource("4_4avjr")] +transform = Transform3D(0.66, 0, 0, 0, 0.66, 0, 0, 0, 0.66, -0.23851931, 1.0609316, -4.853547) + +[node name="Office_Chair2" parent="Props/Office_Pod5" instance=ExtResource("4_4avjr")] +transform = Transform3D(0.1247012, 0, 0.6481124, 0, 0.66, 0, -0.6481124, 0, 0.1247012, -2.6406705, 1.0609316, -3.2286005) + +[node name="Monitor" parent="Props/Office_Pod5" instance=ExtResource("5_8lj0m")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.15851128, 1.9640553, -2.8607042) + +[node name="Keyboard" parent="Props/Office_Pod5" instance=ExtResource("6_km4tc")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.15851128, 1.4388576, -2.498792) + +[node name="Mouse" parent="Props/Office_Pod5" instance=ExtResource("7_y1rkt")] +transform = Transform3D(0.1, 0, 0, 0, 0.1, 0, 0, 0, 0.1, 0.62711626, 1.4287469, -2.5237336) + +[node name="Monitor2" parent="Props/Office_Pod5" instance=ExtResource("5_8lj0m")] +transform = Transform3D(-4.3711385e-08, 0, -0.99999994, 0, 1, 0, 0.99999994, 0, -4.3711385e-08, -1.6716522, 1.9640553, -3.1459289) + +[node name="Keyboard2" parent="Props/Office_Pod5" instance=ExtResource("6_km4tc")] +transform = Transform3D(-4.3711385e-08, 0, -0.99999994, 0, 1, 0, 0.99999994, 0, -4.3711385e-08, -1.9899147, 1.4388576, -3.1459742) + +[node name="Mouse2" parent="Props/Office_Pod5" instance=ExtResource("7_y1rkt")] +transform = Transform3D(-4.371139e-09, 0, -0.1, 0, 0.1, 0, 0.1, 0, -4.371139e-09, -1.995927, 1.4287469, -2.6332443) + +[node name="Monitor3" parent="Props/Office_Pod5" instance=ExtResource("5_8lj0m")] +transform = Transform3D(-1, 0, 8.742278e-08, 0, 1, 0, -8.742278e-08, 0, -1, -0.16850698, 1.9640553, -3.9068875) + +[node name="Keyboard3" parent="Props/Office_Pod5" instance=ExtResource("6_km4tc")] +transform = Transform3D(-1, 0, 8.742278e-08, 0, 1, 0, -8.742278e-08, 0, -1, -0.25900024, 1.4388576, -4.257303) + +[node name="Mouse3" parent="Props/Office_Pod5" instance=ExtResource("7_y1rkt")] +transform = Transform3D(-0.10000001, 0, 8.742278e-09, 0, 0.1, 0, -8.742278e-09, 0, -0.10000001, -0.7064835, 1.4287469, -4.115983) + +[node name="Office_Chair3" parent="Props/Office_Pod5" instance=ExtResource("4_4avjr")] +transform = Transform3D(0.007003531, 0, -0.65996283, 0, 0.66, 0, 0.65996283, 0, 0.007003531, 0.19418639, 1.0609316, -1.5899546) + +[node name="Snake_Plant" parent="Props" instance=ExtResource("8_fpcdv")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.4034424, 0.9966055, -9.498611) + +[node name="Snake_Plant2" parent="Props" instance=ExtResource("8_fpcdv")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9.562966, 0.9966055, 1.3112822) + +[node name="Snake_Plant3" parent="Props" instance=ExtResource("8_fpcdv")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -10.488795, 0.9966055, 0.03974408) + +[node name="Bookshelf" parent="Props" instance=ExtResource("9_fcnq1")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.7331717, 1.7620816, -11.72925) + +[node name="Bookshelf2" parent="Props" instance=ExtResource("9_fcnq1")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.9724953, 1.7620816, -11.72925) + +[node name="Bookshelf3" parent="Props" instance=ExtResource("9_fcnq1")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.2304597, 1.7620816, -11.72925) + +[node name="Bookshelf4" parent="Props" instance=ExtResource("9_fcnq1")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -8.469784, 1.7620816, -11.72925) + +[node name="Bookshelf5" parent="Props" instance=ExtResource("9_fcnq1")] +transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 11.729584, 1.7620816, 6.0928698) + +[node name="Bookshelf6" parent="Props" instance=ExtResource("9_fcnq1")] +transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 11.729584, 1.7620816, 8.34482) + +[node name="Bookshelf7" parent="Props" instance=ExtResource("9_fcnq1")] +transform = Transform3D(-1, 0, 8.742278e-08, 0, 1, 0, -8.742278e-08, 0, -1, 2.837434, 1.7620816, 11.732866) + +[node name="Bookshelf8" parent="Props" instance=ExtResource("9_fcnq1")] +transform = Transform3D(-1, 0, 8.742278e-08, 0, 1, 0, -8.742278e-08, 0, -1, 0.53495383, 1.7620816, 11.732866) + +[node name="Bookshelf9" parent="Props" instance=ExtResource("9_fcnq1")] +transform = Transform3D(-1, 0, 8.742278e-08, 0, 1, 0, -8.742278e-08, 0, -1, -1.7796719, 1.7620816, 11.732866) + +[node name="Coffe_Mug" parent="Props" instance=ExtResource("11_7go6x")] +transform = Transform3D(0.0054206843, 0, 0.14990203, 0, 0.15, 0, -0.14990203, 0, 0.0054206843, 0.6895412, 1.508682, 0.60258025) + +[node name="Floor" type="CSGBox3D" parent="."] +use_collision = true +size = Vector3(25, 1, 25) +material = SubResource("StandardMaterial3D_fpcdv") + +[node name="Office_Wall_North" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.98584, 3.79, -12.5) +use_collision = true +size = Vector3(38.02832, 8.468, 1) +material = SubResource("StandardMaterial3D_y1rkt") + +[node name="Office_Wall_South" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.9384766, 3.79, 12.5) +use_collision = true +size = Vector3(38.123047, 8.468, 1) +material = SubResource("StandardMaterial3D_y1rkt") + +[node name="Office_Wall_East" type="CSGBox3D" parent="."] +transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 12.5, 3.79, 0) +use_collision = true +size = Vector3(50, 8.468, 1) +material = SubResource("StandardMaterial3D_y1rkt") + +[node name="Office_Wall_West" type="CSGBox3D" parent="."] +transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -12.5, 3.79, 0) +use_collision = true +size = Vector3(50, 8.468, 1) +material = SubResource("StandardMaterial3D_y1rkt") + +[node name="Glass" type="CSGBox3D" parent="Office_Wall_West"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.1521487, -0.23494577, 0.51314926) +size = Vector3(6, 4, 0.06) +material = ExtResource("13_xo2sb") + +[node name="Glass2" type="CSGBox3D" parent="Office_Wall_West"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.9454618, -0.23494577, 0.51314926) +size = Vector3(6, 4, 0.06) +material = ExtResource("13_xo2sb") + +[node name="Office_Ceiling" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7.874222, 0) +size = Vector3(25, 1, 25) +material = SubResource("StandardMaterial3D_pycgh") diff --git a/scenes/levels/Projections/theater.tscn b/scenes/levels/Projections/theater.tscn new file mode 100644 index 0000000..8ef86ed --- /dev/null +++ b/scenes/levels/Projections/theater.tscn @@ -0,0 +1,1074 @@ +[gd_scene format=3 uid="uid://b3jw20sc0powv"] + +[ext_resource type="PackedScene" uid="uid://ser0oa3o1n56" path="res://scenes/player/Player.tscn" id="1_0v8o6"] +[ext_resource type="Environment" uid="uid://cuo3it6ypvhty" path="res://resources/lighting_fixes.tres" id="1_2vsgr"] +[ext_resource type="PackedScene" uid="uid://dbi3uhrh5o82j" path="res://scenes/props/vending_machine.tscn" id="2_0ycmt"] +[ext_resource type="PackedScene" uid="uid://2nfc3gsam5yd" path="res://scenes/props/Theater/theater_chair.tscn" id="3_db4a8"] +[ext_resource type="PackedScene" uid="uid://cjtc733mh60l0" path="res://scenes/props/Theater/theater_sconce.tscn" id="3_gvfjr"] +[ext_resource type="PackedScene" uid="uid://colksumpxc6a7" path="res://scenes/characters/generic_character.tscn" id="4_0ty8x"] +[ext_resource type="Texture2D" uid="uid://bpbghsbplnwog" path="res://assets/textures/blockout_textures/64/basic/white_dots.png" id="5_1s3hx"] +[ext_resource type="PackedScene" uid="uid://bku2nrxiu6x15" path="res://scenes/characters/mariana.tscn" id="5_2vsgr"] +[ext_resource type="Texture2D" uid="uid://bc73b0smqgbo3" path="res://assets/textures/blockout_textures/1024/basic/gray_check.png" id="5_nl7ro"] +[ext_resource type="PackedScene" uid="uid://dnh1xm700maqp" path="res://scenes/props/Theater/theater_movie_screen.tscn" id="5_xkt4l"] +[ext_resource type="Texture2D" uid="uid://bwfi4g6mwgjhd" path="res://assets/textures/fabric_carpet/quarterfoil_jacquard_fabric/quatrefoil_jacquard_fabric_diff_1k.jpg" id="8_ldtx1"] +[ext_resource type="Texture2D" uid="uid://bifkjtqsrog6l" path="res://assets/textures/fabric_carpet/quarterfoil_jacquard_fabric/quatrefoil_jacquard_fabric_nor_gl_1k.jpg" id="8_uyegs"] +[ext_resource type="Texture2D" uid="uid://bjc0kgb8rbntp" path="res://assets/textures/fabric_carpet/arcadefloor.png" id="9_1a8rh"] +[ext_resource type="Texture2D" uid="uid://8lhcu35nd18p" path="res://assets/textures/fabric_carpet/quarterfoil_jacquard_fabric/quatrefoil_jacquard_fabric_metal_1k.jpg" id="10_1a8rh"] +[ext_resource type="Texture2D" uid="uid://deyf46mtvu3l3" path="res://assets/textures/fabric_carpet/quarterfoil_jacquard_fabric/quatrefoil_jacquard_fabric_rough_1k.jpg" id="11_8ydkk"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_8oqle"] +albedo_texture = ExtResource("5_1s3hx") +uv1_triplanar = true +uv1_world_triplanar = true + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_db4a8"] +albedo_texture = ExtResource("5_nl7ro") +normal_enabled = true +normal_texture = ExtResource("8_uyegs") +uv1_triplanar = true +uv1_world_triplanar = true + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_8ydkk"] +albedo_texture = ExtResource("9_1a8rh") +uv1_scale = Vector3(0.2, 0.2, 0.2) +uv1_triplanar = true + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_x2gar"] +albedo_texture = ExtResource("8_ldtx1") +metallic = 1.0 +metallic_texture = ExtResource("10_1a8rh") +roughness_texture = ExtResource("11_8ydkk") +uv1_triplanar = true +uv1_world_triplanar = true + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_2vsgr"] +transparency = 1 +blend_mode = 1 + +[node name="Theater_Labyrinth" type="Node" unique_id=1220211395] + +[node name="Node" type="Node" parent="." unique_id=1276753368] + +[node name="WorldEnvironment" type="WorldEnvironment" parent="." unique_id=99635557] +environment = ExtResource("1_2vsgr") + +[node name="Player" parent="." unique_id=962525996 instance=ExtResource("1_0v8o6")] +transform = Transform3D(0.9988095, 0, 0.048780013, 0, 1, 0, -0.048780013, 0, 0.9988095, -5.1303654, 0.96313, -22.500399) + +[node name="Characters" type="Node" parent="." unique_id=236335895] + +[node name="Mariana" parent="Characters" unique_id=719394395 instance=ExtResource("5_2vsgr")] +transform = Transform3D(0.044927876, 0, 0.3218796, 0, 0.325, 0, -0.3218796, 0, 0.044927876, 0, 0.43531144, -19.991743) +collision_layer = 3 + +[node name="savvy_consumer" parent="Characters" unique_id=328178200 groups=["mariana"] instance=ExtResource("4_0ty8x")] +transform = Transform3D(-1.639177e-08, 0, 0.375, 0, 0.375, 0, -0.375, 0, -1.639177e-08, 0.0073394775, 0.58783436, -23.3358) +collision_layer = 3 + +[node name="Theater_Lobby" type="CSGCylinder3D" parent="." unique_id=1185673295] +transform = Transform3D(0.70710677, 0, -0.70710677, 0, 1, 0, 0.70710677, 0, 0.70710677, 0, 14.692711, 0) +use_collision = true +radius = 50.0 +height = 32.655273 +sides = 64 +material = SubResource("StandardMaterial3D_8oqle") + +[node name="Lobby_Remover" type="CSGCylinder3D" parent="Theater_Lobby" unique_id=1836660471] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.104543686, 0) +operation = 2 +radius = 49.0 +height = 30.683838 +sides = 64 +material = SubResource("StandardMaterial3D_8oqle") + +[node name="Hallway_Remover" type="CSGBox3D" parent="Theater_Lobby" unique_id=960048637] +transform = Transform3D(0.7214705, 0, 0.69244564, 0, 1, 0, -0.69244564, 0, 0.7214705, -35.200996, -10.068835, -33.977577) +operation = 2 +size = Vector3(13.904044, 10.178131, 11.765287) + +[node name="Theater_Entrance" type="CSGBox3D" parent="Theater_Lobby" unique_id=1733727344] +transform = Transform3D(0.39432713, 0, 0.9189707, 0, 1, 0, -0.9189707, 0, 0.39432713, 22.331211, -10.068835, -43.463924) +operation = 2 +size = Vector3(2.4076517, 10.178131, 11.765287) + +[node name="Theater_Entrance2" type="CSGBox3D" parent="Theater_Lobby" unique_id=1507706117] +transform = Transform3D(0.93828255, 0, 0.3458715, 0, 1, 0, -0.3458715, 0, 0.93828255, 45.90696, -10.068835, -18.294594) +operation = 2 +size = Vector3(2.0138528, 10.178131, 11.765287) + +[node name="Theater_Entrance_Upper" type="CSGBox3D" parent="Theater_Lobby" unique_id=713990849] +transform = Transform3D(0.5060041, 0, 0.8625318, 0, 1, 0, -0.8625318, 0, 0.5060041, 27.457512, 3.3416119, -41.431572) +operation = 2 +size = Vector3(4.7887497, 8.84523, 6.744056) +material = SubResource("StandardMaterial3D_8oqle") + +[node name="Theater_Entrance_Upper2" type="CSGBox3D" parent="Theater_Lobby" unique_id=1433456657] +transform = Transform3D(0.9608134, 0, 0.2771972, 0, 1, 0, -0.2771972, 0, 0.9608134, 48.29914, 3.3419075, -14.952677) +operation = 2 +size = Vector3(4.7887497, 8.84523, 6.744056) +material = SubResource("StandardMaterial3D_8oqle") + +[node name="Entryways" type="Node3D" parent="Theater_Lobby" unique_id=731799544] + +[node name="Stairs" type="Node" parent="Theater_Lobby" unique_id=2120799446] + +[node name="Stairwell_Upper_Landing" type="CSGBox3D" parent="Theater_Lobby/Stairs" unique_id=1098167581] +transform = Transform3D(-0.007469684, -2.3813988e-07, -0.99997216, -4.3661705e-09, 0.9999994, -2.3841858e-07, 0.99992, -5.38407e-08, -0.0074697137, 28.414257, 15.244372, 0.20980358) +use_collision = true +size = Vector3(72.669785, 1, 4.8339844) + +[node name="Stairwell_Middle_Landing" type="CSGBox3D" parent="Theater_Lobby/Stairs" unique_id=774041508] +transform = Transform3D(-0.0074697137, -2.3813988e-07, -0.99997216, -4.3661705e-09, 0.9999994, -2.3841858e-07, 0.99992007, -5.38407e-08, -0.0074697137, 16.85411, 4.26976, -26.82022) +use_collision = true +size = Vector3(6.031971, 9.567871, 4.3573074) + +[node name="Stairs_Upper" type="CSGBox3D" parent="Theater_Lobby/Stairs" unique_id=936224364] +transform = Transform3D(0.4459195, -0.25745177, 0.8572484, 0.4999999, 0.8660253, -1.1027499e-08, -0.7423991, 0.4286242, 0.51490355, 19.813383, 12.274633, -33.278755) +use_collision = true +size = Vector3(13.679594, 0.001, 4.884308) + +[node name="Stairs_Lower" type="CSGBox3D" parent="Theater_Lobby/Stairs" unique_id=78060588] +transform = Transform3D(0.0030230284, -0.0017453283, 0.9999943, 0.50000024, 0.8660252, 0, -0.8660206, 0.49999684, 0.0034907162, 16.809425, 0.19454002, -17.880173) +use_collision = true +size = Vector3(19.525936, 9.401825, 4.3791504) + +[node name="Stairs_Lower2" type="CSGBox3D" parent="Theater_Lobby/Stairs" unique_id=596780444] +transform = Transform3D(-0.003022939, 0.0017453283, -0.9999943, 0.5000003, 0.8660252, 0, 0.86602056, -0.49999684, -0.0034906566, 16.809431, 0.19454002, 17.171904) +use_collision = true +size = Vector3(19.525936, 9.401825, 4.3791504) + +[node name="Stairwell_Middle_Landing2" type="CSGBox3D" parent="Theater_Lobby/Stairs" unique_id=1904220792] +transform = Transform3D(-0.007469654, -2.3813988e-07, -0.9999722, -4.3661705e-09, 0.9999994, -2.3841858e-07, 0.9999201, -5.3840715e-08, -0.007469654, 16.854113, 4.26976, 26.29854) +use_collision = true +size = Vector3(6.031971, 9.567871, 4.3573074) + +[node name="Stairs_Upper2" type="CSGBox3D" parent="Theater_Lobby/Stairs" unique_id=1482698064] +transform = Transform3D(0.44118124, -0.254716, -0.86051166, 0.5000001, 0.8660254, 1.4195377e-08, 0.74522465, -0.4302555, 0.5094323, 19.777725, 12.234217, 33.318478) +use_collision = true +size = Vector3(13.841262, 0.001, 4.884308) + +[node name="Label_Lobby" type="Label3D" parent="Theater_Lobby" unique_id=839939411] +transform = Transform3D(0.74448645, 0.66762, 0.0048707314, -2.041739e-11, -0.007295468, 0.9999734, 0.6676377, -0.7444666, -0.0054313773, -12.521051, 20.460457, 12.521051) +text = "LOBBY" +font_size = 1000 + +[node name="Lobby_Upper_walkway" type="CSGCylinder3D" parent="Theater_Lobby" unique_id=1572353122] +radius = 50.0 +sides = 64 +material = SubResource("StandardMaterial3D_8oqle") + +[node name="Walkway_Remover" type="CSGCylinder3D" parent="Theater_Lobby/Lobby_Upper_walkway" unique_id=1109637948] +operation = 2 +radius = 44.719727 +sides = 64 +material = SubResource("StandardMaterial3D_8oqle") + +[node name="Box_Office" type="CSGBox3D" parent="Theater_Lobby" unique_id=902122137] +transform = Transform3D(0.7188425, 0, 0.69517297, 0, 1, 0, -0.69517297, 0, 0.7188425, -37.51276, -12.177479, 35.99285) +size = Vector3(19.835632, 11.074643, 51.95923) +material = SubResource("StandardMaterial3D_8oqle") + +[node name="Concessions" type="CSGCylinder3D" parent="Theater_Lobby" unique_id=236168522] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -12.230801, -14.937428, 12.230801) +radius = 5.9731445 +height = 1.3822021 +sides = 64 + +[node name="Concessions_Remover" type="CSGCylinder3D" parent="Theater_Lobby/Concessions" unique_id=1467497880] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.22716236, 0) +operation = 2 +radius = 3.8359375 +height = 1.3822021 +sides = 64 + +[node name="Vending_Machine" parent="Theater_Lobby" unique_id=2081554588 instance=ExtResource("2_0ycmt")] +transform = Transform3D(-0.7028238, 0, -0.7113641, 0, 1, 0, 0.7113641, 0, -0.7028238, -12.45825, -14.5072365, 12.604542) + +[node name="SpotLight3D" type="SpotLight3D" parent="Theater_Lobby" unique_id=907999100] +transform = Transform3D(0.70710677, -0.7066617, -0.0250847, 0, -0.035475124, 0.9993706, -0.70710677, -0.7066617, -0.0250847, -0.23008403, 15.0685425, -0.23008403) +light_color = Color(1, 1, 0.80784315, 1) +light_energy = 5.69 +spot_range = 49.469852 +spot_angle = 46.013424 + +[node name="Parking_Lot" type="CSGBox3D" parent="." unique_id=2134139167] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.7695465, 0) +use_collision = true +size = Vector3(1000, 0.1, 1000) +material = SubResource("StandardMaterial3D_db4a8") + +[node name="Hallway" type="CSGBox3D" parent="." unique_id=106968509] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.3070126, 14.799974, -130.8283) +use_collision = true +size = Vector3(14.980347, 31.95459, 178.059) +material = SubResource("StandardMaterial3D_8ydkk") + +[node name="Hallway_Remover_Lower" type="CSGBox3D" parent="Hallway" unique_id=809745103] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.44136953, -10.011565, 0.657547) +operation = 2 +size = Vector3(14.021484, 9.783757, 179.51047) +material = SubResource("StandardMaterial3D_8ydkk") + +[node name="Hallway_Remover_Upper" type="CSGBox3D" parent="Hallway" unique_id=242398864] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.63553, 3.102377, -1.9037628) +operation = 2 +size = Vector3(10.456909, 10, 174.64282) +material = SubResource("StandardMaterial3D_8oqle") + +[node name="Theater_Door_Remover" type="CSGBox3D" parent="Hallway" unique_id=1283794151] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.8034687, -9.431876, 47.770287) +operation = 2 +size = Vector3(1.4380627, 2.105957, 2.993782) +material = SubResource("StandardMaterial3D_8oqle") + +[node name="Walkway_Remover" type="CSGBox3D" parent="Hallway" unique_id=912563372] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.041584015, 6.9611263, 86.24684) +operation = 2 +size = Vector3(15.200134, 6.3445196, 3.1825943) +material = SubResource("StandardMaterial3D_8oqle") + +[node name="Movie_Theater_1" type="CSGBox3D" parent="." unique_id=831381846] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 97.78119, 11.800184, 170.38565) +use_collision = true +size = Vector3(37.797, 25, 30.97313) +material = SubResource("StandardMaterial3D_x2gar") + +[node name="Movie_Screen" parent="Movie_Theater_1" unique_id=2084089049 instance=ExtResource("5_xkt4l")] +transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 8.118622, 4.5185795, 0.13967896) + +[node name="Lights" type="Node3D" parent="Movie_Theater_1" unique_id=500968549] + +[node name="ProjectorLight" type="SpotLight3D" parent="Movie_Theater_1/Lights" unique_id=812780582] +transform = Transform3D(0.35888937, 0.033111773, -0.9327926, 0.31256667, -0.9459326, 0.08668089, -0.87948877, -0.3226687, -0.3498348, -18.841343, 8.74675, 0) +shadow_enabled = true +spot_range = 9.814644 +spot_angle = 26.033304 + +[node name="CSGCylinder3D" type="CSGCylinder3D" parent="Movie_Theater_1/Lights/ProjectorLight" unique_id=1634162668] +transform = Transform3D(0.87329215, -0.3681163, 0.31913942, 0.34696484, 0.010066139, -0.93782413, 0.3420156, 0.92972505, 0.13651411, 0.6059418, 0.00035095215, -1.6929207) +radius = 0.158 +height = 3.4873047 +cone = true +material = SubResource("StandardMaterial3D_2vsgr") + +[node name="Sconces" type="Node3D" parent="Movie_Theater_1/Lights" unique_id=1695284209] + +[node name="Theater_Sconce" parent="Movie_Theater_1/Lights/Sconces" unique_id=1322548656 instance=ExtResource("3_gvfjr")] +transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 5.9841766, 5, 15.2803955) + +[node name="Theater_Sconce2" parent="Movie_Theater_1/Lights/Sconces" unique_id=1625384093 instance=ExtResource("3_gvfjr")] +transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, -2.4382477, 5, 15.2803955) + +[node name="Theater_Sconce3" parent="Movie_Theater_1/Lights/Sconces" unique_id=1871046705 instance=ExtResource("3_gvfjr")] +transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, -10.214218, 5, 15.2803955) + +[node name="Theater_Sconce4" parent="Movie_Theater_1/Lights/Sconces" unique_id=1064651022 instance=ExtResource("3_gvfjr")] +transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, -17.03846, 5, 15.2803955) + +[node name="Theater_Sconce6" parent="Movie_Theater_1/Lights/Sconces" unique_id=1758014765 instance=ExtResource("3_gvfjr")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.1218643, 5, -13.677719) + +[node name="Theater_Sconce7" parent="Movie_Theater_1/Lights/Sconces" unique_id=644784606 instance=ExtResource("3_gvfjr")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.30056, 5, -13.677719) + +[node name="Theater_Sconce8" parent="Movie_Theater_1/Lights/Sconces" unique_id=1659040567 instance=ExtResource("3_gvfjr")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -10.07653, 5, -13.677719) + +[node name="Theater_Sconce9" parent="Movie_Theater_1/Lights/Sconces" unique_id=2129730077 instance=ExtResource("3_gvfjr")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16.900772, 5, -13.677719) + +[node name="CannedLights" type="Node3D" parent="Movie_Theater_1/Lights" unique_id=1329571087] + +[node name="SpotLight3D" type="SpotLight3D" parent="Movie_Theater_1/Lights/CannedLights" unique_id=1104144210] +transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, -3.7661934, 12.015738, 0) +light_color = Color(0.99215686, 0.6666667, 0.28235295, 1) +light_energy = 7.437 +shadow_enabled = true +spot_range = 19.52553 +spot_angle = 38.0 + +[node name="SpotLight3D2" type="SpotLight3D" parent="Movie_Theater_1/Lights/CannedLights" unique_id=361658987] +transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, -12.4784155, 12.015738, 0) +light_color = Color(0.99215686, 0.6666667, 0.28235295, 1) +light_energy = 7.437 +shadow_enabled = true +spot_range = 19.52553 +spot_angle = 38.0 + +[node name="SpotLight3D3" type="SpotLight3D" parent="Movie_Theater_1/Lights/CannedLights" unique_id=1537894538] +transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, -3.7661934, 12.015738, -7.3934555) +light_color = Color(0.99215686, 0.6666667, 0.28235295, 1) +light_energy = 7.437 +shadow_enabled = true +spot_range = 19.52553 +spot_angle = 38.0 + +[node name="SpotLight3D4" type="SpotLight3D" parent="Movie_Theater_1/Lights/CannedLights" unique_id=115921589] +transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, -12.4784155, 12.015738, 10.113037) +light_color = Color(0.99215686, 0.6666667, 0.28235295, 1) +light_energy = 7.437 +shadow_enabled = true +spot_range = 19.52553 +spot_angle = 38.0 + +[node name="SpotLight3D5" type="SpotLight3D" parent="Movie_Theater_1/Lights/CannedLights" unique_id=969105357] +transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, -3.7661934, 12.015738, 10.051392) +light_color = Color(0.99215686, 0.6666667, 0.28235295, 1) +light_energy = 7.437 +shadow_enabled = true +spot_range = 19.52553 +spot_angle = 38.0 + +[node name="SpotLight3D6" type="SpotLight3D" parent="Movie_Theater_1/Lights/CannedLights" unique_id=669635646] +transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, -12.4784155, 12.015738, -9.057396) +light_color = Color(0.99215686, 0.6666667, 0.28235295, 1) +light_energy = 7.437 +shadow_enabled = true +spot_range = 19.52553 +spot_angle = 38.0 + +[node name="SpotLight3D7" type="SpotLight3D" parent="Movie_Theater_1/Lights/CannedLights" unique_id=46921404] +transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, 9.168198, 12.015738, 0) +light_color = Color(0.99215686, 0.6666667, 0.28235295, 1) +light_energy = 7.437 +shadow_enabled = true +spot_range = 19.52553 +spot_angle = 38.0 + +[node name="SpotLight3D8" type="SpotLight3D" parent="Movie_Theater_1/Lights/CannedLights" unique_id=648216538] +transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, 9.308626, 12.015738, 10.118668) +light_color = Color(0.99215686, 0.6666667, 0.28235295, 1) +light_energy = 7.437 +shadow_enabled = true +spot_range = 19.52553 +spot_angle = 38.0 + +[node name="SpotLight3D9" type="SpotLight3D" parent="Movie_Theater_1/Lights/CannedLights" unique_id=824279630] +transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, 9.168198, 12.015738, -9.4780655) +light_color = Color(0.99215686, 0.6666667, 0.28235295, 1) +light_energy = 7.437 +shadow_enabled = true +spot_range = 19.52553 +spot_angle = 38.0 + +[node name="Seats" type="Node3D" parent="Movie_Theater_1" unique_id=1389169600] + +[node name="Row_I" type="CSGBox3D" parent="Movie_Theater_1/Seats" unique_id=226166839] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -17.337456, -0.9815655, 0.15257263) +use_collision = true +size = Vector3(2.5, 4, 30.27541) + +[node name="Theater_Chair" parent="Movie_Theater_1/Seats/Row_I" unique_id=722988307 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.51704407, 2.896881, 1.2585754) + +[node name="Theater_Chair2" parent="Movie_Theater_1/Seats/Row_I" unique_id=502087103 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.51704407, 2.896881, 2.309143) + +[node name="Theater_Chair3" parent="Movie_Theater_1/Seats/Row_I" unique_id=1749015673 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.51704407, 2.896881, 3.3468018) + +[node name="Theater_Chair4" parent="Movie_Theater_1/Seats/Row_I" unique_id=1517925103 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.51704407, 2.896881, 4.3973694) + +[node name="Theater_Chair5" parent="Movie_Theater_1/Seats/Row_I" unique_id=191209889 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.51704407, 2.896881, 5.442566) + +[node name="Theater_Chair6" parent="Movie_Theater_1/Seats/Row_I" unique_id=529420369 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.51704407, 2.896881, 6.4931335) + +[node name="Theater_Chair7" parent="Movie_Theater_1/Seats/Row_I" unique_id=1967100528 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.51704407, 2.896881, 7.530792) + +[node name="Theater_Chair8" parent="Movie_Theater_1/Seats/Row_I" unique_id=996080322 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.51704407, 2.896881, 8.58136) + +[node name="Theater_Chair9" parent="Movie_Theater_1/Seats/Row_I" unique_id=708726166 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.51704407, 2.896881, -7.1264954) + +[node name="Theater_Chair10" parent="Movie_Theater_1/Seats/Row_I" unique_id=290695127 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.51704407, 2.896881, -6.0759277) + +[node name="Theater_Chair11" parent="Movie_Theater_1/Seats/Row_I" unique_id=679180916 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.51704407, 2.896881, -5.038269) + +[node name="Theater_Chair12" parent="Movie_Theater_1/Seats/Row_I" unique_id=1417867269 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.51704407, 2.896881, -3.9877014) + +[node name="Theater_Chair13" parent="Movie_Theater_1/Seats/Row_I" unique_id=1474755085 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.51704407, 2.896881, -2.942505) + +[node name="Theater_Chair14" parent="Movie_Theater_1/Seats/Row_I" unique_id=665341025 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.51704407, 2.896881, -1.8919373) + +[node name="Theater_Chair15" parent="Movie_Theater_1/Seats/Row_I" unique_id=740375118 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.51704407, 2.896881, -0.85427856) + +[node name="Theater_Chair16" parent="Movie_Theater_1/Seats/Row_I" unique_id=1095931563 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.51704407, 2.896881, 0.19628906) + +[node name="Theater_Chair17" parent="Movie_Theater_1/Seats/Row_I" unique_id=255084441 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.51704407, 2.896881, -13.315002) + +[node name="Theater_Chair18" parent="Movie_Theater_1/Seats/Row_I" unique_id=1988362967 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.51704407, 2.896881, -12.2773285) + +[node name="Theater_Chair19" parent="Movie_Theater_1/Seats/Row_I" unique_id=1481678609 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.51704407, 2.896881, -11.226761) + +[node name="Theater_Chair20" parent="Movie_Theater_1/Seats/Row_I" unique_id=2146131503 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.51704407, 2.896881, 12.537949) + +[node name="Theater_Chair21" parent="Movie_Theater_1/Seats/Row_I" unique_id=487996913 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.51704407, 2.896881, 13.575623) + +[node name="Theater_Chair22" parent="Movie_Theater_1/Seats/Row_I" unique_id=1146880922 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.51704407, 2.896881, 14.62619) + +[node name="Row_H" type="CSGBox3D" parent="Movie_Theater_1/Seats" unique_id=927429944] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14.82058, -1.2401304, 0.14764404) +use_collision = true +size = Vector3(2.5, 3.5, 30.283329) + +[node name="Theater_Chair" parent="Movie_Theater_1/Seats/Row_H" unique_id=1449109256 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.56251526, 2.65623, 1.2585754) + +[node name="Theater_Chair2" parent="Movie_Theater_1/Seats/Row_H" unique_id=213220259 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.56251526, 2.65623, 2.309143) + +[node name="Theater_Chair3" parent="Movie_Theater_1/Seats/Row_H" unique_id=1813421371 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.56251526, 2.65623, 3.3468018) + +[node name="Theater_Chair4" parent="Movie_Theater_1/Seats/Row_H" unique_id=804978451 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.56251526, 2.65623, 4.3973694) + +[node name="Theater_Chair5" parent="Movie_Theater_1/Seats/Row_H" unique_id=1174065957 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.56251526, 2.65623, 5.442566) + +[node name="Theater_Chair6" parent="Movie_Theater_1/Seats/Row_H" unique_id=1023250511 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.56251526, 2.65623, 6.4931335) + +[node name="Theater_Chair7" parent="Movie_Theater_1/Seats/Row_H" unique_id=1102849387 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.56251526, 2.65623, 7.530792) + +[node name="Theater_Chair8" parent="Movie_Theater_1/Seats/Row_H" unique_id=1407847124 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.56251526, 2.65623, 8.58136) + +[node name="Theater_Chair9" parent="Movie_Theater_1/Seats/Row_H" unique_id=1331654080 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.56251526, 2.65623, -7.1264954) + +[node name="Theater_Chair10" parent="Movie_Theater_1/Seats/Row_H" unique_id=2049315942 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.56251526, 2.65623, -6.0759277) + +[node name="Theater_Chair11" parent="Movie_Theater_1/Seats/Row_H" unique_id=731497636 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.56251526, 2.65623, -5.038269) + +[node name="Theater_Chair12" parent="Movie_Theater_1/Seats/Row_H" unique_id=1355173231 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.56251526, 2.65623, -3.9877014) + +[node name="Theater_Chair13" parent="Movie_Theater_1/Seats/Row_H" unique_id=2106659943 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.56251526, 2.65623, -2.942505) + +[node name="Theater_Chair14" parent="Movie_Theater_1/Seats/Row_H" unique_id=305787248 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.56251526, 2.65623, -1.8919373) + +[node name="Theater_Chair15" parent="Movie_Theater_1/Seats/Row_H" unique_id=685787490 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.56251526, 2.65623, -0.85427856) + +[node name="Theater_Chair16" parent="Movie_Theater_1/Seats/Row_H" unique_id=1528117706 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.56251526, 2.65623, 0.19628906) + +[node name="Theater_Chair17" parent="Movie_Theater_1/Seats/Row_H" unique_id=347547999 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5361328, 2.644557, -13.315002) + +[node name="Theater_Chair18" parent="Movie_Theater_1/Seats/Row_H" unique_id=1182848122 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5361328, 2.644557, -12.2773285) + +[node name="Theater_Chair19" parent="Movie_Theater_1/Seats/Row_H" unique_id=708337562 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5361328, 2.644557, -11.226761) + +[node name="Theater_Chair20" parent="Movie_Theater_1/Seats/Row_H" unique_id=437032892 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5361328, 2.644557, 12.540527) + +[node name="Theater_Chair21" parent="Movie_Theater_1/Seats/Row_H" unique_id=2122566048 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5361328, 2.644557, 13.578201) + +[node name="Theater_Chair22" parent="Movie_Theater_1/Seats/Row_H" unique_id=1650536202 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5361328, 2.644557, 14.628769) + +[node name="Row_G" type="CSGBox3D" parent="Movie_Theater_1/Seats" unique_id=206488193] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -12.061493, -1.4833155, 0.1427002) +use_collision = true +size = Vector3(2.5, 3, 30.277588) + +[node name="Theater_Chair" parent="Movie_Theater_1/Seats/Row_G" unique_id=726635976 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.80844116, 2.4117918, 1.2585754) + +[node name="Theater_Chair2" parent="Movie_Theater_1/Seats/Row_G" unique_id=628813261 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.80844116, 2.4117918, 2.309143) + +[node name="Theater_Chair3" parent="Movie_Theater_1/Seats/Row_G" unique_id=409028175 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.80844116, 2.4117918, 3.3468018) + +[node name="Theater_Chair4" parent="Movie_Theater_1/Seats/Row_G" unique_id=672075939 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.80844116, 2.4117918, 4.3973694) + +[node name="Theater_Chair5" parent="Movie_Theater_1/Seats/Row_G" unique_id=822862762 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.80844116, 2.4117918, 5.442566) + +[node name="Theater_Chair6" parent="Movie_Theater_1/Seats/Row_G" unique_id=1660368658 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.80844116, 2.4117918, 6.4931335) + +[node name="Theater_Chair7" parent="Movie_Theater_1/Seats/Row_G" unique_id=1061593836 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.80844116, 2.4117918, 7.530792) + +[node name="Theater_Chair8" parent="Movie_Theater_1/Seats/Row_G" unique_id=1646380415 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.80844116, 2.4117918, 8.58136) + +[node name="Theater_Chair9" parent="Movie_Theater_1/Seats/Row_G" unique_id=920750944 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.80844116, 2.4117918, -7.1264954) + +[node name="Theater_Chair10" parent="Movie_Theater_1/Seats/Row_G" unique_id=749102209 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.80844116, 2.4117918, -6.0759277) + +[node name="Theater_Chair11" parent="Movie_Theater_1/Seats/Row_G" unique_id=1011725878 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.80844116, 2.4117918, -5.038269) + +[node name="Theater_Chair12" parent="Movie_Theater_1/Seats/Row_G" unique_id=870743525 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.80844116, 2.4117918, -3.9877014) + +[node name="Theater_Chair13" parent="Movie_Theater_1/Seats/Row_G" unique_id=1841147628 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.80844116, 2.4117918, -2.942505) + +[node name="Theater_Chair14" parent="Movie_Theater_1/Seats/Row_G" unique_id=727247172 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.80844116, 2.4117918, -1.8919373) + +[node name="Theater_Chair15" parent="Movie_Theater_1/Seats/Row_G" unique_id=1065694998 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.80844116, 2.4117918, -0.85427856) + +[node name="Theater_Chair16" parent="Movie_Theater_1/Seats/Row_G" unique_id=430576230 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.80844116, 2.4117918, 0.19628906) + +[node name="Theater_Chair17" parent="Movie_Theater_1/Seats/Row_G" unique_id=1084983904 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.7820587, 2.4048538, -13.315002) + +[node name="Theater_Chair18" parent="Movie_Theater_1/Seats/Row_G" unique_id=1045907279 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.7820587, 2.4048538, -12.2773285) + +[node name="Theater_Chair19" parent="Movie_Theater_1/Seats/Row_G" unique_id=2029244482 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.7820587, 2.4048538, -11.226761) + +[node name="Theater_Chair20" parent="Movie_Theater_1/Seats/Row_G" unique_id=274498171 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.7820587, 2.4048538, 12.547226) + +[node name="Theater_Chair21" parent="Movie_Theater_1/Seats/Row_G" unique_id=1698183024 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.7820587, 2.4048538, 13.5849) + +[node name="Theater_Chair22" parent="Movie_Theater_1/Seats/Row_G" unique_id=250462164 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.7820587, 2.4048538, 14.635468) + +[node name="Row_F" type="CSGBox3D" parent="Movie_Theater_1/Seats" unique_id=385188589] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.570969, -1.731595, 0.17785645) +use_collision = true +size = Vector3(2.5, 2.5, 30.336182) + +[node name="Theater_Chair" parent="Movie_Theater_1/Seats/Row_F" unique_id=807968308 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5286026, 2.1668825, 1.2585754) + +[node name="Theater_Chair2" parent="Movie_Theater_1/Seats/Row_F" unique_id=180097623 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5286026, 2.1668825, 2.309143) + +[node name="Theater_Chair3" parent="Movie_Theater_1/Seats/Row_F" unique_id=266151405 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5286026, 2.1668825, 3.3468018) + +[node name="Theater_Chair4" parent="Movie_Theater_1/Seats/Row_F" unique_id=1946782460 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5286026, 2.1668825, 4.3973694) + +[node name="Theater_Chair5" parent="Movie_Theater_1/Seats/Row_F" unique_id=310392670 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5286026, 2.1668825, 5.442566) + +[node name="Theater_Chair6" parent="Movie_Theater_1/Seats/Row_F" unique_id=477015528 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5286026, 2.1668825, 6.4931335) + +[node name="Theater_Chair7" parent="Movie_Theater_1/Seats/Row_F" unique_id=1336561427 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5286026, 2.1668825, 7.530792) + +[node name="Theater_Chair8" parent="Movie_Theater_1/Seats/Row_F" unique_id=1673617398 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5286026, 2.1668825, 8.58136) + +[node name="Theater_Chair9" parent="Movie_Theater_1/Seats/Row_F" unique_id=1934964048 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5286026, 2.1668825, -7.1264954) + +[node name="Theater_Chair10" parent="Movie_Theater_1/Seats/Row_F" unique_id=165701364 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5286026, 2.1668825, -6.0759277) + +[node name="Theater_Chair11" parent="Movie_Theater_1/Seats/Row_F" unique_id=643609348 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5286026, 2.1668825, -5.038269) + +[node name="Theater_Chair12" parent="Movie_Theater_1/Seats/Row_F" unique_id=503574646 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5286026, 2.1668825, -3.9877014) + +[node name="Theater_Chair13" parent="Movie_Theater_1/Seats/Row_F" unique_id=1710201467 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5286026, 2.1668825, -2.942505) + +[node name="Theater_Chair14" parent="Movie_Theater_1/Seats/Row_F" unique_id=1387785696 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5286026, 2.1668825, -1.8919373) + +[node name="Theater_Chair15" parent="Movie_Theater_1/Seats/Row_F" unique_id=427025291 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5286026, 2.1668825, -0.85427856) + +[node name="Theater_Chair16" parent="Movie_Theater_1/Seats/Row_F" unique_id=226982164 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5286026, 2.1668825, 0.19628906) + +[node name="Theater_Chair17" parent="Movie_Theater_1/Seats/Row_F" unique_id=246531020 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.50222015, 2.1668167, -13.315002) + +[node name="Theater_Chair18" parent="Movie_Theater_1/Seats/Row_F" unique_id=1854390875 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.50222015, 2.1668167, -12.2773285) + +[node name="Theater_Chair19" parent="Movie_Theater_1/Seats/Row_F" unique_id=1205563075 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.50222015, 2.1668167, -11.226761) + +[node name="Theater_Chair20" parent="Movie_Theater_1/Seats/Row_F" unique_id=32324015 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.50222015, 2.1668167, 12.512421) + +[node name="Theater_Chair21" parent="Movie_Theater_1/Seats/Row_F" unique_id=1006436821 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.50222015, 2.1668167, 13.550095) + +[node name="Theater_Chair22" parent="Movie_Theater_1/Seats/Row_F" unique_id=1177270481 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.50222015, 2.1668167, 14.600662) + +[node name="Row_E" type="CSGBox3D" parent="Movie_Theater_1/Seats" unique_id=2068906918] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7.0678864, -1.9863272, 0.15142822) +use_collision = true +size = Vector3(2.5, 2, 30.271606) + +[node name="Theater_Chair" parent="Movie_Theater_1/Seats/Row_E" unique_id=395833165 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5439682, 1.9093542, 1.2585754) + +[node name="Theater_Chair2" parent="Movie_Theater_1/Seats/Row_E" unique_id=1897313542 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5439682, 1.9093542, 2.309143) + +[node name="Theater_Chair3" parent="Movie_Theater_1/Seats/Row_E" unique_id=1073269776 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5439682, 1.9093542, 3.3468018) + +[node name="Theater_Chair4" parent="Movie_Theater_1/Seats/Row_E" unique_id=2141337770 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5439682, 1.9093542, 4.3973694) + +[node name="Theater_Chair5" parent="Movie_Theater_1/Seats/Row_E" unique_id=1481668550 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5439682, 1.9093542, 5.442566) + +[node name="Theater_Chair6" parent="Movie_Theater_1/Seats/Row_E" unique_id=604790338 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5439682, 1.9093542, 6.4931335) + +[node name="Theater_Chair7" parent="Movie_Theater_1/Seats/Row_E" unique_id=1773101084 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5439682, 1.9093542, 7.530792) + +[node name="Theater_Chair8" parent="Movie_Theater_1/Seats/Row_E" unique_id=1876493636 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5439682, 1.9093542, 8.58136) + +[node name="Theater_Chair9" parent="Movie_Theater_1/Seats/Row_E" unique_id=642717783 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5439682, 1.9093542, -7.1264954) + +[node name="Theater_Chair10" parent="Movie_Theater_1/Seats/Row_E" unique_id=1961409159 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5439682, 1.9093542, -6.0759277) + +[node name="Theater_Chair11" parent="Movie_Theater_1/Seats/Row_E" unique_id=206933568 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5439682, 1.9093542, -5.038269) + +[node name="Theater_Chair12" parent="Movie_Theater_1/Seats/Row_E" unique_id=1816899335 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5439682, 1.9093542, -3.9877014) + +[node name="Theater_Chair13" parent="Movie_Theater_1/Seats/Row_E" unique_id=577682399 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5439682, 1.9093542, -2.942505) + +[node name="Theater_Chair14" parent="Movie_Theater_1/Seats/Row_E" unique_id=1712669338 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5439682, 1.9093542, -1.8919373) + +[node name="Theater_Chair15" parent="Movie_Theater_1/Seats/Row_E" unique_id=409800519 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5439682, 1.9093542, -0.85427856) + +[node name="Theater_Chair16" parent="Movie_Theater_1/Seats/Row_E" unique_id=567003660 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5439682, 1.9093542, 0.19628906) + +[node name="Theater_Chair17" parent="Movie_Theater_1/Seats/Row_E" unique_id=844324801 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.51758575, 1.9095926, -13.315002) + +[node name="Theater_Chair18" parent="Movie_Theater_1/Seats/Row_E" unique_id=773143072 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.51758575, 1.9095926, -12.2773285) + +[node name="Theater_Chair19" parent="Movie_Theater_1/Seats/Row_E" unique_id=1051201838 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.51758575, 1.9095926, -11.226761) + +[node name="Theater_Chair20" parent="Movie_Theater_1/Seats/Row_E" unique_id=1622050848 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.51758575, 1.9095926, 12.536957) + +[node name="Theater_Chair21" parent="Movie_Theater_1/Seats/Row_E" unique_id=1473839917 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.51758575, 1.9095926, 13.574631) + +[node name="Theater_Chair22" parent="Movie_Theater_1/Seats/Row_E" unique_id=803287418 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.51758575, 1.9095926, 14.625198) + +[node name="Row_D" type="CSGBox3D" parent="Movie_Theater_1/Seats" unique_id=1948414428] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.5573273, -2.238984, 0.79985046) +use_collision = true +size = Vector3(2.5264893, 1.5, 22.790829) + +[node name="Theater_Chair" parent="Movie_Theater_1/Seats/Row_D" unique_id=1057868695 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5401459, 1.6473646, 0.43733215) + +[node name="Theater_Chair2" parent="Movie_Theater_1/Seats/Row_D" unique_id=1526888829 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5401459, 1.6473646, 1.4878998) + +[node name="Theater_Chair3" parent="Movie_Theater_1/Seats/Row_D" unique_id=346086418 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5401459, 1.6473646, 2.5255737) + +[node name="Theater_Chair4" parent="Movie_Theater_1/Seats/Row_D" unique_id=157605840 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5401459, 1.6473646, 3.5761414) + +[node name="Theater_Chair5" parent="Movie_Theater_1/Seats/Row_D" unique_id=587036965 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5401459, 1.6473646, 4.6213226) + +[node name="Theater_Chair6" parent="Movie_Theater_1/Seats/Row_D" unique_id=1476913727 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5401459, 1.6473646, 5.6718903) + +[node name="Theater_Chair7" parent="Movie_Theater_1/Seats/Row_D" unique_id=1835009659 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5401459, 1.6473646, 6.709564) + +[node name="Theater_Chair8" parent="Movie_Theater_1/Seats/Row_D" unique_id=2013174051 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5401459, 1.6473646, 7.760132) + +[node name="Theater_Chair9" parent="Movie_Theater_1/Seats/Row_D" unique_id=30980564 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5401459, 1.6473646, -7.9477234) + +[node name="Theater_Chair10" parent="Movie_Theater_1/Seats/Row_D" unique_id=365663403 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5401459, 1.6473646, -6.897156) + +[node name="Theater_Chair11" parent="Movie_Theater_1/Seats/Row_D" unique_id=442073176 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5401459, 1.6473646, -5.859482) + +[node name="Theater_Chair12" parent="Movie_Theater_1/Seats/Row_D" unique_id=2085289815 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5401459, 1.6473646, -4.808914) + +[node name="Theater_Chair13" parent="Movie_Theater_1/Seats/Row_D" unique_id=929639197 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5401459, 1.6473646, -3.763733) + +[node name="Theater_Chair14" parent="Movie_Theater_1/Seats/Row_D" unique_id=491435039 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5401459, 1.6473646, -2.7131653) + +[node name="Theater_Chair15" parent="Movie_Theater_1/Seats/Row_D" unique_id=147212596 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5401459, 1.6473646, -1.6754913) + +[node name="Theater_Chair16" parent="Movie_Theater_1/Seats/Row_D" unique_id=1112612467 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5401459, 1.6473646, -0.6249237) + +[node name="Row_C" type="CSGBox3D" parent="Movie_Theater_1/Seats" unique_id=1045888775] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.0430145, -2.4966059, 0.7991333) +use_collision = true +size = Vector3(2.5, 1, 22.787271) + +[node name="Theater_Chair" parent="Movie_Theater_1/Seats/Row_C" unique_id=445653510 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.57146454, 1.4013596, 0.59225464) + +[node name="Theater_Chair2" parent="Movie_Theater_1/Seats/Row_C" unique_id=397909924 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.57146454, 1.4013596, 1.6428223) + +[node name="Theater_Chair3" parent="Movie_Theater_1/Seats/Row_C" unique_id=114538201 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.57146454, 1.4013596, 2.6804962) + +[node name="Theater_Chair4" parent="Movie_Theater_1/Seats/Row_C" unique_id=1175273276 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.57146454, 1.4013596, 3.7310638) + +[node name="Theater_Chair5" parent="Movie_Theater_1/Seats/Row_C" unique_id=1346337629 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.57146454, 1.4013596, 4.776245) + +[node name="Theater_Chair6" parent="Movie_Theater_1/Seats/Row_C" unique_id=593303374 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.57146454, 1.4013596, 5.8268127) + +[node name="Theater_Chair7" parent="Movie_Theater_1/Seats/Row_C" unique_id=1315862180 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.57146454, 1.4013596, 6.8644867) + +[node name="Theater_Chair8" parent="Movie_Theater_1/Seats/Row_C" unique_id=233299647 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.57146454, 1.4013596, 7.9150543) + +[node name="Theater_Chair9" parent="Movie_Theater_1/Seats/Row_C" unique_id=970482049 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.57146454, 1.4013596, -7.792801) + +[node name="Theater_Chair10" parent="Movie_Theater_1/Seats/Row_C" unique_id=405894172 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.57146454, 1.4013596, -6.7422333) + +[node name="Theater_Chair11" parent="Movie_Theater_1/Seats/Row_C" unique_id=36737883 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.57146454, 1.4013596, -5.7045593) + +[node name="Theater_Chair12" parent="Movie_Theater_1/Seats/Row_C" unique_id=127526669 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.57146454, 1.4013596, -4.6539917) + +[node name="Theater_Chair13" parent="Movie_Theater_1/Seats/Row_C" unique_id=644041293 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.57146454, 1.4013596, -3.6088104) + +[node name="Theater_Chair14" parent="Movie_Theater_1/Seats/Row_C" unique_id=1571012551 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.57146454, 1.4013596, -2.5582428) + +[node name="Theater_Chair15" parent="Movie_Theater_1/Seats/Row_C" unique_id=988392295 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.57146454, 1.4013596, -1.5205688) + +[node name="Theater_Chair16" parent="Movie_Theater_1/Seats/Row_C" unique_id=828351879 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.57146454, 1.4013596, -0.47000122) + +[node name="Row_B" type="CSGBox3D" parent="Movie_Theater_1/Seats" unique_id=1634086874] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.4418335, -2.7507305, 0.8029938) +use_collision = true +size = Vector3(2.5, 0.5, 22.80672) + +[node name="Theater_Chair" parent="Movie_Theater_1/Seats/Row_B" unique_id=91418432 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.53476715, 1.1465788, 0.46437073) + +[node name="Theater_Chair2" parent="Movie_Theater_1/Seats/Row_B" unique_id=394146844 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.53476715, 1.1465788, 1.5149384) + +[node name="Theater_Chair3" parent="Movie_Theater_1/Seats/Row_B" unique_id=1094505210 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.53476715, 1.1465788, 2.552597) + +[node name="Theater_Chair4" parent="Movie_Theater_1/Seats/Row_B" unique_id=111727650 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.53476715, 1.1465788, 3.6031647) + +[node name="Theater_Chair5" parent="Movie_Theater_1/Seats/Row_B" unique_id=1441888925 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.53476715, 1.1465788, 4.648361) + +[node name="Theater_Chair6" parent="Movie_Theater_1/Seats/Row_B" unique_id=216018879 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.53476715, 1.1465788, 5.698929) + +[node name="Theater_Chair7" parent="Movie_Theater_1/Seats/Row_B" unique_id=1607587806 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.53476715, 1.1465788, 6.7365875) + +[node name="Theater_Chair8" parent="Movie_Theater_1/Seats/Row_B" unique_id=1417026855 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.53476715, 1.1465788, 7.787155) + +[node name="Theater_Chair9" parent="Movie_Theater_1/Seats/Row_B" unique_id=1283965202 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.53476715, 1.1465788, -7.9207) + +[node name="Theater_Chair10" parent="Movie_Theater_1/Seats/Row_B" unique_id=1502565076 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.53476715, 1.1465788, -6.8701324) + +[node name="Theater_Chair11" parent="Movie_Theater_1/Seats/Row_B" unique_id=1019667163 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.53476715, 1.1465788, -5.8324738) + +[node name="Theater_Chair12" parent="Movie_Theater_1/Seats/Row_B" unique_id=490668946 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.53476715, 1.1465788, -4.781906) + +[node name="Theater_Chair13" parent="Movie_Theater_1/Seats/Row_B" unique_id=523804233 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.53476715, 1.1465788, -3.7367096) + +[node name="Theater_Chair14" parent="Movie_Theater_1/Seats/Row_B" unique_id=1966291697 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.53476715, 1.1465788, -2.686142) + +[node name="Theater_Chair15" parent="Movie_Theater_1/Seats/Row_B" unique_id=739529338 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.53476715, 1.1465788, -1.6484833) + +[node name="Theater_Chair16" parent="Movie_Theater_1/Seats/Row_B" unique_id=1897284486 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.53476715, 1.1465788, -0.59791565) + +[node name="Row_A" type="CSGBox3D" parent="Movie_Theater_1/Seats" unique_id=109373873] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.4368286, -2.9844885, 0.798996) +use_collision = true +size = Vector3(2.5, 0.01, 22.76771) + +[node name="Theater_Chair" parent="Movie_Theater_1/Seats/Row_A" unique_id=463257155 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.0476379, 0.9134722, 0.43927002) + +[node name="Theater_Chair2" parent="Movie_Theater_1/Seats/Row_A" unique_id=272461847 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.0476379, 0.9134722, 1.4898376) + +[node name="Theater_Chair3" parent="Movie_Theater_1/Seats/Row_A" unique_id=1614953366 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.0476379, 0.9134722, 2.5274963) + +[node name="Theater_Chair4" parent="Movie_Theater_1/Seats/Row_A" unique_id=997483023 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.0476379, 0.9134722, 3.578064) + +[node name="Theater_Chair5" parent="Movie_Theater_1/Seats/Row_A" unique_id=1518984919 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.0476379, 0.9134722, 4.6232605) + +[node name="Theater_Chair6" parent="Movie_Theater_1/Seats/Row_A" unique_id=1141234983 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.0476379, 0.9134722, 5.673828) + +[node name="Theater_Chair7" parent="Movie_Theater_1/Seats/Row_A" unique_id=1170688685 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.0476379, 0.9134722, 6.711487) + +[node name="Theater_Chair8" parent="Movie_Theater_1/Seats/Row_A" unique_id=1432123586 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.0476379, 0.9134722, 7.7620544) + +[node name="Theater_Chair9" parent="Movie_Theater_1/Seats/Row_A" unique_id=1473628026 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.0476379, 0.9134722, -7.945801) + +[node name="Theater_Chair10" parent="Movie_Theater_1/Seats/Row_A" unique_id=1462121226 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.0476379, 0.9134722, -6.895233) + +[node name="Theater_Chair11" parent="Movie_Theater_1/Seats/Row_A" unique_id=558854492 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.0476379, 0.9134722, -5.8575745) + +[node name="Theater_Chair12" parent="Movie_Theater_1/Seats/Row_A" unique_id=1047091668 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.0476379, 0.9134722, -4.807007) + +[node name="Theater_Chair13" parent="Movie_Theater_1/Seats/Row_A" unique_id=1377895084 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.0476379, 0.9134722, -3.7618103) + +[node name="Theater_Chair14" parent="Movie_Theater_1/Seats/Row_A" unique_id=1587555259 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.0476379, 0.9134722, -2.7112427) + +[node name="Theater_Chair15" parent="Movie_Theater_1/Seats/Row_A" unique_id=1622928366 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.0476379, 0.9134722, -1.673584) + +[node name="Theater_Chair16" parent="Movie_Theater_1/Seats/Row_A" unique_id=1520925720 instance=ExtResource("3_db4a8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.0476379, 0.9134722, -0.62301636) + +[node name="Step_Between" type="CSGBox3D" parent="Movie_Theater_1/Seats" unique_id=334825002] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -15.458405, 0.63889885, -9.038818) +use_collision = true +size = Vector3(1.25, 0.25, 3.122) + +[node name="Step_Between2" type="CSGBox3D" parent="Movie_Theater_1/Seats" unique_id=1435939837] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -12.948807, 0.13862896, -9.038818) +use_collision = true +size = Vector3(1.25, 0.25, 3.122) + +[node name="Step_Between3" type="CSGBox3D" parent="Movie_Theater_1/Seats" unique_id=1046925776] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -10.188324, -0.35928822, -9.038818) +use_collision = true +size = Vector3(1.25, 0.25, 3.122) + +[node name="Step_Between4" type="CSGBox3D" parent="Movie_Theater_1/Seats" unique_id=904397221] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7.678726, -0.8595581, -9.038818) +use_collision = true +size = Vector3(1.25, 0.25, 3.122) + +[node name="Step_Between5" type="CSGBox3D" parent="Movie_Theater_1/Seats" unique_id=1013004703] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.187393, -1.3633022, -9.038818) +use_collision = true +size = Vector3(1.25, 0.25, 3.122) + +[node name="Step_Between6" type="CSGBox3D" parent="Movie_Theater_1/Seats" unique_id=2026103498] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.6777954, -1.8681593, -9.038818) +use_collision = true +size = Vector3(1.25, 0.25, 3.122) + +[node name="Step_Between7" type="CSGBox3D" parent="Movie_Theater_1/Seats" unique_id=2013813652] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.16989899, -2.3745651, -9.038818) +use_collision = true +size = Vector3(1.25, 0.25, 3.122) + +[node name="Step_Between8" type="CSGBox3D" parent="Movie_Theater_1/Seats" unique_id=1164980350] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.3396988, -2.874835, -9.038818) +use_collision = true +size = Vector3(1.25, 0.25, 3.122) + +[node name="Step_Between9" type="CSGBox3D" parent="Movie_Theater_1/Seats" unique_id=1608788843] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -15.458405, 0.63889885, 10.634628) +use_collision = true +size = Vector3(1.25, 0.25, 3.122) + +[node name="Step_Between10" type="CSGBox3D" parent="Movie_Theater_1/Seats" unique_id=1145550248] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -12.948807, 0.13862896, 10.634628) +use_collision = true +size = Vector3(1.25, 0.25, 3.122) + +[node name="Step_Between11" type="CSGBox3D" parent="Movie_Theater_1/Seats" unique_id=1370891041] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -10.188324, -0.35928822, 10.634628) +use_collision = true +size = Vector3(1.25, 0.25, 3.122) + +[node name="Step_Between12" type="CSGBox3D" parent="Movie_Theater_1/Seats" unique_id=639845438] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7.678726, -0.8595581, 10.634628) +use_collision = true +size = Vector3(1.25, 0.25, 3.122) + +[node name="Step_Between13" type="CSGBox3D" parent="Movie_Theater_1/Seats" unique_id=2033284161] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.187393, -1.3633022, 10.634628) +use_collision = true +size = Vector3(1.25, 0.25, 3.122) + +[node name="Step_Between14" type="CSGBox3D" parent="Movie_Theater_1/Seats" unique_id=1466075678] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.6777954, -1.8681593, 10.634628) +use_collision = true +size = Vector3(1.25, 0.25, 3.122) + +[node name="Step_Between15" type="CSGBox3D" parent="Movie_Theater_1/Seats" unique_id=206327162] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.16989899, -2.3745651, 10.634628) +use_collision = true +size = Vector3(1.25, 0.25, 3.122) + +[node name="Step_Between16" type="CSGBox3D" parent="Movie_Theater_1/Seats" unique_id=1553370397] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.3396988, -2.874835, 10.634628) +use_collision = true +size = Vector3(1.25, 0.25, 3.122) + +[node name="Theater_1_Remover" type="CSGBox3D" parent="Movie_Theater_1" unique_id=829666503] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.2265778, 4.524849, 0.7987366) +operation = 2 +size = Vector3(26.744925, 15, 28.96849) +material = SubResource("StandardMaterial3D_x2gar") + +[node name="EntranceRamp" type="CSGBox3D" parent="Movie_Theater_1" unique_id=1991794728] +transform = Transform3D(0.93969244, -0.34202006, 0, 0.34202006, 0.93969244, 0, 0, 0, 1, -7.288368, -4.4157815, -12.131363) +operation = 2 +size = Vector3(19.367401, 3.944276, 3.0818405) + +[node name="EntranceRamp2" type="CSGBox3D" parent="Movie_Theater_1" unique_id=2026643291] +transform = Transform3D(0.93969244, -0.34202006, 0, 0.34202006, 0.93969244, 0, 0, 0, 1, -7.288368, -4.4157815, 13.732178) +operation = 2 +size = Vector3(19.367401, 3.944276, 3.0818405) + +[node name="Entryway" type="CSGBox3D" parent="Movie_Theater_1" unique_id=1288872499] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -17.141068, -7.520294, 0.7771759) +operation = 2 +size = Vector3(2.8840942, 4.0966687, 28.989769) + +[node name="DoorFrame" type="CSGBox3D" parent="Movie_Theater_1" unique_id=2117977548] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -18.642456, -8.23629, 0) +operation = 2 +size = Vector3(1, 2.6282048, 3) + +[node name="Projector_Window" type="CSGBox3D" parent="Movie_Theater_1" unique_id=618014163] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -18.75, 8.88, 0) +operation = 2 +size = Vector3(0.40631104, 1, 2.647583) + +[node name="Main_Theater" type="CSGBox3D" parent="." unique_id=72931458] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 81.10857, 23.305374, -1.9605103) +use_collision = true +size = Vector3(100.991, 50, 160.095) +material = SubResource("StandardMaterial3D_8oqle") + +[node name="Theater_Space" type="CSGBox3D" parent="Main_Theater" unique_id=945353369] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.43307495, 0, 1.402832) +operation = 2 +size = Vector3(95.863, 48, 156.907) +material = SubResource("StandardMaterial3D_8oqle") + +[node name="Theater_Entrance_Lower" type="CSGBox3D" parent="Main_Theater" unique_id=36557364] +transform = Transform3D(0.99997723, 0, 0.006806746, 0, 1, 0, -0.006806746, 0, 0.99997723, -49.544823, -19.883251, 1.6310108) +operation = 2 +size = Vector3(4.7887497, 7.9759674, 20.53538) +material = SubResource("StandardMaterial3D_8oqle") + +[node name="Theater_Entrance_Upper" type="CSGBox3D" parent="Main_Theater" unique_id=1656337541] +transform = Transform3D(0.99997723, 0, 0.006806746, 0, 1, 0, -0.006806746, 0, 0.99997723, -49.536457, -3.0913754, -17.429161) +operation = 2 +size = Vector3(4.7887497, 8.84523, 6.744056) +material = SubResource("StandardMaterial3D_8oqle") + +[node name="Theater_Entrance_Upper2" type="CSGBox3D" parent="Main_Theater" unique_id=1744852489] +transform = Transform3D(0.99997723, 0, 0.006806746, 0, 1, 0, -0.006806746, 0, 0.99997723, -49.536, -3.0910797, 17.429) +operation = 2 +size = Vector3(4.7887497, 8.84523, 6.744056) +material = SubResource("StandardMaterial3D_8oqle") + +[node name="Backstage" type="CSGBox3D" parent="." unique_id=269958656] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 157.557, 12.933044, -1.6769409) +use_collision = true +size = Vector3(55.26477, 35.86609, 160.98828) +material = SubResource("StandardMaterial3D_8oqle") + +[node name="Backstage_Remover" type="CSGBox3D" parent="Backstage" unique_id=1713130161] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.5661011, 0) +operation = 2 +size = Vector3(55, 29.372437, 160) +material = SubResource("StandardMaterial3D_8oqle") diff --git a/scenes/levels/apathy.tscn b/scenes/levels/apathy.tscn new file mode 100644 index 0000000..4483f0c --- /dev/null +++ b/scenes/levels/apathy.tscn @@ -0,0 +1,34 @@ +[gd_scene load_steps=5 format=3 uid="uid://bbillxtmjxkoi"] + +[ext_resource type="PackedScene" uid="uid://ser0oa3o1n56" path="res://scenes/player/Player.tscn" id="1_omx3t"] + +[sub_resource type="Environment" id="Environment_omx3t"] +background_mode = 1 +background_color = Color(1, 1, 1, 1) + +[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_omx3t"] +emission_shape = 3 +emission_box_extents = Vector3(1, 1, 1) +gravity = Vector3(0, -1, 0) + +[sub_resource type="BoxMesh" id="BoxMesh_omx3t"] + +[node name="APATHY" type="Node"] + +[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +environment = SubResource("Environment_omx3t") + +[node name="Player" parent="." instance=ExtResource("1_omx3t")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.55077, -4.83193) + +[node name="JunkGenerator" type="GPUParticles3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -23.7467, 21.5856, -35.8718) +lifetime = 6.45 +speed_scale = 1.34 +process_material = SubResource("ParticleProcessMaterial_omx3t") +draw_pass_1 = SubResource("BoxMesh_omx3t") + +[node name="TheStretch" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -500.547) +use_collision = true +size = Vector3(30, 1, 1000) diff --git a/scenes/levels/architecture_vibe_test.tscn b/scenes/levels/architecture_vibe_test.tscn new file mode 100644 index 0000000..4ac5032 --- /dev/null +++ b/scenes/levels/architecture_vibe_test.tscn @@ -0,0 +1,118 @@ +[gd_scene load_steps=5 format=3 uid="uid://cswigbvoo701q"] + +[ext_resource type="PackedScene" uid="uid://ser0oa3o1n56" path="res://scenes/player/Player.tscn" id="1_n2a8t"] + +[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_n2a8t"] +sky_top_color = Color(0.07598422, 0.44533664, 0.5376834, 1) +sky_horizon_color = Color(0.9473533, 0.923166, 0.9265622, 1) + +[sub_resource type="Sky" id="Sky_sdn1n"] +sky_material = SubResource("ProceduralSkyMaterial_n2a8t") + +[sub_resource type="Environment" id="Environment_8bj45"] +background_mode = 2 +background_energy_multiplier = 2.0 +sky = SubResource("Sky_sdn1n") +volumetric_fog_enabled = true +volumetric_fog_density = 0.0154 +volumetric_fog_emission = Color(1, 1, 1, 1) + +[node name="Architecture_Vibe_Test" type="Node"] + +[node name="Vibe_Eminator" type="WorldEnvironment" parent="."] +environment = SubResource("Environment_8bj45") + +[node name="Light_Main" type="DirectionalLight3D" parent="."] +transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, 0, 0, 0) + +[node name="Player" parent="." instance=ExtResource("1_n2a8t")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.7628984, 0) + +[node name="Floor" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.6062012, 0, 1.2001953) +use_collision = true +size = Vector3(100, 1, 100) + +[node name="Structures" type="Node" parent="."] + +[node name="Community_Pillar" type="CSGBox3D" parent="Structures"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8.932762, 25.43793, -24.454512) +use_collision = true +size = Vector3(10, 50, 10) + +[node name="Room_Extractor" type="CSGBox3D" parent="Structures/Community_Pillar"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 13.243696, 0) +operation = 2 +size = Vector3(10, 5, 7) + +[node name="Room_Extractor_Sub" type="CSGBox3D" parent="Structures/Community_Pillar/Room_Extractor"] +transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 0, 0, 0) +size = Vector3(10, 5, 7) + +[node name="Community_Pillar2" type="CSGBox3D" parent="Structures"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 29.702057, 25.43793, 26.455559) +use_collision = true +size = Vector3(10, 50, 10) + +[node name="Room_Extractor" type="CSGBox3D" parent="Structures/Community_Pillar2"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -12.127523, 0) +operation = 2 +size = Vector3(10, 5, 7) + +[node name="Room_Extractor_Sub" type="CSGBox3D" parent="Structures/Community_Pillar2/Room_Extractor"] +transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 0, 0, 0) +size = Vector3(10, 5, 7) + +[node name="Room_Extractor2" type="CSGBox3D" parent="Structures/Community_Pillar2"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 15.281042, 0) +operation = 2 +size = Vector3(10, 5, 7) + +[node name="Room_Extractor_Sub" type="CSGBox3D" parent="Structures/Community_Pillar2/Room_Extractor2"] +transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 0, 0, 0) +size = Vector3(10, 5, 7) + +[node name="Community_Pillar3" type="CSGBox3D" parent="Structures"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -26.503971, 19.918947, -18.200857) +use_collision = true +size = Vector3(10, 38.962036, 10) + +[node name="Room_Extractor" type="CSGBox3D" parent="Structures/Community_Pillar3"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3.9895802, 0) +operation = 2 +size = Vector3(10, 5, 7) + +[node name="Room_Extractor_Sub" type="CSGBox3D" parent="Structures/Community_Pillar3/Room_Extractor"] +transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 0, 0, 0) +size = Vector3(10, 5, 7) + +[node name="Community_Pillar4" type="CSGBox3D" parent="Structures"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -33.751396, 14.933535, 23.944075) +use_collision = true +size = Vector3(10, 28.99121, 10) + +[node name="Room_Extractor" type="CSGBox3D" parent="Structures/Community_Pillar4"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -2.0188923, 0) +operation = 2 +size = Vector3(10, 5, 7) + +[node name="Room_Extractor_Sub" type="CSGBox3D" parent="Structures/Community_Pillar4/Room_Extractor"] +transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 0, 0, 0) +size = Vector3(10, 5, 7) + +[node name="Bridges" type="Node" parent="."] + +[node name="Bridge" type="CSGBox3D" parent="Bridges"] +transform = Transform3D(0.9123094, 0.00051074475, 0.4095011, -0.02092086, 0.99875146, 0.045362994, -0.40896657, -0.0499522, 0.9111813, 19.294338, 36.933044, 1.2897813) +use_collision = true +size = Vector3(4.287961, 0.5, 48.44496) + +[node name="Bridge2" type="CSGBox3D" parent="Bridges"] +transform = Transform3D(-0.25111574, -0.44401234, 0.86011297, -0.1574391, 0.8954889, 0.41630897, -0.9550678, -0.03087371, -0.29477626, -9.957705, 26.759886, -21.618486) +use_collision = true +size = Vector3(4.287961, 0.5, 35.733826) + +[node name="Bridge3" type="CSGBox3D" parent="Bridges"] +transform = Transform3D(0.98600703, -0.06573444, -0.1531957, 0.018056083, 0.95567894, -0.29385704, 0.16572239, 0.28697884, 0.9434932, -29.292055, 15.151863, 2.7271657) +use_collision = true +size = Vector3(4.287961, 0.5, 35.123894) diff --git a/scenes/levels/campus.tscn b/scenes/levels/campus.tscn new file mode 100644 index 0000000..a578158 --- /dev/null +++ b/scenes/levels/campus.tscn @@ -0,0 +1,282 @@ +[gd_scene format=3 uid="uid://djtt4pw0itnxq"] + +[ext_resource type="Environment" uid="uid://cuo3it6ypvhty" path="res://resources/lighting_fixes.tres" id="1_amuul"] +[ext_resource type="Texture2D" uid="uid://d2y57uk5sn77h" path="res://assets/textures/ground/synt grass pack/ground_grass_gen_09.png" id="1_byr2h"] +[ext_resource type="Script" uid="uid://dvv30fis0ncwh" path="res://scripts/levels/campus.gd" id="1_f74sa"] +[ext_resource type="PackedScene" uid="uid://ser0oa3o1n56" path="res://scenes/player/Player.tscn" id="1_qqoq0"] +[ext_resource type="PackedScene" uid="uid://beqeiiommaqiq" path="res://scenes/props/buildings/portable.tscn" id="4_3sp1p"] +[ext_resource type="PackedScene" uid="uid://bjniumpje1tj5" path="res://scenes/generators/debris_generator.tscn" id="6_oha3l"] +[ext_resource type="PackedScene" uid="uid://colksumpxc6a7" path="res://scenes/characters/generic_character.tscn" id="7_odoii"] +[ext_resource type="Shader" uid="uid://bqxwe22bac7mm" path="res://shaders/crystal.gdshader" id="9_n464f"] +[ext_resource type="PackedScene" uid="uid://dpk46bare4m8y" path="res://scenes/props/treadmill.tscn" id="10_kob56"] +[ext_resource type="PackedScene" uid="uid://bh0m8jrngk1sv" path="res://scenes/warp_area.tscn" id="12_f74sa"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_gukmv"] +albedo_texture = ExtResource("1_byr2h") +uv1_scale = Vector3(0.1, 0.1, 0.1) +uv1_triplanar = true +uv1_world_triplanar = true +texture_filter = 2 + +[sub_resource type="Gradient" id="Gradient_n464f"] +offsets = PackedFloat32Array(0, 0.718876, 1) +colors = PackedColorArray(0, 0, 0, 1, 0.967871, 0.967871, 0.967871, 1, 1, 1, 1, 1) + +[sub_resource type="FastNoiseLite" id="FastNoiseLite_kob56"] + +[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_amuul"] +noise = SubResource("FastNoiseLite_kob56") +color_ramp = SubResource("Gradient_n464f") + +[sub_resource type="Gradient" id="Gradient_kob56"] +offsets = PackedFloat32Array(0, 0.337349, 0.678715, 1) +colors = PackedColorArray(0.862745, 0, 0.964706, 1, 0.72549, 0, 0.937255, 1, 0.568627, 0, 0.992157, 1, 0.247059, 0, 1, 1) + +[sub_resource type="GradientTexture2D" id="GradientTexture2D_amuul"] +gradient = SubResource("Gradient_kob56") + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_p4job"] +render_priority = 0 +shader = ExtResource("9_n464f") +shader_parameter/colorGradient1 = SubResource("GradientTexture2D_amuul") +shader_parameter/colorGradient2 = SubResource("GradientTexture2D_amuul") +shader_parameter/NoiseTexture_Alpha = SubResource("NoiseTexture2D_amuul") + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_f74sa"] +transparency = 1 +albedo_color = Color(0.439216, 0.121569, 1, 0.588235) + +[sub_resource type="BoxMesh" id="BoxMesh_p4job"] +material = SubResource("StandardMaterial3D_f74sa") +size = Vector3(3, 4, 1) + +[sub_resource type="BoxShape3D" id="BoxShape3D_gx17s"] +size = Vector3(3, 4, 1) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_p4job"] +transparency = 1 +albedo_color = Color(1, 1, 1, 0.588235) + +[sub_resource type="BoxMesh" id="BoxMesh_gx17s"] +material = SubResource("StandardMaterial3D_p4job") +size = Vector3(3, 4, 1) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_gx17s"] +transparency = 1 +albedo_color = Color(0.298039, 1, 0.294118, 0.588235) + +[sub_resource type="BoxMesh" id="BoxMesh_svg0g"] +material = SubResource("StandardMaterial3D_gx17s") +size = Vector3(3, 4, 1) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_amuul"] +transparency = 1 +albedo_color = Color(1, 0.329412, 0.180392, 0.588235) + +[sub_resource type="BoxMesh" id="BoxMesh_44fqp"] +material = SubResource("StandardMaterial3D_amuul") +size = Vector3(3, 4, 1) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_svg0g"] +transparency = 1 +albedo_color = Color(1, 1, 1, 0.588235) + +[sub_resource type="BoxMesh" id="BoxMesh_rmdrv"] +material = SubResource("StandardMaterial3D_svg0g") +size = Vector3(3, 4, 1) + +[sub_resource type="BoxShape3D" id="BoxShape3D_amuul"] +size = Vector3(3, 4, 1) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_txw72"] +transparency = 1 +albedo_color = Color(0.890196, 0.890196, 0.137255, 0.588235) + +[sub_resource type="BoxMesh" id="BoxMesh_f74sa"] +material = SubResource("StandardMaterial3D_txw72") +size = Vector3(3, 4, 1) + +[node name="Campus" type="Node" unique_id=175001464] +script = ExtResource("1_f74sa") + +[node name="WorldEnvironment" type="WorldEnvironment" parent="." unique_id=393724649] +environment = ExtResource("1_amuul") + +[node name="DebrisGenerator" parent="." unique_id=1582236464 instance=ExtResource("6_oha3l")] + +[node name="Ground" type="CSGBox3D" parent="." unique_id=14215816 groups=["grass_floor"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -25, 0) +use_collision = true +size = Vector3(1000, 50, 1000) +material = SubResource("StandardMaterial3D_gukmv") + +[node name="CSGBox3D" type="CSGBox3D" parent="Ground" unique_id=897720828] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 36.8962, 22.4664, 142.889) +operation = 2 +size = Vector3(96.0681, 5.2735, 96.1014) +material = SubResource("StandardMaterial3D_gukmv") + +[node name="Player" parent="." unique_id=716277449 instance=ExtResource("1_qqoq0")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12.3431, 1.16866, -18.642967) + +[node name="Savvy_Consumer" parent="." unique_id=676850482 groups=["mariana"] instance=ExtResource("7_odoii")] +transform = Transform3D(-0.142206, 0, 0.373868, 0, 0.4, 0, -0.373868, 0, -0.142206, -9.55317, 1.25573, -16.6526) + +[node name="Portable" parent="." unique_id=2120691215 instance=ExtResource("4_3sp1p")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.57262, 4.38831, -43.3849) + +[node name="DirectionalLight3D" type="DirectionalLight3D" parent="." unique_id=1732422568] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 0, 0) +light_energy = 0.5 +shadow_enabled = true + +[node name="crystal" type="CSGCylinder3D" parent="." unique_id=1791427261] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.81263, 1.25188, -18.9957) +cone = true +material = SubResource("ShaderMaterial_p4job") + +[node name="TreadmillBase" parent="." unique_id=1507737414 instance=ExtResource("10_kob56")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.348356, -23.0415) + +[node name="WarpSpawnPoints" type="Node3D" parent="." unique_id=1223572966] + +[node name="ToWaterway" parent="WarpSpawnPoints" unique_id=108865091 instance=ExtResource("12_f74sa")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18.2367, 2.13553, -7.49472) +monitorable = false + +[node name="MeshInstance3D" type="MeshInstance3D" parent="WarpSpawnPoints/ToWaterway" unique_id=1580288632] +mesh = SubResource("BoxMesh_p4job") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="WarpSpawnPoints/ToWaterway" unique_id=34728619] +shape = SubResource("BoxShape3D_gx17s") + +[node name="Label3D" type="Label3D" parent="WarpSpawnPoints/ToWaterway" unique_id=1228834542] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.36281, 0) +billboard = 2 +text = "To Waterway" +font_size = 75 + +[node name="WaterwaySpawn" type="Node3D" parent="WarpSpawnPoints/ToWaterway" unique_id=1976912968] +transform = Transform3D(-4.37722e-08, 0, 1, 0, 1, 0, -1, 0, -4.37722e-08, 0.280861, -0.86668, -2.85476) + +[node name="ToSnowHouse" parent="WarpSpawnPoints" unique_id=1026964046 instance=ExtResource("12_f74sa")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24.3015, 2.1602, -7.64546) +monitorable = false + +[node name="MeshInstance3D" type="MeshInstance3D" parent="WarpSpawnPoints/ToSnowHouse" unique_id=480403390] +mesh = SubResource("BoxMesh_gx17s") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="WarpSpawnPoints/ToSnowHouse" unique_id=682740844] +shape = SubResource("BoxShape3D_gx17s") + +[node name="Label3D" type="Label3D" parent="WarpSpawnPoints/ToSnowHouse" unique_id=767172635] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.36281, 0) +billboard = 2 +text = "To Snow House" +font_size = 75 + +[node name="SnowSpawn" type="Node3D" parent="WarpSpawnPoints/ToSnowHouse" unique_id=2091281827] +transform = Transform3D(-4.37722e-08, 0, 1, 0, 1, 0, -1, 0, -4.37722e-08, 0.280861, -0.86668, -2.85476) + +[node name="ToHauntedHouse" parent="WarpSpawnPoints" unique_id=1031193708 instance=ExtResource("12_f74sa")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30.4797, 2.14721, -7.84214) +monitorable = false + +[node name="MeshInstance3D" type="MeshInstance3D" parent="WarpSpawnPoints/ToHauntedHouse" unique_id=1556626273] +mesh = SubResource("BoxMesh_svg0g") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="WarpSpawnPoints/ToHauntedHouse" unique_id=890139107] +shape = SubResource("BoxShape3D_gx17s") + +[node name="Label3D" type="Label3D" parent="WarpSpawnPoints/ToHauntedHouse" unique_id=2052132392] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.36281, 0) +billboard = 2 +text = "To Gag Haunted House" +font_size = 75 + +[node name="HauntedSpawn" type="Node3D" parent="WarpSpawnPoints/ToHauntedHouse" unique_id=1660272559] +transform = Transform3D(-4.37722e-08, 0, 1, 0, 1, 0, -1, 0, -4.37722e-08, 0.280861, -0.86668, -2.85476) + +[node name="ToGrunge" parent="WarpSpawnPoints" unique_id=1454114055 instance=ExtResource("12_f74sa")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 35.7757, 2.17071, -7.7644) +monitorable = false + +[node name="MeshInstance3D" type="MeshInstance3D" parent="WarpSpawnPoints/ToGrunge" unique_id=1232567091] +mesh = SubResource("BoxMesh_44fqp") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="WarpSpawnPoints/ToGrunge" unique_id=1516641536] +shape = SubResource("BoxShape3D_gx17s") + +[node name="Label3D" type="Label3D" parent="WarpSpawnPoints/ToGrunge" unique_id=1928495249] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.36281, 0) +billboard = 2 +text = "To Grunge" +font_size = 75 + +[node name="GrungeSpawn" type="Node3D" parent="WarpSpawnPoints/ToGrunge" unique_id=783906956] +transform = Transform3D(-4.37722e-08, 0, 1, 0, 1, 0, -1, 0, -4.37722e-08, 0.280861, -0.86668, -2.85476) + +[node name="ToCruelCalculus" parent="WarpSpawnPoints" unique_id=942324308 instance=ExtResource("12_f74sa")] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 41.2789, 2.23878, -13.7909) +monitorable = false + +[node name="MeshInstance3D" type="MeshInstance3D" parent="WarpSpawnPoints/ToCruelCalculus" unique_id=1169939813] +mesh = SubResource("BoxMesh_rmdrv") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="WarpSpawnPoints/ToCruelCalculus" unique_id=1031884323] +shape = SubResource("BoxShape3D_gx17s") + +[node name="Label3D" type="Label3D" parent="WarpSpawnPoints/ToCruelCalculus" unique_id=1559099172] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.36281, 0) +billboard = 2 +text = "To Cruel Calculus" +font_size = 75 + +[node name="CalculusSpawn" type="Node3D" parent="WarpSpawnPoints/ToCruelCalculus" unique_id=34386412] +transform = Transform3D(-4.37722e-08, 0, 1, 0, 1, 0, -1, 0, -4.37722e-08, 0.280861, -0.86668, -2.85476) + +[node name="ToGardenLights" parent="WarpSpawnPoints" unique_id=1010729286 instance=ExtResource("12_f74sa")] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 41.5718, 2.1856, -20.6392) + +[node name="CollisionShape3D" type="CollisionShape3D" parent="WarpSpawnPoints/ToGardenLights" unique_id=270205945] +shape = SubResource("BoxShape3D_amuul") + +[node name="Label3D" type="Label3D" parent="WarpSpawnPoints/ToGardenLights" unique_id=1437926762] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.36281, 0) +billboard = 2 +text = "To Garden of Lights" +font_size = 75 + +[node name="MeshInstance3D" type="MeshInstance3D" parent="WarpSpawnPoints/ToGardenLights" unique_id=510590224] +mesh = SubResource("BoxMesh_f74sa") + +[node name="GardenSpawn" type="Node3D" parent="WarpSpawnPoints/ToGardenLights" unique_id=138078986] +transform = Transform3D(-4.37722e-08, 0, 1, 0, 1, 0, -1, 0, -4.37722e-08, 0.280861, -0.86668, -2.85476) + +[node name="CSGPolygon3D" type="CSGPolygon3D" parent="." unique_id=854705135] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -5.18963, 191.797) +use_collision = true +polygon = PackedVector2Array(-11.3414, -0.0723017, -11.1198, 5.16358, -0.181012, -0.00769132) +depth = 100.0 +material = SubResource("StandardMaterial3D_gukmv") + +[node name="CSGPolygon3D3" type="CSGPolygon3D" parent="." unique_id=952499884] +transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -11.2769, -5.18963, 105.918) +use_collision = true +polygon = PackedVector2Array(-11.3414, -0.0723017, -11.1198, 5.16358, -0.181012, -0.00769132) +depth = 100.0 +material = SubResource("StandardMaterial3D_gukmv") + +[node name="CSGPolygon3D4" type="CSGPolygon3D" parent="." unique_id=448419174] +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 73.8187, -5.18963, 94.0686) +use_collision = true +polygon = PackedVector2Array(-11.3414, -0.0723017, -11.1198, 5.16358, -0.181012, -0.00769132) +depth = 100.0 +material = SubResource("StandardMaterial3D_gukmv") + +[node name="CSGPolygon3D5" type="CSGPolygon3D" parent="." unique_id=260045929] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 86.222, -5.18963, 179.825) +use_collision = true +polygon = PackedVector2Array(-11.3414, -0.0723017, -11.1198, 5.16358, -0.181012, -0.00769132) +depth = 100.0 +material = SubResource("StandardMaterial3D_gukmv") diff --git a/scenes/levels/cruel_calculus.tscn b/scenes/levels/cruel_calculus.tscn new file mode 100644 index 0000000..d35edb0 --- /dev/null +++ b/scenes/levels/cruel_calculus.tscn @@ -0,0 +1,169 @@ +[gd_scene load_steps=19 format=3 uid="uid://cpfo8atfe731v"] + +[ext_resource type="Script" uid="uid://cvv7oseudq14x" path="res://scripts/levels/cruel_calculus.gd" id="1_4pmv6"] +[ext_resource type="PackedScene" uid="uid://ser0oa3o1n56" path="res://scenes/player/Player.tscn" id="1_b6uyy"] +[ext_resource type="Shader" uid="uid://x34r6y5jmh1a" path="res://shaders/glitch_material.gdshader" id="1_wlkp0"] +[ext_resource type="Texture2D" uid="uid://pj866ifft1x5" path="res://assets/textures/sample_code.png" id="4_2wapi"] +[ext_resource type="PackedScene" uid="uid://bh0m8jrngk1sv" path="res://scenes/warp_area.tscn" id="6_s7tex"] +[ext_resource type="Texture2D" uid="uid://dnujqpqdxqltf" path="res://assets/textures/wood/WoodFloor008/WoodFloor008_1K-PNG_Color.png" id="7_2cop1"] +[ext_resource type="Script" uid="uid://bg6aimgk1ttjr" path="res://scripts/curve_generator.gd" id="7_7m3yd"] +[ext_resource type="Script" uid="uid://vmbr6bsgtvbp" path="res://scripts/curvetroller.gd" id="8_2cop1"] + +[sub_resource type="Environment" id="Environment_b6uyy"] +background_mode = 1 +background_color = Color(0.907942, 0.907942, 0.907942, 1) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_gx17s"] +transparency = 1 +albedo_color = Color(0.298039, 1, 0.294118, 0.588235) + +[sub_resource type="BoxMesh" id="BoxMesh_7m3yd"] +material = SubResource("StandardMaterial3D_gx17s") +size = Vector3(3, 4, 1) + +[sub_resource type="BoxShape3D" id="BoxShape3D_2cop1"] +size = Vector3(3, 4, 1) + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_2wapi"] +render_priority = 0 +shader = ExtResource("1_wlkp0") +shader_parameter/transparency = 1.0 +shader_parameter/shake_power = 0.2 +shader_parameter/shake_rate = 0.209 +shader_parameter/shake_speed = 5.0 +shader_parameter/shake_block_size = 30.5 +shader_parameter/shake_color_rate = 0.5 +shader_parameter/main_tex = ExtResource("4_2wapi") + +[sub_resource type="PlaneMesh" id="PlaneMesh_s7tex"] +material = SubResource("ShaderMaterial_2wapi") +size = Vector2(8, 5) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_7m3yd"] +albedo_color = Color(0.576471, 1, 0.376471, 1) + +[sub_resource type="Curve3D" id="Curve3D_s7tex"] +bake_interval = 0.1 + +[sub_resource type="Curve3D" id="Curve3D_7m3yd"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_s7tex"] +albedo_texture = ExtResource("7_2cop1") +uv1_triplanar = true +uv1_world_triplanar = true + +[node name="CruelCalculus" type="Node"] +script = ExtResource("1_4pmv6") + +[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +environment = SubResource("Environment_b6uyy") + +[node name="Player" parent="." instance=ExtResource("1_b6uyy")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -17.3916, 0.776252, 18.2306) + +[node name="WarpSpawnPoints" type="Node3D" parent="."] + +[node name="ToHauntedHouse" parent="WarpSpawnPoints" instance=ExtResource("6_s7tex")] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 7.73687, 2.14721, 4.66332) +monitorable = false + +[node name="MeshInstance3D" type="MeshInstance3D" parent="WarpSpawnPoints/ToHauntedHouse"] +mesh = SubResource("BoxMesh_7m3yd") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="WarpSpawnPoints/ToHauntedHouse"] +shape = SubResource("BoxShape3D_2cop1") + +[node name="Label3D" type="Label3D" parent="WarpSpawnPoints/ToHauntedHouse"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.36281, 0) +billboard = 2 +text = "To Gag Haunted House" +font_size = 75 + +[node name="HauntedSpawn" type="Node3D" parent="WarpSpawnPoints/ToHauntedHouse"] +transform = Transform3D(-4.37722e-08, 0, 1, 0, 1, 0, -1, 0, -4.37722e-08, 0.280861, -0.86668, -2.85476) + +[node name="Floor" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.288589, -0.286865, 4.4383) +use_collision = true +size = Vector3(16.953, 0.42627, 4.88678) + +[node name="Floor2" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -37.9315, 7.65063, 4.4383) +use_collision = true +size = Vector3(16.953, 0.42627, 4.88678) + +[node name="GlitchWall" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 2.24414, 0.396535) +mesh = SubResource("PlaneMesh_s7tex") + +[node name="Curvetroller1" type="CSGBox3D" parent="." groups=["interactable"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -17.3911, 0.546084, 16.9607) +use_collision = true +size = Vector3(0.5, 1.14539, 0.5) +material = SubResource("StandardMaterial3D_7m3yd") +script = ExtResource("8_2cop1") +mode = 4 +math_sign = -1 +delta = 1.0 +base = 1 + +[node name="InteractLabel" type="Label3D" parent="Curvetroller1"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.717568, 0) + +[node name="FunctionPath1" type="Path3D" parent="."] +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -8.8352, -0.240075, 4.72045) +curve = SubResource("Curve3D_s7tex") +script = ExtResource("7_7m3yd") +use_case = 1 +slope = 0.5 +start_point = 1 +end_point = 20 +func_type = 4 + +[node name="FunctionPolygon" type="CSGPolygon3D" parent="FunctionPath1"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.90735e-06, 0, -1.57132) +use_collision = true +polygon = PackedVector2Array(0, 0, 0, 0.1, 4, 0.1, 4, 0) +mode = 2 +path_node = NodePath("..") +path_interval_type = 0 +path_interval = 1.0 +path_simplify_angle = 0.0 +path_rotation = 2 +path_rotation_accurate = false +path_local = true +path_continuous_u = true +path_u_distance = 1.0 +path_joined = false + +[node name="Stairs" type="Path3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.71637, -0.0702048, 7.67467) +curve = SubResource("Curve3D_7m3yd") +script = ExtResource("7_7m3yd") +use_case = 2 +end_point = 10 + +[node name="CSGPolygon3D" type="CSGPolygon3D" parent="Stairs"] +use_collision = true +polygon = PackedVector2Array(0, 0, 0, 0.1, 8, 0.1, 8, 0) +mode = 2 +path_node = NodePath("..") +path_interval_type = 0 +path_interval = 1.0 +path_simplify_angle = 0.0 +path_rotation = 2 +path_rotation_accurate = false +path_local = true +path_continuous_u = true +path_u_distance = 1.0 +path_joined = false +material = SubResource("StandardMaterial3D_s7tex") + +[node name="ButtonPath" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.04148, -0.286865, 14.4405) +use_collision = true +size = Vector3(3.67339, 0.42627, 15.1683) + +[node name="CSGBox3D" type="CSGBox3D" parent="ButtonPath"] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -8.18214, 0, 4.55314) +size = Vector3(6.07075, 0.42627, 12.6733) diff --git a/scenes/levels/dark_city.tscn b/scenes/levels/dark_city.tscn new file mode 100644 index 0000000..b44ba66 --- /dev/null +++ b/scenes/levels/dark_city.tscn @@ -0,0 +1,25 @@ +[gd_scene load_steps=4 format=3 uid="uid://bu2vf4lbq4hg"] + +[ext_resource type="PackedScene" uid="uid://ser0oa3o1n56" path="res://scenes/player/Player.tscn" id="1_uud6j"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_so36s"] +albedo_color = Color(0.660019, 0.618331, 0.576572, 1) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_uud6j"] +albedo_color = Color(0.168627, 0.168627, 0.164706, 1) + +[node name="DarkCity" type="Node"] + +[node name="Player" parent="." instance=ExtResource("1_uud6j")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.02907, 10.5643) + +[node name="CityFloor" type="CSGBox3D" parent="."] +use_collision = true +size = Vector3(100, 1, 100) +material = SubResource("StandardMaterial3D_so36s") + +[node name="Street" type="CSGBox3D" parent="CityFloor"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.42302, 0.484558, 0) +operation = 2 +size = Vector3(105.118, 0.031, 10) +material = SubResource("StandardMaterial3D_uud6j") diff --git a/scenes/levels/drifting/snow_test.tscn b/scenes/levels/drifting/snow_test.tscn new file mode 100644 index 0000000..27cdb70 --- /dev/null +++ b/scenes/levels/drifting/snow_test.tscn @@ -0,0 +1,7486 @@ +[gd_scene format=3 uid="uid://b3qwcqru0xbst"] + +[ext_resource type="Texture2D" uid="uid://vwnrymaoxu3l" path="res://assets/textures/snow_ice/snow.png" id="1_hminl"] +[ext_resource type="Script" uid="uid://cg7tt0dm133t0" path="res://scripts/drifting/weather.gd" id="3_2tfyn"] +[ext_resource type="PackedScene" uid="uid://ser0oa3o1n56" path="res://scenes/player/Player.tscn" id="3_tvguv"] +[ext_resource type="PackedScene" uid="uid://b41xvkh4y5smm" path="res://scenes/props/drifting/snow_spot.tscn" id="4_818ab"] +[ext_resource type="Script" uid="uid://drssmk77u0oyu" path="res://scripts/drifting/wind.gd" id="4_dm7sh"] +[ext_resource type="Texture2D" uid="uid://sqlhgqqadf2u" path="res://assets/textures/stone_rocks/pavement_02_1k/pavement_02_diff_1k.png" id="5_4sjhw"] +[ext_resource type="Script" uid="uid://cdx4r2nbjfbwk" path="res://scripts/drifting/detect_snow.gd" id="5_dm7sh"] +[ext_resource type="PackedScene" uid="uid://br64bedksp8u8" path="res://scenes/props/vanishing_body.tscn" id="6_4lfao"] +[ext_resource type="Texture2D" uid="uid://c5qw31dhbpkph" path="res://assets/textures/wood/wood_trunk_wall/wood_trunk_wall_diff_1k.png" id="7_brgdc"] +[ext_resource type="Texture2D" uid="uid://0gj2juljndej" path="res://assets/textures/wood/wood_trunk_wall/wood_trunk_wall_nor_gl_1k.png" id="8_n7irt"] +[ext_resource type="Texture2D" uid="uid://b4ehdtlf7hwgc" path="res://assets/textures/wood/wood_trunk_wall/wood_trunk_wall_rough_1k.png" id="9_djc5t"] +[ext_resource type="Texture2D" uid="uid://dnujqpqdxqltf" path="res://assets/textures/wood/WoodFloor008/WoodFloor008_1K-PNG_Color.png" id="10_4sjhw"] +[ext_resource type="Texture2D" uid="uid://cxoriofrlup4b" path="res://assets/textures/wood/WoodFloor008/WoodFloor008_1K-PNG_NormalGL.png" id="11_dm7sh"] +[ext_resource type="Texture2D" uid="uid://qb7i37d7q6pu" path="res://assets/textures/wood/WoodFloor008/WoodFloor008_1K-PNG_Roughness.png" id="12_noi2s"] +[ext_resource type="Texture2D" uid="uid://c73agoqjjbht1" path="res://assets/textures/stone_rocks/red_brick_1k/red_brick_diff_1k.png" id="13_djc5t"] +[ext_resource type="Texture2D" uid="uid://46oyxw7r24fd" path="res://assets/textures/stone_rocks/red_brick_1k/red_brick_nor_gl_1k.png" id="14_4sjhw"] +[ext_resource type="Texture2D" uid="uid://dlyp6ik6jsmkd" path="res://assets/textures/stone_rocks/red_brick_1k/red_brick_rough_1k.png" id="15_dm7sh"] +[ext_resource type="PackedScene" uid="uid://buupbbacb5pmc" path="res://scenes/props/park_lamp.tscn" id="16_x2yo5"] +[ext_resource type="PackedScene" uid="uid://c5lt3qq7ddpg3" path="res://scenes/props/trees/abstract_pine_tree.tscn" id="18_noi2s"] + +[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_tvguv"] +sky_top_color = Color(1, 1, 1, 1) +sky_horizon_color = Color(0.637407, 0.647013, 0.66218, 1) +ground_bottom_color = Color(0.892134, 0.895121, 0.901088, 1) + +[sub_resource type="Sky" id="Sky_qcdjg"] +sky_material = SubResource("ProceduralSkyMaterial_tvguv") + +[sub_resource type="Environment" id="Environment_818ab"] +background_mode = 2 +background_color = Color(1, 1, 1, 1) +background_energy_multiplier = 0.1 +sky = SubResource("Sky_qcdjg") +ambient_light_source = 3 +ambient_light_color = Color(0.947199, 0.947199, 0.947199, 1) +reflected_light_source = 2 +ssao_enabled = true +fog_light_color = Color(0.898559, 0.909031, 0.925495, 1) +fog_light_energy = 0.1 +volumetric_fog_density = 0.01 +volumetric_fog_emission = Color(1, 1, 1, 1) +volumetric_fog_temporal_reprojection_amount = 0.99 + +[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_aan0m"] +emission_shape = 3 +emission_box_extents = Vector3(300, 300, 10) +gravity = Vector3(0, -0.5, 0) +collision_mode = 1 +collision_friction = 0.4 +collision_bounce = 0.0 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_cxgtq"] +albedo_texture = ExtResource("1_hminl") + +[sub_resource type="CylinderMesh" id="CylinderMesh_tvguv"] +material = SubResource("StandardMaterial3D_cxgtq") +top_radius = 0.1 +bottom_radius = 0.1 +height = 0.01 +radial_segments = 6 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_818ab"] +albedo_texture = ExtResource("1_hminl") +uv1_scale = Vector3(0.5, 0.5, 0.5) +uv1_triplanar = true +uv1_world_triplanar = true + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_4wqbg"] +albedo_texture = ExtResource("7_brgdc") +roughness_texture = ExtResource("9_djc5t") +normal_enabled = true +normal_texture = ExtResource("8_n7irt") +uv1_triplanar = true +uv1_world_triplanar = true + +[sub_resource type="BoxMesh" id="BoxMesh_x2yo5"] +material = SubResource("StandardMaterial3D_4wqbg") +size = Vector3(50, 10, 0.2) + +[sub_resource type="BoxShape3D" id="BoxShape3D_awe2j"] +size = Vector3(50, 10, 0.5) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_snt7y"] +albedo_texture = ExtResource("10_4sjhw") +roughness_texture = ExtResource("12_noi2s") +normal_enabled = true +normal_texture = ExtResource("11_dm7sh") +uv1_triplanar = true +uv1_world_triplanar = true + +[sub_resource type="BoxMesh" id="BoxMesh_5d25t"] +material = SubResource("StandardMaterial3D_snt7y") +size = Vector3(1, 0.01, 1) + +[sub_resource type="BoxShape3D" id="BoxShape3D_6qp24"] +size = Vector3(1, 0.01, 1) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ko3sa"] +albedo_texture = ExtResource("7_brgdc") +roughness_texture = ExtResource("9_djc5t") +normal_enabled = true +normal_texture = ExtResource("8_n7irt") +uv1_triplanar = true +uv1_world_triplanar = true + +[sub_resource type="BoxMesh" id="BoxMesh_f38c0"] +material = SubResource("StandardMaterial3D_ko3sa") +size = Vector3(23, 10, 0.2) + +[sub_resource type="BoxShape3D" id="BoxShape3D_3f01l"] +size = Vector3(23, 10, 0.2) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_pv8go"] +albedo_texture = ExtResource("7_brgdc") +roughness_texture = ExtResource("9_djc5t") +normal_enabled = true +normal_texture = ExtResource("8_n7irt") +uv1_triplanar = true +uv1_world_triplanar = true + +[sub_resource type="BoxMesh" id="BoxMesh_54yen"] +material = SubResource("StandardMaterial3D_pv8go") +size = Vector3(4.5, 2, 0.2) + +[sub_resource type="BoxShape3D" id="BoxShape3D_owf82"] +size = Vector3(4.5, 2, 0.2) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_r10g3"] +albedo_texture = ExtResource("1_hminl") +uv1_scale = Vector3(0.2, 0.2, 0.2) +uv1_triplanar = true +uv1_world_triplanar = true +texture_filter = 2 + +[sub_resource type="BoxMesh" id="BoxMesh_yt3p7"] +material = SubResource("StandardMaterial3D_r10g3") +size = Vector3(30, 0.5, 52) + +[sub_resource type="BoxShape3D" id="BoxShape3D_mcnel"] +size = Vector3(30.4451, 0.5, 52.2593) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_nd7fp"] +albedo_texture = ExtResource("7_brgdc") +roughness_texture = ExtResource("9_djc5t") +normal_enabled = true +normal_texture = ExtResource("8_n7irt") +uv1_triplanar = true +uv1_world_triplanar = true + +[sub_resource type="PrismMesh" id="PrismMesh_l0huc"] +material = SubResource("StandardMaterial3D_nd7fp") +size = Vector3(50, 14.5, 0.2) + +[sub_resource type="BoxShape3D" id="BoxShape3D_h6mb1"] +size = Vector3(50, 14.2656, 0.2) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_noi2s"] +albedo_texture = ExtResource("13_djc5t") +roughness_texture = ExtResource("15_dm7sh") +normal_enabled = true +normal_texture = ExtResource("14_4sjhw") +uv1_scale = Vector3(0.2, 0.2, 0.2) +uv1_triplanar = true +uv1_world_triplanar = true +texture_filter = 0 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_x2yo5"] +albedo_texture = ExtResource("13_djc5t") +uv1_scale = Vector3(0.2, 0.2, 0.2) +uv1_triplanar = true +uv1_world_triplanar = true +texture_filter = 0 + +[sub_resource type="BoxShape3D" id="BoxShape3D_noi2s"] +size = Vector3(157.47293, 8.145142, 1) + +[sub_resource type="BoxShape3D" id="BoxShape3D_ef0dp"] +size = Vector3(154.72226, 8.145142, 1) + +[sub_resource type="BoxShape3D" id="BoxShape3D_dvg3n"] +size = Vector3(35.330265, 8.145142, 1) + +[sub_resource type="BoxShape3D" id="BoxShape3D_1dqna"] +size = Vector3(22.56926, 8.145142, 1) + +[sub_resource type="BoxShape3D" id="BoxShape3D_2y4lp"] +size = Vector3(110.47557, 8.145142, 1) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_dm7sh"] +albedo_texture = ExtResource("5_4sjhw") +uv1_triplanar = true +uv1_world_triplanar = true + +[sub_resource type="BoxShape3D" id="BoxShape3D_x2yo5"] +size = Vector3(5.462, 5, 2.47) + +[sub_resource type="BoxShape3D" id="BoxShape3D_5d25t"] +size = Vector3(36.747, 5, 2.47) + +[sub_resource type="BoxShape3D" id="BoxShape3D_f38c0"] +size = Vector3(33.509, 5, 2.47) + +[sub_resource type="BoxShape3D" id="BoxShape3D_54yen"] +size = Vector3(22.921, 5, 2.47) + +[sub_resource type="BoxShape3D" id="BoxShape3D_yt3p7"] +size = Vector3(47.39, 5, 2.47) + +[sub_resource type="BoxShape3D" id="BoxShape3D_l0huc"] +size = Vector3(20.358, 5, 2.47) + +[sub_resource type="BoxShape3D" id="BoxShape3D_aifm8"] +size = Vector3(57.227, 5, 2.47) + +[sub_resource type="BoxShape3D" id="BoxShape3D_pruie"] +size = Vector3(20.358, 5, 2.47) + +[sub_resource type="BoxShape3D" id="BoxShape3D_hd47q"] +size = Vector3(28.599, 5, 2.47) + +[sub_resource type="BoxShape3D" id="BoxShape3D_gxc6i"] +size = Vector3(59.672, 5, 2.47) + +[sub_resource type="BoxShape3D" id="BoxShape3D_diqwu"] +size = Vector3(26.422, 5, 2.47) + +[sub_resource type="BoxShape3D" id="BoxShape3D_mjhtm"] +size = Vector3(52.051, 5, 2.47) + +[sub_resource type="BoxShape3D" id="BoxShape3D_c3lfl"] +size = Vector3(34.645, 5, 2.47) + +[sub_resource type="BoxShape3D" id="BoxShape3D_1reje"] +size = Vector3(24.476, 5, 2.47) + +[sub_resource type="BoxShape3D" id="BoxShape3D_yvdgr"] +size = Vector3(17.411, 5, 2.47) + +[sub_resource type="BoxShape3D" id="BoxShape3D_13ahi"] +size = Vector3(28.069, 5, 2.47) + +[sub_resource type="BoxShape3D" id="BoxShape3D_0dv7w"] +size = Vector3(14.978, 5, 2.47) + +[sub_resource type="BoxShape3D" id="BoxShape3D_qp251"] +size = Vector3(10.017, 5, 2.47) + +[node name="Snow_Test" type="Node3D" unique_id=573404758] +script = ExtResource("3_2tfyn") + +[node name="Player" parent="." unique_id=1405475883 instance=ExtResource("3_tvguv")] +transform = Transform3D(-4.3711392e-08, 0, 1.0000001, 0, 1, 0, -1.0000001, 0, -4.3711392e-08, 100.93571, 1.1906488, -0.17173052) + +[node name="WorldEnvironment" type="WorldEnvironment" parent="." unique_id=2018110935] +environment = SubResource("Environment_818ab") + +[node name="Snow_Particles" type="GPUParticles3D" parent="." unique_id=121079158] +transform = Transform3D(1, 0, 0, 0, -4.3711385e-08, -0.99999994, 0, 0.99999994, -4.3711385e-08, 0, 20.751602, 0) +transparency = 0.1 +cast_shadow = 0 +amount = 66666 +lifetime = 20.0 +preprocess = 15.0 +speed_scale = 2.0 +randomness = 0.5 +visibility_aabb = AABB(-400, -391.896, -235.395, 747.336, 783.783, 245.591) +draw_order = 3 +transform_align = 1 +process_material = SubResource("ParticleProcessMaterial_aan0m") +draw_pass_1 = SubResource("CylinderMesh_tvguv") +script = ExtResource("4_dm7sh") + +[node name="Snowscape" type="CSGBox3D" parent="." unique_id=6473989 groups=["snow_floor"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 32.6547, 0.0017592907, 0.00934267) +use_collision = true +size = Vector3(165.33252, 0.2, 100) +material = SubResource("StandardMaterial3D_818ab") + +[node name="Snow_Accumulation_Timer" type="Timer" parent="." unique_id=697670983] +wait_time = 7.0 +autostart = true + +[node name="Game_Over" type="Timer" parent="." unique_id=1446537121] +wait_time = 300.0 +one_shot = true +autostart = true + +[node name="Cabin" type="Node3D" parent="." unique_id=922014800] +transform = Transform3D(0.007478473, 0, 0.49994406, 0, 0.5, 0, -0.49994406, 0, 0.007478473, -37.527565, 0.064196825, -0.80439043) + +[node name="VanishingWall" parent="Cabin" unique_id=1545243757 instance=ExtResource("6_4lfao")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3.48, -25) +script = null + +[node name="VanishMesh" type="MeshInstance3D" parent="Cabin/VanishingWall" unique_id=1350975821] +mesh = SubResource("BoxMesh_x2yo5") + +[node name="VanishCollision" type="CollisionShape3D" parent="Cabin/VanishingWall" unique_id=758392898] +shape = SubResource("BoxShape3D_awe2j") + +[node name="GPUParticlesCollisionBox3D" type="GPUParticlesCollisionBox3D" parent="Cabin/VanishingWall" unique_id=2010021132] +size = Vector3(0, 0, 0) + +[node name="VanishingWall3" parent="Cabin" unique_id=852579385 instance=ExtResource("6_4lfao")] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 25, 3.48, 0) +script = null + +[node name="VanishMesh" type="MeshInstance3D" parent="Cabin/VanishingWall3" unique_id=1014770058] +mesh = SubResource("BoxMesh_x2yo5") + +[node name="VanishCollision" type="CollisionShape3D" parent="Cabin/VanishingWall3" unique_id=823975094] +shape = SubResource("BoxShape3D_awe2j") + +[node name="GPUParticlesCollisionBox3D" type="GPUParticlesCollisionBox3D" parent="Cabin/VanishingWall3" unique_id=1165769028] +size = Vector3(0, 0, 0) + +[node name="VanishingWall4" parent="Cabin" unique_id=684318945 instance=ExtResource("6_4lfao")] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -25, 3.48, 0) +script = null + +[node name="VanishMesh" type="MeshInstance3D" parent="Cabin/VanishingWall4" unique_id=769758469] +mesh = SubResource("BoxMesh_x2yo5") + +[node name="VanishCollision" type="CollisionShape3D" parent="Cabin/VanishingWall4" unique_id=1808572844] +shape = SubResource("BoxShape3D_awe2j") + +[node name="GPUParticlesCollisionBox3D" type="GPUParticlesCollisionBox3D" parent="Cabin/VanishingWall4" unique_id=731593361] +size = Vector3(0, 0, 0) + +[node name="VanishingFloor" parent="Cabin" unique_id=214251153 groups=["wood_floor"] instance=ExtResource("6_4lfao")] +script = null + +[node name="FloorMesh" type="MeshInstance3D" parent="Cabin/VanishingFloor" unique_id=49455008] +transform = Transform3D(50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0) +mesh = SubResource("BoxMesh_5d25t") +skeleton = NodePath("") + +[node name="FloorCollision" type="CollisionShape3D" parent="Cabin/VanishingFloor" unique_id=809157399] +transform = Transform3D(50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0) +shape = SubResource("BoxShape3D_6qp24") + +[node name="GPUParticlesCollisionBox3D" type="GPUParticlesCollisionBox3D" parent="Cabin/VanishingFloor" unique_id=590125288] +size = Vector3(0, 0, 0) + +[node name="VanishingEntranceWall" parent="Cabin" unique_id=161552791 instance=ExtResource("6_4lfao")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -15.0755, 3.51258, 24.9211) +script = null + +[node name="MeshInstance3D2" type="MeshInstance3D" parent="Cabin/VanishingEntranceWall" unique_id=211789888] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.49038, 0, 0) +mesh = SubResource("BoxMesh_f38c0") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="Cabin/VanishingEntranceWall" unique_id=728827749] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.491, 0, 0) +shape = SubResource("BoxShape3D_3f01l") + +[node name="GPUParticlesCollisionBox3D" type="GPUParticlesCollisionBox3D" parent="Cabin/VanishingEntranceWall" unique_id=1159926154] +size = Vector3(0, 0, 0) + +[node name="VanishingEntranceWall2" parent="Cabin" unique_id=515581874 instance=ExtResource("6_4lfao")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15.2034, 3.51258, 24.9211) +script = null + +[node name="MeshInstance3D2" type="MeshInstance3D" parent="Cabin/VanishingEntranceWall2" unique_id=995306128] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.58084, 0, 0) +mesh = SubResource("BoxMesh_f38c0") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="Cabin/VanishingEntranceWall2" unique_id=1649396335] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.57841, 0, 0) +shape = SubResource("BoxShape3D_3f01l") + +[node name="GPUParticlesCollisionBox3D" type="GPUParticlesCollisionBox3D" parent="Cabin/VanishingEntranceWall2" unique_id=274535713] +size = Vector3(0, 0, 0) + +[node name="VanishingEntranceTransom" parent="Cabin" unique_id=985976004 instance=ExtResource("6_4lfao")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7.72628, 24.6466) +script = null + +[node name="MeshInstance3D2" type="MeshInstance3D" parent="Cabin/VanishingEntranceTransom" unique_id=361994950] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.218894, 0.277676) +mesh = SubResource("BoxMesh_54yen") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="Cabin/VanishingEntranceTransom" unique_id=353898723] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.222776, 0.281853) +shape = SubResource("BoxShape3D_owf82") + +[node name="GPUParticlesCollisionBox3D" type="GPUParticlesCollisionBox3D" parent="Cabin/VanishingEntranceTransom" unique_id=1806560579] +size = Vector3(0, 0, 0) + +[node name="VanishingRoof" parent="Cabin" unique_id=259001796 instance=ExtResource("6_4lfao")] +transform = Transform3D(0.866025, -0.5, 0, 0.5, 0.866025, 0, 0, 0, 1, -14.348, 14.5103, 21.9529) +script = null + +[node name="MeshInstance3D2" type="MeshInstance3D" parent="Cabin/VanishingRoof" unique_id=995006039] +transform = Transform3D(1, -5.9604645e-08, 9.313226e-10, 0, 1, 4.656613e-10, 9.313226e-10, -4.656613e-10, 1, 1.9794898, 0.14344406, -21.952793) +mesh = SubResource("BoxMesh_yt3p7") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="Cabin/VanishingRoof" unique_id=1055066209] +transform = Transform3D(1, -2.68221e-07, 0, 2.68221e-07, 1, 0, 0, 0, 1, 2.09705, 1.90735e-06, -21.9655) +shape = SubResource("BoxShape3D_mcnel") + +[node name="GPUParticlesCollisionBox3D" type="GPUParticlesCollisionBox3D" parent="Cabin/VanishingRoof" unique_id=1626702475] +transform = Transform3D(1, -2.98023e-08, 0, 2.98023e-08, 1, 0, 0, 0, 1, 2.1592, 0.0263767, -21.9529) +size = Vector3(30.218, 1, 52) + +[node name="VanishingRoof2" parent="Cabin" unique_id=1851601400 instance=ExtResource("6_4lfao")] +transform = Transform3D(0.866025, 0.5, 0, -0.5, 0.866025, 0, 0, 0, 1, 13.0019, 15.6162, 21.9644) +script = null + +[node name="MeshInstance3D2" type="MeshInstance3D" parent="Cabin/VanishingRoof2" unique_id=681383978] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -21.9528) +mesh = SubResource("BoxMesh_yt3p7") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="Cabin/VanishingRoof2" unique_id=873699772] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -21.9843) +shape = SubResource("BoxShape3D_mcnel") + +[node name="GPUParticlesCollisionBox3D" type="GPUParticlesCollisionBox3D" parent="Cabin/VanishingRoof2" unique_id=1218171717] +transform = Transform3D(1, 2.98023e-08, 0, -2.98023e-08, 1, 0, 0, 0, 1, -0.282458, -0.184645, -21.9529) +size = Vector3(30.5322, 1, 52) + +[node name="VanishingAtticWall" parent="Cabin" unique_id=1910558763 instance=ExtResource("6_4lfao")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.149, 15.558, 24.9) +script = null + +[node name="MeshInstance3D2" type="MeshInstance3D" parent="Cabin/VanishingAtticWall" unique_id=405970445] +mesh = SubResource("PrismMesh_l0huc") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="Cabin/VanishingAtticWall" unique_id=448815596] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.00728512, 0.187294, 0.0145988) +shape = SubResource("BoxShape3D_h6mb1") + +[node name="GPUParticlesCollisionBox3D" type="GPUParticlesCollisionBox3D" parent="Cabin/VanishingAtticWall" unique_id=944497422] +size = Vector3(0, 0, 0) + +[node name="VanishingAtticWall2" parent="Cabin" unique_id=193018990 instance=ExtResource("6_4lfao")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.149, 15.558, -25.0167) +script = null + +[node name="MeshInstance3D2" type="MeshInstance3D" parent="Cabin/VanishingAtticWall2" unique_id=1224421304] +mesh = SubResource("PrismMesh_l0huc") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="Cabin/VanishingAtticWall2" unique_id=1142928571] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.00728512, 0.187294, 0.0145988) +shape = SubResource("BoxShape3D_h6mb1") + +[node name="GPUParticlesCollisionBox3D" type="GPUParticlesCollisionBox3D" parent="Cabin/VanishingAtticWall2" unique_id=877491735] +size = Vector3(0, 0, 0) + +[node name="VanishingFloor2" parent="Cabin" unique_id=786156886 instance=ExtResource("6_4lfao")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 8, 0) +script = null + +[node name="FloorMesh" type="MeshInstance3D" parent="Cabin/VanishingFloor2" unique_id=1211757720] +transform = Transform3D(50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0) +mesh = SubResource("BoxMesh_5d25t") +skeleton = NodePath("") + +[node name="FloorCollision" type="CollisionShape3D" parent="Cabin/VanishingFloor2" unique_id=1893365096] +transform = Transform3D(50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0) +shape = SubResource("BoxShape3D_6qp24") + +[node name="GPUParticlesCollisionBox3D" type="GPUParticlesCollisionBox3D" parent="Cabin/VanishingFloor2" unique_id=1020645667] +size = Vector3(0, 0, 0) + +[node name="TallFireplace" type="CSGBox3D" parent="Cabin" unique_id=2111270289] +transform = Transform3D(1.0001119, 0, 2.1420419e-07, 0, 1, 0, -2.1420419e-07, 0, 1.0001119, -22.514212, 10.58639, 1.0083542) +use_collision = true +size = Vector3(3.5011744, 20.675163, 11.171633) +material = SubResource("StandardMaterial3D_noi2s") + +[node name="FirstFloorFireplace" type="CSGBox3D" parent="Cabin/TallFireplace" unique_id=1314889943] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.29611206, -7.5935216, 0.22371674) +operation = 2 +size = Vector3(2.986084, 4.369712, 8.812229) +material = SubResource("StandardMaterial3D_x2yo5") + +[node name="Trees" type="Node" parent="." unique_id=1181321101] + +[node name="RightTrees" type="Node" parent="Trees" unique_id=194038646] + +[node name="Group1" type="Node3D" parent="Trees/RightTrees" unique_id=336148078] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 109.03231, 0, -40.02707) + +[node name="AbstractPineTree26" parent="Trees/RightTrees/Group1" unique_id=2103809329 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/RightTrees/Group1" unique_id=1608871368 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/RightTrees/Group1" unique_id=468247815 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/RightTrees/Group1" unique_id=1159419544 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/RightTrees/Group1" unique_id=882080727 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/RightTrees/Group1" unique_id=450943568 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/RightTrees/Group1" unique_id=150266313 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/RightTrees/Group1" unique_id=318772104 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/RightTrees/Group1" unique_id=566783134 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/RightTrees/Group1" unique_id=930892475 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/RightTrees/Group1" unique_id=1541475810 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/RightTrees/Group1" unique_id=781959663 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/RightTrees/Group1" unique_id=176646266 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/RightTrees/Group1" unique_id=2138011202 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/RightTrees/Group1" unique_id=1344127004 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/RightTrees/Group1" unique_id=243356765 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/RightTrees/Group1" unique_id=925249586 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/RightTrees/Group1" unique_id=1307985271 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/RightTrees/Group1" unique_id=1096590398 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/RightTrees/Group1" unique_id=794241441 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/RightTrees/Group1" unique_id=165072291 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/RightTrees/Group1" unique_id=1802644844 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/RightTrees/Group1" unique_id=53683753 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/RightTrees/Group1" unique_id=1784005650 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group2" type="Node3D" parent="Trees/RightTrees" unique_id=899784788] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 99.13761, 0, -40.02707) + +[node name="AbstractPineTree26" parent="Trees/RightTrees/Group2" unique_id=1846752907 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/RightTrees/Group2" unique_id=395226964 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/RightTrees/Group2" unique_id=1436956743 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/RightTrees/Group2" unique_id=1915353103 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/RightTrees/Group2" unique_id=1243733303 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/RightTrees/Group2" unique_id=1977649981 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/RightTrees/Group2" unique_id=1184200895 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/RightTrees/Group2" unique_id=1222854796 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/RightTrees/Group2" unique_id=1244283409 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/RightTrees/Group2" unique_id=586783604 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/RightTrees/Group2" unique_id=535610907 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/RightTrees/Group2" unique_id=1417624125 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/RightTrees/Group2" unique_id=313764834 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/RightTrees/Group2" unique_id=45812518 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/RightTrees/Group2" unique_id=1159199086 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/RightTrees/Group2" unique_id=60860564 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/RightTrees/Group2" unique_id=1877095906 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/RightTrees/Group2" unique_id=281792848 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/RightTrees/Group2" unique_id=316633149 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/RightTrees/Group2" unique_id=1306778970 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/RightTrees/Group2" unique_id=392385957 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/RightTrees/Group2" unique_id=388345519 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/RightTrees/Group2" unique_id=1836055991 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/RightTrees/Group2" unique_id=734072133 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group3" type="Node3D" parent="Trees/RightTrees" unique_id=1439184868] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 89.100525, 0, -40.02707) + +[node name="AbstractPineTree26" parent="Trees/RightTrees/Group3" unique_id=378273609 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/RightTrees/Group3" unique_id=1928621404 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/RightTrees/Group3" unique_id=74407647 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/RightTrees/Group3" unique_id=2091188276 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/RightTrees/Group3" unique_id=1044834658 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/RightTrees/Group3" unique_id=369386733 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/RightTrees/Group3" unique_id=562567118 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/RightTrees/Group3" unique_id=1489770926 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/RightTrees/Group3" unique_id=742630500 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/RightTrees/Group3" unique_id=413770257 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/RightTrees/Group3" unique_id=1038503280 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/RightTrees/Group3" unique_id=577156879 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/RightTrees/Group3" unique_id=487967880 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/RightTrees/Group3" unique_id=2117117776 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/RightTrees/Group3" unique_id=653373313 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/RightTrees/Group3" unique_id=244347435 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/RightTrees/Group3" unique_id=1372180796 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/RightTrees/Group3" unique_id=1894723789 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/RightTrees/Group3" unique_id=1413684042 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/RightTrees/Group3" unique_id=1058010719 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/RightTrees/Group3" unique_id=2228377 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/RightTrees/Group3" unique_id=1830221613 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/RightTrees/Group3" unique_id=506627394 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/RightTrees/Group3" unique_id=1576127144 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group4" type="Node3D" parent="Trees/RightTrees" unique_id=188157312] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 79.271, 0, -40.02707) + +[node name="AbstractPineTree26" parent="Trees/RightTrees/Group4" unique_id=1765773104 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/RightTrees/Group4" unique_id=1585675467 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/RightTrees/Group4" unique_id=1882793214 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/RightTrees/Group4" unique_id=501074510 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/RightTrees/Group4" unique_id=1903737608 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/RightTrees/Group4" unique_id=373741783 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/RightTrees/Group4" unique_id=1764178623 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/RightTrees/Group4" unique_id=965810961 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/RightTrees/Group4" unique_id=842491641 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/RightTrees/Group4" unique_id=1120313309 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/RightTrees/Group4" unique_id=959313085 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/RightTrees/Group4" unique_id=2023357899 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/RightTrees/Group4" unique_id=1465790850 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/RightTrees/Group4" unique_id=314668212 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/RightTrees/Group4" unique_id=1628849319 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/RightTrees/Group4" unique_id=2053034368 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/RightTrees/Group4" unique_id=1612697390 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/RightTrees/Group4" unique_id=1865325244 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/RightTrees/Group4" unique_id=349303258 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/RightTrees/Group4" unique_id=1348368955 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/RightTrees/Group4" unique_id=983133801 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/RightTrees/Group4" unique_id=1289057919 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/RightTrees/Group4" unique_id=907855293 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/RightTrees/Group4" unique_id=1526172851 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group5" type="Node3D" parent="Trees/RightTrees" unique_id=306320798] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 69.376305, 0, -40.02707) + +[node name="AbstractPineTree26" parent="Trees/RightTrees/Group5" unique_id=70998925 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/RightTrees/Group5" unique_id=849685610 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/RightTrees/Group5" unique_id=2011655492 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/RightTrees/Group5" unique_id=1754028593 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/RightTrees/Group5" unique_id=1040866469 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/RightTrees/Group5" unique_id=569069043 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/RightTrees/Group5" unique_id=299741028 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/RightTrees/Group5" unique_id=1965249895 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/RightTrees/Group5" unique_id=1721093524 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/RightTrees/Group5" unique_id=158739862 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/RightTrees/Group5" unique_id=1532310166 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/RightTrees/Group5" unique_id=832161333 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/RightTrees/Group5" unique_id=1509763643 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/RightTrees/Group5" unique_id=844577984 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/RightTrees/Group5" unique_id=501360846 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/RightTrees/Group5" unique_id=15113735 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/RightTrees/Group5" unique_id=211749208 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/RightTrees/Group5" unique_id=558033527 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/RightTrees/Group5" unique_id=929417901 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/RightTrees/Group5" unique_id=141715527 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/RightTrees/Group5" unique_id=994557363 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/RightTrees/Group5" unique_id=663241201 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/RightTrees/Group5" unique_id=963002336 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/RightTrees/Group5" unique_id=1471801142 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group6" type="Node3D" parent="Trees/RightTrees" unique_id=1929090278] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 59.33922, 0, -40.02707) + +[node name="AbstractPineTree26" parent="Trees/RightTrees/Group6" unique_id=739016880 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/RightTrees/Group6" unique_id=1507347900 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/RightTrees/Group6" unique_id=1571662856 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/RightTrees/Group6" unique_id=1298243836 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/RightTrees/Group6" unique_id=1866173414 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/RightTrees/Group6" unique_id=401287976 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/RightTrees/Group6" unique_id=1098878150 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/RightTrees/Group6" unique_id=1060183384 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/RightTrees/Group6" unique_id=121919809 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/RightTrees/Group6" unique_id=1134412123 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/RightTrees/Group6" unique_id=811520721 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/RightTrees/Group6" unique_id=2009503970 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/RightTrees/Group6" unique_id=44007898 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/RightTrees/Group6" unique_id=165254934 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/RightTrees/Group6" unique_id=1974541594 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/RightTrees/Group6" unique_id=2103023017 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/RightTrees/Group6" unique_id=1023284624 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/RightTrees/Group6" unique_id=448441110 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/RightTrees/Group6" unique_id=1470946619 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/RightTrees/Group6" unique_id=1286000113 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/RightTrees/Group6" unique_id=343586334 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/RightTrees/Group6" unique_id=1449211532 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/RightTrees/Group6" unique_id=85006715 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/RightTrees/Group6" unique_id=512074066 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group7" type="Node3D" parent="Trees/RightTrees" unique_id=1143397707] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 49.435505, 0, -40.02707) + +[node name="AbstractPineTree26" parent="Trees/RightTrees/Group7" unique_id=320971471 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/RightTrees/Group7" unique_id=1578320081 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/RightTrees/Group7" unique_id=1043240171 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/RightTrees/Group7" unique_id=568243890 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/RightTrees/Group7" unique_id=1279308086 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/RightTrees/Group7" unique_id=1562248010 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/RightTrees/Group7" unique_id=2099237710 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/RightTrees/Group7" unique_id=1936286667 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/RightTrees/Group7" unique_id=1832561088 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/RightTrees/Group7" unique_id=1642743705 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/RightTrees/Group7" unique_id=2142979344 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/RightTrees/Group7" unique_id=1499014317 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/RightTrees/Group7" unique_id=504267957 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/RightTrees/Group7" unique_id=671666778 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/RightTrees/Group7" unique_id=19866138 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/RightTrees/Group7" unique_id=578284771 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/RightTrees/Group7" unique_id=82463574 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/RightTrees/Group7" unique_id=1741886497 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/RightTrees/Group7" unique_id=1849650463 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/RightTrees/Group7" unique_id=1358441977 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/RightTrees/Group7" unique_id=692968721 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/RightTrees/Group7" unique_id=633366828 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/RightTrees/Group7" unique_id=73604921 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/RightTrees/Group7" unique_id=93684110 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group8" type="Node3D" parent="Trees/RightTrees" unique_id=1954623966] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 39.540806, 0, -40.02707) + +[node name="AbstractPineTree26" parent="Trees/RightTrees/Group8" unique_id=450894420 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/RightTrees/Group8" unique_id=1399748964 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/RightTrees/Group8" unique_id=1627330970 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/RightTrees/Group8" unique_id=1829592493 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/RightTrees/Group8" unique_id=1379882154 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/RightTrees/Group8" unique_id=2144434166 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/RightTrees/Group8" unique_id=1895962393 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/RightTrees/Group8" unique_id=1115379913 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/RightTrees/Group8" unique_id=247271223 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/RightTrees/Group8" unique_id=711220321 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/RightTrees/Group8" unique_id=1563038115 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/RightTrees/Group8" unique_id=221417237 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/RightTrees/Group8" unique_id=768583056 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/RightTrees/Group8" unique_id=1564806436 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/RightTrees/Group8" unique_id=114794413 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/RightTrees/Group8" unique_id=2094108742 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/RightTrees/Group8" unique_id=1657433783 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/RightTrees/Group8" unique_id=1054786430 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/RightTrees/Group8" unique_id=1179693838 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/RightTrees/Group8" unique_id=439072868 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/RightTrees/Group8" unique_id=1892045048 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/RightTrees/Group8" unique_id=1900829662 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/RightTrees/Group8" unique_id=448404269 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/RightTrees/Group8" unique_id=129962495 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group9" type="Node3D" parent="Trees/RightTrees" unique_id=954793451] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 29.50372, 0, -40.02707) + +[node name="AbstractPineTree26" parent="Trees/RightTrees/Group9" unique_id=823410584 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/RightTrees/Group9" unique_id=1975345779 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/RightTrees/Group9" unique_id=962066651 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/RightTrees/Group9" unique_id=194017847 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/RightTrees/Group9" unique_id=2102764658 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/RightTrees/Group9" unique_id=511684061 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/RightTrees/Group9" unique_id=1475499187 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/RightTrees/Group9" unique_id=144670422 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/RightTrees/Group9" unique_id=1029661254 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/RightTrees/Group9" unique_id=1274481232 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/RightTrees/Group9" unique_id=1111415194 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/RightTrees/Group9" unique_id=1554480697 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/RightTrees/Group9" unique_id=87061128 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/RightTrees/Group9" unique_id=1534638863 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/RightTrees/Group9" unique_id=1513463916 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/RightTrees/Group9" unique_id=29352966 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/RightTrees/Group9" unique_id=93146903 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/RightTrees/Group9" unique_id=635254941 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/RightTrees/Group9" unique_id=1684282497 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/RightTrees/Group9" unique_id=913832057 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/RightTrees/Group9" unique_id=732767145 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/RightTrees/Group9" unique_id=479882975 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/RightTrees/Group9" unique_id=299508298 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/RightTrees/Group9" unique_id=245985477 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group10" type="Node3D" parent="Trees/RightTrees" unique_id=1552394651] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 19.674198, 0, -40.02707) + +[node name="AbstractPineTree26" parent="Trees/RightTrees/Group10" unique_id=1845136508 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/RightTrees/Group10" unique_id=935600047 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/RightTrees/Group10" unique_id=66682571 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/RightTrees/Group10" unique_id=761385721 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/RightTrees/Group10" unique_id=46243121 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/RightTrees/Group10" unique_id=1636545026 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/RightTrees/Group10" unique_id=1908773018 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/RightTrees/Group10" unique_id=114203364 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/RightTrees/Group10" unique_id=1907647420 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/RightTrees/Group10" unique_id=1268848030 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/RightTrees/Group10" unique_id=162981393 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/RightTrees/Group10" unique_id=1209145020 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/RightTrees/Group10" unique_id=597696352 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/RightTrees/Group10" unique_id=1877716808 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/RightTrees/Group10" unique_id=1818918076 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/RightTrees/Group10" unique_id=85239364 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/RightTrees/Group10" unique_id=1756643755 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/RightTrees/Group10" unique_id=139261645 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/RightTrees/Group10" unique_id=714313504 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/RightTrees/Group10" unique_id=2115720147 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/RightTrees/Group10" unique_id=1151810564 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/RightTrees/Group10" unique_id=8526680 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/RightTrees/Group10" unique_id=1781539291 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/RightTrees/Group10" unique_id=1637352235 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group11" type="Node3D" parent="Trees/RightTrees" unique_id=1141712482] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9.779499, 0, -40.02707) + +[node name="AbstractPineTree26" parent="Trees/RightTrees/Group11" unique_id=63545671 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/RightTrees/Group11" unique_id=103473837 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/RightTrees/Group11" unique_id=647648505 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/RightTrees/Group11" unique_id=249888196 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/RightTrees/Group11" unique_id=1951617243 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/RightTrees/Group11" unique_id=943516268 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/RightTrees/Group11" unique_id=463055743 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/RightTrees/Group11" unique_id=1457225431 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/RightTrees/Group11" unique_id=419947483 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/RightTrees/Group11" unique_id=1005644056 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/RightTrees/Group11" unique_id=901726668 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/RightTrees/Group11" unique_id=1440886965 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/RightTrees/Group11" unique_id=756221722 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/RightTrees/Group11" unique_id=390632027 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/RightTrees/Group11" unique_id=685872400 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/RightTrees/Group11" unique_id=689969084 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/RightTrees/Group11" unique_id=430654949 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/RightTrees/Group11" unique_id=2042593422 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/RightTrees/Group11" unique_id=1105301442 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/RightTrees/Group11" unique_id=1540597194 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/RightTrees/Group11" unique_id=1700205214 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/RightTrees/Group11" unique_id=31331244 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/RightTrees/Group11" unique_id=1684561934 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/RightTrees/Group11" unique_id=173948390 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group12" type="Node3D" parent="Trees/RightTrees" unique_id=1722463058] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.25758743, 0, -40.02707) + +[node name="AbstractPineTree26" parent="Trees/RightTrees/Group12" unique_id=129822070 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/RightTrees/Group12" unique_id=619618304 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/RightTrees/Group12" unique_id=485576147 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/RightTrees/Group12" unique_id=4213759 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/RightTrees/Group12" unique_id=876587072 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/RightTrees/Group12" unique_id=680977202 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/RightTrees/Group12" unique_id=2064534547 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/RightTrees/Group12" unique_id=1262533404 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/RightTrees/Group12" unique_id=2095212554 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/RightTrees/Group12" unique_id=1805729737 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/RightTrees/Group12" unique_id=835007330 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/RightTrees/Group12" unique_id=489321689 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/RightTrees/Group12" unique_id=933925335 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/RightTrees/Group12" unique_id=1774307974 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/RightTrees/Group12" unique_id=400381341 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/RightTrees/Group12" unique_id=887421923 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/RightTrees/Group12" unique_id=1132220117 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/RightTrees/Group12" unique_id=967404838 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/RightTrees/Group12" unique_id=90259048 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/RightTrees/Group12" unique_id=756804022 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/RightTrees/Group12" unique_id=1004708055 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/RightTrees/Group12" unique_id=2018713313 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/RightTrees/Group12" unique_id=917782348 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/RightTrees/Group12" unique_id=661565897 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group13" type="Node3D" parent="Trees/RightTrees" unique_id=799342681] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.913013, 0, -40.02707) + +[node name="AbstractPineTree26" parent="Trees/RightTrees/Group13" unique_id=489467433 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/RightTrees/Group13" unique_id=829373660 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/RightTrees/Group13" unique_id=2134271542 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/RightTrees/Group13" unique_id=1156533439 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/RightTrees/Group13" unique_id=884451735 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/RightTrees/Group13" unique_id=1323692985 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/RightTrees/Group13" unique_id=1500836152 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/RightTrees/Group13" unique_id=868536355 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/RightTrees/Group13" unique_id=63249731 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/RightTrees/Group13" unique_id=723853279 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/RightTrees/Group13" unique_id=1452067979 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/RightTrees/Group13" unique_id=727549789 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/RightTrees/Group13" unique_id=810269289 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/RightTrees/Group13" unique_id=531921942 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/RightTrees/Group13" unique_id=1467926910 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/RightTrees/Group13" unique_id=952766822 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/RightTrees/Group13" unique_id=1756925290 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/RightTrees/Group13" unique_id=277215562 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/RightTrees/Group13" unique_id=1028757951 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/RightTrees/Group13" unique_id=987837496 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/RightTrees/Group13" unique_id=1894096181 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/RightTrees/Group13" unique_id=631505364 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/RightTrees/Group13" unique_id=409084017 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/RightTrees/Group13" unique_id=192101788 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group14" type="Node3D" parent="Trees/RightTrees" unique_id=1645055014] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -19.807713, 0, -40.02707) + +[node name="AbstractPineTree26" parent="Trees/RightTrees/Group14" unique_id=990798678 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/RightTrees/Group14" unique_id=926035063 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/RightTrees/Group14" unique_id=574957869 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/RightTrees/Group14" unique_id=1608564878 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/RightTrees/Group14" unique_id=2143409329 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/RightTrees/Group14" unique_id=1738245532 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/RightTrees/Group14" unique_id=493740637 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/RightTrees/Group14" unique_id=231895317 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/RightTrees/Group14" unique_id=670700397 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/RightTrees/Group14" unique_id=413791950 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/RightTrees/Group14" unique_id=34249971 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/RightTrees/Group14" unique_id=118250098 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/RightTrees/Group14" unique_id=994131623 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/RightTrees/Group14" unique_id=302688658 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/RightTrees/Group14" unique_id=1566109614 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/RightTrees/Group14" unique_id=2018572292 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/RightTrees/Group14" unique_id=1379262786 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/RightTrees/Group14" unique_id=1095337146 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/RightTrees/Group14" unique_id=752856029 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/RightTrees/Group14" unique_id=812594663 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/RightTrees/Group14" unique_id=435363936 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/RightTrees/Group14" unique_id=2021790725 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/RightTrees/Group14" unique_id=1653758858 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/RightTrees/Group14" unique_id=454271796 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group15" type="Node3D" parent="Trees/RightTrees" unique_id=2046196419] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -29.844799, 0, -40.02707) + +[node name="AbstractPineTree26" parent="Trees/RightTrees/Group15" unique_id=928101477 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/RightTrees/Group15" unique_id=949998250 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/RightTrees/Group15" unique_id=1604109128 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/RightTrees/Group15" unique_id=2140518353 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/RightTrees/Group15" unique_id=791104821 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/RightTrees/Group15" unique_id=278566971 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/RightTrees/Group15" unique_id=1775618473 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/RightTrees/Group15" unique_id=1338034024 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/RightTrees/Group15" unique_id=121625566 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/RightTrees/Group15" unique_id=817657278 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/RightTrees/Group15" unique_id=378128910 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/RightTrees/Group15" unique_id=1950191054 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/RightTrees/Group15" unique_id=631867361 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/RightTrees/Group15" unique_id=2029690398 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/RightTrees/Group15" unique_id=946605767 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/RightTrees/Group15" unique_id=1522090717 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/RightTrees/Group15" unique_id=635689243 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/RightTrees/Group15" unique_id=2084405414 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/RightTrees/Group15" unique_id=1397799181 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/RightTrees/Group15" unique_id=1270700838 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/RightTrees/Group15" unique_id=1115121382 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/RightTrees/Group15" unique_id=712155762 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/RightTrees/Group15" unique_id=1215420019 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/RightTrees/Group15" unique_id=1125610555 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group16" type="Node3D" parent="Trees/RightTrees" unique_id=1225955466] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -39.67432, 0, -40.02707) + +[node name="AbstractPineTree26" parent="Trees/RightTrees/Group16" unique_id=414357796 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/RightTrees/Group16" unique_id=329045165 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/RightTrees/Group16" unique_id=757412013 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/RightTrees/Group16" unique_id=1821638361 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/RightTrees/Group16" unique_id=795459658 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/RightTrees/Group16" unique_id=883980638 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/RightTrees/Group16" unique_id=1535986134 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/RightTrees/Group16" unique_id=565650887 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/RightTrees/Group16" unique_id=1492152789 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/RightTrees/Group16" unique_id=201711867 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/RightTrees/Group16" unique_id=908931034 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/RightTrees/Group16" unique_id=1471845948 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/RightTrees/Group16" unique_id=49482262 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/RightTrees/Group16" unique_id=442890963 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/RightTrees/Group16" unique_id=456892648 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/RightTrees/Group16" unique_id=1888737686 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/RightTrees/Group16" unique_id=1949609142 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/RightTrees/Group16" unique_id=687217526 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/RightTrees/Group16" unique_id=1077512153 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/RightTrees/Group16" unique_id=1847692684 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/RightTrees/Group16" unique_id=1523291488 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/RightTrees/Group16" unique_id=554744749 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/RightTrees/Group16" unique_id=399529306 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/RightTrees/Group16" unique_id=117321991 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group17" type="Node3D" parent="Trees/RightTrees" unique_id=1671696171] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -49.56902, 0, -40.02707) + +[node name="AbstractPineTree26" parent="Trees/RightTrees/Group17" unique_id=639989037 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/RightTrees/Group17" unique_id=1470354484 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/RightTrees/Group17" unique_id=165740163 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/RightTrees/Group17" unique_id=986466558 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/RightTrees/Group17" unique_id=1979854586 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/RightTrees/Group17" unique_id=1360292032 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/RightTrees/Group17" unique_id=1695533193 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/RightTrees/Group17" unique_id=156685740 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/RightTrees/Group17" unique_id=1652701677 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/RightTrees/Group17" unique_id=976918280 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/RightTrees/Group17" unique_id=1595100265 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/RightTrees/Group17" unique_id=369467255 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/RightTrees/Group17" unique_id=293352498 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/RightTrees/Group17" unique_id=1348994366 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/RightTrees/Group17" unique_id=121979566 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/RightTrees/Group17" unique_id=68373041 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/RightTrees/Group17" unique_id=633532906 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/RightTrees/Group17" unique_id=20963914 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/RightTrees/Group17" unique_id=1528525835 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/RightTrees/Group17" unique_id=1509420334 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/RightTrees/Group17" unique_id=1378579811 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/RightTrees/Group17" unique_id=1140997699 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/RightTrees/Group17" unique_id=2145268694 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/RightTrees/Group17" unique_id=455724077 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group18" type="Node3D" parent="Trees/RightTrees" unique_id=580573541] +transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -50.747158, 0, -18.659096) + +[node name="AbstractPineTree26" parent="Trees/RightTrees/Group18" unique_id=1911736682 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/RightTrees/Group18" unique_id=1756847487 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/RightTrees/Group18" unique_id=422049726 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/RightTrees/Group18" unique_id=864498744 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2412148, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/RightTrees/Group18" unique_id=374526759 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/RightTrees/Group18" unique_id=55806730 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/RightTrees/Group18" unique_id=1612817974 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/RightTrees/Group18" unique_id=1202816311 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/RightTrees/Group18" unique_id=1657173487 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/RightTrees/Group18" unique_id=1183494179 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/RightTrees/Group18" unique_id=1152138192 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/RightTrees/Group18" unique_id=874924545 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.1617088, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/RightTrees/Group18" unique_id=1704302619 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/RightTrees/Group18" unique_id=1391813207 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/RightTrees/Group18" unique_id=1498142895 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/RightTrees/Group18" unique_id=1850210933 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/RightTrees/Group18" unique_id=1615678204 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/RightTrees/Group18" unique_id=880836578 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/RightTrees/Group18" unique_id=277318165 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/RightTrees/Group18" unique_id=1467807704 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/RightTrees/Group18" unique_id=627037516 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/RightTrees/Group18" unique_id=1512340984 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/RightTrees/Group18" unique_id=1541900491 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/RightTrees/Group18" unique_id=1579820101 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group19" type="Node3D" parent="Trees/RightTrees" unique_id=805313576] +transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -50.747158, 0, -28.666649) + +[node name="AbstractPineTree26" parent="Trees/RightTrees/Group19" unique_id=1506355583 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/RightTrees/Group19" unique_id=407977999 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/RightTrees/Group19" unique_id=811806551 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/RightTrees/Group19" unique_id=1875660633 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/RightTrees/Group19" unique_id=1556623290 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/RightTrees/Group19" unique_id=2048658170 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/RightTrees/Group19" unique_id=1909458145 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/RightTrees/Group19" unique_id=1588727012 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/RightTrees/Group19" unique_id=1416548945 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/RightTrees/Group19" unique_id=1655832068 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/RightTrees/Group19" unique_id=323707570 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/RightTrees/Group19" unique_id=486040016 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/RightTrees/Group19" unique_id=434007949 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/RightTrees/Group19" unique_id=662205356 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/RightTrees/Group19" unique_id=1329656557 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/RightTrees/Group19" unique_id=1824935409 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/RightTrees/Group19" unique_id=1143626441 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/RightTrees/Group19" unique_id=866914307 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/RightTrees/Group19" unique_id=1970799001 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/RightTrees/Group19" unique_id=31752116 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/RightTrees/Group19" unique_id=1159570589 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/RightTrees/Group19" unique_id=1739626818 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/RightTrees/Group19" unique_id=2002455205 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/RightTrees/Group19" unique_id=945272610 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group20" type="Node3D" parent="Trees/RightTrees" unique_id=1818444085] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24.536905, 0, -24.347704) + +[node name="AbstractPineTree26" parent="Trees/RightTrees/Group20" unique_id=595201290 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/RightTrees/Group20" unique_id=466667407 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/RightTrees/Group20" unique_id=1966961751 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/RightTrees/Group20" unique_id=1604913852 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/RightTrees/Group20" unique_id=1248126087 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/RightTrees/Group20" unique_id=2112008047 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/RightTrees/Group20" unique_id=58983251 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/RightTrees/Group20" unique_id=1022444175 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/RightTrees/Group20" unique_id=200769777 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/RightTrees/Group20" unique_id=1596907830 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/RightTrees/Group20" unique_id=1291652400 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/RightTrees/Group20" unique_id=1800162835 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/RightTrees/Group20" unique_id=1091888357 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/RightTrees/Group20" unique_id=467826020 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/RightTrees/Group20" unique_id=429287379 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/RightTrees/Group20" unique_id=1621722673 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/RightTrees/Group20" unique_id=305823740 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/RightTrees/Group20" unique_id=1767768552 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/RightTrees/Group20" unique_id=970595401 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/RightTrees/Group20" unique_id=636271271 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/RightTrees/Group20" unique_id=1474175921 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/RightTrees/Group20" unique_id=1388601083 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/RightTrees/Group20" unique_id=421485201 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/RightTrees/Group20" unique_id=2029258178 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group21" type="Node3D" parent="Trees/RightTrees" unique_id=1346011773] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14.707384, 0, -24.347704) + +[node name="AbstractPineTree26" parent="Trees/RightTrees/Group21" unique_id=477617013 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/RightTrees/Group21" unique_id=341365724 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/RightTrees/Group21" unique_id=991166755 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/RightTrees/Group21" unique_id=643051669 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/RightTrees/Group21" unique_id=1472339189 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/RightTrees/Group21" unique_id=930497229 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/RightTrees/Group21" unique_id=1555485343 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/RightTrees/Group21" unique_id=1403455811 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/RightTrees/Group21" unique_id=843678156 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/RightTrees/Group21" unique_id=1892903570 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/RightTrees/Group21" unique_id=1018889670 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/RightTrees/Group21" unique_id=241307597 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/RightTrees/Group21" unique_id=1822214442 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/RightTrees/Group21" unique_id=1504085164 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/RightTrees/Group21" unique_id=946195786 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/RightTrees/Group21" unique_id=2013057936 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/RightTrees/Group21" unique_id=1045102248 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/RightTrees/Group21" unique_id=1606702267 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/RightTrees/Group21" unique_id=774947699 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/RightTrees/Group21" unique_id=2109584449 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/RightTrees/Group21" unique_id=673398841 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/RightTrees/Group21" unique_id=548297500 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/RightTrees/Group21" unique_id=1267402454 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/RightTrees/Group21" unique_id=2061076757 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="LeftTrees" type="Node" parent="Trees" unique_id=1812569870] + +[node name="Group1" type="Node3D" parent="Trees/LeftTrees" unique_id=2072568866] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 109.03231, 0, 48.210464) + +[node name="AbstractPineTree26" parent="Trees/LeftTrees/Group1" unique_id=1102309067 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/LeftTrees/Group1" unique_id=1060569698 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/LeftTrees/Group1" unique_id=620489647 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/LeftTrees/Group1" unique_id=77992049 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/LeftTrees/Group1" unique_id=1481682836 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/LeftTrees/Group1" unique_id=142701509 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/LeftTrees/Group1" unique_id=135636591 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/LeftTrees/Group1" unique_id=682933982 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/LeftTrees/Group1" unique_id=2030007482 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/LeftTrees/Group1" unique_id=1996458098 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/LeftTrees/Group1" unique_id=1584048116 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/LeftTrees/Group1" unique_id=2009559811 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/LeftTrees/Group1" unique_id=1460592856 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/LeftTrees/Group1" unique_id=1241686472 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/LeftTrees/Group1" unique_id=1732106447 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/LeftTrees/Group1" unique_id=470094114 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/LeftTrees/Group1" unique_id=776071727 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/LeftTrees/Group1" unique_id=1545571978 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/LeftTrees/Group1" unique_id=270859652 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/LeftTrees/Group1" unique_id=1169232424 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/LeftTrees/Group1" unique_id=1479161201 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/LeftTrees/Group1" unique_id=505218124 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/LeftTrees/Group1" unique_id=1818884331 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/LeftTrees/Group1" unique_id=1653765460 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group2" type="Node3D" parent="Trees/LeftTrees" unique_id=1925177652] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 99.13761, 0, 48.210464) + +[node name="AbstractPineTree26" parent="Trees/LeftTrees/Group2" unique_id=1068597465 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/LeftTrees/Group2" unique_id=1465498188 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/LeftTrees/Group2" unique_id=289037077 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/LeftTrees/Group2" unique_id=86456089 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/LeftTrees/Group2" unique_id=1884666501 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/LeftTrees/Group2" unique_id=1422238145 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/LeftTrees/Group2" unique_id=2087505400 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/LeftTrees/Group2" unique_id=654678646 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/LeftTrees/Group2" unique_id=1402795091 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/LeftTrees/Group2" unique_id=1547360345 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/LeftTrees/Group2" unique_id=1588418436 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/LeftTrees/Group2" unique_id=832256946 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/LeftTrees/Group2" unique_id=2097062830 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/LeftTrees/Group2" unique_id=1189623611 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/LeftTrees/Group2" unique_id=587955234 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/LeftTrees/Group2" unique_id=691245838 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/LeftTrees/Group2" unique_id=687218274 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/LeftTrees/Group2" unique_id=2010499080 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/LeftTrees/Group2" unique_id=1528819856 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/LeftTrees/Group2" unique_id=15417073 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/LeftTrees/Group2" unique_id=1637790927 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/LeftTrees/Group2" unique_id=2095802167 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/LeftTrees/Group2" unique_id=1815629654 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/LeftTrees/Group2" unique_id=95574106 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group3" type="Node3D" parent="Trees/LeftTrees" unique_id=1884744725] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 89.100525, 0, 48.210464) + +[node name="AbstractPineTree26" parent="Trees/LeftTrees/Group3" unique_id=452696047 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/LeftTrees/Group3" unique_id=2038639593 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/LeftTrees/Group3" unique_id=1537813552 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/LeftTrees/Group3" unique_id=1767378293 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/LeftTrees/Group3" unique_id=605132646 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/LeftTrees/Group3" unique_id=1826680939 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/LeftTrees/Group3" unique_id=1878668195 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/LeftTrees/Group3" unique_id=2109060404 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/LeftTrees/Group3" unique_id=1779893286 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/LeftTrees/Group3" unique_id=485557579 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/LeftTrees/Group3" unique_id=582994439 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/LeftTrees/Group3" unique_id=1707809449 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/LeftTrees/Group3" unique_id=2050771727 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/LeftTrees/Group3" unique_id=241508866 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/LeftTrees/Group3" unique_id=479055447 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/LeftTrees/Group3" unique_id=1664582698 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/LeftTrees/Group3" unique_id=1453991831 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/LeftTrees/Group3" unique_id=1110505167 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/LeftTrees/Group3" unique_id=1658209885 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/LeftTrees/Group3" unique_id=1236864189 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/LeftTrees/Group3" unique_id=49073451 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/LeftTrees/Group3" unique_id=711455082 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/LeftTrees/Group3" unique_id=734639175 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/LeftTrees/Group3" unique_id=244204847 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group4" type="Node3D" parent="Trees/LeftTrees" unique_id=1541246629] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 79.271, 0, 48.210464) + +[node name="AbstractPineTree26" parent="Trees/LeftTrees/Group4" unique_id=48256911 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/LeftTrees/Group4" unique_id=1976814883 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/LeftTrees/Group4" unique_id=2136353988 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/LeftTrees/Group4" unique_id=233716857 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/LeftTrees/Group4" unique_id=1120427392 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/LeftTrees/Group4" unique_id=494798379 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/LeftTrees/Group4" unique_id=1443364957 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/LeftTrees/Group4" unique_id=897171902 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/LeftTrees/Group4" unique_id=1976365683 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/LeftTrees/Group4" unique_id=652214407 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/LeftTrees/Group4" unique_id=324678300 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/LeftTrees/Group4" unique_id=1603767512 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/LeftTrees/Group4" unique_id=1008450856 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/LeftTrees/Group4" unique_id=423807041 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/LeftTrees/Group4" unique_id=113058599 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/LeftTrees/Group4" unique_id=768725271 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/LeftTrees/Group4" unique_id=548614388 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/LeftTrees/Group4" unique_id=767960368 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/LeftTrees/Group4" unique_id=1444754061 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/LeftTrees/Group4" unique_id=1561738341 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/LeftTrees/Group4" unique_id=301332639 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/LeftTrees/Group4" unique_id=765988341 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/LeftTrees/Group4" unique_id=1691484242 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/LeftTrees/Group4" unique_id=947234132 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group5" type="Node3D" parent="Trees/LeftTrees" unique_id=1376112218] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 69.376305, 0, 48.210464) + +[node name="AbstractPineTree26" parent="Trees/LeftTrees/Group5" unique_id=629598551 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/LeftTrees/Group5" unique_id=1214519248 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/LeftTrees/Group5" unique_id=1736047862 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/LeftTrees/Group5" unique_id=301063926 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/LeftTrees/Group5" unique_id=1280950435 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/LeftTrees/Group5" unique_id=1930639215 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/LeftTrees/Group5" unique_id=1638531166 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/LeftTrees/Group5" unique_id=587467025 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/LeftTrees/Group5" unique_id=123404738 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/LeftTrees/Group5" unique_id=1092199826 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/LeftTrees/Group5" unique_id=1869632714 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/LeftTrees/Group5" unique_id=1661635147 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/LeftTrees/Group5" unique_id=829726156 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/LeftTrees/Group5" unique_id=198324905 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/LeftTrees/Group5" unique_id=1715924694 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/LeftTrees/Group5" unique_id=1873027054 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/LeftTrees/Group5" unique_id=1052759880 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/LeftTrees/Group5" unique_id=479461671 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/LeftTrees/Group5" unique_id=1183092147 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/LeftTrees/Group5" unique_id=1194514397 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/LeftTrees/Group5" unique_id=1039126377 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/LeftTrees/Group5" unique_id=1414230895 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/LeftTrees/Group5" unique_id=1086276838 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/LeftTrees/Group5" unique_id=679669601 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group6" type="Node3D" parent="Trees/LeftTrees" unique_id=433113917] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 59.33922, 0, 48.210464) + +[node name="AbstractPineTree26" parent="Trees/LeftTrees/Group6" unique_id=1783588424 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/LeftTrees/Group6" unique_id=1829078344 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/LeftTrees/Group6" unique_id=767995764 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/LeftTrees/Group6" unique_id=1872042671 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/LeftTrees/Group6" unique_id=2028887814 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/LeftTrees/Group6" unique_id=255327010 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/LeftTrees/Group6" unique_id=790168908 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/LeftTrees/Group6" unique_id=809324022 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/LeftTrees/Group6" unique_id=105550222 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/LeftTrees/Group6" unique_id=1693639629 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/LeftTrees/Group6" unique_id=1572082686 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/LeftTrees/Group6" unique_id=121616767 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/LeftTrees/Group6" unique_id=1987089825 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/LeftTrees/Group6" unique_id=152030504 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/LeftTrees/Group6" unique_id=1088708033 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/LeftTrees/Group6" unique_id=1772301055 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/LeftTrees/Group6" unique_id=1479079959 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/LeftTrees/Group6" unique_id=2040328984 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/LeftTrees/Group6" unique_id=436151846 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/LeftTrees/Group6" unique_id=2117884419 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/LeftTrees/Group6" unique_id=9927204 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/LeftTrees/Group6" unique_id=1293733037 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/LeftTrees/Group6" unique_id=1880842869 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/LeftTrees/Group6" unique_id=1297946937 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group7" type="Node3D" parent="Trees/LeftTrees" unique_id=1368144926] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 49.435505, 0, 48.210464) + +[node name="AbstractPineTree26" parent="Trees/LeftTrees/Group7" unique_id=37651878 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/LeftTrees/Group7" unique_id=681670025 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/LeftTrees/Group7" unique_id=1152906874 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/LeftTrees/Group7" unique_id=1466208725 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/LeftTrees/Group7" unique_id=607837152 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/LeftTrees/Group7" unique_id=408204626 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/LeftTrees/Group7" unique_id=165820385 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/LeftTrees/Group7" unique_id=1843280260 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/LeftTrees/Group7" unique_id=183847888 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/LeftTrees/Group7" unique_id=891132464 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/LeftTrees/Group7" unique_id=38552420 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/LeftTrees/Group7" unique_id=160576893 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/LeftTrees/Group7" unique_id=499992111 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/LeftTrees/Group7" unique_id=65821166 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/LeftTrees/Group7" unique_id=1083197506 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/LeftTrees/Group7" unique_id=564037623 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/LeftTrees/Group7" unique_id=530447307 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/LeftTrees/Group7" unique_id=871306142 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/LeftTrees/Group7" unique_id=1831685227 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/LeftTrees/Group7" unique_id=736047160 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/LeftTrees/Group7" unique_id=1124695812 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/LeftTrees/Group7" unique_id=1063326354 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/LeftTrees/Group7" unique_id=484809560 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/LeftTrees/Group7" unique_id=1668834123 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group8" type="Node3D" parent="Trees/LeftTrees" unique_id=1713869010] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 39.540806, 0, 48.210464) + +[node name="AbstractPineTree26" parent="Trees/LeftTrees/Group8" unique_id=1249361750 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/LeftTrees/Group8" unique_id=654097984 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/LeftTrees/Group8" unique_id=904911416 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/LeftTrees/Group8" unique_id=667613837 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/LeftTrees/Group8" unique_id=1378276365 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/LeftTrees/Group8" unique_id=337898933 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/LeftTrees/Group8" unique_id=790632133 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/LeftTrees/Group8" unique_id=1230246030 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/LeftTrees/Group8" unique_id=1013553283 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/LeftTrees/Group8" unique_id=1149967048 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/LeftTrees/Group8" unique_id=1057025183 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/LeftTrees/Group8" unique_id=1328031359 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/LeftTrees/Group8" unique_id=1258470466 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/LeftTrees/Group8" unique_id=245664055 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/LeftTrees/Group8" unique_id=800385167 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/LeftTrees/Group8" unique_id=181645823 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/LeftTrees/Group8" unique_id=194896695 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/LeftTrees/Group8" unique_id=843108224 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/LeftTrees/Group8" unique_id=744444625 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/LeftTrees/Group8" unique_id=1713857496 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/LeftTrees/Group8" unique_id=1374884745 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/LeftTrees/Group8" unique_id=632535113 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/LeftTrees/Group8" unique_id=331939953 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/LeftTrees/Group8" unique_id=1496671132 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group9" type="Node3D" parent="Trees/LeftTrees" unique_id=1153021014] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 29.50372, 0, 48.210464) + +[node name="AbstractPineTree26" parent="Trees/LeftTrees/Group9" unique_id=112698500 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/LeftTrees/Group9" unique_id=817267664 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/LeftTrees/Group9" unique_id=435876376 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/LeftTrees/Group9" unique_id=932102712 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/LeftTrees/Group9" unique_id=1322204124 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/LeftTrees/Group9" unique_id=413105422 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/LeftTrees/Group9" unique_id=1728893064 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/LeftTrees/Group9" unique_id=440336042 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/LeftTrees/Group9" unique_id=498637424 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/LeftTrees/Group9" unique_id=1954573828 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/LeftTrees/Group9" unique_id=300093516 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/LeftTrees/Group9" unique_id=478406894 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/LeftTrees/Group9" unique_id=810615605 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/LeftTrees/Group9" unique_id=23839596 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/LeftTrees/Group9" unique_id=807735686 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/LeftTrees/Group9" unique_id=1291763943 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/LeftTrees/Group9" unique_id=356578500 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/LeftTrees/Group9" unique_id=609439761 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/LeftTrees/Group9" unique_id=259875106 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/LeftTrees/Group9" unique_id=1436171741 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/LeftTrees/Group9" unique_id=583361864 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/LeftTrees/Group9" unique_id=1160986945 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/LeftTrees/Group9" unique_id=782710554 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/LeftTrees/Group9" unique_id=1734797624 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group10" type="Node3D" parent="Trees/LeftTrees" unique_id=947017226] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 19.674198, 0, 48.210464) + +[node name="AbstractPineTree26" parent="Trees/LeftTrees/Group10" unique_id=2036509406 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/LeftTrees/Group10" unique_id=748814052 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/LeftTrees/Group10" unique_id=175281430 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/LeftTrees/Group10" unique_id=1232628060 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/LeftTrees/Group10" unique_id=1138347300 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/LeftTrees/Group10" unique_id=2030023654 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/LeftTrees/Group10" unique_id=290145690 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/LeftTrees/Group10" unique_id=1168189207 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/LeftTrees/Group10" unique_id=1056586020 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/LeftTrees/Group10" unique_id=532262148 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/LeftTrees/Group10" unique_id=1670680690 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/LeftTrees/Group10" unique_id=1776875471 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/LeftTrees/Group10" unique_id=1172177313 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/LeftTrees/Group10" unique_id=1058792735 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/LeftTrees/Group10" unique_id=1084110431 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/LeftTrees/Group10" unique_id=966385136 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/LeftTrees/Group10" unique_id=1217768161 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/LeftTrees/Group10" unique_id=1796447262 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/LeftTrees/Group10" unique_id=409944209 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/LeftTrees/Group10" unique_id=1468077332 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/LeftTrees/Group10" unique_id=466920103 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/LeftTrees/Group10" unique_id=1122801687 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/LeftTrees/Group10" unique_id=1534885136 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/LeftTrees/Group10" unique_id=1556765161 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group11" type="Node3D" parent="Trees/LeftTrees" unique_id=1010746024] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9.779499, 0, 48.210464) + +[node name="AbstractPineTree26" parent="Trees/LeftTrees/Group11" unique_id=959447499 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/LeftTrees/Group11" unique_id=259913719 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/LeftTrees/Group11" unique_id=471132130 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/LeftTrees/Group11" unique_id=462327725 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/LeftTrees/Group11" unique_id=1088694841 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/LeftTrees/Group11" unique_id=1639983875 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/LeftTrees/Group11" unique_id=1127487150 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/LeftTrees/Group11" unique_id=1362012192 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/LeftTrees/Group11" unique_id=947046409 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/LeftTrees/Group11" unique_id=1710945318 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/LeftTrees/Group11" unique_id=201246649 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/LeftTrees/Group11" unique_id=1510850138 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/LeftTrees/Group11" unique_id=4222507 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/LeftTrees/Group11" unique_id=345889026 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/LeftTrees/Group11" unique_id=2041439951 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/LeftTrees/Group11" unique_id=476935421 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/LeftTrees/Group11" unique_id=195099688 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/LeftTrees/Group11" unique_id=1544864806 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/LeftTrees/Group11" unique_id=1363798333 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/LeftTrees/Group11" unique_id=750841314 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/LeftTrees/Group11" unique_id=878947569 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/LeftTrees/Group11" unique_id=2120615991 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/LeftTrees/Group11" unique_id=1270539266 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/LeftTrees/Group11" unique_id=1376992954 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group12" type="Node3D" parent="Trees/LeftTrees" unique_id=152855763] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.25758743, 0, 48.210464) + +[node name="AbstractPineTree26" parent="Trees/LeftTrees/Group12" unique_id=1756638666 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/LeftTrees/Group12" unique_id=721586489 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/LeftTrees/Group12" unique_id=1240731155 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/LeftTrees/Group12" unique_id=2117848866 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/LeftTrees/Group12" unique_id=198477718 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/LeftTrees/Group12" unique_id=1252885291 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/LeftTrees/Group12" unique_id=126877299 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/LeftTrees/Group12" unique_id=528492210 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/LeftTrees/Group12" unique_id=848264126 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/LeftTrees/Group12" unique_id=1673743853 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/LeftTrees/Group12" unique_id=1604231881 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/LeftTrees/Group12" unique_id=1966669627 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/LeftTrees/Group12" unique_id=1450073880 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/LeftTrees/Group12" unique_id=1597432108 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/LeftTrees/Group12" unique_id=2147219248 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/LeftTrees/Group12" unique_id=1729621426 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/LeftTrees/Group12" unique_id=961231043 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/LeftTrees/Group12" unique_id=549227108 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/LeftTrees/Group12" unique_id=1904855173 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/LeftTrees/Group12" unique_id=1820721754 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/LeftTrees/Group12" unique_id=756482241 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/LeftTrees/Group12" unique_id=587362555 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/LeftTrees/Group12" unique_id=2099656079 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/LeftTrees/Group12" unique_id=478795455 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group13" type="Node3D" parent="Trees/LeftTrees" unique_id=1033246880] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.913013, 0, 48.210464) + +[node name="AbstractPineTree26" parent="Trees/LeftTrees/Group13" unique_id=376018530 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/LeftTrees/Group13" unique_id=1745711503 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/LeftTrees/Group13" unique_id=701565930 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/LeftTrees/Group13" unique_id=81651862 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/LeftTrees/Group13" unique_id=764898544 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/LeftTrees/Group13" unique_id=1809813961 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/LeftTrees/Group13" unique_id=648529997 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/LeftTrees/Group13" unique_id=1486380566 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/LeftTrees/Group13" unique_id=1951318213 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/LeftTrees/Group13" unique_id=301683072 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/LeftTrees/Group13" unique_id=1522349809 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/LeftTrees/Group13" unique_id=1769993617 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/LeftTrees/Group13" unique_id=1308828024 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/LeftTrees/Group13" unique_id=943750868 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/LeftTrees/Group13" unique_id=574393127 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/LeftTrees/Group13" unique_id=1682197599 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/LeftTrees/Group13" unique_id=1100262376 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/LeftTrees/Group13" unique_id=1360434395 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/LeftTrees/Group13" unique_id=868994768 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/LeftTrees/Group13" unique_id=248511623 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/LeftTrees/Group13" unique_id=1095203852 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/LeftTrees/Group13" unique_id=320172533 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/LeftTrees/Group13" unique_id=218349207 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/LeftTrees/Group13" unique_id=1520821713 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group14" type="Node3D" parent="Trees/LeftTrees" unique_id=537669950] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -19.807713, 0, 48.210464) + +[node name="AbstractPineTree26" parent="Trees/LeftTrees/Group14" unique_id=1115327842 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/LeftTrees/Group14" unique_id=581634067 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/LeftTrees/Group14" unique_id=608563156 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/LeftTrees/Group14" unique_id=903795717 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/LeftTrees/Group14" unique_id=1954938985 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/LeftTrees/Group14" unique_id=1269567685 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/LeftTrees/Group14" unique_id=754811843 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/LeftTrees/Group14" unique_id=1086887180 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/LeftTrees/Group14" unique_id=908231750 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/LeftTrees/Group14" unique_id=2012918195 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/LeftTrees/Group14" unique_id=620382983 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/LeftTrees/Group14" unique_id=1633472717 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/LeftTrees/Group14" unique_id=1456581699 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/LeftTrees/Group14" unique_id=2126888526 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/LeftTrees/Group14" unique_id=81444763 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/LeftTrees/Group14" unique_id=1068227678 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/LeftTrees/Group14" unique_id=1703316130 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/LeftTrees/Group14" unique_id=1158926497 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/LeftTrees/Group14" unique_id=732660949 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/LeftTrees/Group14" unique_id=1915554211 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/LeftTrees/Group14" unique_id=602204204 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/LeftTrees/Group14" unique_id=1587325180 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/LeftTrees/Group14" unique_id=1065185787 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/LeftTrees/Group14" unique_id=760751904 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group15" type="Node3D" parent="Trees/LeftTrees" unique_id=21260490] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -29.844799, 0, 48.210464) + +[node name="AbstractPineTree26" parent="Trees/LeftTrees/Group15" unique_id=1453366607 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/LeftTrees/Group15" unique_id=648867369 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/LeftTrees/Group15" unique_id=99111735 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/LeftTrees/Group15" unique_id=262424578 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/LeftTrees/Group15" unique_id=1681492483 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/LeftTrees/Group15" unique_id=520230171 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/LeftTrees/Group15" unique_id=1669262638 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/LeftTrees/Group15" unique_id=409367989 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/LeftTrees/Group15" unique_id=1980481252 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/LeftTrees/Group15" unique_id=651610408 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/LeftTrees/Group15" unique_id=261290037 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/LeftTrees/Group15" unique_id=240401139 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/LeftTrees/Group15" unique_id=1020002367 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/LeftTrees/Group15" unique_id=123341464 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/LeftTrees/Group15" unique_id=1000730854 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/LeftTrees/Group15" unique_id=1052998180 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/LeftTrees/Group15" unique_id=796005026 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/LeftTrees/Group15" unique_id=2135277089 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/LeftTrees/Group15" unique_id=1035999162 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/LeftTrees/Group15" unique_id=104371392 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/LeftTrees/Group15" unique_id=312318592 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/LeftTrees/Group15" unique_id=1623430951 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/LeftTrees/Group15" unique_id=718536020 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/LeftTrees/Group15" unique_id=1561875188 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group16" type="Node3D" parent="Trees/LeftTrees" unique_id=1831192991] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -39.67432, 0, 48.210464) + +[node name="AbstractPineTree26" parent="Trees/LeftTrees/Group16" unique_id=1414176085 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/LeftTrees/Group16" unique_id=2049559888 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/LeftTrees/Group16" unique_id=1807461656 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/LeftTrees/Group16" unique_id=1294055076 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/LeftTrees/Group16" unique_id=332398273 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/LeftTrees/Group16" unique_id=125356860 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/LeftTrees/Group16" unique_id=1164348061 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/LeftTrees/Group16" unique_id=385325282 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/LeftTrees/Group16" unique_id=867566787 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/LeftTrees/Group16" unique_id=717284182 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/LeftTrees/Group16" unique_id=1940904892 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/LeftTrees/Group16" unique_id=1389484335 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/LeftTrees/Group16" unique_id=1524809950 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/LeftTrees/Group16" unique_id=1803062357 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/LeftTrees/Group16" unique_id=1254269578 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/LeftTrees/Group16" unique_id=1738091065 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/LeftTrees/Group16" unique_id=184142194 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/LeftTrees/Group16" unique_id=794883391 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/LeftTrees/Group16" unique_id=44439260 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/LeftTrees/Group16" unique_id=388050903 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/LeftTrees/Group16" unique_id=1631003781 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/LeftTrees/Group16" unique_id=2083620767 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/LeftTrees/Group16" unique_id=1715809109 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/LeftTrees/Group16" unique_id=1713745636 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group17" type="Node3D" parent="Trees/LeftTrees" unique_id=92151992] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -49.56902, 0, 48.210464) + +[node name="AbstractPineTree26" parent="Trees/LeftTrees/Group17" unique_id=796288098 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/LeftTrees/Group17" unique_id=1607172115 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/LeftTrees/Group17" unique_id=411549685 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/LeftTrees/Group17" unique_id=662859922 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/LeftTrees/Group17" unique_id=1531009924 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/LeftTrees/Group17" unique_id=423670957 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/LeftTrees/Group17" unique_id=72129120 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/LeftTrees/Group17" unique_id=1430626827 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/LeftTrees/Group17" unique_id=442628984 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/LeftTrees/Group17" unique_id=1688081432 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/LeftTrees/Group17" unique_id=22890705 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/LeftTrees/Group17" unique_id=933658463 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/LeftTrees/Group17" unique_id=1055778984 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/LeftTrees/Group17" unique_id=766177574 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/LeftTrees/Group17" unique_id=1275209636 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/LeftTrees/Group17" unique_id=2086614133 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/LeftTrees/Group17" unique_id=946726057 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/LeftTrees/Group17" unique_id=1060885559 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/LeftTrees/Group17" unique_id=182469769 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/LeftTrees/Group17" unique_id=799185607 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/LeftTrees/Group17" unique_id=1148838673 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/LeftTrees/Group17" unique_id=243707846 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/LeftTrees/Group17" unique_id=118457194 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/LeftTrees/Group17" unique_id=36056606 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group18" type="Node3D" parent="Trees/LeftTrees" unique_id=1509887216] +transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -50.747158, 0, 34.312504) + +[node name="AbstractPineTree26" parent="Trees/LeftTrees/Group18" unique_id=98621601 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/LeftTrees/Group18" unique_id=1087736845 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/LeftTrees/Group18" unique_id=1621535890 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/LeftTrees/Group18" unique_id=76433940 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/LeftTrees/Group18" unique_id=1191567234 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/LeftTrees/Group18" unique_id=1302286320 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/LeftTrees/Group18" unique_id=2056037061 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/LeftTrees/Group18" unique_id=246559243 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/LeftTrees/Group18" unique_id=635724335 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/LeftTrees/Group18" unique_id=1195750660 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/LeftTrees/Group18" unique_id=1786794214 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/LeftTrees/Group18" unique_id=43275470 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/LeftTrees/Group18" unique_id=275907455 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/LeftTrees/Group18" unique_id=1965488675 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/LeftTrees/Group18" unique_id=830883721 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/LeftTrees/Group18" unique_id=1455862945 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/LeftTrees/Group18" unique_id=709556117 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/LeftTrees/Group18" unique_id=768509486 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/LeftTrees/Group18" unique_id=1178170143 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/LeftTrees/Group18" unique_id=1230026621 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/LeftTrees/Group18" unique_id=1923592097 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/LeftTrees/Group18" unique_id=496744654 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/LeftTrees/Group18" unique_id=868563615 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/LeftTrees/Group18" unique_id=672362057 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group19" type="Node3D" parent="Trees/LeftTrees" unique_id=1784235306] +transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -50.747158, 0, 24.30495) + +[node name="AbstractPineTree26" parent="Trees/LeftTrees/Group19" unique_id=216712379 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/LeftTrees/Group19" unique_id=901348646 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/LeftTrees/Group19" unique_id=549637388 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/LeftTrees/Group19" unique_id=1011487746 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/LeftTrees/Group19" unique_id=1984751376 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/LeftTrees/Group19" unique_id=525808 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/LeftTrees/Group19" unique_id=1705034966 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/LeftTrees/Group19" unique_id=1504320387 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/LeftTrees/Group19" unique_id=243197694 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/LeftTrees/Group19" unique_id=590087826 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/LeftTrees/Group19" unique_id=640507836 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/LeftTrees/Group19" unique_id=1462732385 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/LeftTrees/Group19" unique_id=200634085 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/LeftTrees/Group19" unique_id=312196070 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/LeftTrees/Group19" unique_id=1150798414 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/LeftTrees/Group19" unique_id=185934995 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/LeftTrees/Group19" unique_id=1023581103 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/LeftTrees/Group19" unique_id=1209703319 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/LeftTrees/Group19" unique_id=1340517066 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/LeftTrees/Group19" unique_id=1469152089 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/LeftTrees/Group19" unique_id=28655701 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/LeftTrees/Group19" unique_id=1421410145 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/LeftTrees/Group19" unique_id=754628949 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/LeftTrees/Group19" unique_id=1647655450 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group20" type="Node3D" parent="Trees/LeftTrees" unique_id=66444883] +transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -50.747158, 0, 14.576391) + +[node name="AbstractPineTree26" parent="Trees/LeftTrees/Group20" unique_id=202201327 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -2.7092247) + +[node name="AbstractPineTree11" parent="Trees/LeftTrees/Group20" unique_id=983517996 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree13" parent="Trees/LeftTrees/Group20" unique_id=1864260178 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/LeftTrees/Group20" unique_id=1767245373 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree17" parent="Trees/LeftTrees/Group20" unique_id=342192203 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.02989769, 3.2365112, 5.5032845) + +[node name="AbstractPineTree19" parent="Trees/LeftTrees/Group20" unique_id=755900632 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree21" parent="Trees/LeftTrees/Group20" unique_id=1812805775 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/LeftTrees/Group20" unique_id=2084125684 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree25" parent="Trees/LeftTrees/Group20" unique_id=1418233348 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/LeftTrees/Group20" unique_id=121873193 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/LeftTrees/Group20" unique_id=907687109 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/LeftTrees/Group20" unique_id=406870228 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/LeftTrees/Group20" unique_id=171467019 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/LeftTrees/Group20" unique_id=712325785 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/LeftTrees/Group20" unique_id=1122124309 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/LeftTrees/Group20" unique_id=746706036 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/LeftTrees/Group20" unique_id=3125037 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group21" type="Node3D" parent="Trees/LeftTrees" unique_id=1366756765] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 53.835583, 0, 29.763573) + +[node name="AbstractPineTree26" parent="Trees/LeftTrees/Group21" unique_id=2069704735 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/LeftTrees/Group21" unique_id=455288157 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/LeftTrees/Group21" unique_id=1036868652 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/LeftTrees/Group21" unique_id=1849227865 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/LeftTrees/Group21" unique_id=1741461984 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/LeftTrees/Group21" unique_id=1269677920 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/LeftTrees/Group21" unique_id=778035578 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/LeftTrees/Group21" unique_id=1283704155 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/LeftTrees/Group21" unique_id=661987612 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/LeftTrees/Group21" unique_id=1346311021 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/LeftTrees/Group21" unique_id=289922916 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/LeftTrees/Group21" unique_id=1554234310 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/LeftTrees/Group21" unique_id=21636364 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/LeftTrees/Group21" unique_id=591656493 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/LeftTrees/Group21" unique_id=1650754055 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/LeftTrees/Group21" unique_id=469054210 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/LeftTrees/Group21" unique_id=1030683429 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/LeftTrees/Group21" unique_id=1411056808 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/LeftTrees/Group21" unique_id=1020392055 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/LeftTrees/Group21" unique_id=1754631878 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/LeftTrees/Group21" unique_id=638262059 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/LeftTrees/Group21" unique_id=703777499 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/LeftTrees/Group21" unique_id=307941439 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/LeftTrees/Group21" unique_id=1394721472 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group22" type="Node3D" parent="Trees/LeftTrees" unique_id=1814978219] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 43.93187, 0, 29.763573) + +[node name="AbstractPineTree26" parent="Trees/LeftTrees/Group22" unique_id=1565095410 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/LeftTrees/Group22" unique_id=2033602896 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/LeftTrees/Group22" unique_id=779066546 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/LeftTrees/Group22" unique_id=182418763 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/LeftTrees/Group22" unique_id=1510297249 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/LeftTrees/Group22" unique_id=2024729102 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/LeftTrees/Group22" unique_id=769362872 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/LeftTrees/Group22" unique_id=951774056 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/LeftTrees/Group22" unique_id=1775370673 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/LeftTrees/Group22" unique_id=1613988622 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/LeftTrees/Group22" unique_id=1103310740 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/LeftTrees/Group22" unique_id=883786143 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/LeftTrees/Group22" unique_id=1966989760 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/LeftTrees/Group22" unique_id=1595850305 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/LeftTrees/Group22" unique_id=1647620908 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/LeftTrees/Group22" unique_id=1206880752 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/LeftTrees/Group22" unique_id=393543569 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/LeftTrees/Group22" unique_id=612326710 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/LeftTrees/Group22" unique_id=694531224 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/LeftTrees/Group22" unique_id=1850753739 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/LeftTrees/Group22" unique_id=2063255269 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/LeftTrees/Group22" unique_id=1229986369 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/LeftTrees/Group22" unique_id=273435608 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/LeftTrees/Group22" unique_id=823143920 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="DownTrees" type="Node" parent="Trees" unique_id=1151010748] + +[node name="Group1" type="Node3D" parent="Trees/DownTrees" unique_id=643448769] +transform = Transform3D(3.488461e-05, 0, -1, 0, 1, 0, 1, 0, 3.488461e-05, 123.50534, 0, 48.43793) + +[node name="AbstractPineTree26" parent="Trees/DownTrees/Group1" unique_id=1059746927 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/DownTrees/Group1" unique_id=1228996161 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/DownTrees/Group1" unique_id=163413729 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/DownTrees/Group1" unique_id=764939955 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/DownTrees/Group1" unique_id=1446161167 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/DownTrees/Group1" unique_id=1156897527 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/DownTrees/Group1" unique_id=659074097 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/DownTrees/Group1" unique_id=285711597 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/DownTrees/Group1" unique_id=1584532273 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/DownTrees/Group1" unique_id=770431186 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/DownTrees/Group1" unique_id=1769232205 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/DownTrees/Group1" unique_id=1803352400 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/DownTrees/Group1" unique_id=2136223340 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/DownTrees/Group1" unique_id=1284492060 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/DownTrees/Group1" unique_id=2064896760 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/DownTrees/Group1" unique_id=1401182257 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/DownTrees/Group1" unique_id=158711791 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/DownTrees/Group1" unique_id=1429019445 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/DownTrees/Group1" unique_id=1931186311 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/DownTrees/Group1" unique_id=1117847450 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/DownTrees/Group1" unique_id=54048058 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/DownTrees/Group1" unique_id=1656967539 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/DownTrees/Group1" unique_id=342885140 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/DownTrees/Group1" unique_id=467932837 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group2" type="Node3D" parent="Trees/DownTrees" unique_id=1378664686] +transform = Transform3D(3.488461e-05, 0, -1, 0, 1, 0, 1, 0, 3.488461e-05, 123.50499, 0, 38.543217) + +[node name="AbstractPineTree26" parent="Trees/DownTrees/Group2" unique_id=776852560 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/DownTrees/Group2" unique_id=1387053618 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/DownTrees/Group2" unique_id=621828031 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/DownTrees/Group2" unique_id=572077449 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/DownTrees/Group2" unique_id=189646701 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/DownTrees/Group2" unique_id=71239346 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/DownTrees/Group2" unique_id=1643194719 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/DownTrees/Group2" unique_id=1348512612 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/DownTrees/Group2" unique_id=1107629638 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/DownTrees/Group2" unique_id=1246135028 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/DownTrees/Group2" unique_id=105178987 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/DownTrees/Group2" unique_id=1820656127 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/DownTrees/Group2" unique_id=198962151 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/DownTrees/Group2" unique_id=1701671714 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/DownTrees/Group2" unique_id=1865257995 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/DownTrees/Group2" unique_id=1790877197 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/DownTrees/Group2" unique_id=1181746358 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/DownTrees/Group2" unique_id=1248298555 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/DownTrees/Group2" unique_id=291359181 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/DownTrees/Group2" unique_id=129221548 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/DownTrees/Group2" unique_id=1341196699 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/DownTrees/Group2" unique_id=1103850173 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/DownTrees/Group2" unique_id=1313952085 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/DownTrees/Group2" unique_id=272003513 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group3" type="Node3D" parent="Trees/DownTrees" unique_id=24971804] +transform = Transform3D(3.488461e-05, 0, -1, 0, 1, 0, 1, 0, 3.488461e-05, 123.504654, 0, 28.506138) + +[node name="AbstractPineTree26" parent="Trees/DownTrees/Group3" unique_id=1322565279 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/DownTrees/Group3" unique_id=178363324 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/DownTrees/Group3" unique_id=1527903035 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/DownTrees/Group3" unique_id=1210342965 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/DownTrees/Group3" unique_id=2050414436 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/DownTrees/Group3" unique_id=528717571 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/DownTrees/Group3" unique_id=753548647 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/DownTrees/Group3" unique_id=720303799 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/DownTrees/Group3" unique_id=1602714076 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/DownTrees/Group3" unique_id=685201864 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/DownTrees/Group3" unique_id=1814734581 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/DownTrees/Group3" unique_id=604747942 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/DownTrees/Group3" unique_id=1110625857 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/DownTrees/Group3" unique_id=218636664 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/DownTrees/Group3" unique_id=1213761867 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/DownTrees/Group3" unique_id=275550169 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/DownTrees/Group3" unique_id=516182547 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/DownTrees/Group3" unique_id=1461724225 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/DownTrees/Group3" unique_id=1680221214 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/DownTrees/Group3" unique_id=1206556974 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/DownTrees/Group3" unique_id=823875643 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/DownTrees/Group3" unique_id=880593357 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/DownTrees/Group3" unique_id=1882073027 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/DownTrees/Group3" unique_id=1812921722 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group4" type="Node3D" parent="Trees/DownTrees" unique_id=1511339639] +transform = Transform3D(3.488461e-05, 0, -1, 0, 1, 0, 1, 0, 3.488461e-05, 123.5043, 0, 18.676609) + +[node name="AbstractPineTree26" parent="Trees/DownTrees/Group4" unique_id=385962707 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/DownTrees/Group4" unique_id=388857192 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/DownTrees/Group4" unique_id=1702705426 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/DownTrees/Group4" unique_id=1848478811 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/DownTrees/Group4" unique_id=1999742640 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/DownTrees/Group4" unique_id=2025625828 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/DownTrees/Group4" unique_id=585778684 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/DownTrees/Group4" unique_id=156976829 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/DownTrees/Group4" unique_id=578086191 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/DownTrees/Group4" unique_id=1264443411 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/DownTrees/Group4" unique_id=2047611343 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/DownTrees/Group4" unique_id=125994860 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/DownTrees/Group4" unique_id=251308112 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/DownTrees/Group4" unique_id=1178722637 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/DownTrees/Group4" unique_id=483895876 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/DownTrees/Group4" unique_id=667558995 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/DownTrees/Group4" unique_id=346288761 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/DownTrees/Group4" unique_id=1038465681 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/DownTrees/Group4" unique_id=1523022778 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/DownTrees/Group4" unique_id=279585592 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/DownTrees/Group4" unique_id=323370239 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/DownTrees/Group4" unique_id=1051434400 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/DownTrees/Group4" unique_id=1011360929 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/DownTrees/Group4" unique_id=1409475369 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group5" type="Node3D" parent="Trees/DownTrees" unique_id=22209759] +transform = Transform3D(3.488461e-05, 0, -1, 0, 1, 0, 1, 0, 3.488461e-05, 123.50395, 0, 8.781925) + +[node name="AbstractPineTree26" parent="Trees/DownTrees/Group5" unique_id=1037336247 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/DownTrees/Group5" unique_id=1523608834 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/DownTrees/Group5" unique_id=1307243555 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/DownTrees/Group5" unique_id=1430363776 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/DownTrees/Group5" unique_id=436439214 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/DownTrees/Group5" unique_id=1121723435 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/DownTrees/Group5" unique_id=1312909028 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/DownTrees/Group5" unique_id=57469954 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/DownTrees/Group5" unique_id=275893811 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/DownTrees/Group5" unique_id=325218585 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/DownTrees/Group5" unique_id=1368508356 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/DownTrees/Group5" unique_id=1196033267 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/DownTrees/Group5" unique_id=1224022381 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/DownTrees/Group5" unique_id=843108194 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/DownTrees/Group5" unique_id=1146792955 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/DownTrees/Group5" unique_id=248728441 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/DownTrees/Group5" unique_id=1779430001 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/DownTrees/Group5" unique_id=1175359915 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/DownTrees/Group5" unique_id=845448367 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/DownTrees/Group5" unique_id=1117695208 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/DownTrees/Group5" unique_id=164770160 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/DownTrees/Group5" unique_id=1428343315 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/DownTrees/Group5" unique_id=68513116 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/DownTrees/Group5" unique_id=1775750692 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group6" type="Node3D" parent="Trees/DownTrees" unique_id=1566841627] +transform = Transform3D(3.488461e-05, 0, -1, 0, 1, 0, 1, 0, 3.488461e-05, 123.5036, 0, -1.2551689) + +[node name="AbstractPineTree26" parent="Trees/DownTrees/Group6" unique_id=219718778 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/DownTrees/Group6" unique_id=1541269530 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/DownTrees/Group6" unique_id=701957375 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/DownTrees/Group6" unique_id=1939962248 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/DownTrees/Group6" unique_id=1069884683 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/DownTrees/Group6" unique_id=1680515168 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/DownTrees/Group6" unique_id=557957526 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/DownTrees/Group6" unique_id=761733319 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/DownTrees/Group6" unique_id=4750402 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/DownTrees/Group6" unique_id=1528352929 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/DownTrees/Group6" unique_id=1965657035 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/DownTrees/Group6" unique_id=1198105985 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/DownTrees/Group6" unique_id=2026670923 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/DownTrees/Group6" unique_id=656466072 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/DownTrees/Group6" unique_id=2089685109 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/DownTrees/Group6" unique_id=286098061 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/DownTrees/Group6" unique_id=1768393779 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/DownTrees/Group6" unique_id=223935369 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/DownTrees/Group6" unique_id=1756876820 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/DownTrees/Group6" unique_id=1236808826 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/DownTrees/Group6" unique_id=546500024 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/DownTrees/Group6" unique_id=1159627957 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/DownTrees/Group6" unique_id=1649179406 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/DownTrees/Group6" unique_id=762148047 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group7" type="Node3D" parent="Trees/DownTrees" unique_id=1693609041] +transform = Transform3D(3.488461e-05, 0, -1, 0, 1, 0, 1, 0, 3.488461e-05, 123.503265, 0, -11.158886) + +[node name="AbstractPineTree26" parent="Trees/DownTrees/Group7" unique_id=425493271 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/DownTrees/Group7" unique_id=1858593882 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/DownTrees/Group7" unique_id=1124846634 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/DownTrees/Group7" unique_id=1466690602 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/DownTrees/Group7" unique_id=1999538092 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/DownTrees/Group7" unique_id=2013434901 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/DownTrees/Group7" unique_id=1568295187 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/DownTrees/Group7" unique_id=1675677793 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/DownTrees/Group7" unique_id=1055777559 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/DownTrees/Group7" unique_id=983342815 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/DownTrees/Group7" unique_id=1089541171 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/DownTrees/Group7" unique_id=1759706875 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/DownTrees/Group7" unique_id=732630536 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/DownTrees/Group7" unique_id=880953884 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/DownTrees/Group7" unique_id=1971505056 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/DownTrees/Group7" unique_id=188324388 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/DownTrees/Group7" unique_id=532753842 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/DownTrees/Group7" unique_id=1765835294 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/DownTrees/Group7" unique_id=915045380 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/DownTrees/Group7" unique_id=454863118 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/DownTrees/Group7" unique_id=1426410668 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/DownTrees/Group7" unique_id=1428873431 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/DownTrees/Group7" unique_id=1376546463 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/DownTrees/Group7" unique_id=510905874 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group8" type="Node3D" parent="Trees/DownTrees" unique_id=396085571] +transform = Transform3D(3.488461e-05, 0, -1, 0, 1, 0, 1, 0, 3.488461e-05, 123.502914, 0, -21.053585) + +[node name="AbstractPineTree26" parent="Trees/DownTrees/Group8" unique_id=1974057891 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/DownTrees/Group8" unique_id=1227948712 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/DownTrees/Group8" unique_id=1782248519 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/DownTrees/Group8" unique_id=1040109628 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/DownTrees/Group8" unique_id=135193238 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/DownTrees/Group8" unique_id=125420759 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/DownTrees/Group8" unique_id=1071765107 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/DownTrees/Group8" unique_id=405011126 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/DownTrees/Group8" unique_id=1480554553 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/DownTrees/Group8" unique_id=2135582278 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/DownTrees/Group8" unique_id=1948879433 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/DownTrees/Group8" unique_id=458157788 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/DownTrees/Group8" unique_id=1249146811 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/DownTrees/Group8" unique_id=1948455316 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/DownTrees/Group8" unique_id=1020702558 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/DownTrees/Group8" unique_id=781999970 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/DownTrees/Group8" unique_id=942317365 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/DownTrees/Group8" unique_id=910062108 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/DownTrees/Group8" unique_id=1116181741 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/DownTrees/Group8" unique_id=869858302 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/DownTrees/Group8" unique_id=117557120 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/DownTrees/Group8" unique_id=906477210 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/DownTrees/Group8" unique_id=1387947173 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/DownTrees/Group8" unique_id=1097450909 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group9" type="Node3D" parent="Trees/DownTrees" unique_id=609506773] +transform = Transform3D(3.488461e-05, 0, -1, 0, 1, 0, 1, 0, 3.488461e-05, 123.50256, 0, -31.090664) + +[node name="AbstractPineTree26" parent="Trees/DownTrees/Group9" unique_id=1815344002 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/DownTrees/Group9" unique_id=324402019 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/DownTrees/Group9" unique_id=1291884406 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/DownTrees/Group9" unique_id=514479772 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/DownTrees/Group9" unique_id=1542985410 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/DownTrees/Group9" unique_id=1706104097 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/DownTrees/Group9" unique_id=1730074376 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/DownTrees/Group9" unique_id=848351044 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/DownTrees/Group9" unique_id=580573818 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/DownTrees/Group9" unique_id=2077935276 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/DownTrees/Group9" unique_id=1014661107 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/DownTrees/Group9" unique_id=182705487 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/DownTrees/Group9" unique_id=1930761976 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/DownTrees/Group9" unique_id=1721438878 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/DownTrees/Group9" unique_id=956346268 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/DownTrees/Group9" unique_id=972045612 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/DownTrees/Group9" unique_id=124357249 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/DownTrees/Group9" unique_id=2129817327 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/DownTrees/Group9" unique_id=835353434 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/DownTrees/Group9" unique_id=970883773 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/DownTrees/Group9" unique_id=239712937 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/DownTrees/Group9" unique_id=515705041 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/DownTrees/Group9" unique_id=826936368 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/DownTrees/Group9" unique_id=1781766054 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group10" type="Node3D" parent="Trees/DownTrees" unique_id=1180785155] +transform = Transform3D(3.488461e-05, 0, -1, 0, 1, 0, 1, 0, 3.488461e-05, 123.50223, 0, -40.920193) + +[node name="AbstractPineTree26" parent="Trees/DownTrees/Group10" unique_id=19002109 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/DownTrees/Group10" unique_id=555613879 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/DownTrees/Group10" unique_id=1419579591 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/DownTrees/Group10" unique_id=119399620 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/DownTrees/Group10" unique_id=1729724524 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/DownTrees/Group10" unique_id=491126683 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/DownTrees/Group10" unique_id=1098666309 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/DownTrees/Group10" unique_id=300129120 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/DownTrees/Group10" unique_id=320779089 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/DownTrees/Group10" unique_id=2014823188 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/DownTrees/Group10" unique_id=1547802414 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/DownTrees/Group10" unique_id=1394414516 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/DownTrees/Group10" unique_id=911503712 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/DownTrees/Group10" unique_id=1943055854 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/DownTrees/Group10" unique_id=752151791 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/DownTrees/Group10" unique_id=1556014522 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/DownTrees/Group10" unique_id=135102768 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/DownTrees/Group10" unique_id=1743208444 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/DownTrees/Group10" unique_id=1615730244 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/DownTrees/Group10" unique_id=1646354328 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/DownTrees/Group10" unique_id=1366363632 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/DownTrees/Group10" unique_id=144354884 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/DownTrees/Group10" unique_id=1925629245 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/DownTrees/Group10" unique_id=830906531 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group11" type="Node3D" parent="Trees/DownTrees" unique_id=12639465] +transform = Transform3D(3.488461e-05, 0, -1, 0, 1, 0, 1, 0, 3.488461e-05, 123.50188, 0, -50.81489) + +[node name="AbstractPineTree26" parent="Trees/DownTrees/Group11" unique_id=396105822 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/DownTrees/Group11" unique_id=450183126 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/DownTrees/Group11" unique_id=490581617 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/DownTrees/Group11" unique_id=2039416630 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/DownTrees/Group11" unique_id=1892551626 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/DownTrees/Group11" unique_id=1553435147 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/DownTrees/Group11" unique_id=1557391080 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/DownTrees/Group11" unique_id=1669167287 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/DownTrees/Group11" unique_id=454635398 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/DownTrees/Group11" unique_id=1408511494 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/DownTrees/Group11" unique_id=1104424192 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/DownTrees/Group11" unique_id=162269298 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/DownTrees/Group11" unique_id=456815897 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/DownTrees/Group11" unique_id=1530749042 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/DownTrees/Group11" unique_id=426141869 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/DownTrees/Group11" unique_id=7398382 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/DownTrees/Group11" unique_id=1105927338 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/DownTrees/Group11" unique_id=888578296 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/DownTrees/Group11" unique_id=390001967 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/DownTrees/Group11" unique_id=1296866047 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/DownTrees/Group11" unique_id=1446450628 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/DownTrees/Group11" unique_id=999169337 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/DownTrees/Group11" unique_id=1937304460 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/DownTrees/Group11" unique_id=1866466828 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group12" type="Node3D" parent="Trees/DownTrees" unique_id=1019434423] +transform = Transform3D(3.488461e-05, 0, -1, 0, 1, 0, 1, 0, 3.488461e-05, 110.57735, 0, 23.10188) + +[node name="AbstractPineTree26" parent="Trees/DownTrees/Group12" unique_id=1114668456 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/DownTrees/Group12" unique_id=1106028298 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/DownTrees/Group12" unique_id=603356716 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/DownTrees/Group12" unique_id=2091861864 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/DownTrees/Group12" unique_id=241520804 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/DownTrees/Group12" unique_id=2066246760 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/DownTrees/Group12" unique_id=327796003 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/DownTrees/Group12" unique_id=1451018874 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/DownTrees/Group12" unique_id=1142512239 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/DownTrees/Group12" unique_id=1439510166 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/DownTrees/Group12" unique_id=1272996540 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/DownTrees/Group12" unique_id=1355190494 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/DownTrees/Group12" unique_id=1279229398 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/DownTrees/Group12" unique_id=1039353385 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/DownTrees/Group12" unique_id=1313638337 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/DownTrees/Group12" unique_id=674908486 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/DownTrees/Group12" unique_id=1212596875 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/DownTrees/Group12" unique_id=1546129038 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/DownTrees/Group12" unique_id=1437500987 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/DownTrees/Group12" unique_id=1643919749 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/DownTrees/Group12" unique_id=1852142770 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/DownTrees/Group12" unique_id=592403712 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/DownTrees/Group12" unique_id=737706265 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/DownTrees/Group12" unique_id=1559591756 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group13" type="Node3D" parent="Trees/DownTrees" unique_id=1590219178] +transform = Transform3D(3.488461e-05, 0, -1, 0, 1, 0, 1, 0, 3.488461e-05, 110.576996, 0, 13.27235) + +[node name="AbstractPineTree26" parent="Trees/DownTrees/Group13" unique_id=1107595962 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/DownTrees/Group13" unique_id=640719737 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/DownTrees/Group13" unique_id=1405955647 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/DownTrees/Group13" unique_id=1114769568 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/DownTrees/Group13" unique_id=1282198699 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/DownTrees/Group13" unique_id=1641408220 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/DownTrees/Group13" unique_id=1392377765 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/DownTrees/Group13" unique_id=1243144406 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/DownTrees/Group13" unique_id=1654802796 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/DownTrees/Group13" unique_id=1843857105 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/DownTrees/Group13" unique_id=759064846 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/DownTrees/Group13" unique_id=2026873980 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/DownTrees/Group13" unique_id=1345618116 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/DownTrees/Group13" unique_id=1743139806 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/DownTrees/Group13" unique_id=439598747 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/DownTrees/Group13" unique_id=355532784 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/DownTrees/Group13" unique_id=1297829432 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/DownTrees/Group13" unique_id=493040324 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/DownTrees/Group13" unique_id=482894982 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/DownTrees/Group13" unique_id=366785526 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/DownTrees/Group13" unique_id=385377285 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/DownTrees/Group13" unique_id=69333207 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/DownTrees/Group13" unique_id=1764360819 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/DownTrees/Group13" unique_id=874429863 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group14" type="Node3D" parent="Trees/DownTrees" unique_id=1469454192] +transform = Transform3D(3.488461e-05, 0, -1, 0, 1, 0, 1, 0, 3.488461e-05, 110.576645, 0, 3.3776665) + +[node name="AbstractPineTree26" parent="Trees/DownTrees/Group14" unique_id=1727493717 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/DownTrees/Group14" unique_id=1989513495 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/DownTrees/Group14" unique_id=20588218 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/DownTrees/Group14" unique_id=397031509 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/DownTrees/Group14" unique_id=686657119 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/DownTrees/Group14" unique_id=1244432035 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/DownTrees/Group14" unique_id=850406130 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/DownTrees/Group14" unique_id=562344586 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/DownTrees/Group14" unique_id=96488866 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/DownTrees/Group14" unique_id=254561690 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/DownTrees/Group14" unique_id=247501028 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/DownTrees/Group14" unique_id=307699614 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/DownTrees/Group14" unique_id=1991093873 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/DownTrees/Group14" unique_id=453554876 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/DownTrees/Group14" unique_id=503366570 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/DownTrees/Group14" unique_id=730649919 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/DownTrees/Group14" unique_id=1274042613 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/DownTrees/Group14" unique_id=283485743 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/DownTrees/Group14" unique_id=1468481928 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/DownTrees/Group14" unique_id=1887677161 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/DownTrees/Group14" unique_id=983808860 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/DownTrees/Group14" unique_id=467698039 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/DownTrees/Group14" unique_id=505562709 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/DownTrees/Group14" unique_id=1209519438 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group15" type="Node3D" parent="Trees/DownTrees" unique_id=127730492] +transform = Transform3D(3.488461e-05, 0, -1, 0, 1, 0, 1, 0, 3.488461e-05, 110.576294, 0, -6.6594276) + +[node name="AbstractPineTree26" parent="Trees/DownTrees/Group15" unique_id=848963301 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/DownTrees/Group15" unique_id=586916738 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/DownTrees/Group15" unique_id=1172784241 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/DownTrees/Group15" unique_id=1712037269 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/DownTrees/Group15" unique_id=1273124265 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/DownTrees/Group15" unique_id=946042388 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/DownTrees/Group15" unique_id=924642485 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/DownTrees/Group15" unique_id=1597966068 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/DownTrees/Group15" unique_id=1141270140 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/DownTrees/Group15" unique_id=1737884773 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/DownTrees/Group15" unique_id=2129972658 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/DownTrees/Group15" unique_id=2121606796 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/DownTrees/Group15" unique_id=1669987676 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/DownTrees/Group15" unique_id=961777723 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/DownTrees/Group15" unique_id=225560259 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/DownTrees/Group15" unique_id=794133572 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/DownTrees/Group15" unique_id=1025050500 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/DownTrees/Group15" unique_id=1951046117 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/DownTrees/Group15" unique_id=630003823 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/DownTrees/Group15" unique_id=571528887 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/DownTrees/Group15" unique_id=1121763834 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/DownTrees/Group15" unique_id=514083392 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/DownTrees/Group15" unique_id=1830374183 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/DownTrees/Group15" unique_id=1611226122 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group16" type="Node3D" parent="Trees/DownTrees" unique_id=1359060752] +transform = Transform3D(3.488461e-05, 0, -1, 0, 1, 0, 1, 0, 3.488461e-05, 110.57596, 0, -16.563145) + +[node name="AbstractPineTree26" parent="Trees/DownTrees/Group16" unique_id=1560722004 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/DownTrees/Group16" unique_id=1136597715 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/DownTrees/Group16" unique_id=1646655090 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/DownTrees/Group16" unique_id=556042532 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/DownTrees/Group16" unique_id=763477203 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/DownTrees/Group16" unique_id=1342256374 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/DownTrees/Group16" unique_id=1400555812 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/DownTrees/Group16" unique_id=2127235124 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/DownTrees/Group16" unique_id=742555179 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/DownTrees/Group16" unique_id=1202102266 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/DownTrees/Group16" unique_id=1874735799 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/DownTrees/Group16" unique_id=1656757249 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/DownTrees/Group16" unique_id=42169251 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/DownTrees/Group16" unique_id=316421228 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/DownTrees/Group16" unique_id=2070741882 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/DownTrees/Group16" unique_id=707544358 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/DownTrees/Group16" unique_id=1115254406 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/DownTrees/Group16" unique_id=197284946 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/DownTrees/Group16" unique_id=1991384681 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/DownTrees/Group16" unique_id=981236568 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/DownTrees/Group16" unique_id=340587820 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/DownTrees/Group16" unique_id=393429279 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/DownTrees/Group16" unique_id=2008937996 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/DownTrees/Group16" unique_id=2001979924 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group17" type="Node3D" parent="Trees/DownTrees" unique_id=333882099] +transform = Transform3D(3.488461e-05, 0, -1, 0, 1, 0, 1, 0, 3.488461e-05, 110.57561, 0, -26.457844) + +[node name="AbstractPineTree26" parent="Trees/DownTrees/Group17" unique_id=1894432902 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/DownTrees/Group17" unique_id=171359592 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/DownTrees/Group17" unique_id=1423039444 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/DownTrees/Group17" unique_id=2061971372 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/DownTrees/Group17" unique_id=733196713 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/DownTrees/Group17" unique_id=482575793 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/DownTrees/Group17" unique_id=1084307458 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/DownTrees/Group17" unique_id=708475268 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/DownTrees/Group17" unique_id=967642780 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/DownTrees/Group17" unique_id=140586093 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/DownTrees/Group17" unique_id=1991701100 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/DownTrees/Group17" unique_id=1320524092 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/DownTrees/Group17" unique_id=2145526473 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/DownTrees/Group17" unique_id=760373652 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/DownTrees/Group17" unique_id=45261644 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/DownTrees/Group17" unique_id=1296056240 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/DownTrees/Group17" unique_id=712338788 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/DownTrees/Group17" unique_id=1611915281 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/DownTrees/Group17" unique_id=2066852760 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/DownTrees/Group17" unique_id=1144062271 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/DownTrees/Group17" unique_id=1027338017 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/DownTrees/Group17" unique_id=872010322 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/DownTrees/Group17" unique_id=1772619645 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/DownTrees/Group17" unique_id=1502213582 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group18" type="Node3D" parent="Trees/DownTrees" unique_id=2122775771] +transform = Transform3D(3.488461e-05, 0, -1, 0, 1, 0, 1, 0, 3.488461e-05, 110.57735, 0, 33.932697) + +[node name="AbstractPineTree26" parent="Trees/DownTrees/Group18" unique_id=2078634454 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/DownTrees/Group18" unique_id=1027614832 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/DownTrees/Group18" unique_id=1776109415 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/DownTrees/Group18" unique_id=734707408 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/DownTrees/Group18" unique_id=2135755687 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/DownTrees/Group18" unique_id=1410785835 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/DownTrees/Group18" unique_id=463776437 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/DownTrees/Group18" unique_id=754853605 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/DownTrees/Group18" unique_id=709859037 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/DownTrees/Group18" unique_id=302127573 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/DownTrees/Group18" unique_id=734734816 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/DownTrees/Group18" unique_id=1104622751 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/DownTrees/Group18" unique_id=1553923681 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/DownTrees/Group18" unique_id=1370136591 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/DownTrees/Group18" unique_id=1729021347 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/DownTrees/Group18" unique_id=999302441 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/DownTrees/Group18" unique_id=1601963110 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/DownTrees/Group18" unique_id=1155749037 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/DownTrees/Group18" unique_id=1001558088 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/DownTrees/Group18" unique_id=563203876 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/DownTrees/Group18" unique_id=331934295 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/DownTrees/Group18" unique_id=382647042 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/DownTrees/Group18" unique_id=613514967 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/DownTrees/Group18" unique_id=1489585312 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group19" type="Node3D" parent="Trees/DownTrees" unique_id=705705961] +transform = Transform3D(3.488461e-05, 0, -1, 0, 1, 0, 1, 0, 3.488461e-05, 103.00249, 0, 23.10188) + +[node name="AbstractPineTree26" parent="Trees/DownTrees/Group19" unique_id=1878756851 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/DownTrees/Group19" unique_id=1014274128 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/DownTrees/Group19" unique_id=2047021602 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/DownTrees/Group19" unique_id=1630716860 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/DownTrees/Group19" unique_id=1564792566 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/DownTrees/Group19" unique_id=282260422 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/DownTrees/Group19" unique_id=753376570 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/DownTrees/Group19" unique_id=928453236 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/DownTrees/Group19" unique_id=820503735 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/DownTrees/Group19" unique_id=181339702 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/DownTrees/Group19" unique_id=961821731 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/DownTrees/Group19" unique_id=498342007 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/DownTrees/Group19" unique_id=1960036751 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/DownTrees/Group19" unique_id=1384461813 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/DownTrees/Group19" unique_id=2085061675 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/DownTrees/Group19" unique_id=1650672756 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/DownTrees/Group19" unique_id=57957887 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/DownTrees/Group19" unique_id=1435449466 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/DownTrees/Group19" unique_id=190172563 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/DownTrees/Group19" unique_id=681491613 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/DownTrees/Group19" unique_id=1576835723 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/DownTrees/Group19" unique_id=1017913018 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/DownTrees/Group19" unique_id=1395646206 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/DownTrees/Group19" unique_id=1934653274 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group20" type="Node3D" parent="Trees/DownTrees" unique_id=1490563009] +transform = Transform3D(3.488461e-05, 0, -1, 0, 1, 0, 1, 0, 3.488461e-05, 103.00214, 0, 13.27235) + +[node name="AbstractPineTree26" parent="Trees/DownTrees/Group20" unique_id=392366036 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/DownTrees/Group20" unique_id=296090755 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/DownTrees/Group20" unique_id=957459063 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/DownTrees/Group20" unique_id=1979022326 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/DownTrees/Group20" unique_id=148471778 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/DownTrees/Group20" unique_id=788636584 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/DownTrees/Group20" unique_id=560207796 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/DownTrees/Group20" unique_id=1074115548 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/DownTrees/Group20" unique_id=1894177474 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/DownTrees/Group20" unique_id=396320206 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/DownTrees/Group20" unique_id=183698956 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/DownTrees/Group20" unique_id=1660248745 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/DownTrees/Group20" unique_id=1919439462 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/DownTrees/Group20" unique_id=832396004 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/DownTrees/Group20" unique_id=195975472 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/DownTrees/Group20" unique_id=1668956773 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/DownTrees/Group20" unique_id=1931050736 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/DownTrees/Group20" unique_id=1290488587 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/DownTrees/Group20" unique_id=477846190 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/DownTrees/Group20" unique_id=122048479 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/DownTrees/Group20" unique_id=1893891299 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/DownTrees/Group20" unique_id=614185900 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/DownTrees/Group20" unique_id=912465428 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/DownTrees/Group20" unique_id=246946026 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group23" type="Node3D" parent="Trees/DownTrees" unique_id=1461330436] +transform = Transform3D(3.488461e-05, 0, -1, 0, 1, 0, 1, 0, 3.488461e-05, 103.0011, 0, -16.563145) + +[node name="AbstractPineTree26" parent="Trees/DownTrees/Group23" unique_id=401399494 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/DownTrees/Group23" unique_id=1160647261 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/DownTrees/Group23" unique_id=2050277203 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/DownTrees/Group23" unique_id=1358821938 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/DownTrees/Group23" unique_id=504678885 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/DownTrees/Group23" unique_id=1567088326 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/DownTrees/Group23" unique_id=982412537 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/DownTrees/Group23" unique_id=680443097 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/DownTrees/Group23" unique_id=294877729 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/DownTrees/Group23" unique_id=1332662496 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/DownTrees/Group23" unique_id=1272371916 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/DownTrees/Group23" unique_id=881438015 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/DownTrees/Group23" unique_id=47198512 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/DownTrees/Group23" unique_id=539865527 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/DownTrees/Group23" unique_id=934563127 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/DownTrees/Group23" unique_id=2069536514 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/DownTrees/Group23" unique_id=1162146384 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/DownTrees/Group23" unique_id=1476869072 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/DownTrees/Group23" unique_id=5024157 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/DownTrees/Group23" unique_id=400679881 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/DownTrees/Group23" unique_id=922351111 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/DownTrees/Group23" unique_id=1372167757 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/DownTrees/Group23" unique_id=1823791929 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/DownTrees/Group23" unique_id=1502438834 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group24" type="Node3D" parent="Trees/DownTrees" unique_id=1781596790] +transform = Transform3D(3.488461e-05, 0, -1, 0, 1, 0, 1, 0, 3.488461e-05, 103.00075, 0, -26.457844) + +[node name="AbstractPineTree26" parent="Trees/DownTrees/Group24" unique_id=1126849383 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/DownTrees/Group24" unique_id=1507978449 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/DownTrees/Group24" unique_id=1467640073 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/DownTrees/Group24" unique_id=1225942362 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/DownTrees/Group24" unique_id=1793147444 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/DownTrees/Group24" unique_id=990531332 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/DownTrees/Group24" unique_id=237812284 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/DownTrees/Group24" unique_id=1120324242 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/DownTrees/Group24" unique_id=1943837158 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/DownTrees/Group24" unique_id=139427845 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/DownTrees/Group24" unique_id=29522920 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/DownTrees/Group24" unique_id=360943048 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/DownTrees/Group24" unique_id=1794670118 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/DownTrees/Group24" unique_id=1525741836 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/DownTrees/Group24" unique_id=410179994 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/DownTrees/Group24" unique_id=362744738 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/DownTrees/Group24" unique_id=772711425 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/DownTrees/Group24" unique_id=623379628 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/DownTrees/Group24" unique_id=665671945 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/DownTrees/Group24" unique_id=1845720965 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/DownTrees/Group24" unique_id=1213345411 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/DownTrees/Group24" unique_id=362493867 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/DownTrees/Group24" unique_id=250547002 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/DownTrees/Group24" unique_id=476610111 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group25" type="Node3D" parent="Trees/DownTrees" unique_id=1794031791] +transform = Transform3D(3.488461e-05, 0, -1, 0, 1, 0, 1, 0, 3.488461e-05, 103.00249, 0, 33.932697) + +[node name="AbstractPineTree26" parent="Trees/DownTrees/Group25" unique_id=2053481129 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/DownTrees/Group25" unique_id=1686870133 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/DownTrees/Group25" unique_id=727851042 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/DownTrees/Group25" unique_id=1665706409 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/DownTrees/Group25" unique_id=1969453316 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/DownTrees/Group25" unique_id=436688279 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/DownTrees/Group25" unique_id=576512594 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/DownTrees/Group25" unique_id=1524459998 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/DownTrees/Group25" unique_id=763025469 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/DownTrees/Group25" unique_id=989437825 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/DownTrees/Group25" unique_id=523550205 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/DownTrees/Group25" unique_id=511553760 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/DownTrees/Group25" unique_id=2018245149 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/DownTrees/Group25" unique_id=1975268196 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/DownTrees/Group25" unique_id=1361988044 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/DownTrees/Group25" unique_id=1415551206 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/DownTrees/Group25" unique_id=1605702546 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/DownTrees/Group25" unique_id=1519709509 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/DownTrees/Group25" unique_id=1108384513 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/DownTrees/Group25" unique_id=673108793 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/DownTrees/Group25" unique_id=2011135680 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/DownTrees/Group25" unique_id=739768284 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/DownTrees/Group25" unique_id=369171405 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/DownTrees/Group25" unique_id=1990946568 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group26" type="Node3D" parent="Trees/DownTrees" unique_id=24258739] +transform = Transform3D(3.488461e-05, 0, -1, 0, 1, 0, 1, 0, 3.488461e-05, 84.23912, 0, -16.563145) + +[node name="AbstractPineTree11" parent="Trees/DownTrees/Group26" unique_id=526636970 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/DownTrees/Group26" unique_id=1272718050 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.24333, 3.2365112, 3.4753952) + +[node name="AbstractPineTree13" parent="Trees/DownTrees/Group26" unique_id=876862606 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/DownTrees/Group26" unique_id=775808716 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/DownTrees/Group26" unique_id=1593103434 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree17" parent="Trees/DownTrees/Group26" unique_id=861232620 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree19" parent="Trees/DownTrees/Group26" unique_id=1827735568 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/DownTrees/Group26" unique_id=206338151 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.163311, 3.2365112, -1.8365784) + +[node name="AbstractPineTree21" parent="Trees/DownTrees/Group26" unique_id=850082331 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/DownTrees/Group26" unique_id=1646943674 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/DownTrees/Group26" unique_id=1333735582 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree25" parent="Trees/DownTrees/Group26" unique_id=230260900 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/DownTrees/Group26" unique_id=1114027240 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/DownTrees/Group26" unique_id=864660910 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.3454332, 3.2365112, -5.448105) + +[node name="AbstractPineTree29" parent="Trees/DownTrees/Group26" unique_id=301765458 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/DownTrees/Group26" unique_id=1465473826 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/DownTrees/Group26" unique_id=265087989 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree33" parent="Trees/DownTrees/Group26" unique_id=2008162677 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/DownTrees/Group26" unique_id=1176097596 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.6515055, 3.2365112, -8.616997) + +[node name="Group27" type="Node3D" parent="Trees/DownTrees" unique_id=2096631578] +transform = Transform3D(3.488461e-05, 0, -1, 0, 1, 0, 1, 0, 3.488461e-05, 84.23877, 0, -26.457844) + +[node name="AbstractPineTree26" parent="Trees/DownTrees/Group27" unique_id=1570984499 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/DownTrees/Group27" unique_id=396176869 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/DownTrees/Group27" unique_id=1679937961 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/DownTrees/Group27" unique_id=814983042 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/DownTrees/Group27" unique_id=376206972 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/DownTrees/Group27" unique_id=653210889 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/DownTrees/Group27" unique_id=1282657392 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/DownTrees/Group27" unique_id=1509606086 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/DownTrees/Group27" unique_id=1761894577 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/DownTrees/Group27" unique_id=1787353506 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/DownTrees/Group27" unique_id=323045702 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/DownTrees/Group27" unique_id=1129143208 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/DownTrees/Group27" unique_id=10286166 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/DownTrees/Group27" unique_id=1098393424 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/DownTrees/Group27" unique_id=198018262 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/DownTrees/Group27" unique_id=67065804 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/DownTrees/Group27" unique_id=613690854 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/DownTrees/Group27" unique_id=1802451379 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/DownTrees/Group27" unique_id=1029472485 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/DownTrees/Group27" unique_id=777964491 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/DownTrees/Group27" unique_id=865597351 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/DownTrees/Group27" unique_id=1488727747 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/DownTrees/Group27" unique_id=1518058699 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/DownTrees/Group27" unique_id=608116467 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="CenterTrees" type="Node" parent="Trees" unique_id=1961653452] + +[node name="Group18" type="Node3D" parent="Trees/CenterTrees" unique_id=916975872] +transform = Transform3D(3.488461e-05, 0, -1, 0, 1, 0, 1, 0, 3.488461e-05, 80.084175, 0, 26.332836) + +[node name="AbstractPineTree26" parent="Trees/CenterTrees/Group18" unique_id=1786889255 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/CenterTrees/Group18" unique_id=1095781890 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/CenterTrees/Group18" unique_id=1284795210 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/CenterTrees/Group18" unique_id=888795471 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/CenterTrees/Group18" unique_id=497641718 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/CenterTrees/Group18" unique_id=1537600385 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/CenterTrees/Group18" unique_id=1125171101 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/CenterTrees/Group18" unique_id=562560674 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/CenterTrees/Group18" unique_id=1603287215 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/CenterTrees/Group18" unique_id=1471431367 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/CenterTrees/Group18" unique_id=1765285436 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/CenterTrees/Group18" unique_id=1410812383 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/CenterTrees/Group18" unique_id=2078590618 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/CenterTrees/Group18" unique_id=957523111 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/CenterTrees/Group18" unique_id=1394681168 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/CenterTrees/Group18" unique_id=2101437144 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/CenterTrees/Group18" unique_id=1814938752 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/CenterTrees/Group18" unique_id=1372755023 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/CenterTrees/Group18" unique_id=1471995072 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/CenterTrees/Group18" unique_id=2085810716 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/CenterTrees/Group18" unique_id=341178889 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/CenterTrees/Group18" unique_id=1793742721 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/CenterTrees/Group18" unique_id=1336665926 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/CenterTrees/Group18" unique_id=461266239 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group19" type="Node3D" parent="Trees/CenterTrees" unique_id=1953677854] +transform = Transform3D(3.488461e-05, 0, -1, 0, 1, 0, 1, 0, 3.488461e-05, 80.166664, 0, 15.502018) + +[node name="AbstractPineTree26" parent="Trees/CenterTrees/Group19" unique_id=1780013381 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/CenterTrees/Group19" unique_id=1769711032 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/CenterTrees/Group19" unique_id=1615526205 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/CenterTrees/Group19" unique_id=1089126143 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/CenterTrees/Group19" unique_id=1775878845 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/CenterTrees/Group19" unique_id=230437118 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/CenterTrees/Group19" unique_id=2142803000 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/CenterTrees/Group19" unique_id=98310959 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/CenterTrees/Group19" unique_id=304828950 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/CenterTrees/Group19" unique_id=1319352049 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/CenterTrees/Group19" unique_id=667577245 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/CenterTrees/Group19" unique_id=1976778455 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/CenterTrees/Group19" unique_id=633655349 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/CenterTrees/Group19" unique_id=1643756543 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/CenterTrees/Group19" unique_id=1220595945 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/CenterTrees/Group19" unique_id=1286743306 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/CenterTrees/Group19" unique_id=2010708148 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/CenterTrees/Group19" unique_id=978859916 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/CenterTrees/Group19" unique_id=1523615688 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/CenterTrees/Group19" unique_id=299114340 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/CenterTrees/Group19" unique_id=1871007549 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/CenterTrees/Group19" unique_id=451511358 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/CenterTrees/Group19" unique_id=1939769168 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/CenterTrees/Group19" unique_id=1957468099 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group20" type="Node3D" parent="Trees/CenterTrees" unique_id=782187595] +transform = Transform3D(3.488461e-05, 0, -1, 0, 1, 0, 1, 0, 3.488461e-05, 80.16631, 0, 5.672489) + +[node name="AbstractPineTree26" parent="Trees/CenterTrees/Group20" unique_id=1005490060 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/CenterTrees/Group20" unique_id=407945452 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/CenterTrees/Group20" unique_id=1444880599 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/CenterTrees/Group20" unique_id=1016264444 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/CenterTrees/Group20" unique_id=1181166283 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/CenterTrees/Group20" unique_id=1953066615 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/CenterTrees/Group20" unique_id=1719981123 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/CenterTrees/Group20" unique_id=55738805 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/CenterTrees/Group20" unique_id=2127341439 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/CenterTrees/Group20" unique_id=1440660410 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/CenterTrees/Group20" unique_id=681559497 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/CenterTrees/Group20" unique_id=839016572 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/CenterTrees/Group20" unique_id=1536555113 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/CenterTrees/Group20" unique_id=592963248 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/CenterTrees/Group20" unique_id=1197342192 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/CenterTrees/Group20" unique_id=1932511118 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/CenterTrees/Group20" unique_id=414842859 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/CenterTrees/Group20" unique_id=1453403257 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/CenterTrees/Group20" unique_id=1874113437 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/CenterTrees/Group20" unique_id=542508385 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/CenterTrees/Group20" unique_id=243497579 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/CenterTrees/Group20" unique_id=1423629552 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/CenterTrees/Group20" unique_id=695279494 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/CenterTrees/Group20" unique_id=1048442442 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group21" type="Node3D" parent="Trees/CenterTrees" unique_id=853479071] +transform = Transform3D(3.488461e-05, 0, -1, 0, 1, 0, 1, 0, 3.488461e-05, 62.38237, 0, 5.672489) + +[node name="AbstractPineTree26" parent="Trees/CenterTrees/Group21" unique_id=1531879791 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/CenterTrees/Group21" unique_id=746530116 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/CenterTrees/Group21" unique_id=912826533 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/CenterTrees/Group21" unique_id=723077641 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/CenterTrees/Group21" unique_id=902163968 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/CenterTrees/Group21" unique_id=1905633479 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/CenterTrees/Group21" unique_id=1070476430 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/CenterTrees/Group21" unique_id=128302052 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/CenterTrees/Group21" unique_id=1271427830 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/CenterTrees/Group21" unique_id=840607530 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/CenterTrees/Group21" unique_id=1053389486 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/CenterTrees/Group21" unique_id=1232737262 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/CenterTrees/Group21" unique_id=2045337069 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/CenterTrees/Group21" unique_id=199099196 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/CenterTrees/Group21" unique_id=434051658 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/CenterTrees/Group21" unique_id=514238466 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/CenterTrees/Group21" unique_id=525726430 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/CenterTrees/Group21" unique_id=678905149 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/CenterTrees/Group21" unique_id=901936043 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/CenterTrees/Group21" unique_id=1925891759 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/CenterTrees/Group21" unique_id=865633823 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/CenterTrees/Group21" unique_id=446001645 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/CenterTrees/Group21" unique_id=441029817 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/CenterTrees/Group21" unique_id=105632395 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group22" type="Node3D" parent="Trees/CenterTrees" unique_id=1849755048] +transform = Transform3D(3.488461e-05, 0, -1, 0, 1, 0, 1, 0, 3.488461e-05, 45.365807, 0, 5.672489) + +[node name="AbstractPineTree26" parent="Trees/CenterTrees/Group22" unique_id=1618034287 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/CenterTrees/Group22" unique_id=285974773 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/CenterTrees/Group22" unique_id=2144146140 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/CenterTrees/Group22" unique_id=2006738240 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/CenterTrees/Group22" unique_id=563468224 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/CenterTrees/Group22" unique_id=2045166705 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/CenterTrees/Group22" unique_id=1594139716 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/CenterTrees/Group22" unique_id=1011569957 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/CenterTrees/Group22" unique_id=1204053766 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/CenterTrees/Group22" unique_id=1442942256 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/CenterTrees/Group22" unique_id=305096510 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/CenterTrees/Group22" unique_id=1757576670 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/CenterTrees/Group22" unique_id=312182351 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/CenterTrees/Group22" unique_id=1919559355 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/CenterTrees/Group22" unique_id=2039465405 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/CenterTrees/Group22" unique_id=476053786 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/CenterTrees/Group22" unique_id=1809899058 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/CenterTrees/Group22" unique_id=1639125419 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/CenterTrees/Group22" unique_id=908458041 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/CenterTrees/Group22" unique_id=839094960 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/CenterTrees/Group22" unique_id=615326172 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/CenterTrees/Group22" unique_id=171255897 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/CenterTrees/Group22" unique_id=1768698500 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/CenterTrees/Group22" unique_id=639500137 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group23" type="Node3D" parent="Trees/CenterTrees" unique_id=939363288] +transform = Transform3D(3.488461e-05, 0, -1, 0, 1, 0, 1, 0, 3.488461e-05, 62.38237, 0, -7.2360845) + +[node name="AbstractPineTree26" parent="Trees/CenterTrees/Group23" unique_id=1963783986 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/CenterTrees/Group23" unique_id=965006798 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/CenterTrees/Group23" unique_id=217933249 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/CenterTrees/Group23" unique_id=1708734027 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/CenterTrees/Group23" unique_id=770998947 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/CenterTrees/Group23" unique_id=519587282 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/CenterTrees/Group23" unique_id=1716760141 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/CenterTrees/Group23" unique_id=300770386 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/CenterTrees/Group23" unique_id=1823774127 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/CenterTrees/Group23" unique_id=409696553 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/CenterTrees/Group23" unique_id=1428045684 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/CenterTrees/Group23" unique_id=539096730 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/CenterTrees/Group23" unique_id=1319653657 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/CenterTrees/Group23" unique_id=716759092 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/CenterTrees/Group23" unique_id=1553854489 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/CenterTrees/Group23" unique_id=1884562026 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/CenterTrees/Group23" unique_id=724324929 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/CenterTrees/Group23" unique_id=441790982 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/CenterTrees/Group23" unique_id=1302298747 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/CenterTrees/Group23" unique_id=1895092180 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/CenterTrees/Group23" unique_id=1426776806 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/CenterTrees/Group23" unique_id=73734574 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/CenterTrees/Group23" unique_id=802726739 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/CenterTrees/Group23" unique_id=1205288009 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group24" type="Node3D" parent="Trees/CenterTrees" unique_id=1164561510] +transform = Transform3D(3.488461e-05, 0, -1, 0, 1, 0, 1, 0, 3.488461e-05, 45.365807, 0, -7.2360845) + +[node name="AbstractPineTree26" parent="Trees/CenterTrees/Group24" unique_id=1095964916 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree12" parent="Trees/CenterTrees/Group24" unique_id=1853011747 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/CenterTrees/Group24" unique_id=1654155220 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/CenterTrees/Group24" unique_id=749022253 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree16" parent="Trees/CenterTrees/Group24" unique_id=1863243450 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/CenterTrees/Group24" unique_id=1092761516 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/CenterTrees/Group24" unique_id=371851200 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/CenterTrees/Group24" unique_id=1257630094 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/CenterTrees/Group24" unique_id=1807335057 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/CenterTrees/Group24" unique_id=422113500 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/CenterTrees/Group24" unique_id=1422123885 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/CenterTrees/Group24" unique_id=1116549112 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/CenterTrees/Group24" unique_id=1384908371 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/CenterTrees/Group24" unique_id=562180244 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/CenterTrees/Group24" unique_id=1625297732 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/CenterTrees/Group24" unique_id=470099068 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/CenterTrees/Group24" unique_id=1539598468 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/CenterTrees/Group24" unique_id=1684850497 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/CenterTrees/Group24" unique_id=2105994050 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/CenterTrees/Group24" unique_id=722200307 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/CenterTrees/Group24" unique_id=1435054582 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/CenterTrees/Group24" unique_id=34773336 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group25" type="Node3D" parent="Trees/CenterTrees" unique_id=1534681531] +transform = Transform3D(3.488461e-05, 0, -1, 0, 1, 0, 1, 0, 3.488461e-05, 25.150688, 0, 27.975498) + +[node name="AbstractPineTree26" parent="Trees/CenterTrees/Group25" unique_id=406029773 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/CenterTrees/Group25" unique_id=1090420390 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/CenterTrees/Group25" unique_id=933389407 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/CenterTrees/Group25" unique_id=31798688 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/CenterTrees/Group25" unique_id=504923677 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/CenterTrees/Group25" unique_id=1222514436 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/CenterTrees/Group25" unique_id=450496397 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/CenterTrees/Group25" unique_id=451997435 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/CenterTrees/Group25" unique_id=62263144 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/CenterTrees/Group25" unique_id=650352146 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/CenterTrees/Group25" unique_id=1664976586 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/CenterTrees/Group25" unique_id=329689143 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/CenterTrees/Group25" unique_id=1987888141 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/CenterTrees/Group25" unique_id=296293968 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/CenterTrees/Group25" unique_id=254366244 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/CenterTrees/Group25" unique_id=62344141 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/CenterTrees/Group25" unique_id=1194321987 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/CenterTrees/Group25" unique_id=1032505465 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/CenterTrees/Group25" unique_id=701347430 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/CenterTrees/Group25" unique_id=711939659 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/CenterTrees/Group25" unique_id=754358487 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/CenterTrees/Group25" unique_id=776455452 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/CenterTrees/Group25" unique_id=1775101931 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/CenterTrees/Group25" unique_id=1134770993 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group26" type="Node3D" parent="Trees/CenterTrees" unique_id=1880529095] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10.33024, 0, 25.153057) + +[node name="AbstractPineTree26" parent="Trees/CenterTrees/Group26" unique_id=514191635 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/CenterTrees/Group26" unique_id=735719084 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/CenterTrees/Group26" unique_id=1482574627 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/CenterTrees/Group26" unique_id=1241596958 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/CenterTrees/Group26" unique_id=611176004 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/CenterTrees/Group26" unique_id=1070897375 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/CenterTrees/Group26" unique_id=1077506873 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/CenterTrees/Group26" unique_id=500473591 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/CenterTrees/Group26" unique_id=598882974 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/CenterTrees/Group26" unique_id=28157918 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/CenterTrees/Group26" unique_id=994465418 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/CenterTrees/Group26" unique_id=2016051537 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/CenterTrees/Group26" unique_id=1850745231 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/CenterTrees/Group26" unique_id=475786606 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/CenterTrees/Group26" unique_id=289305057 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/CenterTrees/Group26" unique_id=1916730076 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/CenterTrees/Group26" unique_id=712807977 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/CenterTrees/Group26" unique_id=440053649 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/CenterTrees/Group26" unique_id=1454283834 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/CenterTrees/Group26" unique_id=1880639644 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/CenterTrees/Group26" unique_id=900542110 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/CenterTrees/Group26" unique_id=1225669114 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/CenterTrees/Group26" unique_id=1335000245 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/CenterTrees/Group26" unique_id=1347502726 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group27" type="Node3D" parent="Trees/CenterTrees" unique_id=1794644047] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10.33024, 0, 8.883686) + +[node name="AbstractPineTree26" parent="Trees/CenterTrees/Group27" unique_id=395140915 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/CenterTrees/Group27" unique_id=855073520 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/CenterTrees/Group27" unique_id=1749527540 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/CenterTrees/Group27" unique_id=1424766133 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/CenterTrees/Group27" unique_id=956677050 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/CenterTrees/Group27" unique_id=1890895994 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/CenterTrees/Group27" unique_id=1045503788 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/CenterTrees/Group27" unique_id=360514014 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/CenterTrees/Group27" unique_id=790838491 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/CenterTrees/Group27" unique_id=1389547615 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/CenterTrees/Group27" unique_id=1404495235 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/CenterTrees/Group27" unique_id=1646526280 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/CenterTrees/Group27" unique_id=676116741 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/CenterTrees/Group27" unique_id=1884358313 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/CenterTrees/Group27" unique_id=35154655 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/CenterTrees/Group27" unique_id=1986768982 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/CenterTrees/Group27" unique_id=392969614 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/CenterTrees/Group27" unique_id=1545463704 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/CenterTrees/Group27" unique_id=81041772 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/CenterTrees/Group27" unique_id=1344868169 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/CenterTrees/Group27" unique_id=1413282448 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/CenterTrees/Group27" unique_id=1951800589 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/CenterTrees/Group27" unique_id=514679183 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/CenterTrees/Group27" unique_id=2020508257 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group28" type="Node3D" parent="Trees/CenterTrees" unique_id=2110813819] +transform = Transform3D(3.488461e-05, 0, -1, 0, 1, 0, 1, 0, 3.488461e-05, 14.497892, 0, -5.51356) + +[node name="AbstractPineTree26" parent="Trees/CenterTrees/Group28" unique_id=748339548 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/CenterTrees/Group28" unique_id=274192574 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/CenterTrees/Group28" unique_id=1219943678 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/CenterTrees/Group28" unique_id=1626097159 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/CenterTrees/Group28" unique_id=1960678182 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/CenterTrees/Group28" unique_id=1797080864 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/CenterTrees/Group28" unique_id=1711517413 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/CenterTrees/Group28" unique_id=692331714 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/CenterTrees/Group28" unique_id=396844293 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/CenterTrees/Group28" unique_id=1514863597 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/CenterTrees/Group28" unique_id=94911983 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/CenterTrees/Group28" unique_id=1829917632 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/CenterTrees/Group28" unique_id=717334439 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/CenterTrees/Group28" unique_id=967995082 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/CenterTrees/Group28" unique_id=1898637848 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/CenterTrees/Group28" unique_id=29983378 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/CenterTrees/Group28" unique_id=59307195 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/CenterTrees/Group28" unique_id=1624187655 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/CenterTrees/Group28" unique_id=685091287 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/CenterTrees/Group28" unique_id=2058004695 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/CenterTrees/Group28" unique_id=1387350722 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/CenterTrees/Group28" unique_id=2043052468 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/CenterTrees/Group28" unique_id=1226172256 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/CenterTrees/Group28" unique_id=1929494891 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group29" type="Node3D" parent="Trees/CenterTrees" unique_id=1750106720] +transform = Transform3D(3.488461e-05, 0, -1, 0, 1, 0, 1, 0, 3.488461e-05, 30.049175, 0, -5.51356) + +[node name="AbstractPineTree26" parent="Trees/CenterTrees/Group29" unique_id=1351177139 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/CenterTrees/Group29" unique_id=1277124439 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/CenterTrees/Group29" unique_id=1650034593 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/CenterTrees/Group29" unique_id=1688504354 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/CenterTrees/Group29" unique_id=1371826925 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/CenterTrees/Group29" unique_id=449964584 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/CenterTrees/Group29" unique_id=1909482224 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/CenterTrees/Group29" unique_id=1492713937 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/CenterTrees/Group29" unique_id=28956555 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/CenterTrees/Group29" unique_id=1573907374 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/CenterTrees/Group29" unique_id=180964542 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/CenterTrees/Group29" unique_id=687614472 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/CenterTrees/Group29" unique_id=682129614 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/CenterTrees/Group29" unique_id=311646848 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/CenterTrees/Group29" unique_id=1368125998 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/CenterTrees/Group29" unique_id=1170136164 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree34" parent="Trees/CenterTrees/Group29" unique_id=1234038017 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.4485404, 3.2365112, -7.4340153) + +[node name="Group30" type="Node3D" parent="Trees/CenterTrees" unique_id=1794849998] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 28.539356, 0, 13.523481) + +[node name="AbstractPineTree12" parent="Trees/CenterTrees/Group30" unique_id=84449021 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 8.6259365) + +[node name="AbstractPineTree16" parent="Trees/CenterTrees/Group30" unique_id=712406101 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688099, 3.2365112, 8.886868) + +[node name="Group31" type="Node3D" parent="Trees/CenterTrees" unique_id=1837651968] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.5903907, 0, -1.1452584) + +[node name="AbstractPineTree26" parent="Trees/CenterTrees/Group31" unique_id=1209880662 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/CenterTrees/Group31" unique_id=1277284882 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/CenterTrees/Group31" unique_id=1750481752 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/CenterTrees/Group31" unique_id=1550441858 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/CenterTrees/Group31" unique_id=290186964 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/CenterTrees/Group31" unique_id=967884592 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/CenterTrees/Group31" unique_id=94007940 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/CenterTrees/Group31" unique_id=1863490255 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/CenterTrees/Group31" unique_id=536999488 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/CenterTrees/Group31" unique_id=837136670 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/CenterTrees/Group31" unique_id=1817377487 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/CenterTrees/Group31" unique_id=713040415 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/CenterTrees/Group31" unique_id=1945413865 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/CenterTrees/Group31" unique_id=644744841 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/CenterTrees/Group31" unique_id=2146244285 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/CenterTrees/Group31" unique_id=1833435978 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/CenterTrees/Group31" unique_id=1551234973 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/CenterTrees/Group31" unique_id=2116029511 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/CenterTrees/Group31" unique_id=1300408276 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/CenterTrees/Group31" unique_id=1911864624 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/CenterTrees/Group31" unique_id=416383382 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/CenterTrees/Group31" unique_id=1080391629 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/CenterTrees/Group31" unique_id=1154792800 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/CenterTrees/Group31" unique_id=1085384431 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="Group32" type="Node3D" parent="Trees/CenterTrees" unique_id=718224894] +transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -5.662237, 0, -17.415258) + +[node name="AbstractPineTree26" parent="Trees/CenterTrees/Group32" unique_id=479481630 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -1.6997833) + +[node name="AbstractPineTree11" parent="Trees/CenterTrees/Group32" unique_id=1685643364 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 7.569599) + +[node name="AbstractPineTree12" parent="Trees/CenterTrees/Group32" unique_id=499337645 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 6.582302) + +[node name="AbstractPineTree13" parent="Trees/CenterTrees/Group32" unique_id=640913344 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 7.277275) + +[node name="AbstractPineTree14" parent="Trees/CenterTrees/Group32" unique_id=1664298835 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, 5.5032845) + +[node name="AbstractPineTree15" parent="Trees/CenterTrees/Group32" unique_id=953881271 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 7.569599) + +[node name="AbstractPineTree16" parent="Trees/CenterTrees/Group32" unique_id=783968524 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 6.582302) + +[node name="AbstractPineTree17" parent="Trees/CenterTrees/Group32" unique_id=616720421 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, 5.5032845) + +[node name="AbstractPineTree18" parent="Trees/CenterTrees/Group32" unique_id=286251965 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, 4.2024994) + +[node name="AbstractPineTree19" parent="Trees/CenterTrees/Group32" unique_id=1424166232 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, 1.6673126) + +[node name="AbstractPineTree20" parent="Trees/CenterTrees/Group32" unique_id=267218841 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, 0.68001556) + +[node name="AbstractPineTree21" parent="Trees/CenterTrees/Group32" unique_id=2009102665 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, 1.3749924) + +[node name="AbstractPineTree22" parent="Trees/CenterTrees/Group32" unique_id=1521338151 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -0.39900208) + +[node name="AbstractPineTree23" parent="Trees/CenterTrees/Group32" unique_id=1014307376 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, 1.6673126) + +[node name="AbstractPineTree24" parent="Trees/CenterTrees/Group32" unique_id=293237117 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, 0.68001556) + +[node name="AbstractPineTree25" parent="Trees/CenterTrees/Group32" unique_id=1005616621 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -0.39900208) + +[node name="AbstractPineTree27" parent="Trees/CenterTrees/Group32" unique_id=1681317346 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.9375038, 3.2365112, -4.4607925) + +[node name="AbstractPineTree28" parent="Trees/CenterTrees/Group32" unique_id=1901340034 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 2.8644466, 3.2365112, -5.4480896) + +[node name="AbstractPineTree29" parent="Trees/CenterTrees/Group32" unique_id=797077043 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -3.4289932, 3.2365112, -4.7531166) + +[node name="AbstractPineTree30" parent="Trees/CenterTrees/Group32" unique_id=694743723 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -2.2113132, 3.2365112, -6.5271072) + +[node name="AbstractPineTree31" parent="Trees/CenterTrees/Group32" unique_id=2045885119 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.88614464, 3.2365112, -4.4607925) + +[node name="AbstractPineTree32" parent="Trees/CenterTrees/Group32" unique_id=173334070 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 4.688097, 3.2365112, -5.4480896) + +[node name="AbstractPineTree33" parent="Trees/CenterTrees/Group32" unique_id=2058548211 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0.24907875, 3.2365112, -6.5271072) + +[node name="AbstractPineTree34" parent="Trees/CenterTrees/Group32" unique_id=1988052897 instance=ExtResource("18_noi2s")] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 3.7203922, 3.2365112, -7.8278923) + +[node name="AbstractPineTree" parent="Trees" unique_id=1945589790 instance=ExtResource("18_noi2s")] +transform = Transform3D(-2.6226829e-08, 0, -0.5999999, 0, 0.5999999, 0, 0.5999999, 0, -2.6226829e-08, -18.2476, 3.2365112, 17.621563) + +[node name="AbstractPineTree2" parent="Trees" unique_id=523504849 instance=ExtResource("18_noi2s")] +transform = Transform3D(-2.6226829e-08, 0, -0.5999999, 0, 0.5999999, 0, 0.5999999, 0, -2.6226829e-08, -30.667137, 3.2365112, 24.159054) + +[node name="AbstractPineTree3" parent="Trees" unique_id=1800638806 instance=ExtResource("18_noi2s")] +transform = Transform3D(-2.6226829e-08, 0, -0.5999999, 0, 0.5999999, 0, 0.5999999, 0, -2.6226829e-08, -14.7543745, 3.2365112, 30.952112) + +[node name="AbstractPineTree4" parent="Trees" unique_id=2118687532 instance=ExtResource("18_noi2s")] +transform = Transform3D(-2.6226829e-08, 0, -0.5999999, 0, 0.5999999, 0, 0.5999999, 0, -2.6226829e-08, -2.2868185, 3.2365112, 16.33473) + +[node name="AbstractPineTree5" parent="Trees" unique_id=1081959055 instance=ExtResource("18_noi2s")] +transform = Transform3D(-2.6226829e-08, 0, -0.5999999, 0, 0.5999999, 0, 0.5999999, 0, -2.6226829e-08, -5.1712227, 3.2365112, 30.482935) + +[node name="AbstractPineTree6" parent="Trees" unique_id=466476751 instance=ExtResource("18_noi2s")] +transform = Transform3D(-2.6226829e-08, 0, -0.5999999, 0, 0.5999999, 0, 0.5999999, 0, -2.6226829e-08, -29.558434, 3.2365112, 34.04515) + +[node name="AbstractPineTree7" parent="Trees" unique_id=1526734753 instance=ExtResource("18_noi2s")] +transform = Transform3D(-2.6226829e-08, 0, -0.5999999, 0, 0.5999999, 0, 0.5999999, 0, -2.6226829e-08, -9.528412, 3.2365112, 22.387207) + +[node name="AbstractPineTree8" parent="Trees" unique_id=1424162350 instance=ExtResource("18_noi2s")] +transform = Transform3D(-2.6226829e-08, 0, -0.5999999, 0, 0.5999999, 0, 0.5999999, 0, -2.6226829e-08, -31.376701, 3.2365112, -24.450209) + +[node name="AbstractPineTree9" parent="Trees" unique_id=1029906851 instance=ExtResource("18_noi2s")] +transform = Transform3D(-2.6226829e-08, 0, -0.5999999, 0, 0.5999999, 0, 0.5999999, 0, -2.6226829e-08, 75.30491, 3.2365112, -5.7421007) + +[node name="AbstractPineTree10" parent="Trees" unique_id=666322186 instance=ExtResource("18_noi2s")] +transform = Transform3D(-2.6226829e-08, 0, -0.5999999, 0, 0.5999999, 0, 0.5999999, 0, -2.6226829e-08, 80.79738, 3.2365112, -5.5297985) + +[node name="AbstractPineTree11" parent="Trees" unique_id=1056113128 instance=ExtResource("18_noi2s")] +transform = Transform3D(-2.6226829e-08, 0, -0.5999999, 0, 0.5999999, 0, 0.5999999, 0, -2.6226829e-08, 86.15549, 3.2365112, -5.5297985) + +[node name="AbstractPineTree12" parent="Trees" unique_id=1284912951 instance=ExtResource("18_noi2s")] +transform = Transform3D(-2.6226829e-08, 0, -0.5999999, 0, 0.5999999, 0, 0.5999999, 0, -2.6226829e-08, 39.666897, 3.2365112, -21.033201) + +[node name="AbstractPineTree13" parent="Trees" unique_id=626485375 instance=ExtResource("18_noi2s")] +transform = Transform3D(-2.6226829e-08, 0, -0.5999999, 0, 0.5999999, 0, 0.5999999, 0, -2.6226829e-08, 53.342064, 3.2365112, -31.011786) + +[node name="AbstractPineTree14" parent="Trees" unique_id=799674038 instance=ExtResource("18_noi2s")] +transform = Transform3D(-2.6226829e-08, 0, -0.5999999, 0, 0.5999999, 0, 0.5999999, 0, -2.6226829e-08, 73.7389, 3.2365112, -29.17375) + +[node name="AbstractPineTree15" parent="Trees" unique_id=1299343291 instance=ExtResource("18_noi2s")] +transform = Transform3D(-2.6226829e-08, 0, -0.5999999, 0, 0.5999999, 0, 0.5999999, 0, -2.6226829e-08, 63.373497, 3.2365112, -19.646568) + +[node name="AbstractPineTree16" parent="Trees" unique_id=420445857 instance=ExtResource("18_noi2s")] +transform = Transform3D(-2.6226829e-08, 0, -0.5999999, 0, 0.5999999, 0, 0.5999999, 0, -2.6226829e-08, 51.683743, 3.2365112, -16.536129) + +[node name="AbstractPineTree17" parent="Trees" unique_id=1286928397 instance=ExtResource("18_noi2s")] +transform = Transform3D(-2.6226829e-08, 0, -0.5999999, 0, 0.5999999, 0, 0.5999999, 0, -2.6226829e-08, -24.186855, 3.2365112, -21.16196) + +[node name="Walls" type="Node" parent="." unique_id=250332121] + +[node name="InvisibleWall" type="StaticBody3D" parent="Walls" unique_id=2005657200] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24.015898, 3.2121181, -28.63442) + +[node name="CollisionShape3D" type="CollisionShape3D" parent="Walls/InvisibleWall" unique_id=496590656] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.1794434, 1.0284252, -2.671484) +shape = SubResource("BoxShape3D_noi2s") + +[node name="InvisibleWall2" type="StaticBody3D" parent="Walls" unique_id=1605050820] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24.015898, 3.2121181, -28.63442) + +[node name="CollisionShape3D" type="CollisionShape3D" parent="Walls/InvisibleWall2" unique_id=1803795564] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.095398, 1.0284252, 68.1428) +shape = SubResource("BoxShape3D_ef0dp") + +[node name="InvisibleWall3" type="StaticBody3D" parent="Walls" unique_id=735807467] +transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -40.96456, 3.2121181, 22.437544) + +[node name="CollisionShape3D" type="CollisionShape3D" parent="Walls/InvisibleWall3" unique_id=1657321388] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.7758923, 1.0284252, -2.671482) +shape = SubResource("BoxShape3D_dvg3n") + +[node name="InvisibleWall4" type="StaticBody3D" parent="Walls" unique_id=783648177] +transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -40.96456, 3.2121181, -37.731743) + +[node name="CollisionShape3D" type="CollisionShape3D" parent="Walls/InvisibleWall4" unique_id=665633082] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -13.113323, 1.0284252, -2.671482) +shape = SubResource("BoxShape3D_1dqna") + +[node name="InvisibleWall5" type="StaticBody3D" parent="Walls" unique_id=1030290326] +transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 104.76038, 3.2121181, -3.434671) + +[node name="CollisionShape3D" type="CollisionShape3D" parent="Walls/InvisibleWall5" unique_id=939211669] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.640752, 1.0284252, -2.6714783) +shape = SubResource("BoxShape3D_2y4lp") + +[node name="Scenery" type="Node" parent="." unique_id=913726792] + +[node name="ParkLamp" parent="Scenery" unique_id=363458075 instance=ExtResource("16_x2yo5")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -21.811935, 1.0480313, -11.665876) + +[node name="ParkLamp2" parent="Scenery" unique_id=548745357 instance=ExtResource("16_x2yo5")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -21.811935, 1.0480313, 9.831851) + +[node name="ParkLamp3" parent="Scenery" unique_id=1757872320 instance=ExtResource("16_x2yo5")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 36.867844, 1.0480313, -28.149569) + +[node name="ParkLamp4" parent="Scenery" unique_id=1115465843 instance=ExtResource("16_x2yo5")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 31.81034, 1.0480313, 12.348897) + +[node name="ParkLamp5" parent="Scenery" unique_id=781078915 instance=ExtResource("16_x2yo5")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.31273556, 1.0480313, 34.814854) + +[node name="ParkLamp6" parent="Scenery" unique_id=1738209740 instance=ExtResource("16_x2yo5")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 92.52099, 1.0480313, -2.8340356) + +[node name="ParkLamp7" parent="Scenery" unique_id=143955352 instance=ExtResource("16_x2yo5")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 69.513374, 1.0480313, -21.635038) + +[node name="ParkLamp8" parent="Scenery" unique_id=565990367 instance=ExtResource("16_x2yo5")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 67.50698, 1.0480313, 31.913095) + +[node name="Paths" type="Node" parent="." unique_id=1419220302] + +[node name="Path1" type="CSGBox3D" parent="Paths" unique_id=2034330889 groups=["path_area", "wood_floor"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -22.327866, 0.09488219, -0.7351074) +use_collision = true +size = Vector3(5.4624405, 0.1, 2.4702148) +material = SubResource("StandardMaterial3D_dm7sh") + +[node name="Path_Area" type="Area3D" parent="Paths/Path1" unique_id=1169439806] +script = ExtResource("5_dm7sh") + +[node name="Path_Collision" type="CollisionShape3D" parent="Paths/Path1/Path_Area" unique_id=1200158494] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.5, 0) +shape = SubResource("BoxShape3D_x2yo5") + +[node name="Path2" type="CSGBox3D" parent="Paths" unique_id=366453286 groups=["path_area", "wood_floor"]] +transform = Transform3D(-4.3711385e-08, 0, 0.99999994, 0, 1, 0, -0.99999994, 0, -4.3711385e-08, -18.330248, 0.09488219, -7.368464) +use_collision = true +size = Vector3(36.74703, 0.1, 2.4702148) +material = SubResource("StandardMaterial3D_dm7sh") + +[node name="Path_Area" type="Area3D" parent="Paths/Path2" unique_id=166587851] +script = ExtResource("5_dm7sh") + +[node name="Path_Collision" type="CollisionShape3D" parent="Paths/Path2/Path_Area" unique_id=486811332] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.5, 0) +shape = SubResource("BoxShape3D_5d25t") + +[node name="Path3" type="CSGBox3D" parent="Paths" unique_id=585989812 groups=["path_area", "wood_floor"]] +transform = Transform3D(0.9999999, 0, 0, 0, 1, 0, 0, 0, 0.9999999, 20.048412, 0.09488219, 35.1945) +use_collision = true +size = Vector3(33.50869, 0.1, 2.4702148) +material = SubResource("StandardMaterial3D_dm7sh") + +[node name="Path_Area" type="Area3D" parent="Paths/Path3" unique_id=1870668197] +script = ExtResource("5_dm7sh") + +[node name="Path_Collision" type="CollisionShape3D" parent="Paths/Path3/Path_Area" unique_id=1380453750] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.5, 0) +shape = SubResource("BoxShape3D_f38c0") + +[node name="Path4" type="CSGBox3D" parent="Paths" unique_id=481993658 groups=["path_area", "wood_floor"]] +transform = Transform3D(0.9999999, 0, 0, 0, 1, 0, 0, 0, 0.9999999, -5.7116423, 0.09488219, -24.508892) +use_collision = true +size = Vector3(22.920671, 0.1, 2.4702148) +material = SubResource("StandardMaterial3D_dm7sh") + +[node name="Path_Area" type="Area3D" parent="Paths/Path4" unique_id=845248109] +script = ExtResource("5_dm7sh") + +[node name="Path_Collision" type="CollisionShape3D" parent="Paths/Path4/Path_Area" unique_id=1226246142] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.5, 0) +shape = SubResource("BoxShape3D_54yen") + +[node name="Path5" type="CSGBox3D" parent="Paths" unique_id=1824268342 groups=["path_area", "wood_floor"]] +transform = Transform3D(-4.3711385e-08, 0, 0.99999994, 0, 1, 0, -0.99999994, 0, -4.3711385e-08, 90.09647, 0.09488219, 10.277315) +use_collision = true +size = Vector3(47.389954, 0.1, 2.4702148) +material = SubResource("StandardMaterial3D_dm7sh") + +[node name="Path_Area" type="Area3D" parent="Paths/Path5" unique_id=1393264419] +script = ExtResource("5_dm7sh") + +[node name="Path_Collision" type="CollisionShape3D" parent="Paths/Path5/Path_Area" unique_id=927500761] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.5, 0) +shape = SubResource("BoxShape3D_yt3p7") + +[node name="Path6" type="CSGBox3D" parent="Paths" unique_id=291956608 groups=["path_area", "wood_floor"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.9031887, 0.09488219, -11.684379) +use_collision = true +size = Vector3(20.35849, 0.1, 2.4702148) +material = SubResource("StandardMaterial3D_dm7sh") + +[node name="Path_Area" type="Area3D" parent="Paths/Path6" unique_id=207386163] +script = ExtResource("5_dm7sh") + +[node name="Path_Collision" type="CollisionShape3D" parent="Paths/Path6/Path_Area" unique_id=653095695] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.5, 0) +shape = SubResource("BoxShape3D_l0huc") + +[node name="Path7" type="CSGBox3D" parent="Paths" unique_id=1413772622 groups=["path_area", "wood_floor"]] +transform = Transform3D(-4.3711385e-08, 0, 0.99999994, 0, 1, 0, -0.99999994, 0, -4.3711385e-08, 4.510481, 0.09488219, 5.3349266) +use_collision = true +size = Vector3(57.2273, 0.1, 2.4702148) +material = SubResource("StandardMaterial3D_dm7sh") + +[node name="Path_Area" type="Area3D" parent="Paths/Path7" unique_id=835181461] +script = ExtResource("5_dm7sh") + +[node name="Path_Collision" type="CollisionShape3D" parent="Paths/Path7/Path_Area" unique_id=233270449] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.5, 0) +shape = SubResource("BoxShape3D_aifm8") + +[node name="Path8" type="CSGBox3D" parent="Paths" unique_id=1398666892 groups=["path_area", "wood_floor"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.9031887, 0.09488219, 9.756561) +use_collision = true +size = Vector3(20.35849, 0.1, 2.4702148) +material = SubResource("StandardMaterial3D_dm7sh") + +[node name="Path_Area" type="Area3D" parent="Paths/Path8" unique_id=769141563] +script = ExtResource("5_dm7sh") + +[node name="Path_Collision" type="CollisionShape3D" parent="Paths/Path8/Path_Area" unique_id=903960741] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.5, 0) +shape = SubResource("BoxShape3D_pruie") + +[node name="Path9" type="CSGBox3D" parent="Paths" unique_id=1910277283 groups=["path_area", "wood_floor"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20.01854, 0.09488219, -11.684379) +use_collision = true +size = Vector3(28.599045, 0.1, 2.4702148) +material = SubResource("StandardMaterial3D_dm7sh") + +[node name="Path_Area" type="Area3D" parent="Paths/Path9" unique_id=169185833] +script = ExtResource("5_dm7sh") + +[node name="Path_Collision" type="CollisionShape3D" parent="Paths/Path9/Path_Area" unique_id=2122560577] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.5, 0) +shape = SubResource("BoxShape3D_hd47q") + +[node name="Path10" type="CSGBox3D" parent="Paths" unique_id=1159792064 groups=["path_area", "wood_floor"]] +transform = Transform3D(-4.3711385e-08, 0, 0.99999994, 0, 1, 0, -0.99999994, 0, -4.3711385e-08, 35.572906, 0.09488219, 4.1233807) +use_collision = true +size = Vector3(59.671875, 0.1, 2.4702148) +material = SubResource("StandardMaterial3D_dm7sh") + +[node name="Path_Area" type="Area3D" parent="Paths/Path10" unique_id=272347399] +script = ExtResource("5_dm7sh") + +[node name="Path_Collision" type="CollisionShape3D" parent="Paths/Path10/Path_Area" unique_id=594277632] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.5, 0) +shape = SubResource("BoxShape3D_gxc6i") + +[node name="Path11" type="CSGBox3D" parent="Paths" unique_id=134905696 groups=["path_area", "wood_floor"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 50.02919, 0.09488219, 17.764631) +use_collision = true +size = Vector3(26.42192, 0.1, 2.4702148) +material = SubResource("StandardMaterial3D_dm7sh") + +[node name="Path_Area" type="Area3D" parent="Paths/Path11" unique_id=1103010461] +script = ExtResource("5_dm7sh") + +[node name="Path_Collision" type="CollisionShape3D" parent="Paths/Path11/Path_Area" unique_id=135624883] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.5, 0) +shape = SubResource("BoxShape3D_diqwu") + +[node name="Path12" type="CSGBox3D" parent="Paths" unique_id=777308541 groups=["path_area", "wood_floor"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 62.84393, 0.095, 0) +use_collision = true +size = Vector3(52.05076, 0.1, 2.4702148) +material = SubResource("StandardMaterial3D_dm7sh") + +[node name="Path_Area" type="Area3D" parent="Paths/Path12" unique_id=2118556735] +script = ExtResource("5_dm7sh") + +[node name="Path_Collision" type="CollisionShape3D" parent="Paths/Path12/Path_Area" unique_id=710115351] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.5, 0) +shape = SubResource("BoxShape3D_mjhtm") + +[node name="Path13" type="CSGBox3D" parent="Paths" unique_id=573449927 groups=["path_area", "wood_floor"]] +transform = Transform3D(0.9999999, 0, 0, 0, 1, 0, 0, 0, 0.9999999, 54.105427, 0.09488219, -24.43697) +use_collision = true +size = Vector3(34.644997, 0.1, 2.4702148) +material = SubResource("StandardMaterial3D_dm7sh") + +[node name="Path_Area" type="Area3D" parent="Paths/Path13" unique_id=543960508] +script = ExtResource("5_dm7sh") + +[node name="Path_Collision" type="CollisionShape3D" parent="Paths/Path13/Path_Area" unique_id=359493769] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.5, 0) +shape = SubResource("BoxShape3D_c3lfl") + +[node name="Path14" type="CSGBox3D" parent="Paths" unique_id=798698367 groups=["path_area", "wood_floor"]] +transform = Transform3D(-4.3711385e-08, 0, 0.99999994, 0, 1, 0, -0.99999994, 0, -4.3711385e-08, 72.6439, 0.09488219, -13.474609) +use_collision = true +size = Vector3(24.475891, 0.1, 2.4702148) +material = SubResource("StandardMaterial3D_dm7sh") + +[node name="Path_Area" type="Area3D" parent="Paths/Path14" unique_id=268560494] +script = ExtResource("5_dm7sh") + +[node name="Path_Collision" type="CollisionShape3D" parent="Paths/Path14/Path_Area" unique_id=1349618445] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.5, 0) +shape = SubResource("BoxShape3D_1reje") + +[node name="Path15" type="CSGBox3D" parent="Paths" unique_id=321648537 groups=["path_area", "wood_floor"]] +transform = Transform3D(-4.3711385e-08, 0, 0.99999994, 0, 1, 0, -0.99999994, 0, -4.3711385e-08, 64.49036, 0.09488219, 25.247417) +use_collision = true +size = Vector3(17.410797, 0.1, 2.4702148) +material = SubResource("StandardMaterial3D_dm7sh") + +[node name="Path_Area" type="Area3D" parent="Paths/Path15" unique_id=118491282] +script = ExtResource("5_dm7sh") + +[node name="Path_Collision" type="CollisionShape3D" parent="Paths/Path15/Path_Area" unique_id=1095844743] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.5, 0) +shape = SubResource("BoxShape3D_yvdgr") + +[node name="Path16" type="CSGBox3D" parent="Paths" unique_id=1796315401 groups=["path_area", "wood_floor"]] +transform = Transform3D(0.9999999, 0, 0, 0, 1, 0, 0, 0, 0.9999999, 77.2942, 0.09488219, 35.1945) +use_collision = true +size = Vector3(28.068592, 0.1, 2.4702148) +material = SubResource("StandardMaterial3D_dm7sh") + +[node name="Path_Area" type="Area3D" parent="Paths/Path16" unique_id=107076092] +script = ExtResource("5_dm7sh") + +[node name="Path_Collision" type="CollisionShape3D" parent="Paths/Path16/Path_Area" unique_id=1443132327] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.5, 0) +shape = SubResource("BoxShape3D_13ahi") + +[node name="Path17" type="CSGBox3D" parent="Paths" unique_id=861655855 groups=["path_area", "wood_floor"]] +transform = Transform3D(0.9999999, 0, 0, 0, 1, 0, 0, 0, 0.9999999, 81.37807, 0.09488219, -12.1845455) +use_collision = true +size = Vector3(14.977614, 0.1, 2.4702148) +material = SubResource("StandardMaterial3D_dm7sh") + +[node name="Path_Area" type="Area3D" parent="Paths/Path17" unique_id=1573207265] +script = ExtResource("5_dm7sh") + +[node name="Path_Collision" type="CollisionShape3D" parent="Paths/Path17/Path_Area" unique_id=837788230] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.5, 0) +shape = SubResource("BoxShape3D_0dv7w") + +[node name="Path18" type="CSGBox3D" parent="Paths" unique_id=57088876 groups=["path_area", "wood_floor"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 96.35066, 0.09488219, 0.019483566) +use_collision = true +size = Vector3(10.017353, 0.1, 2.4702148) +material = SubResource("StandardMaterial3D_dm7sh") + +[node name="Path_Area" type="Area3D" parent="Paths/Path18" unique_id=549606802] +script = ExtResource("5_dm7sh") + +[node name="Path_Collision" type="CollisionShape3D" parent="Paths/Path18/Path_Area" unique_id=2014271640] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.5, 0) +shape = SubResource("BoxShape3D_qp251") + +[node name="Snow_Spot1" parent="." unique_id=1759046867 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -37.67149, 0.26, -27.182552) + +[node name="Snow_Spot2" parent="." unique_id=883275487 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -37.67671, 0.26, -21.517097) + +[node name="Snow_Spot3" parent="." unique_id=508230504 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -37.795055, 0.26, -16.884884) + +[node name="Snow_Spot4" parent="." unique_id=1998041766 instance=ExtResource("4_818ab")] +transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, -31.970102, 0.26, -16.9165) + +[node name="Snow_Spot5" parent="." unique_id=714042721 instance=ExtResource("4_818ab")] +transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, -32.018883, 0.26, -21.613165) + +[node name="Snow_Spot6" parent="." unique_id=1703408530 instance=ExtResource("4_818ab")] +transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, -26.93497, 0.26, -16.937134) + +[node name="Snow_Spot7" parent="." unique_id=359692806 instance=ExtResource("4_818ab")] +transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, -22.152536, 0.26, -16.937134) + +[node name="Snow_Spot8" parent="." unique_id=2023741211 instance=ExtResource("4_818ab")] +transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, -22.881283, 0.26, -25.122732) + +[node name="Snow_Spot9" parent="." unique_id=282074994 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -18.514162, 0.26, -24.122566) + +[node name="Snow_Spot10" parent="." unique_id=1708395742 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -18.51938, 0.26, -18.457111) + +[node name="Snow_Spot11" parent="." unique_id=149873221 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -18.637728, 0.26, -13.824898) + +[node name="Snow_Spot12" parent="." unique_id=161900807 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -18.514162, 0.26, -8.8703) + +[node name="Snow_Spot13" parent="." unique_id=554554234 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -18.51938, 0.26, -3.204846) + +[node name="Snow_Spot14" parent="." unique_id=809471292 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -18.637728, 0.26, 1.4273677) + +[node name="Snow_Spot15" parent="." unique_id=45870165 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -18.514162, 0.26, 5.7869415) + +[node name="Snow_Spot16" parent="." unique_id=2093714302 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -18.51938, 0.26, 9.897141) + +[node name="Snow_Spot17" parent="." unique_id=268992210 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14.379118, 0.26, 9.897433) + +[node name="Snow_Spot18" parent="." unique_id=1585657063 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -10.100873, 0.26, 9.897141) + +[node name="Snow_Spot19" parent="." unique_id=2070951228 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.9606104, 0.26, 9.897433) + +[node name="Snow_Spot20" parent="." unique_id=1377482571 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.7022095, 0.26, 9.897141) + +[node name="Snow_Spot21" parent="." unique_id=1546347902 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.4380531, 0.26, 9.897433) + +[node name="Snow_Spot22" parent="." unique_id=1470610765 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -38.233116, 0.26, 14.889283) + +[node name="Snow_Spot23" parent="." unique_id=1073950194 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -34.09285, 0.26, 14.889575) + +[node name="Snow_Spot24" parent="." unique_id=1862052666 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -29.814604, 0.26, 14.889283) + +[node name="Snow_Spot25" parent="." unique_id=466643824 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -25.674341, 0.26, 14.889575) + +[node name="Snow_Spot26" parent="." unique_id=1228686038 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14.378403, 0.26, 14.889283) + +[node name="Snow_Spot27" parent="." unique_id=422313972 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -10.23814, 0.26, 14.889575) + +[node name="Snow_Spot28" parent="." unique_id=2116842818 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -22.740364, 0.26, 16.95816) + +[node name="Snow_Spot29" parent="." unique_id=1014985563 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -22.745583, 0.26, 21.06836) + +[node name="Snow_Spot30" parent="." unique_id=2128830840 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -18.60532, 0.26, 21.068653) + +[node name="Snow_Spot31" parent="." unique_id=1357443676 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14.327073, 0.26, 21.06836) + +[node name="Snow_Spot32" parent="." unique_id=851974796 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -18.604603, 0.26, 26.060501) + +[node name="Snow_Spot33" parent="." unique_id=2107978865 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14.464341, 0.26, 26.060795) + +[node name="Snow_Spot34" parent="." unique_id=1558605851 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -22.868814, 0.26, 29.820862) + +[node name="Snow_Spot35" parent="." unique_id=180312696 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -18.590569, 0.26, 29.820568) + +[node name="Snow_Spot36" parent="." unique_id=414176051 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -22.868097, 0.26, 34.81271) + +[node name="Snow_Spot37" parent="." unique_id=1677321131 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -18.727837, 0.26, 34.813004) + +[node name="Snow_Spot38" parent="." unique_id=2065352989 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -22.669996, 0.26, 25.301624) + +[node name="Snow_Spot39" parent="." unique_id=641838670 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -38.24234, 0.26, 21.06836) + +[node name="Snow_Spot40" parent="." unique_id=507855409 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -38.36557, 0.26, 29.820862) + +[node name="Snow_Spot41" parent="." unique_id=293763760 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -38.364853, 0.26, 34.81271) + +[node name="Snow_Spot42" parent="." unique_id=844380315 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -38.16675, 0.26, 25.301624) + +[node name="Snow_Spot43" parent="." unique_id=887921818 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.385446, 0.26, 21.06836) + +[node name="Snow_Spot44" parent="." unique_id=290723352 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -29.986217, 0.26, 29.820862) + +[node name="Snow_Spot45" parent="." unique_id=1205390751 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -11.589407, 0.26, 34.81271) + +[node name="Snow_Spot46" parent="." unique_id=1962746141 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -10.6499195, 0.26, 28.37251) + +[node name="Snow_Spot47" parent="." unique_id=764900382 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.385446, 0.26, 25.543644) + +[node name="Snow_Spot48" parent="." unique_id=1816383482 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -12.9657135, 0.26, -7.8548775) + +[node name="Snow_Spot49" parent="." unique_id=1692741763 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -12.970932, 0.26, -3.204846) + +[node name="Snow_Spot50" parent="." unique_id=255109465 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -13.089279, 0.26, 1.4273677) + +[node name="Snow_Spot51" parent="." unique_id=1624694643 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -12.9657135, 0.26, 5.7869415) + +[node name="Snow_Spot52" parent="." unique_id=1585191207 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.46506882, 0.26, 21.033892) + +[node name="Snow_Spot53" parent="." unique_id=1431077100 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.4598503, 0.26, 25.683924) + +[node name="Snow_Spot54" parent="." unique_id=1215310644 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.34150314, 0.26, 30.316137) + +[node name="Snow_Spot55" parent="." unique_id=598039596 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.6631927, 0.26, 34.802917) + +[node name="Snow_Spot56" parent="." unique_id=350821605 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 25.05226, 0.26, 14.352913) + +[node name="Snow_Spot57" parent="." unique_id=57935324 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 25.034775, 0.26, 10.029209) + +[node name="Snow_Spot58" parent="." unique_id=1219448133 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 25.249748, 0.26, 5.4418364) + +[node name="Snow_Spot59" parent="." unique_id=2067152983 instance=ExtResource("4_818ab")] +transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 29.492582, 0.26, 14.383324) + +[node name="Snow_Spot60" parent="." unique_id=1697422816 instance=ExtResource("4_818ab")] +transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 29.499187, 0.26, 10.090103) + +[node name="Snow_Spot61" parent="." unique_id=367410020 instance=ExtResource("4_818ab")] +transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 29.53794, 0.26, 5.453244) + +[node name="Snow_Spot62" parent="." unique_id=451667840 instance=ExtResource("4_818ab")] +transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 32.439404, 0.26, -14.996302) + +[node name="Snow_Spot63" parent="." unique_id=71446178 instance=ExtResource("4_818ab")] +transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 32.40301, 0.26, -21.011421) + +[node name="Snow_Spot64" parent="." unique_id=1762808054 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 32.346867, 0.26, -26.601284) + +[node name="Snow_Spot65" parent="." unique_id=2038308871 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 41.197445, 0.26, -28.073994) + +[node name="Snow_Spot66" parent="." unique_id=2146210862 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 47.160275, 0.26, -28.065294) + +[node name="Snow_Spot67" parent="." unique_id=1713731919 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 61.06402, 0.26, -28.088444) + +[node name="Snow_Spot68" parent="." unique_id=1992373264 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21.002218, 0.26, 5.4207835) + +[node name="Snow_Spot69" parent="." unique_id=891638331 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20.883871, 0.26, 10.052998) + +[node name="Snow_Spot70" parent="." unique_id=1853167880 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21.007437, 0.26, 14.412571) + +[node name="Snow_Spot71" parent="." unique_id=1587475780 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21.002218, 0.26, 18.52277) + +[node name="Snow_Spot72" parent="." unique_id=529695095 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 25.14248, 0.26, 18.523064) + +[node name="Snow_Spot73" parent="." unique_id=734920831 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 29.420727, 0.26, 18.52277) + +[node name="Snow_Spot74" parent="." unique_id=152861125 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 33.56099, 0.26, 18.523064) + +[node name="Snow_Spot75" parent="." unique_id=639670935 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 37.81939, 0.26, 18.52277) + +[node name="Snow_Spot76" parent="." unique_id=516205345 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 67.542816, 0.26, -28.088444) + +[node name="Snow_Spot77" parent="." unique_id=1089335023 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -13.175405, 0.26, -24.119932) + +[node name="Snow_Spot78" parent="." unique_id=1450623425 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.9771028, 0.26, -24.119932) + +[node name="Snow_Spot79" parent="." unique_id=1658050019 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.498152, 0.26, -24.119932) + +[node name="Snow_Spot80" parent="." unique_id=1621703008 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.7001495, 0.26, -24.119932) + +[node name="Snow_Spot81" parent="." unique_id=1441833560 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.7001495, 0.26, -17.805988) + +[node name="Snow_Spot82" parent="." unique_id=1576018075 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.7001495, 0.26, -11.6148205) + +[node name="Snow_Spot83" parent="." unique_id=1436209702 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.894814, 0.26, -11.6148205) + +[node name="Snow_Spot84" parent="." unique_id=165406101 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7.3039417, 0.26, -11.6148205) + +[node name="Snow_Spot85" parent="." unique_id=951612790 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -12.898905, 0.26, -11.6148205) + +[node name="Snow_Spot86" parent="." unique_id=880404511 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10.326722, 0.26, -11.640214) + +[node name="Snow_Spot87" parent="." unique_id=964580416 instance=ExtResource("4_818ab")] +transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 16.446268, 0.26, -11.628806) + +[node name="Snow_Spot88" parent="." unique_id=1596673984 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24.231949, 0.26, -11.661266) + +[node name="Snow_Spot89" parent="." unique_id=913138784 instance=ExtResource("4_818ab")] +transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 29.609694, 0.26, -11.628806) + +[node name="Snow_Spot90" parent="." unique_id=1934283101 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 35.432053, 0.26, -11.661266) + +[node name="Snow_Spot91" parent="." unique_id=1447549593 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.798642, 0.26, 35.261974) + +[node name="Snow_Spot92" parent="." unique_id=1619371798 instance=ExtResource("4_818ab")] +transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 10.918188, 0.26, 35.27338) + +[node name="Snow_Spot93" parent="." unique_id=831457893 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18.703869, 0.26, 35.24092) + +[node name="Snow_Spot94" parent="." unique_id=1102807223 instance=ExtResource("4_818ab")] +transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 24.081614, 0.26, 35.27338) + +[node name="Snow_Spot95" parent="." unique_id=431879231 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 29.903973, 0.26, 35.24092) + +[node name="Snow_Spot96" parent="." unique_id=473622378 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 35.728123, 0.26, 35.24092) + +[node name="Snow_Spot97" parent="." unique_id=794471917 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 45.213993, 0.26, 18.52227) + +[node name="Snow_Spot98" parent="." unique_id=1516507397 instance=ExtResource("4_818ab")] +transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 51.333538, 0.26, 18.533676) + +[node name="Snow_Spot99" parent="." unique_id=1418693394 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 59.11922, 0.26, 18.501217) + +[node name="Snow_Spot100" parent="." unique_id=1082291620 instance=ExtResource("4_818ab")] +transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 64.49696, 0.26, 18.533676) + +[node name="Snow_Spot101" parent="." unique_id=880013050 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 35.421127, 0.26, -24.407066) + +[node name="Snow_Spot102" parent="." unique_id=62109205 instance=ExtResource("4_818ab")] +transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 41.540672, 0.26, -24.39566) + +[node name="Snow_Spot103" parent="." unique_id=1913302448 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 49.326355, 0.26, -24.42812) + +[node name="Snow_Spot104" parent="." unique_id=639288119 instance=ExtResource("4_818ab")] +transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 54.704098, 0.26, -24.39566) + +[node name="Snow_Spot105" parent="." unique_id=2035451920 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 58.937458, 0.26, -24.407066) + +[node name="Snow_Spot106" parent="." unique_id=395125943 instance=ExtResource("4_818ab")] +transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 65.057, 0.26, -24.39566) + +[node name="Snow_Spot107" parent="." unique_id=1327748025 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 72.84269, 0.26, -24.42812) + +[node name="Snow_Spot108" parent="." unique_id=2070610653 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 64.662735, 0.26, 35.180805) + +[node name="Snow_Spot109" parent="." unique_id=480219043 instance=ExtResource("4_818ab")] +transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 71.19366, 0.26, 35.19221) + +[node name="Snow_Spot110" parent="." unique_id=1015500862 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 78.42389, 0.26, 35.15975) + +[node name="Snow_Spot111" parent="." unique_id=1954869209 instance=ExtResource("4_818ab")] +transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 84.421165, 0.26, 35.19221) + +[node name="Snow_Spot112" parent="." unique_id=1171585777 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 90.02037, 0.26, 35.180805) + +[node name="Snow_Spot113" parent="." unique_id=2020720190 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 35.40933, 0.26, -0.071044445) + +[node name="Snow_Spot114" parent="." unique_id=445589789 instance=ExtResource("4_818ab")] +transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 41.94025, 0.26, -0.0596385) + +[node name="Snow_Spot115" parent="." unique_id=1978568450 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 49.170483, 0.26, -0.09209776) + +[node name="Snow_Spot116" parent="." unique_id=993276276 instance=ExtResource("4_818ab")] +transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 55.16776, 0.26, -0.0596385) + +[node name="Snow_Spot117" parent="." unique_id=1953688919 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 60.766964, 0.26, -0.071044445) + +[node name="Snow_Spot118" parent="." unique_id=549995568 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 66.18001, 0.26, -0.071044445) + +[node name="Snow_Spot119" parent="." unique_id=697680286 instance=ExtResource("4_818ab")] +transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 72.71092, 0.26, -0.0596385) + +[node name="Snow_Spot120" parent="." unique_id=87377115 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 79.94116, 0.26, -0.09209776) + +[node name="Snow_Spot121" parent="." unique_id=1906748837 instance=ExtResource("4_818ab")] +transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 85.93843, 0.26, -0.0596385) + +[node name="Snow_Spot122" parent="." unique_id=227090755 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 89.93357, 0.26, -0.071044445) + +[node name="Snow_Spot123" parent="." unique_id=577539857 instance=ExtResource("4_818ab")] +transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 94.09709, 0.26, -0.0596385) + +[node name="Snow_Spot124" parent="." unique_id=2112839274 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 98.09223, 0.26, -0.071044445) + +[node name="Snow_Spot125" parent="." unique_id=1170424908 instance=ExtResource("4_818ab")] +transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 94.09709, 0.26, -6.3761387) + +[node name="Snow_Spot126" parent="." unique_id=153828382 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 98.09223, 0.26, -6.3875446) + +[node name="Snow_Spot127" parent="." unique_id=1356622185 instance=ExtResource("4_818ab")] +transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 94.09709, 0.26, 5.2347302) + +[node name="Snow_Spot128" parent="." unique_id=832703346 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 98.09223, 0.26, 5.2233243) + +[node name="Snow_Spot129" parent="." unique_id=2032296263 instance=ExtResource("4_818ab")] +transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 77.999626, 0.26, -5.470797) + +[node name="Snow_Spot130" parent="." unique_id=1662694236 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 83.31947, 0.26, -5.481302) + +[node name="Snow_Spot131" parent="." unique_id=1169372185 instance=ExtResource("4_818ab")] +transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 72.71092, 0.26, -12.019324) + +[node name="Snow_Spot132" parent="." unique_id=1886310939 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 78.70767, 0.26, -12.051784) + +[node name="Snow_Spot133" parent="." unique_id=930869392 instance=ExtResource("4_818ab")] +transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 84.396866, 0.26, -12.019324) + +[node name="Snow_Spot134" parent="." unique_id=1908150751 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 90.1926, 0.26, -12.03073) + +[node name="Snow_Spot135" parent="." unique_id=1891616883 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.8358, 0.26, -5.3873425) + +[node name="Snow_Spot136" parent="." unique_id=760292938 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.8305817, 0.26, 0.2781124) + +[node name="Snow_Spot137" parent="." unique_id=173328006 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.7122345, 0.26, 4.910326) + +[node name="Snow_Spot138" parent="." unique_id=1851544279 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.8358, 0.26, 9.8649235) + +[node name="Snow_Spot139" parent="." unique_id=343660832 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.8305817, 0.26, 15.530378) + +[node name="Snow_Spot140" parent="." unique_id=1951037989 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.7122345, 0.26, 20.162592) + +[node name="Snow_Spot141" parent="." unique_id=122472592 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.8358, 0.26, 24.522165) + +[node name="Snow_Spot142" parent="." unique_id=1628473204 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.8305817, 0.26, 28.632366) + +[node name="Snow_Spot143" parent="." unique_id=1744841838 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 35.655266, 0.26, 18.498436) + +[node name="Snow_Spot144" parent="." unique_id=462930413 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 35.77883, 0.26, 24.26119) + +[node name="Snow_Spot145" parent="." unique_id=819504577 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 35.773613, 0.26, 29.62428) + +[node name="Snow_Spot146" parent="." unique_id=1571282981 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 35.655266, 0.26, 5.4548545) + +[node name="Snow_Spot147" parent="." unique_id=1679391047 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 35.77883, 0.26, 9.039675) + +[node name="Snow_Spot148" parent="." unique_id=1503949304 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 35.773613, 0.26, 14.402765) + +[node name="Snow_Spot149" parent="." unique_id=1747269863 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 35.495327, 0.26, -18.57808) + +[node name="Snow_Spot150" parent="." unique_id=106142156 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 35.77883, 0.26, -8.673423) + +[node name="Snow_Spot151" parent="." unique_id=1568559929 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 35.773613, 0.26, -3.3103323) + +[node name="Snow_Spot152" parent="." unique_id=2006989978 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 72.75255, 0.26, -18.749414) + +[node name="Snow_Spot153" parent="." unique_id=758700227 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 64.45008, 0.26, 24.311749) + +[node name="Snow_Spot154" parent="." unique_id=1980500707 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 64.45008, 0.26, 30.07058) + +[node name="Snow_Spot155" parent="." unique_id=1687012757 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 89.99339, 0.26, 24.311749) + +[node name="Snow_Spot156" parent="." unique_id=1418048242 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 89.99339, 0.26, 30.07058) + +[node name="Snow_Spot157" parent="." unique_id=664079837 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 89.99339, 0.26, 9.758244) + +[node name="Snow_Spot158" parent="." unique_id=689994712 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 89.99339, 0.26, 15.517075) + +[node name="Snow_Spot159" parent="." unique_id=1598110736 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 89.99339, 0.26, 5.254239) + +[node name="Snow_Spot160" parent="." unique_id=1100506279 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 89.99339, 0.26, -6.4109344) + +[node name="Snow_Spot161" parent="." unique_id=1355304571 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 72.70202, 0.26, -6.4109344) + +[node name="Snow_Spot162" parent="." unique_id=1309584513 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 68.52388, 0.26, -17.051395) + +[node name="Snow_Spot163" parent="." unique_id=1727960074 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 63.448288, 0.26, -15.029086) + +[node name="Snow_Spot164" parent="." unique_id=1695380578 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 57.898956, 0.26, -15.102819) + +[node name="Snow_Spot165" parent="." unique_id=1198275013 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 57.850937, 0.26, -19.869389) + +[node name="Snow_Spot166" parent="." unique_id=777164533 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 47.456036, 0.26, -20.48711) + +[node name="Snow_Spot167" parent="." unique_id=1191604929 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 47.456036, 0.26, -15.051304) + +[node name="Snow_Spot168" parent="." unique_id=1050844100 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 41.450363, 0.26, -15.148121) + +[node name="Snow_Spot169" parent="." unique_id=475224844 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 68.41987, 0.26, 28.279171) + +[node name="Snow_Spot170" parent="." unique_id=173285788 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 68.55278, 0.26, 22.946663) + +[node name="Snow_Spot171" parent="." unique_id=1493150265 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 68.55278, 0.26, 17.213184) + +[node name="Snow_Spot172" parent="." unique_id=1279264416 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -22.273287, 0.26, 4.5149813) + +[node name="Snow_Spot173" parent="." unique_id=1286167924 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -22.273287, 0.26, -0.80473995) + +[node name="Snow_Spot174" parent="." unique_id=54537209 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -22.273287, 0.26, -6.289461) + +[node name="Snow_Spot175" parent="." unique_id=743169959 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16.083532, 0.26, -27.902813) + +[node name="Snow_Spot176" parent="." unique_id=1019538277 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.885231, 0.26, -27.902813) + +[node name="Snow_Spot177" parent="." unique_id=1976436218 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.4062805, 0.26, -27.902813) + +[node name="Snow_Spot178" parent="." unique_id=656113201 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.7920213, 0.26, -27.902813) + +[node name="Snow_Spot179" parent="." unique_id=1191930956 instance=ExtResource("4_818ab")] +transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, -26.944407, 0.26, -27.580915) + +[node name="Snow_Spot180" parent="." unique_id=1138727752 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 41.613697, 0.26, 14.288277) + +[node name="Snow_Spot181" parent="." unique_id=1958971872 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 49.0083, 0.26, 14.287777) + +[node name="Snow_Spot182" parent="." unique_id=1301010775 instance=ExtResource("4_818ab")] +transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 55.127846, 0.26, 14.299183) + +[node name="Snow_Spot183" parent="." unique_id=2098045501 instance=ExtResource("4_818ab")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 62.91353, 0.26, 14.266724) + +[connection signal="timeout" from="Snow_Accumulation_Timer" to="." method="_on_snow_accumulation_timer_timeout"] +[connection signal="timeout" from="Game_Over" to="." method="_on_game_over_timeout"] diff --git a/scenes/levels/drunken_waterway.tscn b/scenes/levels/drunken_waterway.tscn new file mode 100644 index 0000000..9093033 --- /dev/null +++ b/scenes/levels/drunken_waterway.tscn @@ -0,0 +1,284 @@ +[gd_scene format=3 uid="uid://bgk38l7bkjh0t"] + +[ext_resource type="Script" uid="uid://dcfa2widdgi3m" path="res://scripts/levels/drunken_waterway.gd" id="1_k157e"] +[ext_resource type="Texture2D" uid="uid://bqt3p0v6m4w8b" path="res://assets/textures/ground/synt grass pack/ground_grass_gen_02.png" id="2_eww4k"] +[ext_resource type="PackedScene" uid="uid://ser0oa3o1n56" path="res://scenes/player/Player.tscn" id="2_ihsxh"] +[ext_resource type="Texture2D" uid="uid://ched7i2fi85h1" path="res://assets/textures/ground/brown_mud_leaves_01_1k/brown_mud_leaves_01_diff_1k.png" id="3_eww4k"] +[ext_resource type="Environment" uid="uid://bvwpt5hki31ky" path="res://scenes/levels/nighttime.tres" id="3_y5h61"] +[ext_resource type="Shader" uid="uid://biuyqas7tg6xi" path="res://shaders/low_poly_water.gdshader" id="4_yoj5u"] +[ext_resource type="Texture2D" uid="uid://cj6klld5ngra" path="res://assets/textures/ground/grass_path_2_1k/grass_path_2_diff_1k.png" id="5_5losj"] +[ext_resource type="PackedScene" uid="uid://buupbbacb5pmc" path="res://scenes/props/park_lamp.tscn" id="6_6t80s"] +[ext_resource type="PackedScene" uid="uid://bh0m8jrngk1sv" path="res://scenes/warp_area.tscn" id="8_k157e"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_yoj5u"] +transparency = 1 +albedo_color = Color(0.0392157, 0.870588, 0.105882, 0.588235) + +[sub_resource type="BoxMesh" id="BoxMesh_i0781"] +material = SubResource("StandardMaterial3D_yoj5u") +size = Vector3(3, 4, 1) + +[sub_resource type="BoxShape3D" id="BoxShape3D_fgbk4"] +size = Vector3(3, 4, 1) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_i0781"] +transparency = 1 +albedo_color = Color(0.890196, 0.890196, 0.137255, 0.588235) + +[sub_resource type="BoxMesh" id="BoxMesh_d4vnc"] +material = SubResource("StandardMaterial3D_i0781") +size = Vector3(3, 4, 1) + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_fgbk4"] +render_priority = 0 +shader = ExtResource("4_yoj5u") +shader_parameter/out_color = Color(0.203922, 0.537255, 0.898039, 1) +shader_parameter/amount = 0.2 +shader_parameter/speed = 0.6 +shader_parameter/beer_factor = 0.2 +shader_parameter/metallic = 0.7 +shader_parameter/specular = 0.5 +shader_parameter/roughness = 0.1 + +[sub_resource type="PlaneMesh" id="PlaneMesh_txw72"] +material = SubResource("ShaderMaterial_fgbk4") +size = Vector2(350, 30) +subdivide_width = 200 +subdivide_depth = 30 + +[sub_resource type="BoxShape3D" id="BoxShape3D_i0781"] +size = Vector3(356.889, 1, 31.4033) + +[sub_resource type="PlaneMesh" id="PlaneMesh_yoj5u"] +material = SubResource("ShaderMaterial_fgbk4") +size = Vector2(200, 200) +subdivide_width = 200 +subdivide_depth = 200 + +[sub_resource type="BoxShape3D" id="BoxShape3D_txw72"] +size = Vector3(200, 1, 200) + +[sub_resource type="PlaneMesh" id="PlaneMesh_i0781"] +material = SubResource("ShaderMaterial_fgbk4") +size = Vector2(450, 30) +subdivide_width = 200 +subdivide_depth = 30 + +[sub_resource type="BoxShape3D" id="BoxShape3D_d4vnc"] +size = Vector3(356.889, 1, 31.4033) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_5losj"] +albedo_texture = ExtResource("2_eww4k") +uv1_scale = Vector3(0.2, 0.2, 0.2) +uv1_triplanar = true +uv1_world_triplanar = true +texture_filter = 2 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_6t80s"] +albedo_texture = ExtResource("3_eww4k") +uv1_scale = Vector3(0.2, 0.2, 0.2) +uv1_triplanar = true +uv1_world_triplanar = true +texture_filter = 2 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_nixer"] +albedo_color = Color(0.601223, 0.601223, 0.601223, 1) +albedo_texture = ExtResource("5_5losj") +uv1_scale = Vector3(0.2, 0.2, 0.2) +uv1_triplanar = true +uv1_world_triplanar = true +texture_filter = 2 + +[sub_resource type="BoxMesh" id="BoxMesh_nixer"] +size = Vector3(325, 10, 20) + +[sub_resource type="PrismMesh" id="PrismMesh_nixer"] +size = Vector3(20, 5, 325) + +[node name="drunken_waterway" type="Node" unique_id=290492009] +script = ExtResource("1_k157e") + +[node name="Player" parent="." unique_id=1262587233 instance=ExtResource("2_ihsxh")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 104.243, 1.49158, 18.3718) + +[node name="WorldEnvironment" type="WorldEnvironment" parent="." unique_id=813348157] +environment = ExtResource("3_y5h61") + +[node name="DirectionalLight3D" type="DirectionalLight3D" parent="." unique_id=711141104] +transform = Transform3D(1, 0, 0, 0, 0.258819, 0.965926, 0, -0.965926, 0.258819, 0, 0, 0) +light_color = Color(0.968627, 0.917647, 0.776471, 1) +light_energy = 0.15 +shadow_enabled = true + +[node name="WarpSpawnPoints" type="Node3D" parent="." unique_id=220510388] + +[node name="ToCampus" parent="WarpSpawnPoints" unique_id=96551069 instance=ExtResource("8_k157e")] +transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -99.533, 2.51172, 18.2808) + +[node name="MeshInstance3D" type="MeshInstance3D" parent="WarpSpawnPoints/ToCampus" unique_id=934504235] +mesh = SubResource("BoxMesh_i0781") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="WarpSpawnPoints/ToCampus" unique_id=931729323] +shape = SubResource("BoxShape3D_fgbk4") + +[node name="Label3D" type="Label3D" parent="WarpSpawnPoints/ToCampus" unique_id=320281813] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.36281, 0) +billboard = 2 +text = "To Campus" +font_size = 75 + +[node name="CampusSpawn" type="Node3D" parent="WarpSpawnPoints/ToCampus" unique_id=870876348] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.4328, -0.891587, -3.86067) + +[node name="ToGardenLights" parent="WarpSpawnPoints" unique_id=352039360 instance=ExtResource("8_k157e")] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 99.4907, 2.48668, -60.8503) + +[node name="CollisionShape3D" type="CollisionShape3D" parent="WarpSpawnPoints/ToGardenLights" unique_id=960161415] +shape = SubResource("BoxShape3D_fgbk4") + +[node name="Label3D" type="Label3D" parent="WarpSpawnPoints/ToGardenLights" unique_id=805223684] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.36281, 0) +billboard = 2 +text = "To Garden of Lights" +font_size = 75 + +[node name="MeshInstance3D" type="MeshInstance3D" parent="WarpSpawnPoints/ToGardenLights" unique_id=1721342886] +mesh = SubResource("BoxMesh_d4vnc") + +[node name="GardenSpawn" type="Node3D" parent="WarpSpawnPoints/ToGardenLights" unique_id=1239945624] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.232, -0.86668, -3.07784) + +[node name="Water" type="Node" parent="." unique_id=1682512731] + +[node name="PolygonRiver" type="StaticBody3D" parent="Water" unique_id=618942621] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -135.587, -1.7113, 1.005) + +[node name="RiverShape" type="MeshInstance3D" parent="Water/PolygonRiver" unique_id=367687933] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 72.2424, -0.074275, -3.92986) +mesh = SubResource("PlaneMesh_txw72") +skeleton = NodePath("../../..") + +[node name="RiverCollision" type="CollisionShape3D" parent="Water/PolygonRiver" unique_id=510548221] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 76.1044, -0.074275, -4.17403) +shape = SubResource("BoxShape3D_i0781") + +[node name="PolygonPond" type="StaticBody3D" parent="Water" unique_id=545985165] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 187.687, -1.711, 0) + +[node name="RiverShape" type="MeshInstance3D" parent="Water/PolygonPond" unique_id=1799407744] +mesh = SubResource("PlaneMesh_yoj5u") +skeleton = NodePath("../../..") + +[node name="RiverCollision" type="CollisionShape3D" parent="Water/PolygonPond" unique_id=1843453823] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.20302, -0.074275, -7.52746) +shape = SubResource("BoxShape3D_txw72") + +[node name="PolygonRiver2" type="StaticBody3D" parent="Water" unique_id=1710481038] +transform = Transform3D(0.771625, 0, 0.636078, 0, 1, 0, -0.636078, 0, 0.771625, 341.9, -1.7113, -131.628) + +[node name="RiverShape" type="MeshInstance3D" parent="Water/PolygonRiver2" unique_id=2042759625] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 98.5757, -0.074275, -4.22562) +mesh = SubResource("PlaneMesh_i0781") +skeleton = NodePath("../../..") + +[node name="RiverCollision" type="CollisionShape3D" parent="Water/PolygonRiver2" unique_id=2061685185] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 76.1044, -0.074275, -4.17403) +shape = SubResource("BoxShape3D_d4vnc") + +[node name="Props" type="Node" parent="." unique_id=1484157249] + +[node name="ParkLamp" parent="Props" unique_id=460120030 instance=ExtResource("6_6t80s")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.98481, 1.49596, 20.973) + +[node name="ParkLamp2" parent="Props" unique_id=160385375 instance=ExtResource("6_6t80s")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -73.5452, 1.49596, 20.973) + +[node name="ParkLamp3" parent="Props" unique_id=1123675076 instance=ExtResource("6_6t80s")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 71.8517, 1.49596, 20.973) + +[node name="Ground" type="CSGBox3D" parent="." unique_id=964663167 groups=["grass_floor"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 245.655, -79.9287, -196.757) +use_collision = true +size = Vector3(967.202, 160.858, 962.086) +material = SubResource("StandardMaterial3D_5losj") + +[node name="RiverSpace" type="CSGCylinder3D" parent="Ground" unique_id=919016209] +transform = Transform3D(-4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, 0, 1, -309.513, 81.0257, 193.538) +operation = 2 +radius = 15.0 +height = 363.598 +material = SubResource("StandardMaterial3D_6t80s") + +[node name="Bar" type="Label3D" parent="Ground" unique_id=915312261] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 9.28201, 13.3068) +text = "Bar on the waterway" +font_size = 300 + +[node name="PondSpace" type="CSGCylinder3D" parent="Ground" unique_id=2032282444] +transform = Transform3D(0.906308, 0, 0.422618, 0, 1, 0, -0.422618, 0, 0.906308, -50.3032, 71.82, 192.63) +operation = 2 +radius = 88.3369 +height = 17.3311 +sides = 64 +material = SubResource("StandardMaterial3D_6t80s") + +[node name="RiverSpace2" type="CSGCylinder3D" parent="Ground" unique_id=1398392759] +transform = Transform3D(-3.37511e-08, -0.772135, 0.635459, 1, -4.37114e-08, 0, 2.77768e-08, 0.635459, 0.772135, 169.686, 81.0257, 0.771149) +operation = 2 +radius = 15.0 +height = 429.175 +material = SubResource("StandardMaterial3D_6t80s") + +[node name="Path" type="CSGBox3D" parent="." unique_id=1140157220 groups=["dirt_floor"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.402713, 18.2621) +size = Vector3(200, 0.2, 2.37066) +material = SubResource("StandardMaterial3D_nixer") + +[node name="HillLower" type="CSGMesh3D" parent="." unique_id=1053276851] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -447.056, 0.457, 44.57) +use_collision = true +mesh = SubResource("BoxMesh_nixer") +material = SubResource("StandardMaterial3D_5losj") + +[node name="CSGMesh3D" type="CSGMesh3D" parent="HillLower" unique_id=1882260551] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -2.84217e-14, 2.50052, -9.9984) +use_collision = true +mesh = SubResource("PrismMesh_nixer") +material = SubResource("StandardMaterial3D_5losj") + +[node name="HillHigher" type="CSGMesh3D" parent="." unique_id=1637256195] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -446.689, 5.45, 64.5) +visible = false +use_collision = true +mesh = SubResource("BoxMesh_nixer") +material = SubResource("StandardMaterial3D_5losj") + +[node name="CSGMesh3D" type="CSGMesh3D" parent="HillHigher" unique_id=59804916] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -2.84217e-14, 2.50052, -9.9984) +use_collision = true +mesh = SubResource("PrismMesh_nixer") +material = SubResource("StandardMaterial3D_5losj") + +[node name="Hillside" type="CSGBox3D" parent="." unique_id=735577210 groups=["grass_floor"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -74.0052, 5.10065, 50.0384) +use_collision = true +size = Vector3(327.796, 10.2114, 49.9978) +material = SubResource("StandardMaterial3D_5losj") + +[node name="LowerHill" type="CSGBox3D" parent="Hillside" unique_id=186600594] +transform = Transform3D(1, 0, 0, 0, 0.906308, 0.422618, 0, -0.422618, 0.906308, 1.04654, 2.53101, -19.8543) +operation = 2 +size = Vector3(343.829, 9.24896, 17.7918) +material = SubResource("StandardMaterial3D_5losj") + +[node name="MidPathway" type="CSGBox3D" parent="Hillside" unique_id=1230764067] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.22551, 4.18952, -9.87256) +operation = 2 +size = Vector3(339.002, 7.94705, 10.4856) +material = SubResource("StandardMaterial3D_5losj") + +[node name="HigherHill" type="CSGBox3D" parent="Hillside" unique_id=1924726811] +transform = Transform3D(1, 0, 0, 0, 0.906308, 0.422618, 0, -0.422618, 0.906308, -1.9325, 6.78061, -0.746895) +operation = 2 +size = Vector3(340.134, 8.6006, 12.6588) +material = SubResource("StandardMaterial3D_5losj") diff --git a/scenes/levels/escape_room_1.tscn b/scenes/levels/escape_room_1.tscn new file mode 100644 index 0000000..0ce6c4c --- /dev/null +++ b/scenes/levels/escape_room_1.tscn @@ -0,0 +1,634 @@ +[gd_scene format=3 uid="uid://1cn3qskp3nfq"] + +[ext_resource type="PackedScene" uid="uid://ser0oa3o1n56" path="res://scenes/player/Player.tscn" id="1_cm1jq"] +[ext_resource type="Script" uid="uid://dm04nb067jj6v" path="res://scripts/levels/escape_room_1.gd" id="1_s4n0r"] +[ext_resource type="Texture2D" uid="uid://bib4dklp4pvcu" path="res://assets/textures/ground/synt grass pack/ground_grass_gen_08.png" id="2_1cwyj"] +[ext_resource type="PackedScene" uid="uid://c2c1blgyrfkks" path="res://scenes/constructs/time/time.tscn" id="2_46ry2"] +[ext_resource type="PackedScene" uid="uid://b7dckyxwj80ff" path="res://scenes/props/park_clock.tscn" id="2_c42pf"] +[ext_resource type="Material" uid="uid://b6gm2sotwdai" path="res://assets/material/glass_window.tres" id="2_w1251"] +[ext_resource type="PackedScene" uid="uid://ccc65kmrcbypm" path="res://scenes/props/green_bottle.tscn" id="4_8lone"] +[ext_resource type="PackedScene" uid="uid://b2tfhcdb53n50" path="res://scenes/props/clock_base.tscn" id="4_46ry2"] +[ext_resource type="PackedScene" uid="uid://p1a6b3hb5oap" path="res://scenes/props/countdown_timer.tscn" id="5_genav"] +[ext_resource type="PackedScene" uid="uid://cbyvle3mfwjkf" path="res://scenes/props/generic_key.tscn" id="5_m7v5a"] +[ext_resource type="PackedScene" uid="uid://bekw2mdkpbiu1" path="res://scenes/props/open_closed_door.tscn" id="6_ini8c"] +[ext_resource type="Script" uid="uid://bpnuhe8sqsi8h" path="res://scripts/store_label.gd" id="7_fy8ts"] +[ext_resource type="PackedScene" uid="uid://5ephfkqjvl0p" path="res://scenes/props/open_close_sign.tscn" id="7_w1251"] +[ext_resource type="PackedScene" uid="uid://d13g103evs3mi" path="res://scenes/constructs/light/light.tscn" id="8_4g22n"] +[ext_resource type="PackedScene" uid="uid://b12yul3p1ha3d" path="res://scenes/constructs/weight/weight.tscn" id="10_u13bk"] +[ext_resource type="PackedScene" uid="uid://cet8swps817sk" path="res://scenes/props/workbench.tscn" id="11_vdhs8"] +[ext_resource type="PackedScene" uid="uid://bohun3ja2bcfq" path="res://scenes/props/door.tscn" id="12_fh3um"] +[ext_resource type="PackedScene" uid="uid://tbtmdq3qw0h0" path="res://scenes/props/breakable_wall.tscn" id="12_fy8ts"] +[ext_resource type="PackedScene" uid="uid://bjniumpje1tj5" path="res://scenes/generators/debris_generator.tscn" id="15_1su2b"] +[ext_resource type="PackedScene" uid="uid://cbryi6cp68x4d" path="res://scenes/props/trees/abstract_generic_tree.tscn" id="20_bc8u2"] +[ext_resource type="Script" uid="uid://cp5x2hv8mnxc" path="res://scripts/sun_time.gd" id="21_1cwyj"] + +[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_bc8u2"] +sky_top_color = Color(0.224444, 0.57847, 0.775763, 1) +sky_horizon_color = Color(0.751384, 0.758981, 0.770977, 1) + +[sub_resource type="Sky" id="Sky_1cwyj"] +sky_material = SubResource("ProceduralSkyMaterial_bc8u2") + +[sub_resource type="Environment" id="Environment_uwtu1"] +background_mode = 2 +sky = SubResource("Sky_1cwyj") +ambient_light_source = 3 +ambient_light_color = Color(1, 1, 1, 1) +ambient_light_energy = 1.45 +reflected_light_source = 2 +ssao_enabled = true +fog_light_color = Color(0.898559, 0.909031, 0.925495, 1) +fog_light_energy = 0.66 +volumetric_fog_density = 0.03 +volumetric_fog_emission = Color(1, 1, 1, 1) +volumetric_fog_sky_affect = 0.1 +volumetric_fog_temporal_reprojection_amount = 0.99 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_s4n0r"] +albedo_texture = ExtResource("2_1cwyj") +uv1_scale = Vector3(0.05, 0.05, 0.05) +uv1_triplanar = true +uv1_world_triplanar = true +texture_filter = 2 + +[sub_resource type="BoxMesh" id="BoxMesh_m7v5a"] +material = SubResource("StandardMaterial3D_s4n0r") +size = Vector3(40, 0.3, 50) + +[sub_resource type="BoxShape3D" id="BoxShape3D_1su2b"] +size = Vector3(40, 0.3, 50) + +[sub_resource type="BoxShape3D" id="BoxShape3D_vdhs8"] +size = Vector3(0.0447693, 6.9527, 50.2685) + +[sub_resource type="BoxShape3D" id="BoxShape3D_fh3um"] +size = Vector3(0.0447693, 6.9527, 50.2685) + +[sub_resource type="BoxShape3D" id="BoxShape3D_fy8ts"] +size = Vector3(0.0447693, 6.9527, 38.3265) + +[sub_resource type="BoxShape3D" id="BoxShape3D_4g22n"] +size = Vector3(0.0447693, 6.9527, 4.79964) + +[node name="EscapeRoom1" type="Node3D" unique_id=144476354] +script = ExtResource("1_s4n0r") + +[node name="Player" parent="." unique_id=1516467801 instance=ExtResource("1_cm1jq")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.845631, 1.185, 22.1431) +WALK = 3 +RUN = 6 + +[node name="WorldEnvironment" type="WorldEnvironment" parent="." unique_id=2099311110] +environment = SubResource("Environment_uwtu1") + +[node name="DirectionalLight3D" type="DirectionalLight3D" parent="." unique_id=174670612] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 0, 0) +script = ExtResource("21_1cwyj") + +[node name="Floor" type="StaticBody3D" parent="." unique_id=660484229] +collision_layer = 7 + +[node name="MeshInstance3D" type="MeshInstance3D" parent="Floor" unique_id=535863216] +transform = Transform3D(0.999888, 0.0149569, 0, -0.0149569, 0.999888, 0, 0, 0, 1, -0.994549, 0, 0) +mesh = SubResource("BoxMesh_m7v5a") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="Floor" unique_id=574188869] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.959785, 0, 0) +shape = SubResource("BoxShape3D_1su2b") + +[node name="TheStore" type="Node3D" parent="." unique_id=487680996] + +[node name="Structure" type="Node3D" parent="TheStore" unique_id=246133683] + +[node name="FrontWall" type="CSGBox3D" parent="TheStore/Structure" unique_id=1539184286] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.843006, 2.76459, -5.31445) +use_collision = true +size = Vector3(29.1332, 6.544, 1) + +[node name="DoorHole" type="CSGBox3D" parent="TheStore/Structure/FrontWall" unique_id=1794515837] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.783377, -1.11676, 0) +operation = 2 +size = Vector3(1.99879, 3.06042, 1) + +[node name="Window" type="CSGBox3D" parent="TheStore/Structure/FrontWall" unique_id=1076261151] +transform = Transform3D(0.999985, 0, 0, 0, 1, 0, 0, 0, 0.999985, 8.20602, -0.121, -0.0139999) +size = Vector3(9.58696, 3.29634, 1.04137) +material = ExtResource("2_w1251") + +[node name="Window2" type="CSGBox3D" parent="TheStore/Structure/FrontWall" unique_id=1886152609] +transform = Transform3D(0.999985, 0, 0, 0, 1, 0, 0, 0, 0.999985, -8.14645, -0.121, -0.0139999) +size = Vector3(8.84489, 3.29634, 1.04137) +material = ExtResource("2_w1251") + +[node name="SideWall" type="CSGBox3D" parent="TheStore/Structure" unique_id=438535023] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14.9218, 2.76172, -14.9006) +use_collision = true +size = Vector3(1, 6.52344, 20.1356) + +[node name="SideWall2" type="CSGBox3D" parent="TheStore/Structure" unique_id=413634637] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 13.2358, 2.76172, -14.9006) +use_collision = true +size = Vector3(1, 6.52344, 20.1356) + +[node name="BackWall" type="CSGBox3D" parent="TheStore/Structure" unique_id=803866445] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.829491, 2.76459, -24.4702) +use_collision = true +size = Vector3(29.162, 6.544, 1) + +[node name="DoorHole2" type="CSGBox3D" parent="TheStore/Structure/BackWall" unique_id=400109524] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.783377, -1.11676, 0) +operation = 2 +size = Vector3(1.99879, 3.06042, 1) + +[node name="Roof" type="CSGBox3D" parent="TheStore/Structure" unique_id=744053577] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.846207, 5.29784, -14.8932) +use_collision = true +size = Vector3(29.1275, 0.262207, 20.1438) + +[node name="DisplayWall" type="CSGBox3D" parent="TheStore/Structure" unique_id=676429243] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.40312, 2.7641, -7.23511) +use_collision = true +size = Vector3(0.307617, 6.5282, 4.80462) + +[node name="InteriorWindow" type="CSGBox3D" parent="TheStore/Structure/DisplayWall" unique_id=47221034] +transform = Transform3D(-4.37107e-08, 0, 0.999985, 0, 1, 0, -0.999985, 0, -4.37107e-08, -0.000290394, -0.128558, -0.486859) +size = Vector3(3.84222, 3.31146, 0.340238) +material = ExtResource("2_w1251") + +[node name="DisplayWall2" type="CSGBox3D" parent="TheStore/Structure" unique_id=496733368] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -8.34095, 2.7641, -9.49197) +use_collision = true +size = Vector3(0.307617, 6.5282, 8.18455) + +[node name="InteriorWindow" type="CSGBox3D" parent="TheStore/Structure/DisplayWall2" unique_id=1249064646] +transform = Transform3D(-4.37107e-08, 0, 0.999985, 0, 1, 0, -0.999985, 0, -4.37107e-08, -0.000290871, -0.121, 0.390822) +size = Vector3(7.42228, 3.29634, 0.340238) +material = ExtResource("2_w1251") + +[node name="DisplayWall3" type="CSGBox3D" parent="TheStore/Structure" unique_id=899717267] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -13.4585, 5.00441, -9.4933) +use_collision = true +size = Vector3(0.307617, 2.04758, 2.04564) + +[node name="StoreFloor" type="CSGBox3D" parent="TheStore/Structure" unique_id=579127301] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.822021, -0.147141, -15.1081) +use_collision = true +size = Vector3(29.0942, 0.705719, 19.6653) + +[node name="BreakableWall" parent="TheStore/Structure" unique_id=32759367 groups=["interactable"] instance=ExtResource("12_fy8ts")] +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -13.427, 2.48256, -9.49026) + +[node name="StoreProps" type="Node3D" parent="TheStore" unique_id=398145384] + +[node name="Counter" type="CSGBox3D" parent="TheStore/StoreProps" unique_id=1835783341] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.64729, 0.716227, -18.8436) +use_collision = true +size = Vector3(12.182, 1.081, 1) + +[node name="Counter2" type="CSGBox3D" parent="TheStore/StoreProps/Counter" unique_id=341758230] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.61363, -0.0505447, -1.52103) +size = Vector3(1.00122, 1.18114, 4.05194) + +[node name="FloatingShelf" type="CSGBox3D" parent="TheStore/StoreProps" unique_id=65123165] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.62604, 2.80093, -23.9667) +use_collision = true +size = Vector3(7.70618, 0.145996, 1) + +[node name="Label3D" type="Label3D" parent="TheStore/StoreProps/FloatingShelf" unique_id=1141039072] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.39169, 0.571063, 0.433439) +text = "the good stuff" +font_size = 50 + +[node name="Label3D2" type="Label3D" parent="TheStore/StoreProps/FloatingShelf" unique_id=2025465155] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0566816, 0.571063, 0.433439) +text = "drugs probably +" +font_size = 50 + +[node name="Label3D3" type="Label3D" parent="TheStore/StoreProps/FloatingShelf" unique_id=11766561] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.5292, 0.571063, 0.433439) +text = "onbrand chips" +font_size = 50 + +[node name="FloatingShelf2" type="CSGBox3D" parent="TheStore/StoreProps" unique_id=2038343882] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.62604, 4.3278, -23.9667) +use_collision = true +size = Vector3(7.70618, 0.145996, 1) + +[node name="Label3D" type="Label3D" parent="TheStore/StoreProps/FloatingShelf2" unique_id=1047641748] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.39169, 0.571063, 0.433439) +text = "unobtainable" +font_size = 50 + +[node name="Label3D2" type="Label3D" parent="TheStore/StoreProps/FloatingShelf2" unique_id=1590569886] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0566816, 0.571063, 0.433439) +text = "display only" +font_size = 50 + +[node name="Label3D3" type="Label3D" parent="TheStore/StoreProps/FloatingShelf2" unique_id=1508865150] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.5292, 0.571063, 0.433439) +text = "overstock" +font_size = 50 + +[node name="WindowDisplay" type="CSGBox3D" parent="TheStore/StoreProps" unique_id=1636493147] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7.63977, 0.23822, -6.29518) +use_collision = true +size = Vector3(10.2007, 1.47644, 2.93082) + +[node name="WindowDisplay2" type="CSGBox3D" parent="TheStore/StoreProps" unique_id=1921208330] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.49621, 0.23822, -7.23875) +use_collision = true +size = Vector3(10.5124, 1.47644, 4.81795) + +[node name="Shelf" type="CSGBox3D" parent="TheStore/StoreProps" unique_id=201359819] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.4796, 1.0366, -12.9134) +use_collision = true +size = Vector3(8.17847, 1.68561, 1.60428) + +[node name="CSGBox3D" type="CSGBox3D" parent="TheStore/StoreProps/Shelf" unique_id=163991728] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.598, -0.483212) +operation = 2 +size = Vector3(7.5, 0.508, 0.640547) + +[node name="CSGBox3D2" type="CSGBox3D" parent="TheStore/StoreProps/Shelf" unique_id=1148087144] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.279022, -0.473758) +operation = 2 +size = Vector3(7.5, 0.737, 0.66) + +[node name="CSGBox3D3" type="CSGBox3D" parent="TheStore/StoreProps/Shelf" unique_id=797704336] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.598, 0.475259) +operation = 2 +size = Vector3(7.5, 0.508, 0.659977) + +[node name="CSGBox3D4" type="CSGBox3D" parent="TheStore/StoreProps/Shelf" unique_id=33288797] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.279022, 0.477038) +operation = 2 +size = Vector3(7.5, 0.737, 0.66) + +[node name="Goods" type="Node3D" parent="TheStore/StoreProps/Shelf" unique_id=1354435358] + +[node name="Label3D" type="Label3D" parent="TheStore/StoreProps/Shelf/Goods" unique_id=182181974] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.39169, 0.571063, 0.433439) +text = "overpriced jerky" +font_size = 50 + +[node name="Label3D2" type="Label3D" parent="TheStore/StoreProps/Shelf/Goods" unique_id=322822702] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0566816, 0.571063, 0.433439) +text = "salty snacks +" +font_size = 50 + +[node name="Label3D3" type="Label3D" parent="TheStore/StoreProps/Shelf/Goods" unique_id=1339596423] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.5292, 0.571063, 0.433439) +text = "offbrand chips" +font_size = 50 + +[node name="Label3D4" type="Label3D" parent="TheStore/StoreProps/Shelf/Goods" unique_id=694270421] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.39169, -0.271246, 0.433439) +text = "snack sticks!" +font_size = 50 + +[node name="Label3D5" type="Label3D" parent="TheStore/StoreProps/Shelf/Goods" unique_id=657732152] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0566816, -0.271246, 0.433439) +text = "ol' reliable" +font_size = 50 + +[node name="Label3D6" type="Label3D" parent="TheStore/StoreProps/Shelf/Goods" unique_id=600383739] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.5292, -0.271246, 0.433439) +text = "moist goods" +font_size = 50 + +[node name="Label3D7" type="Label3D" parent="TheStore/StoreProps/Shelf/Goods" unique_id=699419024] +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -2.39169, 0.571063, -0.477674) +text = "soduh" +font_size = 50 + +[node name="Label3D8" type="Label3D" parent="TheStore/StoreProps/Shelf/Goods" unique_id=1866784168] +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -0.091012, 0.571063, -0.477674) +text = "gum (only peppermint)" +font_size = 50 + +[node name="Label3D9" type="Label3D" parent="TheStore/StoreProps/Shelf/Goods" unique_id=1435275794] +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 2.5292, 0.571063, -0.477674) +text = "little treats" +font_size = 50 + +[node name="Label3D10" type="Label3D" parent="TheStore/StoreProps/Shelf/Goods" unique_id=388708539] +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -2.39169, -0.271246, -0.477674) +text = "carcinogens" +font_size = 50 + +[node name="Label3D11" type="Label3D" parent="TheStore/StoreProps/Shelf/Goods" unique_id=811699987] +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0.0566816, -0.271246, -0.477674) +text = "candies" +font_size = 50 + +[node name="Label3D12" type="Label3D" parent="TheStore/StoreProps/Shelf/Goods" unique_id=732959065] +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 2.5292, -0.271246, -0.477674) +text = "chocolates" +font_size = 50 + +[node name="Shelf2" type="CSGBox3D" parent="TheStore/StoreProps" unique_id=1040412264] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -5.74411, 1.037, -17.825) +use_collision = true +size = Vector3(8.17847, 1.68561, 1.60428) + +[node name="CSGBox3D" type="CSGBox3D" parent="TheStore/StoreProps/Shelf2" unique_id=1741138161] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.598, -0.483212) +operation = 2 +size = Vector3(7.5, 0.508, 0.640547) + +[node name="CSGBox3D2" type="CSGBox3D" parent="TheStore/StoreProps/Shelf2" unique_id=347528980] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.279022, -0.473758) +operation = 2 +size = Vector3(7.5, 0.737, 0.66) + +[node name="CSGBox3D3" type="CSGBox3D" parent="TheStore/StoreProps/Shelf2" unique_id=1022606168] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.598, 0.475259) +operation = 2 +size = Vector3(7.5, 0.508, 0.659977) + +[node name="CSGBox3D4" type="CSGBox3D" parent="TheStore/StoreProps/Shelf2" unique_id=1596049823] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.279022, 0.477038) +operation = 2 +size = Vector3(7.5, 0.737, 0.66) + +[node name="Goods" type="Node3D" parent="TheStore/StoreProps/Shelf2" unique_id=1726986893] + +[node name="Label3D" type="Label3D" parent="TheStore/StoreProps/Shelf2/Goods" unique_id=1106214100] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.29263, 0.571063, 0.433439) +text = "essential souvenirs" +font_size = 50 + +[node name="Label3D2" type="Label3D" parent="TheStore/StoreProps/Shelf2/Goods" unique_id=624042045] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0566816, 0.571063, 0.433439) +text = "tchotchkes +" +font_size = 50 + +[node name="Label3D3" type="Label3D" parent="TheStore/StoreProps/Shelf2/Goods" unique_id=1995661638] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.5292, 0.571063, 0.433439) +text = "knickknacks" +font_size = 50 + +[node name="Label3D4" type="Label3D" parent="TheStore/StoreProps/Shelf2/Goods" unique_id=1638721351] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.74918, -0.271246, 0.433438) +text = "tacky magnets" +font_size = 50 + +[node name="Label3D5" type="Label3D" parent="TheStore/StoreProps/Shelf2/Goods" unique_id=1932891014] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.410484, -0.271246, 0.433439) +text = "Maps of the Greater +Northeastern United States" +font_size = 40 + +[node name="Label3D6" type="Label3D" parent="TheStore/StoreProps/Shelf2/Goods" unique_id=201974290] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.38585, -0.271246, 0.433439) +text = "Maps of the Lesser +Northeastern United States" +font_size = 40 + +[node name="Label3D7" type="Label3D" parent="TheStore/StoreProps/Shelf2/Goods" unique_id=188532935] +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -2.31373, 0.571063, -0.477674) +text = "paint remover remover" +font_size = 50 + +[node name="Label3D8" type="Label3D" parent="TheStore/StoreProps/Shelf2/Goods" unique_id=211962016] +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0.575357, 0.571063, -0.477674) +text = "paint remover" +font_size = 50 + +[node name="Label3D9" type="Label3D" parent="TheStore/StoreProps/Shelf2/Goods" unique_id=1859022193] +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 2.67168, 0.571063, -0.477674) +text = "paint" +font_size = 50 + +[node name="Label3D10" type="Label3D" parent="TheStore/StoreProps/Shelf2/Goods" unique_id=1178294809] +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -2.39169, -0.271246, -0.477674) +visible = false +text = "dubious goods" +font_size = 50 + +[node name="Label3D11" type="Label3D" parent="TheStore/StoreProps/Shelf2/Goods" unique_id=1300394799] +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0.0566816, -0.271246, -0.477674) +text = "hot items" +font_size = 50 + +[node name="Label3D12" type="Label3D" parent="TheStore/StoreProps/Shelf2/Goods" unique_id=715034581] +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 2.5292, -0.271246, -0.477674) +text = "hand warmers" +font_size = 50 + +[node name="Shelf3" type="CSGBox3D" parent="TheStore/StoreProps" unique_id=1040309891] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -10.6455, 1.0366, -17.825) +use_collision = true +size = Vector3(8.17847, 1.68561, 1.60428) + +[node name="CSGBox3D" type="CSGBox3D" parent="TheStore/StoreProps/Shelf3" unique_id=1723299345] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.598, -0.483212) +operation = 2 +size = Vector3(7.5, 0.508, 0.640547) + +[node name="CSGBox3D2" type="CSGBox3D" parent="TheStore/StoreProps/Shelf3" unique_id=775228337] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.279022, -0.473758) +operation = 2 +size = Vector3(7.5, 0.737, 0.66) + +[node name="CSGBox3D3" type="CSGBox3D" parent="TheStore/StoreProps/Shelf3" unique_id=1103337854] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.598, 0.475259) +operation = 2 +size = Vector3(7.5, 0.508, 0.659977) + +[node name="CSGBox3D4" type="CSGBox3D" parent="TheStore/StoreProps/Shelf3" unique_id=239197656] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.279022, 0.477038) +operation = 2 +size = Vector3(7.5, 0.737, 0.66) + +[node name="Goods" type="Node3D" parent="TheStore/StoreProps/Shelf3" unique_id=356652831] + +[node name="Label3D" type="Label3D" parent="TheStore/StoreProps/Shelf3/Goods" unique_id=423726076] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.39169, 0.571063, 0.433439) +text = "mutlipurpose paper" +font_size = 50 + +[node name="Label3D2" type="Label3D" parent="TheStore/StoreProps/Shelf3/Goods" unique_id=864202555] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0566816, 0.571063, 0.433439) +text = "car parts? +" +font_size = 50 + +[node name="Label3D3" type="Label3D" parent="TheStore/StoreProps/Shelf3/Goods" unique_id=188147123] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.5292, 0.571063, 0.433439) +text = "fragile pet toys" +font_size = 50 + +[node name="Label3D4" type="Label3D" parent="TheStore/StoreProps/Shelf3/Goods" unique_id=1068002277] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.39169, -0.271246, 0.433439) +text = "lukewarm beer" +font_size = 50 + +[node name="Label3D5" type="Label3D" parent="TheStore/StoreProps/Shelf3/Goods" unique_id=968174207] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0566816, -0.271246, 0.433439) +text = "legally distinct +video games" +font_size = 50 + +[node name="Label3D6" type="Label3D" parent="TheStore/StoreProps/Shelf3/Goods" unique_id=643470274] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.5292, -0.271246, 0.433439) +text = "[E] Interactables" +font_size = 50 + +[node name="Label3D7" type="Label3D" parent="TheStore/StoreProps/Shelf3/Goods" unique_id=2036960893] +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -2.39169, 0.571063, -0.477674) +text = "expired medicines" +font_size = 50 + +[node name="Label3D8" type="Label3D" parent="TheStore/StoreProps/Shelf3/Goods" unique_id=2124390116] +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0.0566816, 0.571063, -0.477674) +text = "dubious goods" +font_size = 50 + +[node name="Label3D9" type="Label3D" parent="TheStore/StoreProps/Shelf3/Goods" unique_id=197344985] +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 2.5292, 0.571063, -0.477674) +text = "cold cuts" +font_size = 50 + +[node name="Label3D10" type="Label3D" parent="TheStore/StoreProps/Shelf3/Goods" unique_id=1783737604] +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -2.39169, -0.271246, -0.477674) +text = "forgotten trinkets" +font_size = 50 + +[node name="Label3D11" type="Label3D" parent="TheStore/StoreProps/Shelf3/Goods" unique_id=773785000] +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0.0566816, -0.271246, -0.477674) +text = "unmentionables" +font_size = 50 + +[node name="Label3D12" type="Label3D" parent="TheStore/StoreProps/Shelf3/Goods" unique_id=1423394150] +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 2.5292, -0.271246, -0.477674) +text = "[REDACTED]" +font_size = 50 + +[node name="Pedastal" type="CSGBox3D" parent="TheStore/StoreProps" unique_id=601315549] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.66006, 1.47517, -6.64294) +use_collision = true + +[node name="Pedastal2" type="CSGBox3D" parent="TheStore/StoreProps" unique_id=1737088206] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.60779, 1.47517, -6.69936) +use_collision = true + +[node name="Pedastal3" type="CSGBox3D" parent="TheStore/StoreProps" unique_id=1952042627] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7.60787, 1.47517, -6.69936) +use_collision = true + +[node name="Pedastal4" type="CSGBox3D" parent="TheStore/StoreProps" unique_id=487140744] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10.7182, 1.47517, -6.69936) +use_collision = true + +[node name="green_bottle" parent="TheStore/StoreProps" unique_id=2010244881 groups=["breakable"] instance=ExtResource("4_8lone")] +transform = Transform3D(0.2, 0, 0, 0, 0.2, 0, 0, 0, 0.2, 4.61677, 1.97855, -6.72182) + +[node name="generic_key" parent="TheStore/StoreProps" unique_id=567976806 instance=ExtResource("5_m7v5a")] +transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 7.58411, 2.41566, -6.73311) + +[node name="light" parent="TheStore/StoreProps" unique_id=1742192699 instance=ExtResource("8_4g22n")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.64615, 2.54691, -6.63879) + +[node name="Doors" type="Node3D" parent="TheStore" unique_id=724816808] + +[node name="OpenClosedDoor" parent="TheStore/Doors" unique_id=1725676022 instance=ExtResource("6_ini8c")] +transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -2.5944, 1.67992, -4.28491) + +[node name="OpenCloseSign" parent="TheStore/Doors" unique_id=1132912589 instance=ExtResource("7_w1251")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.45225, 3.70019, -5.97663) + +[node name="TimerDoor" parent="TheStore/Doors" unique_id=1212817122 groups=["timer_door"] instance=ExtResource("12_fh3um")] +transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -2.594, 1.68, -23.537) + +[node name="ExitLabel" type="Label3D" parent="TheStore/Doors/TimerDoor" unique_id=1038188706 groups=["exit_label"]] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -0.851109, 0.721737, -1.10768) +text = "EXIT" +font_size = 60 + +[node name="StoreNameLabel" type="Label3D" parent="TheStore" unique_id=1450783911] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.46389, 5.21258, -4.125) +font_size = 200 +outline_size = 25 +script = ExtResource("7_fy8ts") + +[node name="Props" type="Node" parent="." unique_id=1220858777] + +[node name="ParkClock" parent="Props" unique_id=340290712 instance=ExtResource("2_c42pf")] +transform = Transform3D(2, 0, 0, 0, 2, 0, 0, 0, 2, -1, 0.36042, 10) + +[node name="Time" parent="Props/ParkClock" unique_id=2122824700 groups=["clock", "interactable"] instance=ExtResource("2_46ry2")] +transform = Transform3D(0.4, 0, 0, 0, -1.74846e-08, -0.4, 0, 0.4, -1.74846e-08, 0.00182736, 3.01707, 0.221797) + +[node name="ClockBase" parent="Props/ParkClock" unique_id=162290733 instance=ExtResource("4_46ry2")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.16911, 0) + +[node name="weight" parent="Props" unique_id=1444303401 instance=ExtResource("10_u13bk")] +transform = Transform3D(0.7, 0, 0, 0, 0.7, 0, 0, 0, 0.7, -6.2294, 0.563888, -15.3288) + +[node name="Workbench" parent="Props" unique_id=124402956 instance=ExtResource("11_vdhs8")] +transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 11.9264, 1.28818, -21.5967) + +[node name="CountdownTimer" parent="." unique_id=444608989 instance=ExtResource("5_genav")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.58667, 3.61378, -23.908) + +[node name="WinnersSquare" type="CSGBox3D" parent="." unique_id=465381055] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.60271, -0.148438, -27.4939) +use_collision = true +size = Vector3(5.6944, 0.703125, 5.98706) + +[node name="WinnersLabel" type="Label3D" parent="WinnersSquare" unique_id=1393580354] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.99054, -1.22783) +text = "You Win!" +font_size = 100 +outline_size = 20 +uppercase = true + +[node name="InvisibleWalls" type="Node3D" parent="." unique_id=843234670] + +[node name="InvisibleWall" type="StaticBody3D" parent="InvisibleWalls" unique_id=963192313] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -19.9827, 0, 0) + +[node name="CollisionShape3D" type="CollisionShape3D" parent="InvisibleWalls/InvisibleWall" unique_id=1518204305] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.000961304, 3.39389, 0.160019) +shape = SubResource("BoxShape3D_vdhs8") + +[node name="InvisibleWall2" type="StaticBody3D" parent="InvisibleWalls" unique_id=1289924324] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 17.9646, 0, 0) + +[node name="CollisionShape3D" type="CollisionShape3D" parent="InvisibleWalls/InvisibleWall2" unique_id=2128976076] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.000961304, 3.39389, 0.160019) +shape = SubResource("BoxShape3D_fh3um") + +[node name="InvisibleWall3" type="StaticBody3D" parent="InvisibleWalls" unique_id=645658504] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -0.0234947, 0, 24.9748) + +[node name="CollisionShape3D" type="CollisionShape3D" parent="InvisibleWalls/InvisibleWall3" unique_id=1345962954] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.000961304, 3.39389, -1.01403) +shape = SubResource("BoxShape3D_fy8ts") + +[node name="InvisibleWall4" type="StaticBody3D" parent="InvisibleWalls" unique_id=891292842] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -17.661, 3.398, -22.743) + +[node name="CollisionShape3D" type="CollisionShape3D" parent="InvisibleWalls/InvisibleWall4" unique_id=2138531374] +shape = SubResource("BoxShape3D_4g22n") + +[node name="InvisibleWall5" type="StaticBody3D" parent="InvisibleWalls" unique_id=95553706] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 15.677, 3.39777, -22.7432) + +[node name="CollisionShape3D" type="CollisionShape3D" parent="InvisibleWalls/InvisibleWall5" unique_id=333086604] +shape = SubResource("BoxShape3D_4g22n") + +[node name="DebrisGenerator" parent="." unique_id=2034742415 instance=ExtResource("15_1su2b")] + +[node name="AbstractGenericTree" parent="." unique_id=120863263 instance=ExtResource("20_bc8u2")] +transform = Transform3D(0.4, 0, 0, 0, 0.4, 0, 0, 0, 0.4, 12.962, 2.01918, 20.0671) + +[node name="AbstractGenericTree2" parent="." unique_id=759615043 instance=ExtResource("20_bc8u2")] +transform = Transform3D(0.4, 0, 0, 0, 0.4, 0, 0, 0, 0.4, -13.2728, 2.01918, 15.3218) + +[node name="AbstractGenericTree3" parent="." unique_id=60226483 instance=ExtResource("20_bc8u2")] +transform = Transform3D(0.4, 0, 0, 0, 0.4, 0, 0, 0, 0.4, 11.8604, 2.01918, 5.72346) diff --git a/scenes/levels/escape_room_1.tscn84363109.tmp b/scenes/levels/escape_room_1.tscn84363109.tmp new file mode 100644 index 0000000..5e54396 --- /dev/null +++ b/scenes/levels/escape_room_1.tscn84363109.tmp @@ -0,0 +1,647 @@ +[gd_scene load_steps=30 format=3 uid="uid://1cn3qskp3nfq"] + +[ext_resource type="PackedScene" uid="uid://ser0oa3o1n56" path="res://scenes/player/Player.tscn" id="1_cm1jq"] +[ext_resource type="PackedScene" uid="uid://c2c1blgyrfkks" path="res://scenes/constructs/time/time.tscn" id="2_46ry2"] +[ext_resource type="PackedScene" uid="uid://b7dckyxwj80ff" path="res://scenes/props/park_clock.tscn" id="2_c42pf"] +[ext_resource type="Material" uid="uid://b6gm2sotwdai" path="res://assets/material/glass_window.tres" id="2_w1251"] +[ext_resource type="PackedScene" uid="uid://ccc65kmrcbypm" path="res://scenes/props/green_bottle.tscn" id="4_8lone"] +[ext_resource type="PackedScene" uid="uid://b2tfhcdb53n50" path="res://scenes/props/clock_base.tscn" id="4_46ry2"] +[ext_resource type="PackedScene" uid="uid://p1a6b3hb5oap" path="res://scenes/props/countdown_timer.tscn" id="5_genav"] +[ext_resource type="PackedScene" uid="uid://cbyvle3mfwjkf" path="res://scenes/props/generic_key.tscn" id="5_m7v5a"] +[ext_resource type="PackedScene" uid="uid://qb07sbwi5pda" path="res://scenes/AI/godless_pawn.tscn" id="6_1su2b"] +[ext_resource type="PackedScene" uid="uid://bekw2mdkpbiu1" path="res://scenes/props/open_closed_door.tscn" id="6_ini8c"] +[ext_resource type="Script" uid="uid://bpnuhe8sqsi8h" path="res://scripts/store_label.gd" id="7_fy8ts"] +[ext_resource type="PackedScene" uid="uid://5ephfkqjvl0p" path="res://scenes/props/open_close_sign.tscn" id="7_w1251"] +[ext_resource type="PackedScene" uid="uid://d13g103evs3mi" path="res://scenes/constructs/light/light.tscn" id="8_4g22n"] +[ext_resource type="PackedScene" uid="uid://b12yul3p1ha3d" path="res://scenes/constructs/weight/weight.tscn" id="10_u13bk"] +[ext_resource type="PackedScene" uid="uid://cet8swps817sk" path="res://scenes/props/workbench.tscn" id="11_vdhs8"] +[ext_resource type="PackedScene" uid="uid://bohun3ja2bcfq" path="res://scenes/props/door.tscn" id="12_fh3um"] +[ext_resource type="PackedScene" uid="uid://tbtmdq3qw0h0" path="res://scenes/props/breakable_wall.tscn" id="12_fy8ts"] + +[sub_resource type="PhysicalSkyMaterial" id="PhysicalSkyMaterial_c42pf"] + +[sub_resource type="Sky" id="Sky_dm0e8"] +sky_material = SubResource("PhysicalSkyMaterial_c42pf") + +[sub_resource type="Environment" id="Environment_uwtu1"] +sky = SubResource("Sky_dm0e8") +ambient_light_source = 2 +ambient_light_color = Color(1, 1, 1, 1) +ambient_light_energy = 1.45 +ssao_enabled = true +fog_light_color = Color(0.898559, 0.909031, 0.925495, 1) +fog_light_energy = 0.66 +volumetric_fog_density = 0.03 +volumetric_fog_emission = Color(1, 1, 1, 1) +volumetric_fog_sky_affect = 0.1 +volumetric_fog_temporal_reprojection_amount = 0.99 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_uwtu1"] +albedo_color = Color(0.247059, 0.607843, 0.0431373, 1) + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_gmmq3"] +height = 6.8833 +radius = 1.41113 + +[sub_resource type="Animation" id="Animation_genav"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Props/ParkClock:rotation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector3(0, 0, 0)] +} + +[sub_resource type="Animation" id="Animation_46ry2"] +resource_name = "clock_fall_down" +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Props/ParkClock:rotation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 1), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector3(0, 0, 0), Vector3(0, 0, -1.49749)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_yjex1"] +_data = { +&"RESET": SubResource("Animation_genav"), +&"clock_fall_down": SubResource("Animation_46ry2") +} + +[sub_resource type="BoxShape3D" id="BoxShape3D_vdhs8"] +size = Vector3(0.0447693, 6.9527, 50.2685) + +[sub_resource type="BoxShape3D" id="BoxShape3D_fh3um"] +size = Vector3(0.0447693, 6.9527, 50.2685) + +[sub_resource type="BoxShape3D" id="BoxShape3D_fy8ts"] +size = Vector3(0.0447693, 6.9527, 38.3265) + +[sub_resource type="BoxShape3D" id="BoxShape3D_4g22n"] +size = Vector3(0.0447693, 6.9527, 4.79964) + +[node name="EscapeRoom1" type="Node3D" groups=["interactable"]] + +[node name="Player" parent="." instance=ExtResource("1_cm1jq")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.845631, 1.185, 22.1431) +WALK = 3 +RUN = 6 + +[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +environment = SubResource("Environment_uwtu1") + +[node name="Floor" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.00751, 0, 0) +use_collision = true +size = Vector3(37.9386, 0.3, 50) +material = SubResource("StandardMaterial3D_uwtu1") + +[node name="TheStore" type="Node3D" parent="."] + +[node name="Structure" type="Node3D" parent="TheStore"] + +[node name="FrontWall" type="CSGBox3D" parent="TheStore/Structure"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.843006, 2.76459, -5.31445) +use_collision = true +size = Vector3(29.1332, 6.544, 1) + +[node name="DoorHole" type="CSGBox3D" parent="TheStore/Structure/FrontWall"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.783377, -1.11676, 0) +operation = 2 +size = Vector3(1.99879, 3.06042, 1) + +[node name="Window" type="CSGBox3D" parent="TheStore/Structure/FrontWall"] +transform = Transform3D(0.999985, 0, 0, 0, 1, 0, 0, 0, 0.999985, 8.20602, -0.121, -0.0139999) +size = Vector3(9.58696, 3.29634, 1.04137) +material = ExtResource("2_w1251") + +[node name="Window2" type="CSGBox3D" parent="TheStore/Structure/FrontWall"] +transform = Transform3D(0.999985, 0, 0, 0, 1, 0, 0, 0, 0.999985, -8.14645, -0.121, -0.0139999) +size = Vector3(8.84489, 3.29634, 1.04137) +material = ExtResource("2_w1251") + +[node name="SideWall" type="CSGBox3D" parent="TheStore/Structure"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14.9218, 2.76172, -14.9006) +use_collision = true +size = Vector3(1, 6.52344, 20.1356) + +[node name="SideWall2" type="CSGBox3D" parent="TheStore/Structure"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 13.2358, 2.76172, -14.9006) +use_collision = true +size = Vector3(1, 6.52344, 20.1356) + +[node name="BackWall" type="CSGBox3D" parent="TheStore/Structure"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.829491, 2.76459, -24.4702) +use_collision = true +size = Vector3(29.162, 6.544, 1) + +[node name="DoorHole2" type="CSGBox3D" parent="TheStore/Structure/BackWall"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.783377, -1.11676, 0) +operation = 2 +size = Vector3(1.99879, 3.06042, 1) + +[node name="Roof" type="CSGBox3D" parent="TheStore/Structure"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.846207, 5.29784, -14.8932) +use_collision = true +size = Vector3(29.1275, 0.262207, 20.1438) + +[node name="DisplayWall" type="CSGBox3D" parent="TheStore/Structure"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.40312, 2.7641, -7.23511) +use_collision = true +size = Vector3(0.307617, 6.5282, 4.80462) + +[node name="InteriorWindow" type="CSGBox3D" parent="TheStore/Structure/DisplayWall"] +transform = Transform3D(-4.37107e-08, 0, 0.999985, 0, 1, 0, -0.999985, 0, -4.37107e-08, -0.000290394, -0.128558, -0.486859) +size = Vector3(3.84222, 3.31146, 0.340238) +material = ExtResource("2_w1251") + +[node name="DisplayWall2" type="CSGBox3D" parent="TheStore/Structure"] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -8.34095, 2.7641, -9.49197) +use_collision = true +size = Vector3(0.307617, 6.5282, 8.18455) + +[node name="InteriorWindow" type="CSGBox3D" parent="TheStore/Structure/DisplayWall2"] +transform = Transform3D(-4.37107e-08, 0, 0.999985, 0, 1, 0, -0.999985, 0, -4.37107e-08, -0.000290871, -0.121, 0.390822) +size = Vector3(7.42228, 3.29634, 0.340238) +material = ExtResource("2_w1251") + +[node name="DisplayWall3" type="CSGBox3D" parent="TheStore/Structure"] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -13.4585, 5.00441, -9.4933) +use_collision = true +size = Vector3(0.307617, 2.04758, 2.04564) + +[node name="StoreFloor" type="CSGBox3D" parent="TheStore/Structure"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.822021, -0.147141, -15.1081) +use_collision = true +size = Vector3(29.0942, 0.705719, 19.6653) + +[node name="BreakableWall" parent="TheStore/Structure" groups=["interactable"] instance=ExtResource("12_fy8ts")] +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -13.427, 2.48256, -9.49026) + +[node name="StoreProps" type="Node3D" parent="TheStore"] + +[node name="Counter" type="CSGBox3D" parent="TheStore/StoreProps"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.64729, 0.716227, -18.8436) +use_collision = true +size = Vector3(12.182, 1.081, 1) + +[node name="Counter2" type="CSGBox3D" parent="TheStore/StoreProps/Counter"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.61363, -0.0505447, -1.52103) +size = Vector3(1.00122, 1.18114, 4.05194) + +[node name="FloatingShelf" type="CSGBox3D" parent="TheStore/StoreProps"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.62604, 2.80093, -23.9667) +use_collision = true +size = Vector3(7.70618, 0.145996, 1) + +[node name="Label3D" type="Label3D" parent="TheStore/StoreProps/FloatingShelf"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.39169, 0.571063, 0.433439) +text = "the good stuff" +font_size = 50 + +[node name="Label3D2" type="Label3D" parent="TheStore/StoreProps/FloatingShelf"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0566816, 0.571063, 0.433439) +text = "drugs probably +" +font_size = 50 + +[node name="Label3D3" type="Label3D" parent="TheStore/StoreProps/FloatingShelf"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.5292, 0.571063, 0.433439) +text = "onbrand chips" +font_size = 50 + +[node name="FloatingShelf2" type="CSGBox3D" parent="TheStore/StoreProps"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.62604, 4.3278, -23.9667) +use_collision = true +size = Vector3(7.70618, 0.145996, 1) + +[node name="Label3D" type="Label3D" parent="TheStore/StoreProps/FloatingShelf2"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.39169, 0.571063, 0.433439) +text = "unobtainable" +font_size = 50 + +[node name="Label3D2" type="Label3D" parent="TheStore/StoreProps/FloatingShelf2"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0566816, 0.571063, 0.433439) +text = "display only" +font_size = 50 + +[node name="Label3D3" type="Label3D" parent="TheStore/StoreProps/FloatingShelf2"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.5292, 0.571063, 0.433439) +text = "overstock" +font_size = 50 + +[node name="WindowDisplay" type="CSGBox3D" parent="TheStore/StoreProps"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7.63977, 0.23822, -6.29518) +use_collision = true +size = Vector3(10.2007, 1.47644, 2.93082) + +[node name="WindowDisplay2" type="CSGBox3D" parent="TheStore/StoreProps"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.49621, 0.23822, -7.23875) +use_collision = true +size = Vector3(10.5124, 1.47644, 4.81795) + +[node name="Shelf" type="CSGBox3D" parent="TheStore/StoreProps"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.4796, 1.0366, -12.9134) +use_collision = true +size = Vector3(8.17847, 1.68561, 1.60428) + +[node name="CSGBox3D" type="CSGBox3D" parent="TheStore/StoreProps/Shelf"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.598, -0.483212) +operation = 2 +size = Vector3(7.5, 0.508, 0.640547) + +[node name="CSGBox3D2" type="CSGBox3D" parent="TheStore/StoreProps/Shelf"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.279022, -0.473758) +operation = 2 +size = Vector3(7.5, 0.737, 0.66) + +[node name="CSGBox3D3" type="CSGBox3D" parent="TheStore/StoreProps/Shelf"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.598, 0.475259) +operation = 2 +size = Vector3(7.5, 0.508, 0.659977) + +[node name="CSGBox3D4" type="CSGBox3D" parent="TheStore/StoreProps/Shelf"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.279022, 0.477038) +operation = 2 +size = Vector3(7.5, 0.737, 0.66) + +[node name="Goods" type="Node3D" parent="TheStore/StoreProps/Shelf"] + +[node name="Label3D" type="Label3D" parent="TheStore/StoreProps/Shelf/Goods"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.39169, 0.571063, 0.433439) +text = "overpriced jerky" +font_size = 50 + +[node name="Label3D2" type="Label3D" parent="TheStore/StoreProps/Shelf/Goods"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0566816, 0.571063, 0.433439) +text = "salty snacks +" +font_size = 50 + +[node name="Label3D3" type="Label3D" parent="TheStore/StoreProps/Shelf/Goods"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.5292, 0.571063, 0.433439) +text = "offbrand chips" +font_size = 50 + +[node name="Label3D4" type="Label3D" parent="TheStore/StoreProps/Shelf/Goods"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.39169, -0.271246, 0.433439) +text = "snack sticks!" +font_size = 50 + +[node name="Label3D5" type="Label3D" parent="TheStore/StoreProps/Shelf/Goods"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0566816, -0.271246, 0.433439) +text = "ol' reliable" +font_size = 50 + +[node name="Label3D6" type="Label3D" parent="TheStore/StoreProps/Shelf/Goods"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.5292, -0.271246, 0.433439) +text = "moist goods" +font_size = 50 + +[node name="Label3D7" type="Label3D" parent="TheStore/StoreProps/Shelf/Goods"] +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -2.39169, 0.571063, -0.477674) +text = "soduh" +font_size = 50 + +[node name="Label3D8" type="Label3D" parent="TheStore/StoreProps/Shelf/Goods"] +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -0.091012, 0.571063, -0.477674) +text = "gum (only peppermint)" +font_size = 50 + +[node name="Label3D9" type="Label3D" parent="TheStore/StoreProps/Shelf/Goods"] +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 2.5292, 0.571063, -0.477674) +text = "little treats" +font_size = 50 + +[node name="Label3D10" type="Label3D" parent="TheStore/StoreProps/Shelf/Goods"] +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -2.39169, -0.271246, -0.477674) +text = "carcinogens" +font_size = 50 + +[node name="Label3D11" type="Label3D" parent="TheStore/StoreProps/Shelf/Goods"] +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0.0566816, -0.271246, -0.477674) +text = "candies" +font_size = 50 + +[node name="Label3D12" type="Label3D" parent="TheStore/StoreProps/Shelf/Goods"] +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 2.5292, -0.271246, -0.477674) +text = "chocolates" +font_size = 50 + +[node name="Shelf2" type="CSGBox3D" parent="TheStore/StoreProps"] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -5.74411, 1.037, -17.825) +use_collision = true +size = Vector3(8.17847, 1.68561, 1.60428) + +[node name="CSGBox3D" type="CSGBox3D" parent="TheStore/StoreProps/Shelf2"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.598, -0.483212) +operation = 2 +size = Vector3(7.5, 0.508, 0.640547) + +[node name="CSGBox3D2" type="CSGBox3D" parent="TheStore/StoreProps/Shelf2"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.279022, -0.473758) +operation = 2 +size = Vector3(7.5, 0.737, 0.66) + +[node name="CSGBox3D3" type="CSGBox3D" parent="TheStore/StoreProps/Shelf2"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.598, 0.475259) +operation = 2 +size = Vector3(7.5, 0.508, 0.659977) + +[node name="CSGBox3D4" type="CSGBox3D" parent="TheStore/StoreProps/Shelf2"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.279022, 0.477038) +operation = 2 +size = Vector3(7.5, 0.737, 0.66) + +[node name="Goods" type="Node3D" parent="TheStore/StoreProps/Shelf2"] + +[node name="Label3D" type="Label3D" parent="TheStore/StoreProps/Shelf2/Goods"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.29263, 0.571063, 0.433439) +text = "essential souvenirs" +font_size = 50 + +[node name="Label3D2" type="Label3D" parent="TheStore/StoreProps/Shelf2/Goods"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0566816, 0.571063, 0.433439) +text = "tchotchkes +" +font_size = 50 + +[node name="Label3D3" type="Label3D" parent="TheStore/StoreProps/Shelf2/Goods"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.5292, 0.571063, 0.433439) +text = "knickknacks" +font_size = 50 + +[node name="Label3D4" type="Label3D" parent="TheStore/StoreProps/Shelf2/Goods"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.74918, -0.271246, 0.433438) +text = "tacky magnets" +font_size = 50 + +[node name="Label3D5" type="Label3D" parent="TheStore/StoreProps/Shelf2/Goods"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.410484, -0.271246, 0.433439) +text = "Maps of the Greater +Northeastern United States" +font_size = 40 + +[node name="Label3D6" type="Label3D" parent="TheStore/StoreProps/Shelf2/Goods"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.38585, -0.271246, 0.433439) +text = "Maps of the Lesser +Northeastern United States" +font_size = 40 + +[node name="Label3D7" type="Label3D" parent="TheStore/StoreProps/Shelf2/Goods"] +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -2.31373, 0.571063, -0.477674) +text = "paint remover remover" +font_size = 50 + +[node name="Label3D8" type="Label3D" parent="TheStore/StoreProps/Shelf2/Goods"] +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0.575357, 0.571063, -0.477674) +text = "paint remover" +font_size = 50 + +[node name="Label3D9" type="Label3D" parent="TheStore/StoreProps/Shelf2/Goods"] +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 2.67168, 0.571063, -0.477674) +text = "paint" +font_size = 50 + +[node name="Label3D10" type="Label3D" parent="TheStore/StoreProps/Shelf2/Goods"] +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -2.39169, -0.271246, -0.477674) +visible = false +text = "dubious goods" +font_size = 50 + +[node name="Label3D11" type="Label3D" parent="TheStore/StoreProps/Shelf2/Goods"] +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0.0566816, -0.271246, -0.477674) +text = "hot items" +font_size = 50 + +[node name="Label3D12" type="Label3D" parent="TheStore/StoreProps/Shelf2/Goods"] +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 2.5292, -0.271246, -0.477674) +text = "hand warmers" +font_size = 50 + +[node name="Shelf3" type="CSGBox3D" parent="TheStore/StoreProps"] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -10.6455, 1.0366, -17.825) +use_collision = true +size = Vector3(8.17847, 1.68561, 1.60428) + +[node name="CSGBox3D" type="CSGBox3D" parent="TheStore/StoreProps/Shelf3"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.598, -0.483212) +operation = 2 +size = Vector3(7.5, 0.508, 0.640547) + +[node name="CSGBox3D2" type="CSGBox3D" parent="TheStore/StoreProps/Shelf3"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.279022, -0.473758) +operation = 2 +size = Vector3(7.5, 0.737, 0.66) + +[node name="CSGBox3D3" type="CSGBox3D" parent="TheStore/StoreProps/Shelf3"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.598, 0.475259) +operation = 2 +size = Vector3(7.5, 0.508, 0.659977) + +[node name="CSGBox3D4" type="CSGBox3D" parent="TheStore/StoreProps/Shelf3"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.279022, 0.477038) +operation = 2 +size = Vector3(7.5, 0.737, 0.66) + +[node name="Goods" type="Node3D" parent="TheStore/StoreProps/Shelf3"] + +[node name="Label3D" type="Label3D" parent="TheStore/StoreProps/Shelf3/Goods"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.39169, 0.571063, 0.433439) +text = "mutlipurpose paper" +font_size = 50 + +[node name="Label3D2" type="Label3D" parent="TheStore/StoreProps/Shelf3/Goods"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0566816, 0.571063, 0.433439) +text = "car parts? +" +font_size = 50 + +[node name="Label3D3" type="Label3D" parent="TheStore/StoreProps/Shelf3/Goods"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.5292, 0.571063, 0.433439) +text = "fragile pet toys" +font_size = 50 + +[node name="Label3D4" type="Label3D" parent="TheStore/StoreProps/Shelf3/Goods"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.39169, -0.271246, 0.433439) +text = "lukewarm beer" +font_size = 50 + +[node name="Label3D5" type="Label3D" parent="TheStore/StoreProps/Shelf3/Goods"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0566816, -0.271246, 0.433439) +text = "legally distinct +video games" +font_size = 50 + +[node name="Label3D6" type="Label3D" parent="TheStore/StoreProps/Shelf3/Goods"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.5292, -0.271246, 0.433439) +text = "[E] Interactables" +font_size = 50 + +[node name="Label3D7" type="Label3D" parent="TheStore/StoreProps/Shelf3/Goods"] +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -2.39169, 0.571063, -0.477674) +text = "expired medicines" +font_size = 50 + +[node name="Label3D8" type="Label3D" parent="TheStore/StoreProps/Shelf3/Goods"] +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0.0566816, 0.571063, -0.477674) +text = "dubious goods" +font_size = 50 + +[node name="Label3D9" type="Label3D" parent="TheStore/StoreProps/Shelf3/Goods"] +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 2.5292, 0.571063, -0.477674) +text = "cold cuts" +font_size = 50 + +[node name="Label3D10" type="Label3D" parent="TheStore/StoreProps/Shelf3/Goods"] +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -2.39169, -0.271246, -0.477674) +text = "forgotten trinkets" +font_size = 50 + +[node name="Label3D11" type="Label3D" parent="TheStore/StoreProps/Shelf3/Goods"] +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0.0566816, -0.271246, -0.477674) +text = "unmentionables" +font_size = 50 + +[node name="Label3D12" type="Label3D" parent="TheStore/StoreProps/Shelf3/Goods"] +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 2.5292, -0.271246, -0.477674) +text = "[REDACTED]" +font_size = 50 + +[node name="Pedastal" type="CSGBox3D" parent="TheStore/StoreProps"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.66006, 1.47517, -6.64294) +use_collision = true + +[node name="Pedastal2" type="CSGBox3D" parent="TheStore/StoreProps"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.60779, 1.47517, -6.69936) +use_collision = true + +[node name="Pedastal3" type="CSGBox3D" parent="TheStore/StoreProps"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7.60787, 1.47517, -6.69936) +use_collision = true + +[node name="Pedastal4" type="CSGBox3D" parent="TheStore/StoreProps"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10.7182, 1.47517, -6.69936) +use_collision = true + +[node name="green_bottle" parent="TheStore/StoreProps" instance=ExtResource("4_8lone")] +transform = Transform3D(0.2, 0, 0, 0, 0.2, 0, 0, 0, 0.2, 4.61677, 1.97855, -6.72182) + +[node name="CollisionShape3D" type="CollisionShape3D" parent="TheStore/StoreProps/green_bottle"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.44165, 0) +shape = SubResource("CylinderShape3D_gmmq3") + +[node name="generic_key" parent="TheStore/StoreProps" groups=["interactable"] instance=ExtResource("5_m7v5a")] +transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 7.58411, 2.41566, -6.73311) + +[node name="GodlessPawn" parent="TheStore/StoreProps" instance=ExtResource("6_1su2b")] +transform = Transform3D(0.3, 0, 0, 0, 0.3, 0, 0, 0, 0.3, 10.7505, 1.99163, -6.72881) +script = null + +[node name="light" parent="TheStore/StoreProps" instance=ExtResource("8_4g22n")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.64615, 2.54691, -6.63879) + +[node name="Doors" type="Node3D" parent="TheStore"] + +[node name="OpenClosedDoor" parent="TheStore/Doors" instance=ExtResource("6_ini8c")] +transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -2.5944, 1.67992, -4.28491) + +[node name="OpenCloseSign" parent="TheStore/Doors" instance=ExtResource("7_w1251")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.45225, 3.70019, -5.97663) + +[node name="TimerDoor" parent="TheStore/Doors" groups=["timer_door"] instance=ExtResource("12_fh3um")] +transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -2.594, 1.68, -23.537) + +[node name="ExitLabel" type="Label3D" parent="TheStore/Doors/TimerDoor" groups=["exit_label"]] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -0.851109, 0.721737, -1.10768) +text = "EXIT" +font_size = 60 + +[node name="StoreNameLabel" type="Label3D" parent="TheStore"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.46389, 5.21258, -4.125) +font_size = 200 +outline_size = 25 +script = ExtResource("7_fy8ts") + +[node name="Props" type="Node" parent="."] + +[node name="ParkClock" parent="Props" instance=ExtResource("2_c42pf")] +transform = Transform3D(2, 0, 0, 0, 2, 0, 0, 0, 2, -1, 0.699, 10) + +[node name="Time" parent="Props/ParkClock" groups=["clock", "interactable"] instance=ExtResource("2_46ry2")] +transform = Transform3D(0.4, 0, 0, 0, -1.74846e-08, -0.4, 0, 0.4, -1.74846e-08, 0.00182736, 3.01707, 0.221797) + +[node name="ClockBase" parent="Props/ParkClock" instance=ExtResource("4_46ry2")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.0526947, 0) + +[node name="weight" parent="Props" instance=ExtResource("10_u13bk")] +transform = Transform3D(0.7, 0, 0, 0, 0.7, 0, 0, 0, 0.7, -6.2294, 0.563888, -15.3288) + +[node name="Workbench" parent="Props" instance=ExtResource("11_vdhs8")] +transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 11.9264, 1.28818, -21.5967) + +[node name="CountdownTimer" parent="." instance=ExtResource("5_genav")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.58667, 3.61378, -23.908) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +libraries = { +&"": SubResource("AnimationLibrary_yjex1") +} + +[node name="WinnersSquare" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.60271, -0.148438, -27.4939) +use_collision = true +size = Vector3(5.6944, 0.703125, 5.98706) + +[node name="WinnersLabel" type="Label3D" parent="WinnersSquare"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.99054, -1.22783) +text = "You Win!" +font_size = 100 +outline_size = 20 +uppercase = true + +[node name="InvisibleWalls" type="Node3D" parent="."] + +[node name="InvisibleWall" type="StaticBody3D" parent="InvisibleWalls"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -19.9827, 0, 0) + +[node name="CollisionShape3D" type="CollisionShape3D" parent="InvisibleWalls/InvisibleWall"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.000961304, 3.39389, 0.160019) +shape = SubResource("BoxShape3D_vdhs8") + +[node name="InvisibleWall2" type="StaticBody3D" parent="InvisibleWalls"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 17.9646, 0, 0) + +[node name="CollisionShape3D" type="CollisionShape3D" parent="InvisibleWalls/InvisibleWall2"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.000961304, 3.39389, 0.160019) +shape = SubResource("BoxShape3D_fh3um") + +[node name="InvisibleWall3" type="StaticBody3D" parent="InvisibleWalls"] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -0.0234947, 0, 24.9748) + +[node name="CollisionShape3D" type="CollisionShape3D" parent="InvisibleWalls/InvisibleWall3"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.000961304, 3.39389, -1.01403) +shape = SubResource("BoxShape3D_fy8ts") + +[node name="InvisibleWall4" type="StaticBody3D" parent="InvisibleWalls"] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -17.661, 3.398, -22.743) + +[node name="CollisionShape3D" type="CollisionShape3D" parent="InvisibleWalls/InvisibleWall4"] +shape = SubResource("BoxShape3D_4g22n") + +[node name="InvisibleWall5" type="StaticBody3D" parent="InvisibleWalls"] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 15.677, 3.39777, -22.7432) + +[node name="CollisionShape3D" type="CollisionShape3D" parent="InvisibleWalls/InvisibleWall5"] +shape = SubResource("BoxShape3D_4g22n") diff --git a/scenes/levels/fear.tscn b/scenes/levels/fear.tscn new file mode 100644 index 0000000..c0e3cb2 --- /dev/null +++ b/scenes/levels/fear.tscn @@ -0,0 +1,12 @@ +[gd_scene load_steps=2 format=3 uid="uid://cd4k1wmx4uq2a"] + +[ext_resource type="PackedScene" uid="uid://ser0oa3o1n56" path="res://scenes/player/Player.tscn" id="1_k5gu7"] + +[node name="FEAR" type="Node"] + +[node name="TheBoard" type="CSGBox3D" parent="."] +use_collision = true +size = Vector3(200, 100, 200) + +[node name="Player" parent="." instance=ExtResource("1_k5gu7")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -97.9186, 51.2937, 98.4632) diff --git a/scenes/levels/gag_haunted_house.tscn b/scenes/levels/gag_haunted_house.tscn new file mode 100644 index 0000000..297845e --- /dev/null +++ b/scenes/levels/gag_haunted_house.tscn @@ -0,0 +1,554 @@ +[gd_scene load_steps=38 format=3 uid="uid://b6e02a4j454sc"] + +[ext_resource type="Script" uid="uid://r12evnxbh7ee" path="res://scripts/levels/gag_haunted_house.gd" id="1_yntvb"] +[ext_resource type="AudioStream" uid="uid://blumqc1qeqdse" path="res://assets/SFX/50054__vibe_crc__rain_session_thunder_2006.wav" id="2_vlbjv"] +[ext_resource type="Texture2D" uid="uid://bwm0fvouixtee" path="res://assets/textures/wallpaper_walls/texpaint/PT_GOLD.png" id="3_gk1ye"] +[ext_resource type="Material" uid="uid://dh85uxw6c6f1x" path="res://resources/night_sky.tres" id="3_vlbjv"] +[ext_resource type="Material" uid="uid://b6gm2sotwdai" path="res://assets/material/glass_window.tres" id="4_euwf8"] +[ext_resource type="Texture2D" uid="uid://dnujqpqdxqltf" path="res://assets/textures/wood/WoodFloor008/WoodFloor008_1K-PNG_Color.png" id="5_i0bvx"] +[ext_resource type="Texture2D" uid="uid://cxoriofrlup4b" path="res://assets/textures/wood/WoodFloor008/WoodFloor008_1K-PNG_NormalGL.png" id="6_8hkvu"] +[ext_resource type="Texture2D" uid="uid://qb7i37d7q6pu" path="res://assets/textures/wood/WoodFloor008/WoodFloor008_1K-PNG_Roughness.png" id="7_kxb06"] +[ext_resource type="PackedScene" uid="uid://qb07sbwi5pda" path="res://scenes/entities/godless_pawn.tscn" id="8_ne6oc"] +[ext_resource type="PackedScene" uid="uid://ser0oa3o1n56" path="res://scenes/player/Player.tscn" id="9_sreei"] +[ext_resource type="Texture2D" uid="uid://bqt3p0v6m4w8b" path="res://assets/textures/ground/synt grass pack/ground_grass_gen_02.png" id="11_gk1ye"] +[ext_resource type="PackedScene" uid="uid://bh0m8jrngk1sv" path="res://scenes/warp_area.tscn" id="12_euwf8"] +[ext_resource type="PackedScene" uid="uid://dmncm13oeuh7s" path="res://scenes/props/tombstone_decoration.tscn" id="13_i0bvx"] +[ext_resource type="AudioStream" uid="uid://cfhe8hhegoc3y" path="res://assets/SFX/254783__jonathantremblay__buzzing-light.mp3" id="14_8hkvu"] + +[sub_resource type="Sky" id="Sky_8ecq3"] +sky_material = ExtResource("3_vlbjv") + +[sub_resource type="Environment" id="Environment_yav7o"] +background_mode = 2 +sky = SubResource("Sky_8ecq3") +ambient_light_source = 3 +ambient_light_color = Color(0.947199, 0.947199, 0.947199, 1) +glow_enabled = true +glow_levels/1 = 7.0 +glow_levels/2 = 2.0 +glow_levels/6 = 1.0 +glow_levels/7 = 2.0 +glow_normalized = true +glow_blend_mode = 0 +fog_light_color = Color(0, 0, 0, 1) +fog_density = 0.1971 +volumetric_fog_albedo = Color(0, 0, 0, 1) +volumetric_fog_sky_affect = 0.1 +volumetric_fog_temporal_reprojection_amount = 0.99 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ban3v"] +transparency = 1 +albedo_color = Color(1, 0.329412, 0.180392, 0.588235) + +[sub_resource type="BoxMesh" id="BoxMesh_i0bvx"] +material = SubResource("StandardMaterial3D_ban3v") +size = Vector3(3, 4, 1) + +[sub_resource type="BoxShape3D" id="BoxShape3D_8hkvu"] +size = Vector3(3, 4, 1) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_amuul"] +transparency = 1 +albedo_color = Color(1, 1, 1, 0.588235) + +[sub_resource type="BoxMesh" id="BoxMesh_kxb06"] +material = SubResource("StandardMaterial3D_amuul") +size = Vector3(3, 4, 1) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_i0bvx"] +transparency = 1 +albedo_color = Color(0.0392157, 0.870588, 0.105882, 0.588235) + +[sub_resource type="BoxMesh" id="BoxMesh_ne6oc"] +material = SubResource("StandardMaterial3D_i0bvx") +size = Vector3(3, 4, 1) + +[sub_resource type="BoxShape3D" id="BoxShape3D_sreei"] +size = Vector3(3, 4, 1) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_5k2c6"] +albedo_texture = ExtResource("3_gk1ye") +uv1_triplanar = true +uv1_world_triplanar = true +texture_filter = 0 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_tp0cp"] +albedo_texture = ExtResource("5_i0bvx") +roughness_texture = ExtResource("7_kxb06") +normal_enabled = true +normal_texture = ExtResource("6_8hkvu") +uv1_triplanar = true +uv1_world_triplanar = true +texture_filter = 0 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_2a5lw"] +albedo_texture = ExtResource("5_i0bvx") +roughness_texture = ExtResource("7_kxb06") +normal_enabled = true +normal_texture = ExtResource("6_8hkvu") +uv1_triplanar = true +uv1_world_triplanar = true + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_xpcxy"] +albedo_texture = ExtResource("5_i0bvx") +roughness_texture = ExtResource("7_kxb06") +normal_enabled = true +normal_texture = ExtResource("6_8hkvu") +uv1_triplanar = true +uv1_world_triplanar = true +texture_filter = 2 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_4kcu7"] +metallic = 1.0 +roughness = 0.0 + +[sub_resource type="CylinderMesh" id="CylinderMesh_gg6th"] +material = SubResource("StandardMaterial3D_4kcu7") +top_radius = 1.0 +bottom_radius = 1.0 +height = 0.1 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_5wlp7"] +height = 0.1 +radius = 1.0 + +[sub_resource type="Curve3D" id="Curve3D_euwf8"] +closed = true +_data = { +"points": PackedVector3Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 40), +"tilts": PackedFloat32Array(0, 0, 0) +} +point_count = 3 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_euwf8"] +albedo_texture = ExtResource("11_gk1ye") +uv1_triplanar = true +uv1_world_triplanar = true +texture_filter = 2 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_kxb06"] +albedo_color = Color(0.215686, 1, 1, 1) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ne6oc"] +albedo_color = Color(0.0941176, 0.615686, 0.172549, 1) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_sreei"] +albedo_color = Color(0.215686, 1, 1, 1) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_8hkvu"] +albedo_color = Color(5, 5, 5, 1) +backlight = Color(1, 1, 1, 1) + +[node name="GagHauntedHouse" type="Node"] +script = ExtResource("1_yntvb") + +[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."] +stream = ExtResource("2_vlbjv") +volume_db = -5.0 +autoplay = true + +[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +environment = SubResource("Environment_yav7o") + +[node name="Player" parent="." instance=ExtResource("9_sreei")] +transform = Transform3D(-0.996521, 0, -0.0833475, 0, 1, 0, 0.0833475, 0, -0.996521, 1.08068, 1.98982, -5.2451) + +[node name="WarpSpawnPoints" type="Node3D" parent="."] + +[node name="ToGrunge" parent="WarpSpawnPoints" instance=ExtResource("12_euwf8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.747478, 2.46914, -14.3806) +monitorable = false + +[node name="MeshInstance3D" type="MeshInstance3D" parent="WarpSpawnPoints/ToGrunge"] +mesh = SubResource("BoxMesh_i0bvx") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="WarpSpawnPoints/ToGrunge"] +shape = SubResource("BoxShape3D_8hkvu") + +[node name="Label3D" type="Label3D" parent="WarpSpawnPoints/ToGrunge"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.36281, 0) +billboard = 2 +text = "To Grunge" +font_size = 75 + +[node name="GrungeSpawn" type="Node3D" parent="WarpSpawnPoints/ToGrunge"] +transform = Transform3D(-4.37722e-08, 0, 1, 0, 1, 0, -1, 0, -4.37722e-08, 0.280861, -0.86668, -2.85476) + +[node name="ToCruelCalculus" parent="WarpSpawnPoints" instance=ExtResource("12_euwf8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.25068, 2.53721, -14.5506) +monitorable = false + +[node name="MeshInstance3D" type="MeshInstance3D" parent="WarpSpawnPoints/ToCruelCalculus"] +mesh = SubResource("BoxMesh_kxb06") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="WarpSpawnPoints/ToCruelCalculus"] +shape = SubResource("BoxShape3D_8hkvu") + +[node name="Label3D" type="Label3D" parent="WarpSpawnPoints/ToCruelCalculus"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.36281, 0) +billboard = 2 +text = "To Cruel Calculus" +font_size = 75 + +[node name="CalculusSpawn" type="Node3D" parent="WarpSpawnPoints/ToCruelCalculus"] +transform = Transform3D(-4.37722e-08, 0, 1, 0, 1, 0, -1, 0, -4.37722e-08, 0.280861, -0.86668, -2.85476) + +[node name="ToCampus" parent="WarpSpawnPoints" instance=ExtResource("12_euwf8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.385, 2.51172, -14.0662) + +[node name="MeshInstance3D" type="MeshInstance3D" parent="WarpSpawnPoints/ToCampus"] +mesh = SubResource("BoxMesh_ne6oc") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="WarpSpawnPoints/ToCampus"] +shape = SubResource("BoxShape3D_sreei") + +[node name="Label3D" type="Label3D" parent="WarpSpawnPoints/ToCampus"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.36281, 0) +billboard = 2 +text = "To Campus" +font_size = 75 + +[node name="CampusSpawn" type="Node3D" parent="WarpSpawnPoints/ToCampus"] +transform = Transform3D(-4.37722e-08, 0, 1, 0, 1, 0, -1, 0, -4.37722e-08, 0.280861, -0.86668, -2.85476) + +[node name="HauntedHouse" type="Node3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 71.424, 0, -45.126) + +[node name="Walls" type="Node3D" parent="HauntedHouse"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.215978, 0) + +[node name="Wall" type="CSGBox3D" parent="HauntedHouse/Walls"] +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 2.5, 22) +use_collision = true +size = Vector3(40, 5, 0.1) +material = SubResource("StandardMaterial3D_5k2c6") + +[node name="Window" type="CSGBox3D" parent="HauntedHouse/Walls/Wall"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.59183e-09, 0.0732675, -0.0010128) +size = Vector3(2, 3, 0.11) +material = ExtResource("4_euwf8") + +[node name="WallPaneling" type="CSGBox3D" parent="HauntedHouse/Walls/Wall"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -2.5, 0) +size = Vector3(40, 1.5, 0.2) +material = SubResource("StandardMaterial3D_tp0cp") + +[node name="Wall2" type="CSGBox3D" parent="HauntedHouse/Walls"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.5, -22) +use_collision = true +size = Vector3(40, 5, 0.1) +material = SubResource("StandardMaterial3D_5k2c6") + +[node name="WallPaneling" type="CSGBox3D" parent="HauntedHouse/Walls/Wall2"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -2.5, 0) +size = Vector3(40, 1.5, 0.2) +material = SubResource("StandardMaterial3D_tp0cp") + +[node name="Wall3" type="CSGBox3D" parent="HauntedHouse/Walls"] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 20, 2.5, 0) +use_collision = true +size = Vector3(44.1, 5, 0.1) +material = SubResource("StandardMaterial3D_5k2c6") + +[node name="WallPaneling" type="CSGBox3D" parent="HauntedHouse/Walls/Wall3"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -2.5, 0) +size = Vector3(44, 1.5, 0.2) +material = SubResource("StandardMaterial3D_tp0cp") + +[node name="Wall4" type="CSGBox3D" parent="HauntedHouse/Walls"] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -20, 2.5, 0) +use_collision = true +size = Vector3(44.1, 5, 0.1) +material = SubResource("StandardMaterial3D_5k2c6") + +[node name="WallPaneling" type="CSGBox3D" parent="HauntedHouse/Walls/Wall4"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -2.5, 0) +size = Vector3(44, 1.5, 0.2) +material = SubResource("StandardMaterial3D_tp0cp") + +[node name="WallInterior" type="CSGBox3D" parent="HauntedHouse/Walls"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9, 2.5, -10) +use_collision = true +size = Vector3(14, 5, 16) +material = SubResource("StandardMaterial3D_5k2c6") + +[node name="WallInterior" type="CSGBox3D" parent="HauntedHouse/Walls/WallInterior"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -2.5, 0) +use_collision = true +size = Vector3(14.1, 1.5, 16.1) +material = SubResource("StandardMaterial3D_2a5lw") + +[node name="WallInterior2" type="CSGBox3D" parent="HauntedHouse/Walls"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9, 2.5, 10) +use_collision = true +size = Vector3(14, 5, 16) +material = SubResource("StandardMaterial3D_5k2c6") + +[node name="WallInterior" type="CSGBox3D" parent="HauntedHouse/Walls/WallInterior2"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -2.5, 0) +use_collision = true +size = Vector3(14.1, 1.5, 16.1) +material = SubResource("StandardMaterial3D_2a5lw") + +[node name="WallInterior3" type="CSGBox3D" parent="HauntedHouse/Walls"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9, 2.5, 10) +use_collision = true +size = Vector3(14, 5, 16) +material = SubResource("StandardMaterial3D_5k2c6") + +[node name="WallInterior" type="CSGBox3D" parent="HauntedHouse/Walls/WallInterior3"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -2.5, 0) +use_collision = true +size = Vector3(14.1, 1.5, 16.1) +material = SubResource("StandardMaterial3D_2a5lw") + +[node name="WallInterior4" type="CSGBox3D" parent="HauntedHouse/Walls"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9, 2.5, -10) +use_collision = true +size = Vector3(14, 5, 16) +material = SubResource("StandardMaterial3D_5k2c6") + +[node name="WallInterior" type="CSGBox3D" parent="HauntedHouse/Walls/WallInterior4"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -2.5, 0) +use_collision = true +size = Vector3(14.1, 1.5, 16.1) +material = SubResource("StandardMaterial3D_2a5lw") + +[node name="Floors" type="Node3D" parent="HauntedHouse"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.215978, 0) + +[node name="Floor" type="CSGBox3D" parent="HauntedHouse/Floors" groups=["wood_floor"]] +use_collision = true +size = Vector3(4, 0.1, 40) +material = SubResource("StandardMaterial3D_xpcxy") + +[node name="Floor2" type="CSGBox3D" parent="HauntedHouse/Floors" groups=["wood_floor"]] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 0, 0, 0) +use_collision = true +size = Vector3(4, 0.1, 40) +material = SubResource("StandardMaterial3D_xpcxy") + +[node name="Floor3" type="CSGBox3D" parent="HauntedHouse/Floors" groups=["wood_floor"]] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 0, 0, 20) +use_collision = true +size = Vector3(4, 0.1, 40) +material = SubResource("StandardMaterial3D_xpcxy") + +[node name="Floor4" type="CSGBox3D" parent="HauntedHouse/Floors" groups=["wood_floor"]] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 0, 0, -20) +use_collision = true +size = Vector3(4, 0.1, 40) +material = SubResource("StandardMaterial3D_xpcxy") + +[node name="Floor5" type="CSGBox3D" parent="HauntedHouse/Floors" groups=["wood_floor"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18, 0, 0) +use_collision = true +size = Vector3(4, 0.1, 40) +material = SubResource("StandardMaterial3D_xpcxy") + +[node name="Floor6" type="CSGBox3D" parent="HauntedHouse/Floors" groups=["wood_floor"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -18, 0, 0) +use_collision = true +size = Vector3(4, 0.1, 40) +material = SubResource("StandardMaterial3D_xpcxy") + +[node name="Mirror" type="StaticBody3D" parent="HauntedHouse"] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 5.54701, 1.85127, 17.9708) + +[node name="MeshInstance3D" type="MeshInstance3D" parent="HauntedHouse/Mirror"] +mesh = SubResource("CylinderMesh_gg6th") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="HauntedHouse/Mirror"] +shape = SubResource("CylinderShape3D_5wlp7") + +[node name="Mirror2" type="StaticBody3D" parent="HauntedHouse"] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, -8.11154, 1.85127, 21.9714) + +[node name="MeshInstance3D" type="MeshInstance3D" parent="HauntedHouse/Mirror2"] +mesh = SubResource("CylinderMesh_gg6th") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="HauntedHouse/Mirror2"] +shape = SubResource("CylinderShape3D_5wlp7") + +[node name="ReflectionProbe" type="ReflectionProbe" parent="HauntedHouse"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.57537, 1.86599, 17.9226) +update_mode = 1 +size = Vector3(52.9208, 4.56679, 8.5488) +box_projection = true +ambient_mode = 0 +ambient_color_energy = 0.0 + +[node name="ReflectionProbe2" type="ReflectionProbe" parent="HauntedHouse"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -8.1611, 1.84657, 22.0146) +size = Vector3(64.4402, 4.56679, 8.5488) +box_projection = true +ambient_mode = 0 +ambient_color_energy = 0.0 + +[node name="WindowFixedCamera" type="Camera3D" parent="HauntedHouse"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.09779, 23.3406) + +[node name="Path3D" type="Path3D" parent="HauntedHouse"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0766144, 0.513068, -20.0771) +curve = SubResource("Curve3D_euwf8") + +[node name="PathFollow3D" type="PathFollow3D" parent="HauntedHouse/Path3D"] +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, 0) + +[node name="GodlessPawn" parent="HauntedHouse/Path3D/PathFollow3D" instance=ExtResource("8_ne6oc")] + +[node name="Ground" type="CSGBox3D" parent="."] +use_collision = true +size = Vector3(500, 1, 500) +material = SubResource("StandardMaterial3D_euwf8") + +[node name="TombstoneDecoration" parent="." instance=ExtResource("13_i0bvx")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14.4911, 1.19184, -14.3557) + +[node name="ClausterphobiaTunnel" type="Node3D" parent="."] + +[node name="CSGBox3D" type="CSGBox3D" parent="ClausterphobiaTunnel"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.80211, 8.25861) +use_collision = true +size = Vector3(1, 3.50049, 17.5172) +material = SubResource("StandardMaterial3D_kxb06") + +[node name="CSGBox3D2" type="CSGBox3D" parent="ClausterphobiaTunnel"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.13677, 1.80211, 8.25861) +use_collision = true +size = Vector3(1, 3.50049, 17.5172) +material = SubResource("StandardMaterial3D_kxb06") + +[node name="CSGBox3D3" type="CSGBox3D" parent="ClausterphobiaTunnel"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.06847, 0.544194, 8.26645) +use_collision = true +size = Vector3(1.18701, 1, 17.5178) +material = SubResource("StandardMaterial3D_ne6oc") + +[node name="CSGBox3D4" type="CSGBox3D" parent="ClausterphobiaTunnel"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.06847, 4.01698, 8.26645) +use_collision = true +size = Vector3(1.18701, 1, 17.5178) +material = SubResource("StandardMaterial3D_sreei") + +[node name="FakeLight" type="CSGBox3D" parent="ClausterphobiaTunnel"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.01606, 3.34562, 1.39124) +use_collision = true +size = Vector3(0.593811, 0.38623, 1.8241) +material = SubResource("StandardMaterial3D_8hkvu") + +[node name="SpotLight3D" type="SpotLight3D" parent="ClausterphobiaTunnel/FakeLight"] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 0.121436, 0) +light_size = 1.0 +shadow_enabled = true +spot_range = 4.32266 +spot_attenuation = -1.42 +spot_angle = 45.7159 +spot_angle_attenuation = 1.99999 + +[node name="CSGBox3D" type="CSGBox3D" parent="ClausterphobiaTunnel/FakeLight/SpotLight3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.169755, 0, -0.237505) +size = Vector3(0.195496, 1, 0.1) + +[node name="CSGBox3D2" type="CSGBox3D" parent="ClausterphobiaTunnel/FakeLight/SpotLight3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.176279, 0, -0.237505) +size = Vector3(0.236252, 1, 0.1) + +[node name="CSGBox3D3" type="CSGBox3D" parent="ClausterphobiaTunnel/FakeLight/SpotLight3D"] +transform = Transform3D(-4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, 0, 1, -0.0137644, 0.439173, -0.237505) +size = Vector3(0.508179, 0.561035, 0.1) + +[node name="CSGBox3D4" type="CSGBox3D" parent="ClausterphobiaTunnel/FakeLight/SpotLight3D"] +transform = Transform3D(-4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, 0, 1, -0.0128183, -0.440637, -0.237505) +size = Vector3(0.50592, 0.574768, 0.1) + +[node name="BuzzingLight" type="AudioStreamPlayer3D" parent="ClausterphobiaTunnel/FakeLight"] +stream = ExtResource("14_8hkvu") +volume_db = -20.0 +autoplay = true +max_distance = 10.0 + +[node name="FakeLight2" type="CSGBox3D" parent="ClausterphobiaTunnel"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12.0398, 2.46719, 3.54231) +use_collision = true +size = Vector3(0.593811, 0.38623, 1.8241) +material = SubResource("StandardMaterial3D_8hkvu") + +[node name="SpotLight3D" type="SpotLight3D" parent="ClausterphobiaTunnel/FakeLight2"] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, -0.0833185, 0.0234671, -0.154754) +light_size = 0.521 +shadow_enabled = true +spot_range = 3.275 +spot_attenuation = -3.64 + +[node name="FakeLight3" type="CSGBox3D" parent="ClausterphobiaTunnel"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.13494, 3.49402, 5.78997) +use_collision = true +size = Vector3(0.593811, 0.38623, 1.8241) +material = SubResource("StandardMaterial3D_8hkvu") + +[node name="SpotLight3D" type="SpotLight3D" parent="ClausterphobiaTunnel/FakeLight3"] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, -0.0833185, 0.0234671, -0.154754) +shadow_enabled = true +spot_range = 3.134 +spot_attenuation = -1.42 +spot_angle = 89.9 +spot_angle_attenuation = 1.99999 + +[node name="FakeLight4" type="CSGBox3D" parent="ClausterphobiaTunnel"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.13494, 3.49402, 8.00776) +use_collision = true +size = Vector3(0.593811, 0.38623, 1.8241) +material = SubResource("StandardMaterial3D_8hkvu") + +[node name="SpotLight3D" type="SpotLight3D" parent="ClausterphobiaTunnel/FakeLight4"] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, -0.0833185, 0.0234671, -0.154754) +light_size = 0.521 +shadow_enabled = true +spot_range = 3.0 +spot_attenuation = -1.74 +spot_angle = 89.9 +spot_angle_attenuation = 1.99999 + +[node name="FakeLight5" type="CSGBox3D" parent="ClausterphobiaTunnel"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.13494, 3.49402, 10.4517) +use_collision = true +size = Vector3(0.593811, 0.38623, 1.8241) +material = SubResource("StandardMaterial3D_8hkvu") + +[node name="SpotLight3D" type="SpotLight3D" parent="ClausterphobiaTunnel/FakeLight5"] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, -0.0833185, 0.0234671, -0.154754) +shadow_enabled = true +spot_range = 3.134 +spot_attenuation = -1.42 +spot_angle = 89.9 +spot_angle_attenuation = 1.99999 + +[node name="FakeLight6" type="CSGBox3D" parent="ClausterphobiaTunnel"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.13494, 3.49402, 12.9148) +use_collision = true +size = Vector3(0.593811, 0.38623, 1.8241) +material = SubResource("StandardMaterial3D_8hkvu") + +[node name="SpotLight3D" type="SpotLight3D" parent="ClausterphobiaTunnel/FakeLight6"] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, -0.0833185, 0.0234671, -0.154754) +light_size = 0.521 +shadow_enabled = true +spot_range = 3.0 +spot_attenuation = -1.74 +spot_angle = 89.9 +spot_angle_attenuation = 1.99999 + +[node name="FakeLight7" type="CSGBox3D" parent="ClausterphobiaTunnel"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.13494, 3.49402, 15.5937) +use_collision = true +size = Vector3(0.593811, 0.38623, 1.8241) +material = SubResource("StandardMaterial3D_8hkvu") + +[node name="SpotLight3D" type="SpotLight3D" parent="ClausterphobiaTunnel/FakeLight7"] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, -0.0833185, 0.0234671, -0.154754) +shadow_enabled = true +spot_range = 3.134 +spot_attenuation = -1.42 +spot_angle = 89.9 +spot_angle_attenuation = 1.99999 diff --git a/scenes/levels/garden_of_lights.tscn b/scenes/levels/garden_of_lights.tscn new file mode 100644 index 0000000..fa75c9e --- /dev/null +++ b/scenes/levels/garden_of_lights.tscn @@ -0,0 +1,226 @@ +[gd_scene load_steps=24 format=3 uid="uid://bb2kpqtlwe3dh"] + +[ext_resource type="PackedScene" uid="uid://ser0oa3o1n56" path="res://scenes/player/Player.tscn" id="1_w1xrq"] +[ext_resource type="Script" uid="uid://d1fxcx37egfx" path="res://scripts/levels/garden_of_lights.gd" id="1_welf3"] +[ext_resource type="Texture2D" uid="uid://bnbp3pgk1lvwx" path="res://assets/textures/ground/synt grass pack/ground_grass_gen_07.png" id="2_b2vmc"] +[ext_resource type="Texture2D" uid="uid://dwcfcpeh68tqv" path="res://assets/textures/plant/hedges_para_CC0/vegetation_hedge_30.png" id="3_52pii"] +[ext_resource type="Script" uid="uid://voof2ikd6ont" path="res://scripts/light_orb.gd" id="5_welf3"] +[ext_resource type="PackedScene" uid="uid://bh0m8jrngk1sv" path="res://scenes/warp_area.tscn" id="6_o66ob"] +[ext_resource type="PackedScene" uid="uid://bobmvagvsys2m" path="res://scenes/props/buildings/cottage.tscn" id="7_67i2p"] + +[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_52pii"] + +[sub_resource type="Sky" id="Sky_welf3"] +sky_material = SubResource("ProceduralSkyMaterial_52pii") + +[sub_resource type="Environment" id="Environment_o66ob"] +background_mode = 2 +sky = SubResource("Sky_welf3") +glow_enabled = true +glow_blend_mode = 0 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_yoj5u"] +transparency = 1 +albedo_color = Color(0.0392157, 0.870588, 0.105882, 0.588235) + +[sub_resource type="BoxMesh" id="BoxMesh_67i2p"] +material = SubResource("StandardMaterial3D_yoj5u") +size = Vector3(3, 4, 1) + +[sub_resource type="BoxShape3D" id="BoxShape3D_jd021"] +size = Vector3(3, 4, 1) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_f74sa"] +transparency = 1 +albedo_color = Color(0.439216, 0.121569, 1, 0.588235) + +[sub_resource type="BoxMesh" id="BoxMesh_d1dqi"] +material = SubResource("StandardMaterial3D_f74sa") +size = Vector3(3, 4, 1) + +[sub_resource type="BoxShape3D" id="BoxShape3D_5d2dx"] +size = Vector3(3, 4, 1) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_52pii"] +albedo_texture = ExtResource("2_b2vmc") +uv1_scale = Vector3(10, 10, 10) +uv1_world_triplanar = true +texture_filter = 2 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_welf3"] +albedo_texture = ExtResource("3_52pii") +uv1_triplanar = true +uv1_world_triplanar = true +texture_filter = 2 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_0ubl4"] +emission_energy_multiplier = 2.85 + +[sub_resource type="SphereMesh" id="SphereMesh_aa38r"] +material = SubResource("StandardMaterial3D_0ubl4") + +[sub_resource type="SphereShape3D" id="SphereShape3D_8id8c"] + +[sub_resource type="Curve3D" id="Curve3D_67i2p"] +_data = { +"points": PackedVector3Array(0, 0, 0, 0, 0, 0, -8.73039, 0, 50.6248, 0, 0, 0, 0, 0, 0, -5.58773, 0, 0.617781, 0, 0, 0, 0, 0, 0, -14.9715, 0, -17.7474, 0, 0, 0, 0, 0, 0, -17.496, 0, -42.3115), +"tilts": PackedFloat32Array(0, 0, 0, 0) +} +point_count = 4 + +[sub_resource type="Curve3D" id="Curve3D_jd021"] +_data = { +"points": PackedVector3Array(0, 0, 0, 0, 0, 0, -11.0318, 0, -1.81625, 0, 0, 0, 0, 0, 0, -19.3231, 0, 9.95068, 0, 0, 0, 0, 0, 0, -10.8122, 0, 15.7744, 0, 0, 0, 0, 0, 0, 4.91158, 0, 20.8338), +"tilts": PackedFloat32Array(0, 0, 0, 0) +} +point_count = 4 + +[node name="GardenOfLights" type="Node"] +script = ExtResource("1_welf3") + +[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +environment = SubResource("Environment_o66ob") + +[node name="Player" parent="." instance=ExtResource("1_w1xrq")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7.93718, 1.6912, 16.5155) + +[node name="WarpSpawnPoints" type="Node3D" parent="."] + +[node name="ToCampus" parent="WarpSpawnPoints" instance=ExtResource("6_o66ob")] +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -0.290883, 2.55692, 49.1441) + +[node name="MeshInstance3D" type="MeshInstance3D" parent="WarpSpawnPoints/ToCampus"] +mesh = SubResource("BoxMesh_67i2p") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="WarpSpawnPoints/ToCampus"] +shape = SubResource("BoxShape3D_jd021") + +[node name="Label3D" type="Label3D" parent="WarpSpawnPoints/ToCampus"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.36281, 0) +billboard = 2 +text = "To Campus" +font_size = 75 + +[node name="CampusSpawn" type="Node3D" parent="WarpSpawnPoints/ToCampus"] +transform = Transform3D(-4.37722e-08, 0, 1, 0, 1, 0, -1, 0, -4.37722e-08, 0.280864, -0.86668, -3.29549) + +[node name="ToWaterway" parent="WarpSpawnPoints" instance=ExtResource("6_o66ob")] +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0.0804291, 2.60514, -48.9067) +monitorable = false + +[node name="MeshInstance3D" type="MeshInstance3D" parent="WarpSpawnPoints/ToWaterway"] +mesh = SubResource("BoxMesh_d1dqi") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="WarpSpawnPoints/ToWaterway"] +shape = SubResource("BoxShape3D_5d2dx") + +[node name="Label3D" type="Label3D" parent="WarpSpawnPoints/ToWaterway"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.36281, 0) +billboard = 2 +text = "To Waterway" +font_size = 75 + +[node name="WaterwaySpawn" type="Node3D" parent="WarpSpawnPoints/ToWaterway"] +transform = Transform3D(-4.37722e-08, 0, 1, 0, 1, 0, -1, 0, -4.37722e-08, 0.280862, -0.86668, -4.54726) + +[node name="Ground" type="CSGBox3D" parent="."] +use_collision = true +size = Vector3(100, 1, 100) +material = SubResource("StandardMaterial3D_52pii") + +[node name="Hedge" type="CSGBox3D" parent="."] +transform = Transform3D(-0.0179934, 0, 0.999838, 0, 1, 0, -0.999838, 0, -0.0179934, -21.8708, 2.83994, 0.167032) +use_collision = true +size = Vector3(98.3385, 4.72742, 2.63953) +material = SubResource("StandardMaterial3D_welf3") + +[node name="LightOrb" type="StaticBody3D" parent="."] +transform = Transform3D(-0.00899668, 0, 0.499919, 0, 0.5, 0, -0.499919, 0, -0.00899668, -20.2386, 3.89382, 2.33819) +script = ExtResource("5_welf3") + +[node name="LightMesh" type="MeshInstance3D" parent="LightOrb"] +mesh = SubResource("SphereMesh_aa38r") + +[node name="LightShape" type="CollisionShape3D" parent="LightOrb"] +shape = SubResource("SphereShape3D_8id8c") + +[node name="OmniLight" type="OmniLight3D" parent="LightOrb"] + +[node name="LightOrb2" type="StaticBody3D" parent="."] +transform = Transform3D(-0.00899668, 0, 0.499919, 0, 0.5, 0, -0.499919, 0, -0.00899668, -20.1775, 2.57465, -1.53886) +script = ExtResource("5_welf3") + +[node name="LightMesh" type="MeshInstance3D" parent="LightOrb2"] +mesh = SubResource("SphereMesh_aa38r") + +[node name="LightShape" type="CollisionShape3D" parent="LightOrb2"] +shape = SubResource("SphereShape3D_8id8c") + +[node name="OmniLight" type="OmniLight3D" parent="LightOrb2"] + +[node name="LightOrb3" type="StaticBody3D" parent="."] +transform = Transform3D(-0.00899668, 0, 0.499919, 0, 0.5, 0, -0.499919, 0, -0.00899668, -20.2981, 3.42067, -5.93273) +script = ExtResource("5_welf3") + +[node name="LightMesh" type="MeshInstance3D" parent="LightOrb3"] +mesh = SubResource("SphereMesh_aa38r") + +[node name="LightShape" type="CollisionShape3D" parent="LightOrb3"] +shape = SubResource("SphereShape3D_8id8c") + +[node name="OmniLight" type="OmniLight3D" parent="LightOrb3"] + +[node name="Cottage" parent="." instance=ExtResource("7_67i2p")] +transform = Transform3D(0.974236, 0, 0.225529, 0, 1, 0, -0.225529, 0, 0.974236, -9.86492, 0.337315, -32.1267) + +[node name="Cottage2" parent="." instance=ExtResource("7_67i2p")] +transform = Transform3D(0.893803, 0, 0.448461, 0, 1, 0, -0.448461, 0, 0.893803, -3.84979, 0.337314, -14.1924) + +[node name="Cottage3" parent="." instance=ExtResource("7_67i2p")] +transform = Transform3D(0.999489, 0, -0.031969, 0, 1, 0, 0.031969, 0, 0.999489, 0.730392, 0.337315, 1.43051) + +[node name="Path3D" type="Path3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11.9772, 0.340122, -6.2131) +curve = SubResource("Curve3D_67i2p") + +[node name="CSGPolygon3D" type="CSGPolygon3D" parent="Path3D"] +use_collision = true +polygon = PackedVector2Array(0.379, 0, 0.38, 0.3, 5.234, 0.3, 5.262, 0) +mode = 2 +path_node = NodePath("..") +path_interval_type = 0 +path_interval = 1.0 +path_simplify_angle = 0.0 +path_rotation = 2 +path_rotation_accurate = false +path_local = true +path_continuous_u = true +path_u_distance = 1.0 +path_joined = false + +[node name="Cottage4" parent="." instance=ExtResource("7_67i2p")] +transform = Transform3D(-0.995384, 0, 0.0959675, 0, 1, 0, -0.0959675, 0, -0.995384, 16.7774, 0.337315, 5.67614) + +[node name="Cottage5" parent="." instance=ExtResource("7_67i2p")] +transform = Transform3D(-0.9277, 0, -0.373328, 0, 1, 0, 0.373328, 0, -0.9277, 15.3853, 0.337315, -11.848) + +[node name="Cottage6" parent="." instance=ExtResource("7_67i2p")] +transform = Transform3D(-0.371336, 0, -0.928498, 0, 1, 0, 0.928498, 0, -0.371336, 10.1933, 0.337315, -32.4199) + +[node name="Path3D2" type="Path3D" parent="."] +transform = Transform3D(-0.245646, 0, 0.96936, 0, 1, 0, -0.96936, 0, -0.245646, 0.71, 0.34, -40.585) +curve = SubResource("Curve3D_jd021") + +[node name="CSGPolygon3D" type="CSGPolygon3D" parent="Path3D2"] +polygon = PackedVector2Array(0.379, 0, 0.38, 0.3, 5.234, 0.3, 5.262, 0) +mode = 2 +path_node = NodePath("..") +path_interval_type = 0 +path_interval = 1.0 +path_simplify_angle = 0.0 +path_rotation = 2 +path_rotation_accurate = false +path_local = true +path_continuous_u = true +path_u_distance = 1.0 +path_joined = false diff --git a/scenes/levels/grunge_world.tscn b/scenes/levels/grunge_world.tscn new file mode 100644 index 0000000..891c629 --- /dev/null +++ b/scenes/levels/grunge_world.tscn @@ -0,0 +1,101 @@ +[gd_scene load_steps=11 format=3 uid="uid://bqgmxxb62088j"] + +[ext_resource type="PackedScene" uid="uid://ser0oa3o1n56" path="res://scenes/player/Player.tscn" id="1_ac8v2"] +[ext_resource type="Script" uid="uid://db80qoel55b05" path="res://scripts/levels/grunge_world.gd" id="1_aicam"] +[ext_resource type="Shader" uid="uid://cttjw0xwkiig0" path="res://shaders/panoramic_sky.gdshader" id="1_bflmc"] +[ext_resource type="PackedScene" uid="uid://bh0m8jrngk1sv" path="res://scenes/warp_area.tscn" id="4_s13ur"] + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_ac8v2"] +shader = ExtResource("1_bflmc") +shader_parameter/sky_color_1 = Color(0, 0, 0, 1) +shader_parameter/sky_color_2 = Color(0.764706, 0.278431, 0, 1) +shader_parameter/add_clouds = true +shader_parameter/clouds_below = false +shader_parameter/cloud_scale = 0.25 +shader_parameter/speed = 0.03 +shader_parameter/cloud_dark = 0.5 +shader_parameter/cloud_light = 0.3 +shader_parameter/cloud_cover = 0.2 +shader_parameter/cloud_alpha = 8.0 +shader_parameter/sky_tint = 0.5 +shader_parameter/height_offset = 0.2 +shader_parameter/sky_contribution = 0.5 + +[sub_resource type="Sky" id="Sky_aicam"] +sky_material = SubResource("ShaderMaterial_ac8v2") + +[sub_resource type="Environment" id="Environment_s13ur"] +background_mode = 2 +sky = SubResource("Sky_aicam") +ambient_light_source = 3 +reflected_light_source = 2 +glow_enabled = true +glow_blend_mode = 0 +fog_mode = 1 +fog_light_color = Color(0.0820509, 0.093329, 0.11106, 1) +fog_density = 1.0 +fog_sky_affect = 0.0 +volumetric_fog_density = 0.1337 +volumetric_fog_albedo = Color(0, 0, 0, 1) +volumetric_fog_sky_affect = 0.0 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_5uhn2"] +transparency = 1 +albedo_color = Color(0.298039, 1, 0.294118, 0.988235) +emission_enabled = true +emission = Color(0.298039, 1, 0.294118, 1) +subsurf_scatter_strength = 0.45 + +[sub_resource type="BoxMesh" id="BoxMesh_pqpw4"] +material = SubResource("StandardMaterial3D_5uhn2") +size = Vector3(3, 4, 1) + +[sub_resource type="BoxShape3D" id="BoxShape3D_f75os"] +size = Vector3(3, 4, 1) + +[node name="Grunge_World" type="Node"] +script = ExtResource("1_aicam") + +[node name="Player" parent="." instance=ExtResource("1_ac8v2")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.60296, 5.30209) + +[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +environment = SubResource("Environment_s13ur") + +[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 0, 0) +layers = 3 +light_color = Color(0.765478, 0.277594, 1.15514e-06, 1) +light_energy = 2.0 +light_specular = 6.726 +shadow_enabled = true + +[node name="WarpSpawnPoints" type="Node3D" parent="."] + +[node name="ToHauntedHouse" parent="WarpSpawnPoints" instance=ExtResource("4_s13ur")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.62316, 2.48478, -7.84214) +monitorable = false + +[node name="MeshInstance3D" type="MeshInstance3D" parent="WarpSpawnPoints/ToHauntedHouse"] +mesh = SubResource("BoxMesh_pqpw4") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="WarpSpawnPoints/ToHauntedHouse"] +shape = SubResource("BoxShape3D_f75os") + +[node name="Label3D" type="Label3D" parent="WarpSpawnPoints/ToHauntedHouse"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.36281, 0) +billboard = 2 +text = "To Gag Haunted House" +font_size = 75 + +[node name="HauntedSpawn" type="Node3D" parent="WarpSpawnPoints/ToHauntedHouse"] +transform = Transform3D(-4.37722e-08, 0, 1, 0, 1, 0, -1, 0, -4.37722e-08, 0.280861, -0.86668, -2.85476) + +[node name="Floor" type="CSGBox3D" parent="."] +use_collision = true +size = Vector3(1000, 1, 1000) + +[node name="Dilapidated Structure" type="Label3D" parent="Floor"] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 0.784762, -2.57366) +text = "START (Dilapidated Structure)" +font_size = 500 diff --git a/scenes/levels/house_of_leave.tscn b/scenes/levels/house_of_leave.tscn new file mode 100644 index 0000000..787fdf2 --- /dev/null +++ b/scenes/levels/house_of_leave.tscn @@ -0,0 +1,541 @@ +[gd_scene load_steps=21 format=3 uid="uid://cqhvdh3th8647"] + +[ext_resource type="Script" uid="uid://cgr5nehqlsquy" path="res://scripts/levels/house_of_leave.gd" id="1_dfhny"] +[ext_resource type="PackedScene" uid="uid://ser0oa3o1n56" path="res://scenes/player/Player.tscn" id="1_mnyvg"] +[ext_resource type="Texture2D" uid="uid://vwnrymaoxu3l" path="res://assets/textures/snow_ice/snow.png" id="1_x6lhj"] +[ext_resource type="Material" uid="uid://b6gm2sotwdai" path="res://assets/material/glass_window.tres" id="3_nf5v3"] +[ext_resource type="Texture2D" uid="uid://dc0qu56y4lgtl" path="res://assets/textures/ground/synt grass pack/ground_grass_gen_05.png" id="3_u670m"] +[ext_resource type="Texture2D" uid="uid://c73agoqjjbht1" path="res://assets/textures/stone_rocks/red_brick_1k/red_brick_diff_1k.png" id="4_r21kg"] +[ext_resource type="Texture2D" uid="uid://46oyxw7r24fd" path="res://assets/textures/stone_rocks/red_brick_1k/red_brick_nor_gl_1k.png" id="5_ep3qn"] +[ext_resource type="Texture2D" uid="uid://df826g11mrjod" path="res://assets/textures/wood/Wood013_1K-PNG/Wood013_1K-PNG_Color.png" id="6_h61bj"] +[ext_resource type="Texture2D" uid="uid://dlyp6ik6jsmkd" path="res://assets/textures/stone_rocks/red_brick_1k/red_brick_rough_1k.png" id="6_l23c0"] + +[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_h61bj"] + +[sub_resource type="Sky" id="Sky_jirya"] +sky_material = SubResource("ProceduralSkyMaterial_h61bj") + +[sub_resource type="Environment" id="Environment_klmyr"] +background_mode = 2 +sky = SubResource("Sky_jirya") +ambient_light_source = 2 +ambient_light_color = Color(0.947199, 0.947199, 0.947199, 1) +fog_light_color = Color(0.898559, 0.909031, 0.925495, 1) +fog_light_energy = 0.55 +volumetric_fog_density = 0.03 +volumetric_fog_emission = Color(1, 1, 1, 1) +volumetric_fog_sky_affect = 0.1 +volumetric_fog_temporal_reprojection_amount = 0.99 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_jt1ul"] +albedo_texture = ExtResource("3_u670m") +uv1_scale = Vector3(0.2, 0.2, 0.2) +uv1_triplanar = true +uv1_world_triplanar = true +texture_filter = 2 + +[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_0qmyr"] +emission_shape = 3 +emission_box_extents = Vector3(300, 300, 10) +gravity = Vector3(0, -0.5, 0) +collision_mode = 1 +collision_friction = 0.4 +collision_bounce = 0.0 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_tgaiq"] +albedo_texture = ExtResource("1_x6lhj") + +[sub_resource type="CylinderMesh" id="CylinderMesh_rncvr"] +material = SubResource("StandardMaterial3D_tgaiq") +top_radius = 0.1 +bottom_radius = 0.1 +height = 0.01 +radial_segments = 6 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_a7i6o"] +albedo_texture = ExtResource("6_h61bj") +uv1_triplanar = true +uv1_world_triplanar = true +texture_filter = 2 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_bi8mm"] +albedo_texture = ExtResource("4_r21kg") +roughness_texture = ExtResource("6_l23c0") +normal_enabled = true +normal_texture = ExtResource("5_ep3qn") +uv1_scale = Vector3(0.2, 0.2, 0.2) +uv1_triplanar = true +uv1_world_triplanar = true + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_5vada"] +albedo_texture = ExtResource("4_r21kg") +uv1_scale = Vector3(0.2, 0.2, 0.2) +uv1_triplanar = true +uv1_world_triplanar = true + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_25rpg"] +albedo_texture = ExtResource("4_r21kg") +roughness_texture = ExtResource("6_l23c0") +normal_enabled = true +normal_texture = ExtResource("5_ep3qn") +uv1_scale = Vector3(0.2, 0.2, 0.2) +uv1_triplanar = true +uv1_world_triplanar = true + +[node name="House" type="Node"] +script = ExtResource("1_dfhny") + +[node name="Player" parent="." instance=ExtResource("1_mnyvg")] +transform = Transform3D(-0.114192, 0, -0.993459, 0, 1, 0, 0.993459, 0, -0.114192, -33.9459, 1.54311, -2.72497) +WALK = 3 +RUN = 6 + +[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +environment = SubResource("Environment_klmyr") + +[node name="Landscape" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1.90309, 0) +use_collision = true +size = Vector3(750, 0.01, 750) +material = SubResource("StandardMaterial3D_jt1ul") + +[node name="GPUParticlesCollisionBox3D" type="GPUParticlesCollisionBox3D" parent="Landscape"] +transform = Transform3D(1, -2.98023e-08, 0, 2.98023e-08, 1, 0, 0, 0, 1, -0.470581, -1.40244e-08, 0.03479) +size = Vector3(749.693, 1, 749.871) + +[node name="SnowParticles" type="GPUParticles3D" parent="."] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 50, 0) +transparency = 0.1 +cast_shadow = 0 +emitting = false +amount = 15000 +lifetime = 30.0 +preprocess = 15.0 +visibility_aabb = AABB(-400, -391.896, -235.395, 747.336, 783.783, 245.591) +draw_order = 3 +transform_align = 1 +process_material = SubResource("ParticleProcessMaterial_0qmyr") +draw_pass_1 = SubResource("CylinderMesh_rncvr") + +[node name="GridBlockMeasure" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15.392, 1.84699, 30.1671) +size = Vector3(6, 3, 3) + +[node name="FirstFloor" type="Node3D" parent="."] + +[node name="Walls" type="Node3D" parent="FirstFloor"] + +[node name="WallMain1" type="CSGBox3D" parent="FirstFloor/Walls"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -44.5499, 3.82052, 15) +use_collision = true +size = Vector3(89.0999, 11.653, 0.5) + +[node name="FrontDoorRemover" type="CSGBox3D" parent="FirstFloor/Walls/WallMain1"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10.7629, 0.197564, 0) +operation = 2 +size = Vector3(3, 3.905, 1) + +[node name="GarageDoorRemover" type="CSGBox3D" parent="FirstFloor/Walls/WallMain1"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -27.0366, -1.85354, 0) +operation = 2 +size = Vector3(8.29285, 8, 1) + +[node name="GarageDoorRemover2" type="CSGBox3D" parent="FirstFloor/Walls/WallMain1"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -38.3567, -1.85354, 0) +operation = 2 +size = Vector3(8.29285, 8, 1) + +[node name="LivingRoomWindow" type="CSGBox3D" parent="FirstFloor/Walls/WallMain1"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 37.0467, 1.51162, 0) +size = Vector3(3, 4.639, 0.5) +material = ExtResource("3_nf5v3") + +[node name="LivingRoomWindow2" type="CSGBox3D" parent="FirstFloor/Walls/WallMain1"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 25.7547, 1.51162, 0.00628662) +size = Vector3(3, 4.639, 0.52) +material = ExtResource("3_nf5v3") + +[node name="FoyerWindow" type="CSGBox3D" parent="FirstFloor/Walls/WallMain1"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.92366, 1.51162, 0.00628662) +size = Vector3(3, 4.639, 0.52) +material = ExtResource("3_nf5v3") + +[node name="DoorWindow" type="CSGBox3D" parent="FirstFloor/Walls/WallMain1"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8.89511, 0.474731, 0.00628662) +size = Vector3(0.38, 3.35, 0.52) +material = ExtResource("3_nf5v3") + +[node name="DoorWindow2" type="CSGBox3D" parent="FirstFloor/Walls/WallMain1"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12.584, 0.478993, 0.00628662) +size = Vector3(0.38, 3.35, 0.52) +material = ExtResource("3_nf5v3") + +[node name="WallMain2" type="CSGBox3D" parent="FirstFloor/Walls"] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -88.8451, 3.81588, 46.4947) +use_collision = true +size = Vector3(63, 11.6491, 0.5) + +[node name="WallMain3" type="CSGBox3D" parent="FirstFloor/Walls"] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -0.248167, 3.83776, 38.7909) +use_collision = true +size = Vector3(48, 11.6114, 0.5) + +[node name="WallMain4" type="CSGBox3D" parent="FirstFloor/Walls"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -29.9833, 3.83378, 62.5243) +use_collision = true +size = Vector3(60, 11.6429, 0.5) + +[node name="CSGBox3D" type="CSGBox3D" parent="FirstFloor/Walls/WallMain4"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -18, 0.152234, 0) +operation = 2 +size = Vector3(6, 3.83838, 1) + +[node name="WallMain5" type="CSGBox3D" parent="FirstFloor/Walls"] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -59.7221, 3.85536, 70.1503) +use_collision = true +size = Vector3(15.691, 11.6023, 0.5) + +[node name="WallMain6" type="CSGBox3D" parent="FirstFloor/Walls"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -56.4238, 3.8796, 77.7648) +use_collision = true +size = Vector3(65.3264, 11.595, 0.5) + +[node name="WallInterior1" type="CSGBox3D" parent="FirstFloor/Walls"] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -51.8477, 3.82569, 28.2628) +use_collision = true +size = Vector3(26.9843, 11.652, 0.5) + +[node name="CSGBox3D" type="CSGBox3D" parent="FirstFloor/Walls/WallInterior1"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9.2968, 0.191863, 0) +operation = 2 +size = Vector3(3, 3.88379, 1) + +[node name="WallInterior2" type="CSGBox3D" parent="FirstFloor/Walls"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -70.5814, 3.82056, 41.479) +use_collision = true +size = Vector3(37.0233, 11.6497, 0.5) + +[node name="CSGBox3D" type="CSGBox3D" parent="FirstFloor/Walls/WallInterior2"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15.6948, 0.18095, 0) +operation = 2 +size = Vector3(3, 3.88721, 1) + +[node name="WallInterior3" type="CSGBox3D" parent="FirstFloor/Walls"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -22.8266, 4.78023, 41.479) +use_collision = true +size = Vector3(45.6043, 9.71912, 0.5) + +[node name="CSGBox3D" type="CSGBox3D" parent="FirstFloor/Walls/WallInterior3"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10.9571, -0.739025, 0) +operation = 2 +size = Vector3(6, 3.903, 1) + +[node name="WallInterior4" type="CSGBox3D" parent="FirstFloor/Walls"] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -24, 3.80192, 46.3861) +use_collision = true +size = Vector3(63.25, 11.7073, 0.5) + +[node name="CSGBox3D" type="CSGBox3D" parent="FirstFloor/Walls/WallInterior4"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26.4058, 0.196263, 2.09808e-05) +operation = 2 +size = Vector3(6, 3.856, 1) + +[node name="CSGBox3D2" type="CSGBox3D" parent="FirstFloor/Walls/WallInterior4"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7.27942, 0.170978, 3.8147e-06) +operation = 2 +size = Vector3(6, 3.84, 1) + +[node name="CSGBox3D3" type="CSGBox3D" parent="FirstFloor/Walls/WallInterior4"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -18.3053, 0.179446, 0) +operation = 2 +size = Vector3(3, 3.84229, 1) + +[node name="WallInterior5" type="CSGBox3D" parent="FirstFloor/Walls"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -74.6915, 4.7893, 50.3703) +use_collision = true +size = Vector3(28.7632, 9.73724, 0.5) + +[node name="WallInterior6" type="CSGBox3D" parent="FirstFloor/Walls"] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -60.1227, 4.78804, 45.9203) +use_collision = true +size = Vector3(9.38206, 9.73474, 0.5) + +[node name="CSGBox3D" type="CSGBox3D" parent="FirstFloor/Walls/WallInterior6"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.213108, -0.793762, 0) +operation = 2 +size = Vector3(3, 3.84229, 1) + +[node name="WallInterior7" type="CSGBox3D" parent="FirstFloor/Walls"] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -45.3654, 4.78887, 34.2285) +use_collision = true +size = Vector3(15, 9.73639, 0.5) + +[node name="WallInterior8" type="CSGBox3D" parent="FirstFloor/Walls"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -36.1802, 4.78305, 26.984) +use_collision = true +size = Vector3(18.8195, 9.72476, 0.5) + +[node name="WallInterior9" type="CSGBox3D" parent="FirstFloor/Walls"] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -27, 4.7824, 34.229) +use_collision = true +size = Vector3(15, 9.75, 0.5) + +[node name="Stairs" type="Node3D" parent="FirstFloor"] + +[node name="Stairs2" type="CSGBox3D" parent="FirstFloor/Stairs"] +transform = Transform3D(-1, -4.10425e-08, -7.71897e-08, 0, 0.882947, -0.469471, 8.74228e-08, -0.469471, -0.882947, -25.5142, 7.71814, 30.2893) +use_collision = true +size = Vector3(2.565, 0.1, 8) + +[node name="Stairs" type="CSGBox3D" parent="FirstFloor/Stairs"] +transform = Transform3D(-4.37114e-08, -0.469471, -0.882947, 0, 0.882947, -0.469471, 1, -2.05212e-08, -3.85949e-08, -33.7436, 3.96326, 25.503) +use_collision = true +size = Vector3(2.565, 0.1, 8) + +[node name="StairLanding" type="CSGBox3D" parent="FirstFloor/Stairs"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -27.2363, 5.81809, 25.6932) +use_collision = true +size = Vector3(6, 0.131, 2.947) + +[node name="PorchStairs" type="CSGBox3D" parent="FirstFloor/Stairs"] +transform = Transform3D(-1, -4.10425e-08, -7.71897e-08, 0, 0.882947, -0.469471, 8.74228e-08, -0.469471, -0.882947, -34.136, 0.0515592, 4.70168) +use_collision = true +size = Vector3(6.02265, 0.1, 8.54211) + +[node name="Garage" type="CSGBox3D" parent="FirstFloor/Stairs"] +transform = Transform3D(-1, -4.10425e-08, -7.71897e-08, 0, 0.882947, -0.469471, 8.74228e-08, -0.469471, -0.882947, -53.4599, 0.131574, 34.7287) +use_collision = true +size = Vector3(3.00673, 0.1, 8.1405) + +[node name="GarageLanding" type="CSGBox3D" parent="FirstFloor/Stairs"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -54.2381, 2.02667, 39.7743) +use_collision = true +size = Vector3(4.59071, 0.131, 2.947) + +[node name="Stairs4" type="CSGBox3D" parent="FirstFloor/Stairs"] +transform = Transform3D(-4.37114e-08, 0.469471, 0.882947, 0, 0.882947, -0.469471, -1, -2.05212e-08, -3.85949e-08, -19.827, 0.027, 64.6457) +use_collision = true +size = Vector3(3.79031, 0.1, 8.64075) + +[node name="Floors" type="Node3D" parent="FirstFloor"] + +[node name="GarageFloor" type="CSGBox3D" parent="FirstFloor/Floors"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -70.3869, -1.82604, 28.2019) +use_collision = true +size = Vector3(36.6746, 0.2, 26.2594) + +[node name="FirstFloor" type="CSGBox3D" parent="FirstFloor/Floors"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -26.059, 1.58, 35.578) +use_collision = true +size = Vector3(52.016, 1, 54.196) + +[node name="FirstFloor2" type="CSGBox3D" parent="FirstFloor/Floors"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -56.322, 1.58, 59.5827) +use_collision = true +size = Vector3(64.784, 1, 36.0097) + +[node name="SecondFloor" type="Node3D" parent="."] + +[node name="Floors" type="Node3D" parent="SecondFloor"] + +[node name="SecondFloor" type="CSGBox3D" parent="SecondFloor/Floors"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -44.45, 9.15764, 38.7255) +use_collision = true +size = Vector3(88.798, 1, 47.9011) + +[node name="StairwellRemover" type="CSGBox3D" parent="SecondFloor/Floors/SecondFloor"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18.9266, 0, -8.45892) +operation = 2 +size = Vector3(2.87427, 1, 7.04187) + +[node name="SecondFloor2" type="CSGBox3D" parent="SecondFloor/Floors"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -56.322, 9.15764, 59.5827) +use_collision = true +size = Vector3(64.784, 1, 36.0097) + +[node name="Walls" type="Node3D" parent="SecondFloor"] + +[node name="WallMain1" type="CSGBox3D" parent="SecondFloor/Walls"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -29.9374, 13.4593, 15) +use_collision = true +size = Vector3(59.8748, 7.77, 0.5) + +[node name="WallMain2" type="CSGBox3D" parent="SecondFloor/Walls"] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -59.6581, 13.4718, 38.8768) +use_collision = true +size = Vector3(47.7642, 7.77, 0.5) + +[node name="WallMain3" type="CSGBox3D" parent="SecondFloor/Walls"] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -0.248167, 13.4781, 38.7909) +use_collision = true +size = Vector3(48, 7.77, 0.5) + +[node name="WallMain4" type="CSGBox3D" parent="SecondFloor/Walls"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -29.9833, 13.4741, 62.5243) +use_collision = true +size = Vector3(60, 7.77, 0.5) + +[node name="WallInterior1" type="CSGBox3D" parent="SecondFloor/Walls"] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -27.0056, 13.4391, 24.2816) +use_collision = true +size = Vector3(19.022, 7.61686, 0.5) + +[node name="WallInterior2" type="CSGBox3D" parent="SecondFloor/Walls"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -43.1063, 13.4391, 33.5716) +use_collision = true +size = Vector3(32.6899, 7.61686, 0.5) + +[node name="DoorFrame" type="CSGBox3D" parent="SecondFloor/Walls/WallInterior2"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.18815, -1.9074, 0) +operation = 2 +size = Vector3(3, 3.88379, 1) + +[node name="WallInterior3" type="CSGBox3D" parent="SecondFloor/Walls"] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -23.9915, 13.4391, 30.0168) +use_collision = true +size = Vector3(7.55151, 7.61686, 0.5) + +[node name="WallInterior4" type="CSGBox3D" parent="SecondFloor/Walls"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -12.3494, 13.4391, 33.5716) +use_collision = true +size = Vector3(23.7628, 7.61686, 0.5) + +[node name="DoorFrame" type="CSGBox3D" parent="SecondFloor/Walls/WallInterior4"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.01169, -1.9074, 0) +operation = 2 +size = Vector3(3, 3.88379, 1) + +[node name="WallInterior5" type="CSGBox3D" parent="SecondFloor/Walls"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -29.9505, 13.4391, 42.5354) +use_collision = true +size = Vector3(59.0017, 7.61686, 0.5) + +[node name="DoorFrame" type="CSGBox3D" parent="SecondFloor/Walls/WallInterior5"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -17.4008, -1.9074, 0) +operation = 2 +size = Vector3(3, 3.88379, 1) + +[node name="DoorFrame2" type="CSGBox3D" parent="SecondFloor/Walls/WallInterior5"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0154915, -1.9074, 0) +operation = 2 +size = Vector3(3, 3.88379, 1) + +[node name="DoorFrame3" type="CSGBox3D" parent="SecondFloor/Walls/WallInterior5"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16.98, -1.9074, 0) +operation = 2 +size = Vector3(3, 3.88379, 1) + +[node name="WallInterior6" type="CSGBox3D" parent="SecondFloor/Walls"] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -35, 13.439, 52.525) +use_collision = true +size = Vector3(19.7975, 7.61686, 0.5) + +[node name="WallInterior7" type="CSGBox3D" parent="SecondFloor/Walls"] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -25, 13.439, 52.525) +use_collision = true +size = Vector3(19.7975, 7.61686, 0.5) + +[node name="WallInterior8" type="CSGBox3D" parent="SecondFloor/Walls"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -25.4929, 13.4354, 26.4918) +use_collision = true +size = Vector3(2.52771, 7.60946, 0.5) + +[node name="Roofs" type="Node3D" parent="SecondFloor"] + +[node name="RoofSecondFloor" type="CSGPolygon3D" parent="SecondFloor/Roofs"] +transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -89.0992, 9.6468, 14.7503) +polygon = PackedVector2Array(0, 0, 31.51, 10.19, 63.2551, -0.0044632) + +[node name="RoofRoof" type="CSGBox3D" parent="SecondFloor/Roofs"] +transform = Transform3D(1, 0, 0, 0, 0.305695, -0.952129, 0, 0.952129, 0.305695, -74.0876, 14.297, 30.6434) +use_collision = true +size = Vector3(28.4973, 33.1219, 1) + +[node name="RoofRoof2" type="CSGBox3D" parent="SecondFloor/Roofs"] +transform = Transform3D(-1, -8.32378e-08, -2.67247e-08, 0, 0.305695, -0.952129, 8.74228e-08, -0.952129, -0.305695, -74.0876, 14.2865, 61.9101) +use_collision = true +size = Vector3(28.4973, 33.19, 1) + +[node name="Attic" type="Node3D" parent="."] + +[node name="Floor" type="Node3D" parent="Attic"] + +[node name="SecondFloor" type="CSGBox3D" parent="Attic/Floor"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -29.9548, 16.9164, 38.7615) +use_collision = true +size = Vector3(59.905, 1, 48.022) + +[node name="StairwellRemover" type="CSGBox3D" parent="Attic/Floor/SecondFloor"] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -7.90019, -0.0146427, -0.891403) +operation = 2 +size = Vector3(2.87427, 1.61035, 7.04187) + +[node name="Roof" type="Node3D" parent="Attic"] + +[node name="RoofWallSecondFloor" type="CSGPolygon3D" parent="Attic/Roof"] +transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -59.9069, 17.4161, 14.7512) +use_collision = true +polygon = PackedVector2Array(0, 0, 24, 10, 48, 0) + +[node name="RoofWallSecondFloor2" type="CSGPolygon3D" parent="Attic/Roof"] +transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -1, 17.416, 14.751) +use_collision = true +polygon = PackedVector2Array(0, 0, 24, 10, 48, 0) + +[node name="RoofRoof" type="CSGBox3D" parent="Attic/Roof"] +transform = Transform3D(1, 0, 0, 0, 0.384295, -0.92321, 0, 0.92321, 0.384295, -29.9518, 22.8938, 26.7578) +use_collision = true +size = Vector3(59.897, 26.4037, 1) + +[node name="RoofRoof2" type="CSGBox3D" parent="Attic/Roof"] +transform = Transform3D(-1, -8.07096e-08, -3.35962e-08, 0, 0.384295, -0.92321, 8.74228e-08, -0.92321, -0.384295, -29.9518, 22.9019, 50.7704) +use_collision = true +size = Vector3(59.897, 26.4387, 1) + +[node name="Outdoors" type="Node3D" parent="."] + +[node name="Fence" type="CSGBox3D" parent="Outdoors"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0112542, 0.0603164, 106.389) +use_collision = true +size = Vector3(0.1, 4, 87.3824) +material = SubResource("StandardMaterial3D_a7i6o") + +[node name="Fence2" type="CSGBox3D" parent="Outdoors"] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -48.9555, 0.0603164, 150.119) +use_collision = true +size = Vector3(0.1, 4, 97.9892) +material = SubResource("StandardMaterial3D_a7i6o") + +[node name="Fence3" type="CSGBox3D" parent="Outdoors"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -97.9031, 0.0603164, 96.227) +use_collision = true +size = Vector3(0.1, 4, 107.869) +material = SubResource("StandardMaterial3D_a7i6o") + +[node name="Fence4" type="CSGBox3D" parent="Outdoors"] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -93.5185, 0.0603164, 42.3421) +use_collision = true +size = Vector3(0.1, 4, 8.88695) +material = SubResource("StandardMaterial3D_a7i6o") + +[node name="TallFireplace" type="CSGBox3D" parent="."] +transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -74.3459, 3.36048, 76.4067) +use_collision = true +size = Vector3(2.31799, 10.7795, 5.27686) +material = SubResource("StandardMaterial3D_bi8mm") + +[node name="FirstFloorFireplace" type="CSGBox3D" parent="TallFireplace"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.176186, 0.268592, 0.0232849) +operation = 2 +size = Vector3(2.0415, 1.72665, 2.47906) +material = SubResource("StandardMaterial3D_5vada") + +[node name="FireplaceBottom" type="CSGBox3D" parent="TallFireplace"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.34639, -0.943362, -0.020401) +size = Vector3(2.9198, 0.689575, 6.46439) +material = SubResource("StandardMaterial3D_25rpg") + +[node name="FireplaceChimney" type="CSGBox3D" parent="TallFireplace"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.153725, 9.43555, 0.0255051) +size = Vector3(2, 8.136, 2) +material = SubResource("StandardMaterial3D_25rpg") diff --git a/scenes/levels/nighttime.tres b/scenes/levels/nighttime.tres new file mode 100644 index 0000000..4a6642b --- /dev/null +++ b/scenes/levels/nighttime.tres @@ -0,0 +1,37 @@ +[gd_resource type="Environment" format=3 uid="uid://bvwpt5hki31ky"] + +[ext_resource type="Shader" uid="uid://bjansmtqekq7y" path="res://shaders/stylized_sky.gdshader" id="1_nra2p"] + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_yoj5u"] +shader = ExtResource("1_nra2p") +shader_parameter/clouds_samples = 16 +shader_parameter/shadow_sample = 4 +shader_parameter/clouds_density = 0.5 +shader_parameter/clouds_scale = 1.0 +shader_parameter/clouds_smoothness = 0.035 +shader_parameter/clouds_light_color = Color(0, 0, 0, 1) +shader_parameter/clouds_shadow_intensity = 1.0 +shader_parameter/high_clouds_density = 0.0 +shader_parameter/top_color = Color(0.180029, 0.105062, 0.297303, 1) +shader_parameter/bottom_color = Color(0.137255, 0.160784, 0.0470588, 1) +shader_parameter/sun_scatter = Color(0.180392, 0.105882, 0.298039, 1) +shader_parameter/astro_tint = Color(0, 0, 0, 1) +shader_parameter/astro_scale = 1.0 +shader_parameter/astro_intensity = 1.0 +shader_parameter/stars_intensity = 1.0 +shader_parameter/shooting_stars_intensity = 0.0 +shader_parameter/shooting_star_tint = Color(0, 0, 0, 1) + +[sub_resource type="Sky" id="Sky_y5h61"] +sky_material = SubResource("ShaderMaterial_yoj5u") + +[resource] +background_mode = 2 +background_color = Color(0.411765, 0.235294, 0.905882, 1) +sky = SubResource("Sky_y5h61") +sky_rotation = Vector3(-3.14159, 0, 0) +ambient_light_source = 3 +tonemap_mode = 3 +glow_enabled = true +glow_strength = 0.7 +glow_blend_mode = 0 diff --git a/scenes/levels/porcelain_labyrinth.tscn b/scenes/levels/porcelain_labyrinth.tscn new file mode 100644 index 0000000..6157b69 --- /dev/null +++ b/scenes/levels/porcelain_labyrinth.tscn @@ -0,0 +1,242 @@ +[gd_scene load_steps=24 format=3 uid="uid://82tolgv6edc2"] + +[ext_resource type="PackedScene" uid="uid://ser0oa3o1n56" path="res://scenes/player/Player.tscn" id="1_npynt"] +[ext_resource type="Texture2D" uid="uid://b4i54jq34xvyd" path="res://assets/textures/tile/Tiles133A_1K-PNG/Tiles133A_1K-PNG_Color.png" id="2_gnx6i"] +[ext_resource type="Texture2D" uid="uid://doce1tosns0ny" path="res://assets/textures/tile/Tiles133A_1K-PNG/Tiles133A_1K-PNG_NormalGL.png" id="3_kbai5"] +[ext_resource type="Texture2D" uid="uid://b3rpmyu0uq3vv" path="res://assets/textures/tile/Tiles133A_1K-PNG/Tiles133A_1K-PNG_Roughness.png" id="4_kbsr2"] +[ext_resource type="Texture2D" uid="uid://cssr4h5a1yaj7" path="res://assets/textures/tile/Tiles134A_1K-PNG/Tiles134A_1K-PNG_Color.png" id="5_8r00q"] +[ext_resource type="Texture2D" uid="uid://cr8lynqj802dv" path="res://assets/textures/tile/Tiles134A_1K-PNG/Tiles134A_1K-PNG_NormalGL.png" id="6_qd032"] +[ext_resource type="Texture2D" uid="uid://7erox76todcl" path="res://assets/textures/tile/Tiles134A_1K-PNG/Tiles134A_1K-PNG_Roughness.png" id="7_qhlbh"] +[ext_resource type="Shader" uid="uid://drji5y5o74vx1" path="res://shaders/psx_style_water_surface.gdshader" id="8_qd032"] +[ext_resource type="FontFile" uid="uid://bikxakf21ryuu" path="res://assets/fonts/BeonMedium-7Z34.ttf" id="9_qhlbh"] +[ext_resource type="AudioStream" uid="uid://1wru52nqe267" path="res://assets/music/Maarten Schellekens - Free Hammond Theme.mp3" id="10_4r7ui"] + +[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_kbai5"] + +[sub_resource type="Sky" id="Sky_kbsr2"] +sky_material = SubResource("ProceduralSkyMaterial_kbai5") + +[sub_resource type="Environment" id="Environment_ipni1"] +background_mode = 2 +sky = SubResource("Sky_kbsr2") +glow_enabled = true +glow_strength = 0.68 +glow_blend_mode = 0 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_8r00q"] +albedo_texture = ExtResource("2_gnx6i") +roughness = 0.0 +roughness_texture = ExtResource("4_kbsr2") +normal_enabled = true +normal_texture = ExtResource("3_kbai5") +refraction_enabled = true +uv1_scale = Vector3(0.2, 0.2, 0.2) +uv1_triplanar = true +uv1_world_triplanar = true + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_4r7ui"] +albedo_texture = ExtResource("5_8r00q") +roughness_texture = ExtResource("7_qhlbh") +normal_enabled = true +normal_texture = ExtResource("6_qd032") +uv1_scale = Vector3(0.5, 0.5, 0.5) +uv1_triplanar = true +uv1_world_triplanar = true + +[sub_resource type="FastNoiseLite" id="FastNoiseLite_qhlbh"] + +[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_qhlbh"] +noise = SubResource("FastNoiseLite_qhlbh") + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_qhlbh"] +render_priority = 0 +shader = ExtResource("8_qd032") +shader_parameter/albedo = Color(0.690651, 0.957782, 1, 1) +shader_parameter/noise_texture = SubResource("NoiseTexture2D_qhlbh") +shader_parameter/scroll_speed1 = Vector2(0.05, 0) +shader_parameter/scroll_speed2 = Vector2(-0.03, 0) +shader_parameter/blend_factor = 0.5 +shader_parameter/scale1 = Vector2(1, 1) +shader_parameter/scale2 = Vector2(1, 1) +shader_parameter/wave_strength = 0.2 +shader_parameter/wave_scale = 0.02 +shader_parameter/pixelation_level = 64 +shader_parameter/FoamSize = 0.5 +shader_parameter/WaterOpacity = 0.3 +shader_parameter/FoamGlowIntensity = 0.0 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_mx6qg"] +albedo_color = Color(7.8402934, 0.30561715, 2.2642105, 1) + +[sub_resource type="TextMesh" id="TextMesh_qhlbh"] +material = SubResource("StandardMaterial3D_mx6qg") +text = "Porcelain Labyrinth" +font = ExtResource("9_qhlbh") + +[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_4r7ui"] +gravity = Vector3(0, -1, 0) + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_4r7ui"] +render_priority = 0 +shader = ExtResource("8_qd032") +shader_parameter/albedo = Color(0.690196, 0.956863, 1, 1) +shader_parameter/scroll_speed1 = Vector2(0.05, 0) +shader_parameter/scroll_speed2 = Vector2(-0.03, 0) +shader_parameter/blend_factor = 0.5 +shader_parameter/scale1 = Vector2(1, 1) +shader_parameter/scale2 = Vector2(1, 1) +shader_parameter/wave_strength = 0.0 +shader_parameter/wave_scale = 0.0 +shader_parameter/pixelation_level = 64 +shader_parameter/FoamSize = 0.5 +shader_parameter/WaterOpacity = 0.4 +shader_parameter/FoamGlowIntensity = 0.5 + +[sub_resource type="RibbonTrailMesh" id="RibbonTrailMesh_vootr"] +material = SubResource("ShaderMaterial_4r7ui") +shape = 0 +size = 5.839 +section_length = 0.775 + +[node name="PorcelainLabyrinth" type="Node"] + +[node name="Player" parent="." instance=ExtResource("1_npynt")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -20.0753, 1.42284, 8.49109) + +[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +environment = SubResource("Environment_ipni1") + +[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 0, 0) +light_energy = 0.0 +shadow_enabled = true + +[node name="Floor" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -25, 0) +use_collision = true +size = Vector3(100, 50, 100) +material = SubResource("StandardMaterial3D_8r00q") + +[node name="PoolTest" type="CSGBox3D" parent="Floor"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15.1251, 22.3071, -3.81506) +operation = 2 +size = Vector3(27.7867, 5.41943, 22.6038) +material = SubResource("StandardMaterial3D_4r7ui") + +[node name="PoolTest2" type="CSGBox3D" parent="Floor"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22.7617, 18.2577, -3.80328) +operation = 2 +size = Vector3(12.5559, 10.6293, 22.6694) +material = SubResource("StandardMaterial3D_4r7ui") + +[node name="CSGBox3D" type="CSGBox3D" parent="Floor"] +transform = Transform3D(0.707107, -0.707107, 0, 0.707107, 0.707107, 0, 0, 0, 1, 14.4349, 19.4175, -3.80859) +operation = 2 +size = Vector3(6.28687, 12.0548, 22.6025) +material = SubResource("StandardMaterial3D_4r7ui") + +[node name="WaterFloorTest" type="CSGBox3D" parent="Floor"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -24.5336, 30.9289, 32.7743) +cast_shadow = 2 +size = Vector3(39.7746, 12.1368, 26.5117) +material = SubResource("StandardMaterial3D_8r00q") + +[node name="CSGBox3D" type="CSGBox3D" parent="Floor/WaterFloorTest"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.077507, -0.993692, -0.184261) +operation = 2 +size = Vector3(35.6729, 10.977, 24.1351) +material = SubResource("StandardMaterial3D_8r00q") + +[node name="CSGBox3D2" type="CSGBox3D" parent="Floor/WaterFloorTest"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16.473, -2.23437, -12.6592) +operation = 2 +size = Vector3(3.48584, 5.46875, 1.43054) +material = SubResource("StandardMaterial3D_8r00q") + +[node name="CSGBox3D3" type="CSGBox3D" parent="Floor/WaterFloorTest"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.276749, 5.78058, 1.15469) +operation = 2 +size = Vector3(34.148, 2.06714, 19.3765) +material = SubResource("StandardMaterial3D_8r00q") + +[node name="CSGBox3D4" type="CSGBox3D" parent="Floor/WaterFloorTest"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18.5338, 5.69268, -5.42221) +operation = 2 +size = Vector3(2.72214, 0.844971, 5.63822) +material = SubResource("StandardMaterial3D_8r00q") + +[node name="CSGBox3D5" type="CSGBox3D" parent="Floor/WaterFloorTest"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20.0313, 0.0252228, -2.10063) +size = Vector3(1, 12.1106, 1) +material = SubResource("StandardMaterial3D_8r00q") + +[node name="CSGBox3D6" type="CSGBox3D" parent="Floor/WaterFloorTest"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20.0276, 0.0252228, -8.72192) +size = Vector3(1, 12.1106, 1) +material = SubResource("StandardMaterial3D_8r00q") + +[node name="WaterTest" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14.9781, -1.75798, -3.93567) +size = Vector3(30.5626, 1, 25.2268) +material = SubResource("ShaderMaterial_qhlbh") + +[node name="WaterTest2" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -23.9768, -0.1359, 32.4411) +size = Vector3(37.1443, 1.29871, 24.6912) +material = SubResource("ShaderMaterial_qhlbh") + +[node name="WaterTest3" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -23.6269, 11.0234, 34.3392) +size = Vector3(37.8441, 1.29871, 20.8949) +material = SubResource("ShaderMaterial_qhlbh") + +[node name="SpotLight3D" type="SpotLight3D" parent="."] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, -22.8653, 10.0625, 37.8885) +light_color = Color(1, 1, 0.921569, 1) +light_energy = 11.189 +spot_range = 25.26 +spot_angle = 30.0 + +[node name="SpotLight3D2" type="SpotLight3D" parent="."] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, -16.8741, 10.0625, 27.1222) +light_color = Color(1, 1, 0.921569, 1) +light_energy = 11.189 +spot_range = 25.26 +spot_angle = 30.0 + +[node name="SpotLight3D3" type="SpotLight3D" parent="."] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, -35.0662, 10.0625, 37.8885) +light_color = Color(1, 1, 0.921569, 1) +light_energy = 11.189 +spot_range = 25.26 +spot_angle = 30.0 + +[node name="SpotLight3D4" type="SpotLight3D" parent="."] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, -29.9342, 10.0625, 27.0826) +light_color = Color(1, 1, 0.921569, 1) +light_energy = 11.189 +spot_range = 25.26 +spot_angle = 30.0 + +[node name="Neon_Light_Name" type="CSGMesh3D" parent="."] +transform = Transform3D(-10, 0, -1.50996e-06, 0, 10, 0, 1.50996e-06, 0, -10, -15.2025, 3.9675, 19.4872) +mesh = SubResource("TextMesh_qhlbh") + +[node name="WaterfallGenerator" type="GPUParticles3D" parent="."] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -4.49711, 9.79628, 27.3453) +amount = 12 +lifetime = 5.0 +preprocess = 5.0 +process_material = SubResource("ParticleProcessMaterial_4r7ui") +draw_pass_1 = SubResource("RibbonTrailMesh_vootr") + +[node name="SpotLight3D5" type="SpotLight3D" parent="."] +transform = Transform3D(0.857446, -0.010974, 0.514457, 0.514574, 0.0182862, -0.857251, 1.56213e-09, 0.999773, 0.0213263, -1.74862, -2.02388, 27.46) +light_energy = 3.0 +spot_range = 16.304 +spot_angle = 38.08 + +[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."] +stream = ExtResource("10_4r7ui") +volume_db = -20.0 +autoplay = true diff --git a/scenes/levels/rpg_dungeon.tscn b/scenes/levels/rpg_dungeon.tscn new file mode 100644 index 0000000..bbe9ec9 --- /dev/null +++ b/scenes/levels/rpg_dungeon.tscn @@ -0,0 +1,138 @@ +[gd_scene load_steps=7 format=3 uid="uid://kxvqvccdql4b"] + +[ext_resource type="PackedScene" uid="uid://ser0oa3o1n56" path="res://scenes/player/Player.tscn" id="3_kbrwi"] + +[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_5o5ii"] +sky_top_color = Color(1, 1, 1, 1) +sky_horizon_color = Color(1, 1, 1, 1) + +[sub_resource type="Sky" id="Sky_rd5pc"] +sky_material = SubResource("ProceduralSkyMaterial_5o5ii") + +[sub_resource type="Environment" id="Environment_k47n3"] +background_mode = 2 +background_color = Color(0.960351, 0.960351, 0.960351, 1) +sky = SubResource("Sky_rd5pc") + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_5o5ii"] +albedo_color = Color(0.212305, 0.212305, 0.212305, 1) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_rd5pc"] +albedo_color = Color(0.454524, 0.454524, 0.454524, 1) + +[node name="RPGDungeon" type="Node"] + +[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +environment = SubResource("Environment_k47n3") + +[node name="Player" parent="." instance=ExtResource("3_kbrwi")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.93604, 2.67237, 10.3777) + +[node name="Floors" type="Node3D" parent="."] + +[node name="FloorGround" type="CSGBox3D" parent="Floors"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.67847, 0, -85.4678) +use_collision = true +size = Vector3(271.905, 0.5, 215.983) +material = SubResource("StandardMaterial3D_5o5ii") + +[node name="FloorFirst" type="CSGBox3D" parent="Floors"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.09938, 20.0987, -72.6933) +use_collision = true +size = Vector3(249.344, 0.5, 197.962) +material = SubResource("StandardMaterial3D_rd5pc") + +[node name="CSGBox3D" type="CSGBox3D" parent="Floors/FloorFirst"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.96166, -0.214205, 24.86) +operation = 2 +size = Vector3(47.5524, 1, 60.319) + +[node name="FloorFirst2" type="CSGBox3D" parent="Floors"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.09938, 44.5428, -72.6933) +use_collision = true +size = Vector3(249.344, 0.5, 197.962) +material = SubResource("StandardMaterial3D_rd5pc") + +[node name="CSGBox3D" type="CSGBox3D" parent="Floors/FloorFirst2"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.96166, -0.214205, 24.86) +operation = 2 +size = Vector3(47.5524, 1, 60.319) + +[node name="Roof" type="CSGBox3D" parent="Floors"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 59.9332, -45.5873) +visible = false +use_collision = true +size = Vector3(232.557, 0.5, 276.494) + +[node name="CSGBox3D" type="CSGBox3D" parent="Floors/Roof"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.06635, 0.418976, 2.99976) +operation = 2 +size = Vector3(53.4095, 1.83795, 66.2866) + +[node name="OuterWalls" type="Node" parent="."] + +[node name="DungeonOuterWall" type="CSGBox3D" parent="OuterWalls"] +transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -8.99611, 24.5961, -3.4006) +use_collision = true +size = Vector3(1, 50.6151, 259.119) + +[node name="CSGBox3D" type="CSGBox3D" parent="OuterWalls/DungeonOuterWall"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.256197, -21.8634, -11.2233) +operation = 2 +size = Vector3(1.88519, 4.97668, 4.39264) + +[node name="DungeonOuterWall2" type="CSGBox3D" parent="OuterWalls"] +transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -8.99611, 24.5961, -101.245) +use_collision = true +size = Vector3(1, 50.6151, 259.119) + +[node name="DungeonOuterWall3" type="CSGBox3D" parent="OuterWalls"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -39.9786, 29.6094, -40.4723) +use_collision = true +size = Vector3(1, 60.6416, 259.119) + +[node name="DungeonOuterWall4" type="CSGBox3D" parent="OuterWalls"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 52.1471, 29.6094, -40.4723) +use_collision = true +size = Vector3(1, 60.6416, 259.119) + +[node name="Pillar" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.77984, 29.8484, -47.8655) +use_collision = true +size = Vector3(5, 59.631, 5) + +[node name="PillarPlatform" type="CSGBox3D" parent="Pillar"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.108887, -19.722, -0.0859985) +size = Vector3(15, 0.5, 15) + +[node name="PillarRamp" type="CSGBox3D" parent="Pillar/PillarPlatform"] +transform = Transform3D(1, 0, 0, 0, 0.866025, -0.5, 0, 0.5, 0.866025, -0.000886679, -4.95425, 16.0057) +size = Vector3(5, 0.5, 20) + +[node name="PillarRamp2" type="CSGBox3D" parent="Pillar/PillarPlatform"] +transform = Transform3D(-4.37114e-08, 0.5, 0.866025, 0, 0.866025, -0.5, -1, -2.18557e-08, -3.78552e-08, -15.2624, 5.02801, 0.0809898) +size = Vector3(5, 0.5, 20) + +[node name="PillarRamp3" type="CSGBox3D" parent="Pillar/PillarPlatform"] +transform = Transform3D(-4.37114e-08, -0.5, -0.866025, 0, 0.866025, -0.5, 1, -2.18557e-08, -3.78552e-08, 15.262, 5.028, 0.081) +size = Vector3(5, 0.5, 20) + +[node name="PillarPlatform2" type="CSGBox3D" parent="Pillar"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.109, 4.6475, -0.0859985) +size = Vector3(15, 0.5, 15) + +[node name="PillarRamp" type="CSGBox3D" parent="Pillar/PillarPlatform2"] +transform = Transform3D(-1, 4.69722e-08, 7.37316e-08, 0, 0.843391, -0.5373, -8.74228e-08, -0.5373, -0.843391, -0.000887632, -7.16715, -18.7088) +size = Vector3(5, 0.5, 26.8335) + +[node name="PillarRamp2" type="CSGBox3D" parent="Pillar/PillarPlatform2"] +transform = Transform3D(-4.37114e-08, 0.5, 0.866025, 0, 0.866025, -0.5, -1, -2.18557e-08, -3.78552e-08, -15.2624, 5.02801, 0.0809898) +size = Vector3(5, 0.5, 20) + +[node name="PillarRamp3" type="CSGBox3D" parent="Pillar/PillarPlatform2"] +transform = Transform3D(-4.37114e-08, -0.5, -0.866025, 0, 0.866025, -0.5, 1, -2.18557e-08, -3.78552e-08, 15.262, 5.028, 0.081) +size = Vector3(5, 0.5, 20) + +[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 0.34202, 0.939693, 0, -0.939693, 0.34202, 0, 0, 0) +shadow_enabled = true diff --git a/scenes/levels/snow_house.tscn b/scenes/levels/snow_house.tscn new file mode 100644 index 0000000..35ce937 --- /dev/null +++ b/scenes/levels/snow_house.tscn @@ -0,0 +1,1838 @@ +[gd_scene format=3 uid="uid://bdmwdysc3d4o4"] + +[ext_resource type="Script" uid="uid://bxd87swl2vv5v" path="res://scripts/levels/snow_house.gd" id="1_aa0ve"] +[ext_resource type="PackedScene" uid="uid://ser0oa3o1n56" path="res://scenes/player/Player.tscn" id="2_7jg23"] +[ext_resource type="Script" uid="uid://bg6aimgk1ttjr" path="res://scripts/curve_generator.gd" id="2_aa0ve"] +[ext_resource type="Texture2D" uid="uid://vwnrymaoxu3l" path="res://assets/textures/snow_ice/snow.png" id="3_ih5vk"] +[ext_resource type="PackedScene" uid="uid://br64bedksp8u8" path="res://scenes/props/vanishing_body.tscn" id="4_haupn"] +[ext_resource type="Texture2D" uid="uid://c5qw31dhbpkph" path="res://assets/textures/wood/wood_trunk_wall/wood_trunk_wall_diff_1k.png" id="5_3tkjv"] +[ext_resource type="Texture2D" uid="uid://0gj2juljndej" path="res://assets/textures/wood/wood_trunk_wall/wood_trunk_wall_nor_gl_1k.png" id="6_scxia"] +[ext_resource type="Texture2D" uid="uid://b4ehdtlf7hwgc" path="res://assets/textures/wood/wood_trunk_wall/wood_trunk_wall_rough_1k.png" id="7_ld4e5"] +[ext_resource type="Texture2D" uid="uid://dnujqpqdxqltf" path="res://assets/textures/wood/WoodFloor008/WoodFloor008_1K-PNG_Color.png" id="8_udubp"] +[ext_resource type="Texture2D" uid="uid://cxoriofrlup4b" path="res://assets/textures/wood/WoodFloor008/WoodFloor008_1K-PNG_NormalGL.png" id="9_xohg0"] +[ext_resource type="Texture2D" uid="uid://qb7i37d7q6pu" path="res://assets/textures/wood/WoodFloor008/WoodFloor008_1K-PNG_Roughness.png" id="10_4din2"] +[ext_resource type="Texture2D" uid="uid://bwhxetamb6xdo" path="res://assets/textures/stone_rocks/cobblestone_floor_07_1k/cobblestone_floor_07_diff_1k.png" id="11_cxv2q"] +[ext_resource type="Texture2D" uid="uid://cicxindxxehw" path="res://assets/textures/stone_rocks/rock_wall_08_1k/rock_wall_08_diff_1k.png" id="12_owli7"] +[ext_resource type="Script" uid="uid://qricgtwkhtp2" path="res://scripts/fixable.gd" id="13_eh06e"] +[ext_resource type="Material" uid="uid://b6gm2sotwdai" path="res://assets/material/glass_window.tres" id="15_rrkox"] +[ext_resource type="PackedScene" uid="uid://tbtmdq3qw0h0" path="res://scenes/props/breakable_wall.tscn" id="16_scr2g"] +[ext_resource type="PackedScene" uid="uid://bohun3ja2bcfq" path="res://scenes/props/door.tscn" id="17_htdsh"] +[ext_resource type="Script" uid="uid://bgka5mmchi3bg" path="res://scripts/door.gd" id="18_qrhkd"] +[ext_resource type="Script" uid="uid://cpumk63448i3g" path="res://scripts/FloorTrap.gd" id="19_nwj3w"] +[ext_resource type="Texture2D" uid="uid://swm2n1sf70e1" path="res://assets/textures/tile/RoofingTiles011A_1K-PNG/RoofingTiles011A_1K-PNG_Color.png" id="20_6hunc"] +[ext_resource type="Texture2D" uid="uid://c73agoqjjbht1" path="res://assets/textures/stone_rocks/red_brick_1k/red_brick_diff_1k.png" id="21_aieqo"] +[ext_resource type="Texture2D" uid="uid://46oyxw7r24fd" path="res://assets/textures/stone_rocks/red_brick_1k/red_brick_nor_gl_1k.png" id="22_kek4c"] +[ext_resource type="Texture2D" uid="uid://dlyp6ik6jsmkd" path="res://assets/textures/stone_rocks/red_brick_1k/red_brick_rough_1k.png" id="23_16m0m"] +[ext_resource type="PackedScene" uid="uid://d13g103evs3mi" path="res://scenes/constructs/light/light.tscn" id="24_for4i"] +[ext_resource type="PackedScene" uid="uid://2h1ihabmdug0" path="res://scenes/constructs/stick/stick.tscn" id="25_rnlfc"] +[ext_resource type="PackedScene" uid="uid://cbyvle3mfwjkf" path="res://scenes/props/generic_key.tscn" id="26_tqinc"] +[ext_resource type="PackedScene" uid="uid://cet8swps817sk" path="res://scenes/props/workbench.tscn" id="27_peks8"] +[ext_resource type="PackedScene" uid="uid://v8352kk4m2na" path="res://scenes/props/trees/pine_tree_low_poly.tscn" id="28_bdkn1"] +[ext_resource type="PackedScene" uid="uid://c5lt3qq7ddpg3" path="res://scenes/props/trees/abstract_pine_tree.tscn" id="29_svova"] +[ext_resource type="PackedScene" uid="uid://bjniumpje1tj5" path="res://scenes/generators/debris_generator.tscn" id="30_i7ffm"] +[ext_resource type="PackedScene" uid="uid://bh0m8jrngk1sv" path="res://scenes/warp_area.tscn" id="31_pacqp"] + +[sub_resource type="Curve3D" id="Curve3D_7jg23"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ih5vk"] +albedo_texture = ExtResource("8_udubp") +uv1_triplanar = true +uv1_world_triplanar = true + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ervxo"] +albedo_texture = ExtResource("8_udubp") +uv1_scale = Vector3(0.2, 0.2, 0.2) +uv1_triplanar = true +uv1_world_triplanar = true + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_aa0ve"] +transparency = 1 +albedo_color = Color(1, 1, 1, 0) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_7jg23"] +albedo_texture = ExtResource("8_udubp") +uv1_scale = Vector3(0.2, 0.2, 0.2) +uv1_triplanar = true +uv1_world_triplanar = true +texture_filter = 2 + +[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_u35dn"] +sky_top_color = Color(1, 1, 1, 1) +sky_horizon_color = Color(0.637407, 0.647013, 0.66218, 1) +ground_bottom_color = Color(0.892134, 0.895121, 0.901088, 1) + +[sub_resource type="Sky" id="Sky_qcdjg"] +sky_material = SubResource("ProceduralSkyMaterial_u35dn") + +[sub_resource type="Environment" id="Environment_shkfn"] +background_mode = 2 +background_color = Color(1, 1, 1, 1) +sky = SubResource("Sky_qcdjg") +ambient_light_source = 3 +ambient_light_color = Color(0.947199, 0.947199, 0.947199, 1) +reflected_light_source = 2 +ssao_enabled = true +fog_light_color = Color(0.898559, 0.909031, 0.925495, 1) +fog_light_energy = 0.1 +volumetric_fog_enabled = true +volumetric_fog_density = 0.01 +volumetric_fog_emission = Color(1, 1, 1, 1) +volumetric_fog_temporal_reprojection_amount = 0.99 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_6omn1"] +albedo_color = Color(0.192157, 1, 1, 1) +metallic = 0.79 +roughness = 0.0 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_v1tm3"] +albedo_texture = ExtResource("3_ih5vk") +uv1_scale = Vector3(0.2, 0.2, 0.2) +uv1_triplanar = true +uv1_world_triplanar = true +texture_filter = 2 + +[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_jjh5g"] +emission_shape = 3 +emission_box_extents = Vector3(300, 300, 10) +gravity = Vector3(0, -0.5, 0) +collision_mode = 1 +collision_friction = 0.4 +collision_bounce = 0.0 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_cxgtq"] +albedo_texture = ExtResource("3_ih5vk") + +[sub_resource type="CylinderMesh" id="CylinderMesh_5vv47"] +material = SubResource("StandardMaterial3D_cxgtq") +top_radius = 0.1 +bottom_radius = 0.1 +height = 0.01 +radial_segments = 6 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_4wqbg"] +albedo_texture = ExtResource("5_3tkjv") +roughness_texture = ExtResource("7_ld4e5") +normal_enabled = true +normal_texture = ExtResource("6_scxia") +uv1_triplanar = true +uv1_world_triplanar = true + +[sub_resource type="BoxMesh" id="BoxMesh_s5l0g"] +material = SubResource("StandardMaterial3D_4wqbg") +size = Vector3(50, 10, 0.2) + +[sub_resource type="BoxShape3D" id="BoxShape3D_meuj2"] +size = Vector3(50, 10, 0.5) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_snt7y"] +albedo_texture = ExtResource("8_udubp") +roughness_texture = ExtResource("10_4din2") +normal_enabled = true +normal_texture = ExtResource("9_xohg0") +uv1_triplanar = true +uv1_world_triplanar = true + +[sub_resource type="BoxMesh" id="BoxMesh_ky3fl"] +material = SubResource("StandardMaterial3D_snt7y") +size = Vector3(1, 0.01, 1) + +[sub_resource type="BoxShape3D" id="BoxShape3D_weq1m"] +size = Vector3(1, 0.01, 1) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ko3sa"] +albedo_texture = ExtResource("5_3tkjv") +roughness_texture = ExtResource("7_ld4e5") +normal_enabled = true +normal_texture = ExtResource("6_scxia") +uv1_triplanar = true +uv1_world_triplanar = true + +[sub_resource type="BoxMesh" id="BoxMesh_pe0pm"] +material = SubResource("StandardMaterial3D_ko3sa") +size = Vector3(23, 10, 0.2) + +[sub_resource type="BoxShape3D" id="BoxShape3D_rd0fm"] +size = Vector3(23, 10, 0.2) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_pv8go"] +albedo_texture = ExtResource("5_3tkjv") +roughness_texture = ExtResource("7_ld4e5") +normal_enabled = true +normal_texture = ExtResource("6_scxia") +uv1_triplanar = true +uv1_world_triplanar = true + +[sub_resource type="BoxMesh" id="BoxMesh_cuifx"] +material = SubResource("StandardMaterial3D_pv8go") +size = Vector3(4.5, 2, 0.2) + +[sub_resource type="BoxShape3D" id="BoxShape3D_gme4i"] +size = Vector3(4.5, 2, 0.2) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_r10g3"] +albedo_texture = ExtResource("3_ih5vk") +uv1_scale = Vector3(0.2, 0.2, 0.2) +uv1_triplanar = true +uv1_world_triplanar = true +texture_filter = 2 + +[sub_resource type="BoxMesh" id="BoxMesh_8wxyu"] +material = SubResource("StandardMaterial3D_r10g3") +size = Vector3(30, 0.5, 52) + +[sub_resource type="BoxShape3D" id="BoxShape3D_w8o3l"] +size = Vector3(30.4451, 0.5, 52.2593) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_nd7fp"] +albedo_texture = ExtResource("5_3tkjv") +roughness_texture = ExtResource("7_ld4e5") +normal_enabled = true +normal_texture = ExtResource("6_scxia") +uv1_triplanar = true +uv1_world_triplanar = true + +[sub_resource type="PrismMesh" id="PrismMesh_1y1qc"] +material = SubResource("StandardMaterial3D_nd7fp") +size = Vector3(50, 14.5, 0.2) + +[sub_resource type="BoxShape3D" id="BoxShape3D_7xg2x"] +size = Vector3(50, 14.2656, 0.2) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_1mhcx"] +albedo_texture = ExtResource("11_cxv2q") +uv1_scale = Vector3(0.2, 0.2, 0.2) +uv1_triplanar = true +uv1_world_triplanar = true +texture_filter = 0 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_wrhli"] +albedo_texture = ExtResource("11_cxv2q") +uv1_scale = Vector3(0.2, 0.2, 0.2) +uv1_triplanar = true +uv1_world_triplanar = true +texture_filter = 0 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_hss5d"] +albedo_texture = ExtResource("11_cxv2q") +normal_enabled = true +uv1_scale = Vector3(0.2, 0.2, 0.2) +uv1_triplanar = true +uv1_world_triplanar = true +texture_filter = 0 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_yk4pc"] +albedo_texture = ExtResource("12_owli7") +uv1_scale = Vector3(0.2, 0.2, 0.2) +uv1_triplanar = true +uv1_world_triplanar = true +texture_filter = 0 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ud8u0"] +albedo_texture = ExtResource("12_owli7") +uv1_scale = Vector3(0.2, 0.2, 0.2) +uv1_triplanar = true +uv1_world_triplanar = true + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_v3sg1"] +albedo_texture = ExtResource("12_owli7") +uv1_scale = Vector3(0.2, 0.2, 0.2) +uv1_triplanar = true +uv1_world_triplanar = true + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_qeouc"] +albedo_texture = ExtResource("12_owli7") +uv1_scale = Vector3(0.2, 0.2, 0.2) +uv1_triplanar = true +uv1_world_triplanar = true +texture_filter = 0 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_rdslv"] +albedo_color = Color(0.4, 0.4, 0.4, 1) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_b3mh7"] +albedo_texture = ExtResource("8_udubp") +uv1_scale = Vector3(0.2, 0.2, 0.2) +uv1_triplanar = true +uv1_world_triplanar = true + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_xohet"] +albedo_texture = ExtResource("8_udubp") +uv1_scale = Vector3(0.2, 0.2, 0.2) +uv1_triplanar = true +uv1_world_triplanar = true +texture_filter = 0 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_d6mox"] +albedo_texture = ExtResource("8_udubp") +uv1_scale = Vector3(0.2, 0.2, 0.2) +uv1_triplanar = true +uv1_world_triplanar = true + +[sub_resource type="BoxMesh" id="BoxMesh_qcdjg"] +material = SubResource("StandardMaterial3D_xohet") +size = Vector3(185.929, 0.1, 6) + +[sub_resource type="BoxShape3D" id="BoxShape3D_od1nc"] +size = Vector3(185.929, 0.1, 6) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_qj4e1"] +albedo_texture = ExtResource("5_3tkjv") +uv1_scale = Vector3(0.2, 0.2, 0.2) +uv1_triplanar = true +uv1_world_triplanar = true +texture_filter = 2 + +[sub_resource type="BoxMesh" id="BoxMesh_u35dn"] +material = SubResource("StandardMaterial3D_qj4e1") +size = Vector3(0.1, 5.50382, 30.3492) + +[sub_resource type="BoxShape3D" id="BoxShape3D_u35dn"] +size = Vector3(0.1, 5.50382, 30.3492) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_gg604"] +albedo_texture = ExtResource("5_3tkjv") +uv1_scale = Vector3(0.2, 0.2, 0.2) +uv1_triplanar = true +uv1_world_triplanar = true +texture_filter = 0 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_jm76j"] +albedo_color = Color(0.4, 0.4, 0.4, 1) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_8p73l"] +albedo_color = Color(0.4, 0.4, 0.4, 1) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_5jhno"] +transparency = 1 +albedo_color = Color(0, 0.913725, 0.980392, 0.109804) + +[sub_resource type="BoxMesh" id="BoxMesh_w4q5t"] +material = SubResource("StandardMaterial3D_5jhno") +size = Vector3(2, 3, 0.2) + +[sub_resource type="BoxShape3D" id="BoxShape3D_dmh7s"] +size = Vector3(2, 3, 0.2) + +[sub_resource type="Animation" id="Animation_kihjj"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:rotation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector3(0, 1.5708, 0)] +} + +[sub_resource type="Animation" id="Animation_6gvek"] +resource_name = "door_close" +length = 0.5 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:rotation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.5), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector3(0, 1.5708, 0), Vector3(0, 0, 0)] +} + +[sub_resource type="Animation" id="Animation_yxc4b"] +resource_name = "door_open" +length = 0.5 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:rotation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.5), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector3(0, 0, 0), Vector3(0, 1.5708, 0)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_xrnhw"] +_data = { +&"RESET": SubResource("Animation_kihjj"), +&"door_close": SubResource("Animation_6gvek"), +&"door_open": SubResource("Animation_yxc4b") +} + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_k0h6o"] +albedo_texture = ExtResource("5_3tkjv") +uv1_scale = Vector3(0.2, 0.2, 0.2) +uv1_triplanar = true +uv1_world_triplanar = true + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_rhnq1"] +albedo_color = Color(0.4, 0.4, 0.4, 1) + +[sub_resource type="BoxShape3D" id="BoxShape3D_dcfkh"] +size = Vector3(2.50061, 2.96626, 4.33264) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_lnqlj"] +albedo_color = Color(0.4, 0.4, 0.4, 1) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_g7vsf"] +albedo_texture = ExtResource("8_udubp") +uv1_scale = Vector3(0.2, 0.2, 0.2) +uv1_triplanar = true +uv1_world_triplanar = true +texture_filter = 2 + +[sub_resource type="Animation" id="Animation_yr2se"] +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:rotation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector3(0, -3.14159, 0)] +} + +[sub_resource type="Animation" id="Animation_bka6n"] +resource_name = "drop" +length = 0.33 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:rotation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.33), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector3(0, -3.14159, 0), Vector3(0, -3.14159, 1.5708)] +} + +[sub_resource type="Animation" id="Animation_p062o"] +resource_name = "return" +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:rotation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 1), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector3(0, -3.14159, 1.5708), Vector3(0, -3.14159, 0)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_25bw3"] +_data = { +&"RESET": SubResource("Animation_yr2se"), +&"drop": SubResource("Animation_bka6n"), +&"return": SubResource("Animation_p062o") +} + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_tmblh"] +albedo_color = Color(0.4, 0.4, 0.4, 1) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_hxnoj"] +albedo_color = Color(0.254902, 0.737255, 0, 1) +albedo_texture = ExtResource("20_6hunc") +uv1_scale = Vector3(0.2, 0.2, 0.2) +uv1_triplanar = true +uv1_world_triplanar = true + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ahvux"] +albedo_texture = ExtResource("21_aieqo") +roughness_texture = ExtResource("23_16m0m") +normal_enabled = true +normal_texture = ExtResource("22_kek4c") +uv1_scale = Vector3(0.2, 0.2, 0.2) +uv1_triplanar = true +uv1_world_triplanar = true +texture_filter = 0 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_28m61"] +albedo_texture = ExtResource("21_aieqo") +uv1_scale = Vector3(0.2, 0.2, 0.2) +uv1_triplanar = true +uv1_world_triplanar = true +texture_filter = 0 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_n8xd6"] +albedo_texture = ExtResource("21_aieqo") +uv1_scale = Vector3(0.2, 0.2, 0.2) +uv1_triplanar = true +uv1_world_triplanar = true + +[sub_resource type="BoxShape3D" id="BoxShape3D_dr6ce"] +size = Vector3(14.8335, 4.21082, 1) + +[node name="SnowHouse" type="Node" unique_id=1987498555 groups=["level"]] +script = ExtResource("1_aa0ve") + +[node name="StairPath" type="Path3D" parent="." unique_id=152962211] +transform = Transform3D(-0.25, 0, -2.18557e-08, 0, 0.25, 0, 2.18557e-08, 0, -0.25, -50.2968, 0.0496953, 103.216) +curve = SubResource("Curve3D_7jg23") +script = ExtResource("2_aa0ve") +use_case = 2 +end_point = 10 + +[node name="Stairs" type="CSGPolygon3D" parent="StairPath" unique_id=6901234 groups=["fixable"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.879547, -0.0845661, -5.82224) +use_collision = true +collision_layer = 3 +polygon = PackedVector2Array(0, 0, 0, 0.1, 10, 0.1, 10, 0) +mode = 2 +path_node = NodePath("..") +path_interval_type = 0 +path_interval = 1.0 +path_simplify_angle = 0.0 +path_rotation = 2 +path_rotation_accurate = false +path_local = true +path_continuous_u = true +path_u_distance = 1.0 +path_joined = false +material = SubResource("StandardMaterial3D_ih5vk") +script = ExtResource("13_eh06e") + +[node name="StairHole" type="CSGPolygon3D" parent="StairPath/Stairs" unique_id=905031549] +transform = Transform3D(1.40845, 3.34794e-07, 1.41995, 1.41995, -2.3134e-07, -1.40845, -7.15248e-08, 2, -4.00611e-07, 6.28479, 5.11188, 6.86987) +operation = 2 +polygon = PackedVector2Array(-1.32923, -1.46205, -1.79573, -0.719448, -1.3173, 0.569752, -0.21021, 1.29283, 0.692273, 0.837757, 0.932903, -0.770374, 0.229406, -1.51431, 1.02268, -2.29963, -0.397259, -2.4836, -1.34307, -2.06372) +material = SubResource("StandardMaterial3D_ih5vk") + +[node name="StairDebris" type="CSGPolygon3D" parent="StairPath/Stairs" unique_id=1105067183] +transform = Transform3D(-0.036574, -0.829457, 0.557372, -1.06581e-14, -0.557745, -0.830012, 0.999331, -0.0303569, 0.020399, 5.2829, 2.82657, 16.3315) +polygon = PackedVector2Array(-1.32923, -1.46205, -1.79573, -0.719448, -1.3173, 0.569752, -0.21021, 1.29283, 0.692273, 0.837757, 0.932903, -0.770374, 0.229406, -1.51431, 1.02268, -2.29963, -0.397259, -2.4836, -1.34307, -2.06372) +depth = 0.2 +material = SubResource("StandardMaterial3D_ervxo") + +[node name="InvisibleSlope" type="CSGBox3D" parent="StairPath" unique_id=126199336] +transform = Transform3D(-1.74846e-07, -2.82843, 2.82843, 0, 2.82843, 2.82843, -4, 1.23634e-07, -1.23634e-07, 6.26163, 4.87464, -0.107483) +use_collision = true +collision_layer = 4 +collision_mask = 4 +size = Vector3(2.87939, 0.1, 3.59873) +material = SubResource("StandardMaterial3D_aa0ve") + +[node name="FloorLivingRoom" type="CSGBox3D" parent="." unique_id=1232619691 groups=["wood_floor"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.139519, -0.499587, 83.238) +use_collision = true +size = Vector3(29.3534, 0.1, 29.6421) +material = SubResource("StandardMaterial3D_7jg23") + +[node name="WorldEnvironment" type="WorldEnvironment" parent="." unique_id=1444382501] +environment = SubResource("Environment_shkfn") + +[node name="DirectionalLight3D" type="DirectionalLight3D" parent="." unique_id=1511857291] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, 0) +layers = 3 +light_energy = 0.2 + +[node name="Player" parent="." unique_id=1791199499 instance=ExtResource("2_7jg23")] +transform = Transform3D(-0.0706269, 0, 0.997503, 0, 1, 0, -0.997503, 0, -0.0706269, 37.92206, 1.7056432, 69.76122) + +[node name="TestPoolFloor" type="CSGBox3D" parent="." unique_id=529266629] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.138777, -3.98992, -0.112068) +use_collision = true +size = Vector3(36, 0.5, 65) + +[node name="TestPool" type="CSGBox3D" parent="." unique_id=731046978] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -2.01484, 0) +calculate_tangents = false +use_collision = true +size = Vector3(36, 4, 65) +material = SubResource("StandardMaterial3D_6omn1") + +[node name="SnowyLandscape" type="CSGBox3D" parent="." unique_id=2110323155 groups=["snow_floor"]] +use_collision = true +size = Vector3(750, 0.01, 750) +material = SubResource("StandardMaterial3D_v1tm3") + +[node name="GPUParticlesCollisionBox3D" type="GPUParticlesCollisionBox3D" parent="SnowyLandscape" unique_id=1743997046] +transform = Transform3D(1, -2.98023e-08, 0, 2.98023e-08, 1, 0, 0, 0, 1, -0.470581, -1.3613415, 0.03479) +size = Vector3(749.693, 1, 749.871) + +[node name="RemoverLivingRoom" type="CSGBox3D" parent="SnowyLandscape" unique_id=1737610082] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.191821, 0, 80.0746) +operation = 2 +size = Vector3(29.9043, 1, 37.9399) + +[node name="RemoverWineCellar" type="CSGBox3D" parent="SnowyLandscape" unique_id=1009516372] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 27.4902, -0.0295477, 88.7885) +operation = 2 +size = Vector3(13.1387, 0.2, 20.0656) + +[node name="RemoverStairs" type="CSGBox3D" parent="SnowyLandscape" unique_id=1705447192] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -53.4483, 0, 101.84) +operation = 2 +size = Vector3(7.52338, 1, 6.06441) + +[node name="RemoverPool" type="CSGBox3D" parent="SnowyLandscape" unique_id=710888054] +operation = 2 +size = Vector3(36, 1, 65) +material = SubResource("StandardMaterial3D_6omn1") + +[node name="SnowParticles" type="GPUParticles3D" parent="." unique_id=554239613] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 50, 0) +transparency = 0.1 +cast_shadow = 0 +amount = 15000 +lifetime = 30.0 +preprocess = 15.0 +visibility_aabb = AABB(-400, -391.896, -235.395, 747.336, 783.783, 245.591) +draw_order = 3 +transform_align = 1 +process_material = SubResource("ParticleProcessMaterial_jjh5g") +draw_pass_1 = SubResource("CylinderMesh_5vv47") + +[node name="SmallHouse" type="Node3D" parent="." unique_id=1135162316] +transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 50.6768, 0, -33.0236) + +[node name="VanishingWall" parent="SmallHouse" unique_id=1920887433 instance=ExtResource("4_haupn")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3.48, -25) +script = null + +[node name="VanishMesh" type="MeshInstance3D" parent="SmallHouse/VanishingWall" unique_id=887995987] +mesh = SubResource("BoxMesh_s5l0g") + +[node name="VanishCollision" type="CollisionShape3D" parent="SmallHouse/VanishingWall" unique_id=188021395] +shape = SubResource("BoxShape3D_meuj2") + +[node name="GPUParticlesCollisionBox3D" type="GPUParticlesCollisionBox3D" parent="SmallHouse/VanishingWall" unique_id=1034191350] +size = Vector3(0, 0, 0) + +[node name="VanishingWall3" parent="SmallHouse" unique_id=1354741420 instance=ExtResource("4_haupn")] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 25, 3.48, 0) +script = null + +[node name="VanishMesh" type="MeshInstance3D" parent="SmallHouse/VanishingWall3" unique_id=973459831] +mesh = SubResource("BoxMesh_s5l0g") + +[node name="VanishCollision" type="CollisionShape3D" parent="SmallHouse/VanishingWall3" unique_id=1137972995] +shape = SubResource("BoxShape3D_meuj2") + +[node name="GPUParticlesCollisionBox3D" type="GPUParticlesCollisionBox3D" parent="SmallHouse/VanishingWall3" unique_id=462933097] +size = Vector3(0, 0, 0) + +[node name="VanishingWall4" parent="SmallHouse" unique_id=855590571 instance=ExtResource("4_haupn")] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -25, 3.48, 0) +script = null + +[node name="VanishMesh" type="MeshInstance3D" parent="SmallHouse/VanishingWall4" unique_id=854788247] +mesh = SubResource("BoxMesh_s5l0g") + +[node name="VanishCollision" type="CollisionShape3D" parent="SmallHouse/VanishingWall4" unique_id=1686537514] +shape = SubResource("BoxShape3D_meuj2") + +[node name="GPUParticlesCollisionBox3D" type="GPUParticlesCollisionBox3D" parent="SmallHouse/VanishingWall4" unique_id=1158312785] +size = Vector3(0, 0, 0) + +[node name="VanishingFloor" parent="SmallHouse" unique_id=433444568 groups=["wood_floor"] instance=ExtResource("4_haupn")] +script = null + +[node name="FloorMesh" type="MeshInstance3D" parent="SmallHouse/VanishingFloor" unique_id=1993653403] +transform = Transform3D(50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0) +mesh = SubResource("BoxMesh_ky3fl") +skeleton = NodePath("") + +[node name="FloorCollision" type="CollisionShape3D" parent="SmallHouse/VanishingFloor" unique_id=1987392201] +transform = Transform3D(50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0) +shape = SubResource("BoxShape3D_weq1m") + +[node name="GPUParticlesCollisionBox3D" type="GPUParticlesCollisionBox3D" parent="SmallHouse/VanishingFloor" unique_id=1383512627] +size = Vector3(0, 0, 0) + +[node name="VanishingEntranceWall" parent="SmallHouse" unique_id=1025143547 instance=ExtResource("4_haupn")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -15.0755, 3.51258, 24.9211) +script = null + +[node name="MeshInstance3D2" type="MeshInstance3D" parent="SmallHouse/VanishingEntranceWall" unique_id=2056867569] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.49038, 0, 0) +mesh = SubResource("BoxMesh_pe0pm") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="SmallHouse/VanishingEntranceWall" unique_id=843268025] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.491, 0, 0) +shape = SubResource("BoxShape3D_rd0fm") + +[node name="GPUParticlesCollisionBox3D" type="GPUParticlesCollisionBox3D" parent="SmallHouse/VanishingEntranceWall" unique_id=132847930] +size = Vector3(0, 0, 0) + +[node name="VanishingEntranceWall2" parent="SmallHouse" unique_id=1819492481 instance=ExtResource("4_haupn")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15.2034, 3.51258, 24.9211) +script = null + +[node name="MeshInstance3D2" type="MeshInstance3D" parent="SmallHouse/VanishingEntranceWall2" unique_id=104426462] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.58084, 0, 0) +mesh = SubResource("BoxMesh_pe0pm") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="SmallHouse/VanishingEntranceWall2" unique_id=1461279431] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.57841, 0, 0) +shape = SubResource("BoxShape3D_rd0fm") + +[node name="GPUParticlesCollisionBox3D" type="GPUParticlesCollisionBox3D" parent="SmallHouse/VanishingEntranceWall2" unique_id=1707804287] +size = Vector3(0, 0, 0) + +[node name="VanishingEntranceTransom" parent="SmallHouse" unique_id=922465758 instance=ExtResource("4_haupn")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7.72628, 24.6466) +script = null + +[node name="MeshInstance3D2" type="MeshInstance3D" parent="SmallHouse/VanishingEntranceTransom" unique_id=1731634430] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.218894, 0.277676) +mesh = SubResource("BoxMesh_cuifx") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="SmallHouse/VanishingEntranceTransom" unique_id=1999939099] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.222776, 0.281853) +shape = SubResource("BoxShape3D_gme4i") + +[node name="GPUParticlesCollisionBox3D" type="GPUParticlesCollisionBox3D" parent="SmallHouse/VanishingEntranceTransom" unique_id=686499096] +size = Vector3(0, 0, 0) + +[node name="VanishingRoof" parent="SmallHouse" unique_id=346216178 instance=ExtResource("4_haupn")] +transform = Transform3D(0.866025, -0.5, 0, 0.5, 0.866025, 0, 0, 0, 1, -14.348, 14.5103, 21.9529) +script = null + +[node name="MeshInstance3D2" type="MeshInstance3D" parent="SmallHouse/VanishingRoof" unique_id=715194506] +transform = Transform3D(1, -2.98023e-08, 0, 2.98023e-08, 1, 0, 0, 0, 1, 1.97949, 0.143446, -21.9528) +mesh = SubResource("BoxMesh_8wxyu") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="SmallHouse/VanishingRoof" unique_id=94253243] +transform = Transform3D(1, -2.68221e-07, 0, 2.68221e-07, 1, 0, 0, 0, 1, 2.09705, 1.90735e-06, -21.9655) +shape = SubResource("BoxShape3D_w8o3l") + +[node name="GPUParticlesCollisionBox3D" type="GPUParticlesCollisionBox3D" parent="SmallHouse/VanishingRoof" unique_id=681589696] +transform = Transform3D(1, -2.98023e-08, 0, 2.98023e-08, 1, 0, 0, 0, 1, 2.1592, 0.0263767, -21.9529) +size = Vector3(30.218, 1, 52) + +[node name="VanishingRoof2" parent="SmallHouse" unique_id=1443206605 instance=ExtResource("4_haupn")] +transform = Transform3D(0.866025, 0.5, 0, -0.5, 0.866025, 0, 0, 0, 1, 13.0019, 15.6162, 21.9644) +script = null + +[node name="MeshInstance3D2" type="MeshInstance3D" parent="SmallHouse/VanishingRoof2" unique_id=1137607902] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -21.9528) +mesh = SubResource("BoxMesh_8wxyu") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="SmallHouse/VanishingRoof2" unique_id=908455842] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -21.9843) +shape = SubResource("BoxShape3D_w8o3l") + +[node name="GPUParticlesCollisionBox3D" type="GPUParticlesCollisionBox3D" parent="SmallHouse/VanishingRoof2" unique_id=662768976] +transform = Transform3D(1, 2.98023e-08, 0, -2.98023e-08, 1, 0, 0, 0, 1, -0.282458, -0.184645, -21.9529) +size = Vector3(30.5322, 1, 52) + +[node name="VanishingAtticWall" parent="SmallHouse" unique_id=1949226765 instance=ExtResource("4_haupn")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.149, 15.558, 24.9) +script = null + +[node name="MeshInstance3D2" type="MeshInstance3D" parent="SmallHouse/VanishingAtticWall" unique_id=1803455097] +mesh = SubResource("PrismMesh_1y1qc") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="SmallHouse/VanishingAtticWall" unique_id=906948618] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.00728512, 0.187294, 0.0145988) +shape = SubResource("BoxShape3D_7xg2x") + +[node name="GPUParticlesCollisionBox3D" type="GPUParticlesCollisionBox3D" parent="SmallHouse/VanishingAtticWall" unique_id=1709648835] +size = Vector3(0, 0, 0) + +[node name="VanishingAtticWall2" parent="SmallHouse" unique_id=1480280158 instance=ExtResource("4_haupn")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.149, 15.558, -25.0167) +script = null + +[node name="MeshInstance3D2" type="MeshInstance3D" parent="SmallHouse/VanishingAtticWall2" unique_id=102166316] +mesh = SubResource("PrismMesh_1y1qc") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="SmallHouse/VanishingAtticWall2" unique_id=1744624106] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.00728512, 0.187294, 0.0145988) +shape = SubResource("BoxShape3D_7xg2x") + +[node name="GPUParticlesCollisionBox3D" type="GPUParticlesCollisionBox3D" parent="SmallHouse/VanishingAtticWall2" unique_id=533423414] +size = Vector3(0, 0, 0) + +[node name="VanishingFloor2" parent="SmallHouse" unique_id=456617132 instance=ExtResource("4_haupn")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 8, 0) +script = null + +[node name="FloorMesh" type="MeshInstance3D" parent="SmallHouse/VanishingFloor2" unique_id=11774147] +transform = Transform3D(50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0) +mesh = SubResource("BoxMesh_ky3fl") +skeleton = NodePath("") + +[node name="FloorCollision" type="CollisionShape3D" parent="SmallHouse/VanishingFloor2" unique_id=1646207066] +transform = Transform3D(50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0) +shape = SubResource("BoxShape3D_weq1m") + +[node name="GPUParticlesCollisionBox3D" type="GPUParticlesCollisionBox3D" parent="SmallHouse/VanishingFloor2" unique_id=1517166755] +size = Vector3(0, 0, 0) + +[node name="Label" type="Node" parent="." unique_id=1910921783] + +[node name="DoorLocked" type="Node" parent="Label" unique_id=1884586983] + +[node name="DoorLocked" type="Label3D" parent="Label/DoorLocked" unique_id=769951851] +transform = Transform3D(-1, 8.74228e-08, 3.82137e-15, 0, -4.37114e-08, 1, 8.74228e-08, 1, 4.37114e-08, 36.9855, 0.102801, 77.6766) +text = "Locked +" +font_size = 300 + +[node name="WallBreakable" type="Node" parent="Label" unique_id=2117542473] + +[node name="WallBreakable" type="Label3D" parent="Label/WallBreakable" unique_id=817920351] +transform = Transform3D(-1, 8.74228e-08, 3.82137e-15, 0, -4.37114e-08, 1, 8.74228e-08, 1, 4.37114e-08, 36.9855, 0.102801, 87.6779) +text = "Breakable +" +font_size = 200 + +[node name="Room" type="Node" parent="Label" unique_id=223147729] + +[node name="LivingRoom" type="Label3D" parent="Label/Room" unique_id=1604098212] +transform = Transform3D(-1, 8.74228e-08, 3.82137e-15, 0, -4.37114e-08, 1, 8.74228e-08, 1, 4.37114e-08, -0.235203, -0.336801, 77.6766) +text = "Living Room +" +font_size = 500 + +[node name="Kitchen" type="Label3D" parent="Label/Room" unique_id=387960973] +transform = Transform3D(-1, 8.74228e-08, 3.82137e-15, 0, -4.37114e-08, 1, 8.74228e-08, 1, 4.37114e-08, 34.3054, 0.102802, 68.4795) +text = "Kitchen +" +font_size = 500 + +[node name="Pantry" type="Label3D" parent="Label/Room" unique_id=1583887922] +transform = Transform3D(-4.37114e-08, 1, 4.37114e-08, 0, -4.37114e-08, 1, 1, 4.37114e-08, 1.91069e-15, 37.8548, 0.199034, 82.8831) +text = "Pantry +" +font_size = 400 + +[node name="WineCellar?" type="Label3D" parent="Label/Room" unique_id=719213826] +transform = Transform3D(-4.37114e-08, -1, -4.37114e-08, 0, -4.37114e-08, 1, -1, 4.37114e-08, 1.91069e-15, 32.8734, -13.4005, 89.6643) +text = "Wine Cellar?" +font_size = 500 + +[node name="Bar" type="Label3D" parent="Label/Room" unique_id=1492633817] +transform = Transform3D(-4.37114e-08, 1, 4.37114e-08, 0, -4.37114e-08, 1, 1, 4.37114e-08, 1.91069e-15, 41.6648, 5.0575, 84.0149) +text = "Bar +" +font_size = 500 + +[node name="Deck" type="Label3D" parent="Label/Room" unique_id=1608776948] +transform = Transform3D(-1, 8.74228e-08, 3.82137e-15, 0, -4.37114e-08, 1, 8.74228e-08, 1, 4.37114e-08, 35.6457, 5.25084, 53.6016) +text = "Deck +" +font_size = 500 + +[node name="Porch" type="Label3D" parent="Label/Room" unique_id=314013661] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 7.65712, 0.825385, 112.405) +text = "Porch +" +font_size = 500 + +[node name="Floors" type="Node" parent="." unique_id=1356148072] + +[node name="Basement" type="Node3D" parent="Floors" unique_id=1303396902] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 109.722) + +[node name="Floors" type="Node3D" parent="Floors/Basement" unique_id=312001252] + +[node name="Stairs" type="CSGBox3D" parent="Floors/Basement/Floors" unique_id=2105959722] +transform = Transform3D(-4.37114e-08, 0.573576, -0.819152, 0, 0.819152, 0.573576, 1, 2.50718e-08, -3.58063e-08, -51.7679, -1.26833, -6.19321) +use_collision = true +size = Vector3(2.36879, 0.1, 4.4498) + +[node name="SecretStairFloor" type="CSGBox3D" parent="Floors/Basement/Floors" unique_id=440697484] +transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -49.8917, -2.54227, -7.971) +use_collision = true +size = Vector3(5.95264, 0.1, 7.45055) +material = SubResource("StandardMaterial3D_1mhcx") + +[node name="WineCellar" type="Node3D" parent="Floors/Basement/Floors" unique_id=966678770] + +[node name="Floor3" type="CSGBox3D" parent="Floors/Basement/Floors/WineCellar" unique_id=1100947225] +transform = Transform3D(-4.37114e-08, -0.5, 0.866025, 0, 0.866025, 0.5, -1, 2.18557e-08, -3.78552e-08, 30.0041, -2.24426, -12.6111) +use_collision = true +size = Vector3(3, 0.1, 8.99851) +material = SubResource("StandardMaterial3D_wrhli") + +[node name="Floor4" type="CSGBox3D" parent="Floors/Basement/Floors/WineCellar" unique_id=39519860] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 23.5532, -4.49579, -14.4005) +use_collision = true +size = Vector3(5.24463, 0.1, 6.85379) +material = SubResource("StandardMaterial3D_wrhli") + +[node name="Floor5" type="CSGBox3D" parent="Floors/Basement/Floors/WineCellar" unique_id=24225115] +transform = Transform3D(1, 0, 0, 0, 0.866025, 0.5, 0, -0.5, 0.866025, 22.5742, -6.74431, -21.6967) +use_collision = true +size = Vector3(3, 0.1, 8.99851) +material = SubResource("StandardMaterial3D_wrhli") + +[node name="Floor6" type="CSGBox3D" parent="Floors/Basement/Floors/WineCellar" unique_id=122636012] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 23.9849, -8.87199, -28.2377) +use_collision = true +size = Vector3(5.24463, 0.1, 5.9903) +material = SubResource("StandardMaterial3D_wrhli") + +[node name="Floor7" type="CSGBox3D" parent="Floors/Basement/Floors/WineCellar" unique_id=1160816528] +transform = Transform3D(-4.37114e-08, 0.5, -0.866025, 0, 0.866025, 0.5, 1, 2.18557e-08, -3.78552e-08, 30.8582, -11.1195, -29.4231) +use_collision = true +size = Vector3(3, 0.1, 8.99851) +material = SubResource("StandardMaterial3D_wrhli") + +[node name="FloorBasementLanding" type="CSGBox3D" parent="Floors/Basement/Floors/WineCellar" unique_id=1556592563] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30.4794, -13.4927, -20.9418) +use_collision = true +size = Vector3(18.9973, 0.1, 19.8405) +material = SubResource("StandardMaterial3D_hss5d") + +[node name="Walls" type="Node3D" parent="Floors/Basement" unique_id=1167774018] + +[node name="WallNormal" type="CSGBox3D" parent="Floors/Basement/Walls" unique_id=1567158203] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 30.5036, -6.71356, -30.9513) +cast_shadow = 0 +use_collision = true +size = Vector3(0.1, 13.5114, 18.9985) +material = SubResource("StandardMaterial3D_yk4pc") + +[node name="WallNormal2" type="CSGBox3D" parent="Floors/Basement/Walls" unique_id=1442252325] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20.9643, -6.71356, -21.0033) +cast_shadow = 0 +use_collision = true +size = Vector3(0.1, 13.5114, 19.9709) +material = SubResource("StandardMaterial3D_ud8u0") + +[node name="WallNormal3" type="CSGBox3D" parent="Floors/Basement/Walls" unique_id=1632668414] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 30.5036, -6.71356, -10.9842) +cast_shadow = 0 +use_collision = true +size = Vector3(0.1, 13.5114, 18.9985) +material = SubResource("StandardMaterial3D_v3sg1") + +[node name="SecretStairWall" type="CSGBox3D" parent="Floors/Basement/Walls" unique_id=374794461] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -49.8567, -1.2542, -5) +cast_shadow = 0 +use_collision = true +size = Vector3(0.1, 2.51509, 7.42572) +material = SubResource("StandardMaterial3D_qeouc") + +[node name="SecretStairWall2" type="CSGBox3D" parent="Floors/Basement/Walls" unique_id=1628032682] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -53.6108, -1.2392, -7.94719) +cast_shadow = 0 +use_collision = true +size = Vector3(0.101758, 2.55769, 5.995) +material = SubResource("StandardMaterial3D_qeouc") + +[node name="SecretStairWall3" type="CSGBox3D" parent="Floors/Basement/Walls" unique_id=2007940734] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -49.8588, -1.27901, -10.9856) +cast_shadow = 0 +use_collision = true +size = Vector3(0.101758, 2.51412, 7.46624) +material = SubResource("StandardMaterial3D_qeouc") + +[node name="SecretStairWall4" type="CSGBox3D" parent="Floors/Basement/Walls" unique_id=1782956069] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -46.1857, -1.30511, -7.94719) +cast_shadow = 0 +use_collision = true +size = Vector3(0.101758, 2.55556, 5.995) +material = SubResource("StandardMaterial3D_qeouc") + +[node name="Railing" type="CSGBox3D" parent="Floors/Basement" unique_id=93921893] +transform = Transform3D(0.866025, -0.5, 0, 0.5, 0.866025, 0, 0, 0, 1, 29.9267, -1.76424, -14.0315) +use_collision = true +size = Vector3(9.12388, 0.81697, 0.185059) +material = SubResource("StandardMaterial3D_rdslv") + +[node name="Railing2" type="CSGBox3D" parent="Floors/Basement" unique_id=370548998] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 33.9765, 0.450257, -17.6357) +use_collision = true +size = Vector3(7.39464, 0.81697, 0.185059) +material = SubResource("StandardMaterial3D_rdslv") + +[node name="Railing3" type="CSGBox3D" parent="Floors/Basement" unique_id=1169883849] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 26.0779, -4.0352, -15.9694) +use_collision = true +size = Vector3(3.70262, 0.81697, 0.185059) +material = SubResource("StandardMaterial3D_rdslv") + +[node name="Railing4" type="CSGBox3D" parent="Floors/Basement" unique_id=1240935072] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 25.0282, -4.0352, -17.7297) +use_collision = true +size = Vector3(2.27731, 0.81697, 0.185059) +material = SubResource("StandardMaterial3D_rdslv") + +[node name="Railing5" type="CSGBox3D" parent="Floors/Basement" unique_id=1198350527] +transform = Transform3D(-3.78552e-08, -2.18557e-08, 1, -0.5, 0.866025, 0, -0.866025, -0.5, -4.37114e-08, 23.9839, -6.26486, -21.7907) +use_collision = true +size = Vector3(9.11967, 0.81697, 0.185059) +material = SubResource("StandardMaterial3D_rdslv") + +[node name="FirstFloor" type="Node3D" parent="Floors" unique_id=510067310] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 109.722) + +[node name="Floors" type="Node3D" parent="Floors/FirstFloor" unique_id=1523100442] + +[node name="FloorEntryway" type="CSGBox3D" parent="Floors/FirstFloor/Floors" unique_id=976427451] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.413099, 0.0247612) +use_collision = true +size = Vector3(6, 0.794589, 10.1345) +material = SubResource("StandardMaterial3D_b3mh7") + +[node name="Stairs" type="Node3D" parent="Floors/FirstFloor/Floors" unique_id=1500849575] + +[node name="Stairs" type="CSGBox3D" parent="Floors/FirstFloor/Floors/Stairs" unique_id=968030436 groups=["fixable"]] +transform = Transform3D(-4.37114e-08, 0.573576, -0.819152, 0, 0.819152, 0.573576, 1, 2.50718e-08, -3.58063e-08, -51.329, 1.25, -1.62948) +use_collision = true +size = Vector3(3, 0.1, 4.39003) +material = SubResource("StandardMaterial3D_xohet") + +[node name="StairHole" type="CSGPolygon3D" parent="Floors/FirstFloor/Floors/Stairs/Stairs" unique_id=971072396] +transform = Transform3D(1, -1.42109e-14, 7.10543e-14, -3.37508e-14, -2.38419e-07, -1, -2.13163e-14, 1, -2.38419e-07, 0.345337, -0.0861702, 0.636986) +operation = 2 +polygon = PackedVector2Array(-1.32923, -1.46205, -1.79573, -0.719448, -1.3173, 0.569752, -0.21021, 1.29283, 0.692273, 0.837757, 0.932903, -0.770374, 0.229406, -1.51431, 1.02268, -2.29963, -0.397259, -2.4836, -1.34307, -2.06372) + +[node name="StairDebris" type="CSGPolygon3D" parent="Floors/FirstFloor/Floors/Stairs/Stairs" unique_id=641226963] +transform = Transform3D(1, -3.19744e-14, 4.27436e-15, -1.06581e-14, -0.557745, -0.830012, -1.06581e-14, 0.830012, -0.557745, 0.334404, -1.59173, 0.210793) +polygon = PackedVector2Array(-1.32923, -1.46205, -1.79573, -0.719448, -1.3173, 0.569752, -0.21021, 1.29283, 0.692273, 0.837757, 0.932903, -0.770374, 0.229406, -1.51431, 1.02268, -2.29963, -0.397259, -2.4836, -1.34307, -2.06372) +depth = 0.2 +material = SubResource("StandardMaterial3D_ervxo") + +[node name="StairsLanding" type="CSGBox3D" parent="Floors/FirstFloor/Floors/Stairs" unique_id=2101409773] +transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -55.113, 2.52789, -7.971) +use_collision = true +size = Vector3(5.95264, 0.1, 4.03) +material = SubResource("StandardMaterial3D_xohet") + +[node name="Stairs2" type="CSGBox3D" parent="Floors/FirstFloor/Floors/Stairs" unique_id=397152529] +transform = Transform3D(-4.37114e-08, -0.573576, -0.819152, 0, 0.819152, -0.573576, 1, -2.50718e-08, -3.58063e-08, -51.4473, 3.754, -9.45) +use_collision = true +size = Vector3(2.98975, 0.1, 4.37958) +material = SubResource("StandardMaterial3D_xohet") + +[node name="UnderStairs" type="CSGBox3D" parent="Floors/FirstFloor/Floors/Stairs" unique_id=637217843] +transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -53.4027, 0, -7.971) +use_collision = true +size = Vector3(5.95264, 0.1, 7.45055) +material = SubResource("StandardMaterial3D_xohet") + +[node name="CSGBox3D" type="CSGBox3D" parent="Floors/FirstFloor/Floors/Stairs/UnderStairs" unique_id=617399160] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.54784, 0.134579, -0.813198) +operation = 2 +size = Vector3(1.92334, 0.473145, 1.93976) + +[node name="LivingRoom" type="Node3D" parent="Floors/FirstFloor/Floors" unique_id=245531178] + +[node name="FloorLivingRoom2" type="CSGBox3D" parent="Floors/FirstFloor/Floors/LivingRoom" unique_id=1844541804] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18, 0, -26) +use_collision = true +size = Vector3(6, 0.1, 30) +material = SubResource("StandardMaterial3D_xohet") + +[node name="FloorBayWindow" type="CSGPolygon3D" parent="Floors/FirstFloor/Floors/LivingRoom" unique_id=1631330351] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, -2.38221, -0.550107, -43.3113) +use_collision = true +polygon = PackedVector2Array(-12.5, 2, -7.5, -2, -1.5, -5, 6.5, -4.965, 12.5, -2, 17.5, 2.006) +depth = 0.1 +material = SubResource("StandardMaterial3D_d6mox") + +[node name="Kitchen" type="Node3D" parent="Floors/FirstFloor/Floors" unique_id=520109499] + +[node name="FloorKitchen" type="CSGBox3D" parent="Floors/FirstFloor/Floors/Kitchen" unique_id=469002001] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 32.5305, 0, -41) +use_collision = true +size = Vector3(23.0609, 0.1, 20) +material = SubResource("StandardMaterial3D_xohet") + +[node name="FloorKitchen2" type="CSGBox3D" parent="Floors/FirstFloor/Floors/Kitchen" unique_id=203252754] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 38.9557, 0, -21.0554) +use_collision = true +size = Vector3(10.1504, 0.1, 20.111) +material = SubResource("StandardMaterial3D_xohet") + +[node name="Hallway" type="Node3D" parent="Floors/FirstFloor/Floors" unique_id=1230932140] + +[node name="FloorHallwayNorth" type="CSGBox3D" parent="Floors/FirstFloor/Floors/Hallway" unique_id=1213318895 groups=["wood_floor"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21.6433, 0, -8) +use_collision = true +size = Vector3(130.701, 0.1, 6) +material = SubResource("StandardMaterial3D_xohet") + +[node name="FloorHallwayEast" type="StaticBody3D" parent="Floors/FirstFloor/Floors/Hallway" unique_id=225856074 groups=["wood_floor"]] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -46.684, 0, -97.9169) + +[node name="MeshInstance3D" type="MeshInstance3D" parent="Floors/FirstFloor/Floors/Hallway/FloorHallwayEast" unique_id=638622810] +mesh = SubResource("BoxMesh_qcdjg") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="Floors/FirstFloor/Floors/Hallway/FloorHallwayEast" unique_id=1964915473] +shape = SubResource("BoxShape3D_od1nc") + +[node name="FloorHallwaySouth" type="CSGBox3D" parent="Floors/FirstFloor/Floors/Hallway" unique_id=1739084297] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21.8936, 0, -187.869) +use_collision = true +size = Vector3(131.202, 0.1, 6) +material = SubResource("StandardMaterial3D_xohet") + +[node name="FloorHallwayWest" type="CSGBox3D" parent="Floors/FirstFloor/Floors/Hallway" unique_id=2115111088] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 84, 0, -97.917) +use_collision = true +size = Vector3(185.929, 0.1, 6) +material = SubResource("StandardMaterial3D_xohet") + +[node name="FloorPorch" type="CSGBox3D" parent="Floors/FirstFloor/Floors" unique_id=1560743870] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15.4737, 0.413099, 0.0252242) +use_collision = true +size = Vector3(25, 0.795, 10.1362) +material = SubResource("StandardMaterial3D_b3mh7") + +[node name="FloorPorch2" type="CSGBox3D" parent="Floors/FirstFloor/Floors" unique_id=1290308157] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -15.4947, 0.413099, 0.0251083) +use_collision = true +size = Vector3(25, 0.795, 10.135) +material = SubResource("StandardMaterial3D_b3mh7") + +[node name="DeckStairs" type="CSGBox3D" parent="Floors/FirstFloor/Floors" unique_id=1388867549] +transform = Transform3D(1, 0, 0, 0, 0.819152, -0.573576, 0, 0.573576, 0.819152, 44.794, 2.58147, -33.1621) +use_collision = true +size = Vector3(1.58978, 0.1, 9.09299) +material = SubResource("StandardMaterial3D_xohet") + +[node name="Walls" type="Node3D" parent="Floors/FirstFloor" unique_id=239340864] + +[node name="LivingRoom" type="Node3D" parent="Floors/FirstFloor/Walls" unique_id=1087355883] + +[node name="TestWall" type="StaticBody3D" parent="Floors/FirstFloor/Walls/LivingRoom" unique_id=699613340] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -15.0356, 2.27952, -26.1248) + +[node name="MeshInstance3D" type="MeshInstance3D" parent="Floors/FirstFloor/Walls/LivingRoom/TestWall" unique_id=818806693] +mesh = SubResource("BoxMesh_u35dn") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="Floors/FirstFloor/Walls/LivingRoom/TestWall" unique_id=1184992138] +visible = false +shape = SubResource("BoxShape3D_u35dn") + +[node name="WallLivingRoom" type="CSGBox3D" parent="Floors/FirstFloor/Walls/LivingRoom" unique_id=923301385] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -15.0356, 2.27952, -26.1248) +visible = false +cast_shadow = 0 +use_collision = true +size = Vector3(0.1, 5.50382, 30.3492) +material = SubResource("StandardMaterial3D_gg604") + +[node name="WallLivingRoom2" type="CSGBox3D" parent="Floors/FirstFloor/Walls/LivingRoom" unique_id=185839484] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21, 2.52424, -21) +cast_shadow = 0 +use_collision = true +size = Vector3(0.1, 4.9515, 20) +material = SubResource("StandardMaterial3D_gg604") + +[node name="WallBayWindow" type="CSGBox3D" parent="Floors/FirstFloor/Walls/LivingRoom" unique_id=1178435549] +transform = Transform3D(0.622515, 0, -0.782608, 0, 1, 0, 0.782608, 0, 0.622515, -12.4652, 4.71211, -43.3025) +cast_shadow = 0 +use_collision = true +size = Vector3(0.1, 10.5357, 6.54211) +material = SubResource("StandardMaterial3D_gg604") + +[node name="BayWindow" type="CSGBox3D" parent="Floors/FirstFloor/Walls/LivingRoom/WallBayWindow" unique_id=1247166529] +transform = Transform3D(-1.78814e-07, 0, -0.999985, 0, 1, 0, 0.999985, 0, -1.78814e-07, 0.0426102, -0.440341, -0.0342445) +size = Vector3(5.60464, 7.16168, 0.23523) +material = ExtResource("15_rrkox") + +[node name="WallBayWindow2" type="CSGBox3D" parent="Floors/FirstFloor/Walls/LivingRoom" unique_id=396089168] +transform = Transform3D(0.446198, 0, -0.894934, 0, 1, 0, 0.894934, 0, 0.446198, -6.90508, 4.71293, -46.8359) +cast_shadow = 0 +use_collision = true +size = Vector3(0.1, 10.5374, 6.75055) +material = SubResource("StandardMaterial3D_gg604") + +[node name="CSGBox3D2" type="CSGBox3D" parent="Floors/FirstFloor/Walls/LivingRoom/WallBayWindow2" unique_id=968319279] +transform = Transform3D(-1.49012e-07, 0, -0.999985, 0, 1, 0, 0.999985, 0, -1.49012e-07, 0.0215569, -0.440617, -0.0342445) +size = Vector3(5.60464, 7.16113, 0.277344) +material = ExtResource("15_rrkox") + +[node name="WallBayWindow3" type="CSGBox3D" parent="Floors/FirstFloor/Walls/LivingRoom" unique_id=1872542560] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -0.0080853, 4.70878, -48.3288) +cast_shadow = 0 +use_collision = true +size = Vector3(0.1, 10.5291, 7.83269) +material = SubResource("StandardMaterial3D_gg604") + +[node name="CSGBox3D" type="CSGBox3D" parent="Floors/FirstFloor/Walls/LivingRoom/WallBayWindow3" unique_id=815347371] +transform = Transform3D(-1.49012e-07, 0, -0.999985, 0, 1, 0, 0.999985, 0, -1.49012e-07, 0.0215569, -0.440617, -0.0342445) +size = Vector3(5.60464, 7.16113, 0.277344) +material = ExtResource("15_rrkox") + +[node name="WallBayWindow4" type="CSGBox3D" parent="Floors/FirstFloor/Walls/LivingRoom" unique_id=1961271713] +transform = Transform3D(0.446198, 0, 0.894934, 0, 1, 0, -0.894934, 0, 0.446198, 6.9, 4.7088, -46.839) +cast_shadow = 0 +use_collision = true +size = Vector3(0.1, 10.5291, 6.75055) +material = SubResource("StandardMaterial3D_gg604") + +[node name="CSGBox3D" type="CSGBox3D" parent="Floors/FirstFloor/Walls/LivingRoom/WallBayWindow4" unique_id=869253463] +transform = Transform3D(-1.49012e-07, 0, -0.999985, 0, 1, 0, 0.999985, 0, -1.49012e-07, 0.0215569, -0.440617, -0.0342445) +size = Vector3(5.60464, 7.16113, 0.277344) +material = ExtResource("15_rrkox") + +[node name="WallBayWindow5" type="CSGBox3D" parent="Floors/FirstFloor/Walls/LivingRoom" unique_id=1565300020] +transform = Transform3D(0.622515, 0, 0.782608, 0, 1, 0, -0.782608, 0, 0.622515, 12.49, 4.70831, -43.3119) +cast_shadow = 0 +use_collision = true +size = Vector3(0.1, 10.5281, 6.57281) +material = SubResource("StandardMaterial3D_gg604") + +[node name="CSGBox3D" type="CSGBox3D" parent="Floors/FirstFloor/Walls/LivingRoom/WallBayWindow5" unique_id=279434217] +transform = Transform3D(-1.49012e-07, 0, -0.999985, 0, 1, 0, 0.999985, 0, -1.49012e-07, 0.0215569, -0.440617, -0.0342445) +size = Vector3(5.60464, 7.16113, 0.277344) +material = ExtResource("15_rrkox") + +[node name="Kitchen" type="Node3D" parent="Floors/FirstFloor/Walls" unique_id=1136152811] + +[node name="WallNormal8" type="CSGBox3D" parent="Floors/FirstFloor/Walls/Kitchen" unique_id=712547093] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 39.9698, 2.5, -21) +cast_shadow = 0 +use_collision = true +size = Vector3(0.1, 5, 20) +material = SubResource("StandardMaterial3D_gg604") + +[node name="WallNormal10" type="CSGBox3D" parent="Floors/FirstFloor/Walls/Kitchen" unique_id=1608633562] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 30.5036, 2.51875, -30.9513) +cast_shadow = 0 +use_collision = true +size = Vector3(0.1, 4.96249, 18.9985) +material = SubResource("StandardMaterial3D_gg604") + +[node name="PantryDoorframe" type="CSGBox3D" parent="Floors/FirstFloor/Walls/Kitchen/WallNormal10" unique_id=1365758532] +transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0.0115166, -0.98478, 6.33755) +operation = 2 +size = Vector3(2, 3, 1) + +[node name="WallNormal11" type="CSGBox3D" parent="Floors/FirstFloor/Walls/Kitchen" unique_id=1347770737] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 44.035, 2.50682, -31.0155) +cast_shadow = 0 +use_collision = true +size = Vector3(0.1, 5.01364, 39.9655) +material = SubResource("StandardMaterial3D_gg604") + +[node name="WallNormal12" type="CSGBox3D" parent="Floors/FirstFloor/Walls/Kitchen" unique_id=2137008076] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 33.9023, 2.5, -26.2167) +cast_shadow = 0 +use_collision = true +size = Vector3(0.1, 5, 9.56665) +material = SubResource("StandardMaterial3D_gg604") + +[node name="WallNormal13" type="CSGBox3D" parent="Floors/FirstFloor/Walls/Kitchen" unique_id=156368456] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 36.9082, 2.5, -21.381) +cast_shadow = 0 +use_collision = true +size = Vector3(0.1, 5, 6.09453) +material = SubResource("StandardMaterial3D_gg604") + +[node name="SecretDoor" type="CSGBox3D" parent="Floors/FirstFloor/Walls/Kitchen/WallNormal13" unique_id=1116379817] +transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0.0115166, -0.960562, 0.0366745) +operation = 2 +size = Vector3(2, 3, 1) + +[node name="WallNormal14" type="CSGBox3D" parent="Floors/FirstFloor/Walls/Kitchen" unique_id=1573113654] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 32.524, 2.50787, -50.922) +cast_shadow = 0 +use_collision = true +size = Vector3(0.1, 5.01573, 23.1394) +material = SubResource("StandardMaterial3D_gg604") + +[node name="BreakableWall" parent="Floors/FirstFloor/Walls/Kitchen" unique_id=257615849 groups=["interactable"] instance=ExtResource("16_scr2g")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 36.945, 1.539, -21.383) + +[node name="Stairs" type="Node3D" parent="Floors/FirstFloor/Walls" unique_id=1811562707] + +[node name="WallStairwell" type="CSGBox3D" parent="Floors/FirstFloor/Walls/Stairs" unique_id=1672205183] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -53.3305, 2.52136, -5) +cast_shadow = 0 +use_collision = true +size = Vector3(0.1, 5.04065, 7.59533) +material = SubResource("StandardMaterial3D_gg604") + +[node name="WallStairwell2" type="CSGBox3D" parent="Floors/FirstFloor/Walls/Stairs" unique_id=1743764549] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -57.1694, 5.03123, -7.94719) +cast_shadow = 0 +use_collision = true +size = Vector3(0.101758, 10.06, 5.995) +material = SubResource("StandardMaterial3D_gg604") + +[node name="WallStairwell3" type="CSGBox3D" parent="Floors/FirstFloor/Walls/Stairs" unique_id=2116509326] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -53.4174, 5.03123, -10.9856) +cast_shadow = 0 +use_collision = true +size = Vector3(0.101758, 10.06, 7.46624) +material = SubResource("StandardMaterial3D_gg604") + +[node name="Hallway" type="Node3D" parent="Floors/FirstFloor/Walls" unique_id=447074145] + +[node name="WallNormal7" type="CSGBox3D" parent="Floors/FirstFloor/Walls/Hallway" unique_id=700464588] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 51.5307, 2.51709, -11.085) +cast_shadow = 0 +use_collision = true +size = Vector3(0.1, 5.0332, 15.0343) +material = SubResource("StandardMaterial3D_gg604") + +[node name="WallNormal9" type="CSGBox3D" parent="Floors/FirstFloor/Walls/Hallway" unique_id=2026313813] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 30.5036, 2.5223, -11.0624) +cast_shadow = 0 +use_collision = true +size = Vector3(0.1, 4.95542, 18.9985) +material = SubResource("StandardMaterial3D_gg604") + +[node name="WallNormal6" type="CSGBox3D" parent="Floors/FirstFloor/Walls/Hallway" unique_id=2049999822] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -29.4234, 2.52124, -11) +cast_shadow = 0 +use_collision = true +size = Vector3(0.1, 5.0415, 28.861) +material = SubResource("StandardMaterial3D_gg604") + +[node name="WallHall2" type="CSGBox3D" parent="Floors/FirstFloor/Walls/Hallway" unique_id=976480817] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 44.9984, 2.52136, -5) +cast_shadow = 0 +use_collision = true +size = Vector3(0.1, 5.04065, 83.9966) +material = SubResource("StandardMaterial3D_gg604") + +[node name="WallHall1" type="CSGBox3D" parent="Floors/FirstFloor/Walls/Hallway" unique_id=186587488] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -26.2511, 2.52636, -5) +cast_shadow = 0 +use_collision = true +size = Vector3(0.1, 5.03235, 46.5763) +material = SubResource("StandardMaterial3D_gg604") + +[node name="WallEntry" type="CSGBox3D" parent="Floors/FirstFloor/Walls" unique_id=449671558] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 2.521, -2.02) +cast_shadow = 0 +use_collision = true +collision_layer = 3 +collision_mask = 3 +size = Vector3(0.1, 5, 6.05713) +material = SubResource("StandardMaterial3D_gg604") + +[node name="WallEntry2" type="CSGBox3D" parent="Floors/FirstFloor/Walls" unique_id=48184536] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 2.521, -2.02) +cast_shadow = 0 +use_collision = true +collision_layer = 3 +collision_mask = 3 +size = Vector3(0.1, 5, 6.05713) +material = SubResource("StandardMaterial3D_gg604") + +[node name="WallHallSouth" type="CSGBox3D" parent="Floors/FirstFloor/Walls" unique_id=1522368195] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 18.9035, 2.47717, -190.592) +cast_shadow = 0 +use_collision = true +size = Vector3(0.1, 5.03235, 137.17) +material = SubResource("StandardMaterial3D_gg604") + +[node name="WallHallWest" type="CSGBox3D" parent="Floors/FirstFloor/Walls" unique_id=1632520666] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 86.9395, 2.47717, -97.7615) +cast_shadow = 0 +use_collision = true +size = Vector3(0.1, 5.03235, 185.587) +material = SubResource("StandardMaterial3D_gg604") + +[node name="WallHallEast" type="CSGBox3D" parent="Floors/FirstFloor/Walls" unique_id=7356025] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -49.64, 2.477, -100.746) +cast_shadow = 0 +use_collision = true +size = Vector3(0.1, 5.03235, 179.618) +material = SubResource("StandardMaterial3D_gg604") + +[node name="Doors" type="Node3D" parent="Floors/FirstFloor" unique_id=10493117] + +[node name="PantryDoor" parent="Floors/FirstFloor/Doors" unique_id=695551290 instance=ExtResource("17_htdsh")] +transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 35.8605, 1.51845, -29.967) + +[node name="SupportPillar" type="CSGBox3D" parent="Floors/FirstFloor" unique_id=84950837] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -27.4866, 2.87242, 4.59374) +size = Vector3(1, 4.1655, 1) +material = SubResource("StandardMaterial3D_jm76j") + +[node name="SupportPillar2" type="CSGBox3D" parent="Floors/FirstFloor" unique_id=2124809223] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 27.487, 2.872, 4.594) +size = Vector3(1, 4.1655, 1) +material = SubResource("StandardMaterial3D_jm76j") + +[node name="SecondFloor" type="Node3D" parent="Floors" unique_id=1799153385] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 109.722) +visible = false + +[node name="Walls" type="Node3D" parent="Floors/SecondFloor" unique_id=464376303] + +[node name="Bar" type="Node3D" parent="Floors/SecondFloor/Walls" unique_id=1384130921] + +[node name="WallBar" type="CSGBox3D" parent="Floors/SecondFloor/Walls/Bar" unique_id=1684567609] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 44.035, 7.54637, -31.0155) +cast_shadow = 0 +use_collision = true +size = Vector3(0.1, 5.01364, 39.9655) +material = SubResource("StandardMaterial3D_gg604") + +[node name="DeckDoorFrame" type="CSGBox3D" parent="Floors/SecondFloor/Walls/Bar/WallBar" unique_id=1699717112] +transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0.0115166, -0.98478, -9.82726) +operation = 2 +size = Vector3(2, 3, 1) +material = SubResource("StandardMaterial3D_8p73l") + +[node name="DeckDoor" type="Node3D" parent="Floors/SecondFloor/Walls/Bar/WallBar" unique_id=897728534] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.982579, -9.83566) + +[node name="Hinge" type="Node3D" parent="Floors/SecondFloor/Walls/Bar/WallBar/DeckDoor" unique_id=156283184] +transform = Transform3D(-3.6199901e-06, 0, 1, 0, 1, 0, -1, 0, -3.6199901e-06, 0.0206223, 0.550661, 1.0031) + +[node name="Door" type="StaticBody3D" parent="Floors/SecondFloor/Walls/Bar/WallBar/DeckDoor/Hinge" unique_id=2134509987 node_paths=PackedStringArray("animation_player") groups=["interactable"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.00093, -0.548608, -0.00860977) +script = ExtResource("18_qrhkd") +animation_player = NodePath("../../AnimationPlayer") + +[node name="MeshInstance3D" type="MeshInstance3D" parent="Floors/SecondFloor/Walls/Bar/WallBar/DeckDoor/Hinge/Door" unique_id=144015770] +mesh = SubResource("BoxMesh_w4q5t") + +[node name="DoorCollision" type="CollisionShape3D" parent="Floors/SecondFloor/Walls/Bar/WallBar/DeckDoor/Hinge/Door" unique_id=690450459] +shape = SubResource("BoxShape3D_dmh7s") + +[node name="AnimationPlayer" type="AnimationPlayer" parent="Floors/SecondFloor/Walls/Bar/WallBar/DeckDoor" unique_id=1209474129] +root_node = NodePath("../Hinge") +libraries/ = SubResource("AnimationLibrary_xrnhw") + +[node name="WallBar2" type="CSGBox3D" parent="Floors/SecondFloor/Walls/Bar" unique_id=1738588434] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 32.5002, 7.52322, -50.922) +cast_shadow = 0 +use_collision = true +size = Vector3(0.1, 5.01082, 23.0102) +material = SubResource("StandardMaterial3D_gg604") + +[node name="BarSlidingGlassDoor" type="CSGBox3D" parent="Floors/SecondFloor/Walls/Bar/WallBar2" unique_id=899470586] +transform = Transform3D(-1.49012e-07, 0, -0.999985, 0, 1, 0, 0.999985, 0, -1.49012e-07, 0.0215569, -0.844816, 2.12107) +size = Vector3(5.03083, 2.84643, 0.277344) +material = ExtResource("15_rrkox") + +[node name="WallBar3" type="CSGBox3D" parent="Floors/SecondFloor/Walls/Bar" unique_id=1692088904] +transform = Transform3D(0.848048, 0, -0.529919, 0, 1, 0, 0.529919, 0, 0.848048, 18.0325, 7.52322, -46.113) +cast_shadow = 0 +use_collision = true +size = Vector3(0.1, 5.01082, 11.3625) +material = SubResource("StandardMaterial3D_gg604") + +[node name="WallHallNorth" type="CSGBox3D" parent="Floors/SecondFloor/Walls" unique_id=553605951] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 14.9388, 7.54569, -5.00083) +cast_shadow = 0 +use_collision = true +size = Vector3(0.1, 5.032, 144.116) +material = SubResource("StandardMaterial3D_gg604") + +[node name="Doorframe" type="CSGBox3D" parent="Floors/SecondFloor/Walls/WallHallNorth" unique_id=284340862] +transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0, -1.00702, -29.9388) +operation = 2 +size = Vector3(2, 3.03467, 1) + +[node name="Doorframe2" type="CSGBox3D" parent="Floors/SecondFloor/Walls/WallHallNorth" unique_id=537822992] +transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0, -1.00385, 0.0612001) +operation = 2 +size = Vector3(2, 3.02832, 1) + +[node name="WallBallroom" type="CSGBox3D" parent="Floors/SecondFloor/Walls" unique_id=2101606116] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -29.423, 7.546, -11.0707) +cast_shadow = 0 +use_collision = true +size = Vector3(0.1, 5.0415, 28.861) +material = SubResource("StandardMaterial3D_gg604") + +[node name="WallLivingRoom" type="CSGBox3D" parent="Floors/SecondFloor/Walls" unique_id=1642290785] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -15.0356, 7.50468, -26.1248) +cast_shadow = 0 +use_collision = true +size = Vector3(0.1, 5.08494, 30.3492) +material = SubResource("StandardMaterial3D_gg604") + +[node name="WallHallSouth" type="CSGBox3D" parent="Floors/SecondFloor/Walls" unique_id=1980099357] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 18.9035, 7.54569, -190.592) +cast_shadow = 0 +use_collision = true +size = Vector3(0.1, 5.03235, 137.17) +material = SubResource("StandardMaterial3D_gg604") + +[node name="WallHallWest" type="CSGBox3D" parent="Floors/SecondFloor/Walls" unique_id=1327734114] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 86.94, 7.55, -97.762) +cast_shadow = 0 +use_collision = true +size = Vector3(0.1, 5.03235, 185.587) +material = SubResource("StandardMaterial3D_gg604") + +[node name="WallHallEast" type="CSGBox3D" parent="Floors/SecondFloor/Walls" unique_id=806319066] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -49.64, 7.55, -100.746) +cast_shadow = 0 +use_collision = true +size = Vector3(0.1, 5.03235, 179.618) +material = SubResource("StandardMaterial3D_gg604") + +[node name="WallRoom" type="CSGBox3D" parent="Floors/SecondFloor/Walls" unique_id=876898308] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -22, 7.54, -0.412) +use_collision = true +size = Vector3(0.1, 5.032, 9.05905) +material = SubResource("StandardMaterial3D_k0h6o") + +[node name="WallRoom2" type="CSGBox3D" parent="Floors/SecondFloor/Walls" unique_id=922324597] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22, 7.54, -0.412) +use_collision = true +size = Vector3(0.1, 5.032, 9.05905) +material = SubResource("StandardMaterial3D_k0h6o") + +[node name="WallRoom3" type="CSGBox3D" parent="Floors/SecondFloor/Walls" unique_id=553551445] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0467453, 7.55196, 4.067) +use_collision = true +size = Vector3(44.01, 5.006, 0.1) +material = SubResource("StandardMaterial3D_k0h6o") + +[node name="RoomWindow" type="CSGBox3D" parent="Floors/SecondFloor/Walls/WallRoom3" unique_id=2055030131] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -18, 0.35, 0.0282822) +size = Vector3(2, 3.398, 0.2) +material = ExtResource("15_rrkox") + +[node name="RoomWindow2" type="CSGBox3D" parent="Floors/SecondFloor/Walls/WallRoom3" unique_id=1386711019] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9, 0.35, 0) +size = Vector3(2, 3.398, 0.2) +material = ExtResource("15_rrkox") + +[node name="RoomWindow3" type="CSGBox3D" parent="Floors/SecondFloor/Walls/WallRoom3" unique_id=1417355350] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.35, 0) +size = Vector3(2, 3.398, 0.2) +material = ExtResource("15_rrkox") + +[node name="RoomWindow4" type="CSGBox3D" parent="Floors/SecondFloor/Walls/WallRoom3" unique_id=1390824484] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9, 0.353, 0) +size = Vector3(2, 3.398, 0.2) +material = ExtResource("15_rrkox") + +[node name="RoomWindow5" type="CSGBox3D" parent="Floors/SecondFloor/Walls/WallRoom3" unique_id=1335333381] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18, 0.353, 0) +size = Vector3(2, 3.398, 0.2) +material = ExtResource("15_rrkox") + +[node name="WallRoom4" type="CSGBox3D" parent="Floors/SecondFloor/Walls" unique_id=967581149] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5, 7.54, -0.412) +size = Vector3(0.1, 5.032, 9.05905) +material = SubResource("StandardMaterial3D_k0h6o") + +[node name="WallRoom5" type="CSGBox3D" parent="Floors/SecondFloor/Walls" unique_id=1985257976] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5, 7.54, -0.412) +size = Vector3(0.1, 5.032, 9.05905) +material = SubResource("StandardMaterial3D_k0h6o") + +[node name="Floors" type="Node3D" parent="Floors/SecondFloor" unique_id=348598113] + +[node name="Deck" type="Node3D" parent="Floors/SecondFloor/Floors" unique_id=466512879] + +[node name="FloorDeck" type="CSGBox3D" parent="Floors/SecondFloor/Floors/Deck" unique_id=1407171682] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 41.5721, 5, -55.1791) +use_collision = true +size = Vector3(22.207, 0.5, 8.553) +material = SubResource("StandardMaterial3D_xohet") + +[node name="FloorDeck2" type="CSGBox3D" parent="Floors/SecondFloor/Floors/Deck" unique_id=188144604] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 48.3853, 4.9864, -43.9253) +use_collision = true +size = Vector3(8.578, 0.5, 14.151) +material = SubResource("StandardMaterial3D_xohet") + +[node name="DeckSupport" type="CSGCylinder3D" parent="Floors/SecondFloor/Floors/Deck" unique_id=677023871] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 52.1382, 2.36274, -58.9051) +use_collision = true +height = 5.36971 +material = SubResource("StandardMaterial3D_rhnq1") + +[node name="DeckSupport2" type="CSGCylinder3D" parent="Floors/SecondFloor/Floors/Deck" unique_id=296575351] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 31.0133, 2.36274, -58.9051) +use_collision = true +height = 5.36971 +material = SubResource("StandardMaterial3D_rhnq1") + +[node name="DeckSupport3" type="CSGCylinder3D" parent="Floors/SecondFloor/Floors/Deck" unique_id=280286402] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 52.1382, 2.36274, -37.3567) +use_collision = true +height = 5.36971 +material = SubResource("StandardMaterial3D_rhnq1") + +[node name="Floor" type="CSGBox3D" parent="Floors/SecondFloor/Floors" unique_id=1853469006] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -0.106325, 5, 0.65) +use_collision = true +size = Vector3(11.2443, 0.1, 59.1643) +material = SubResource("StandardMaterial3D_xohet") + +[node name="FloorBar" type="CSGPolygon3D" parent="Floors/SecondFloor/Floors" unique_id=2024673530] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 28.16, 4.95, -43.311) +use_collision = true +polygon = PackedVector2Array(-13.1582, 32.3677, -13.098, 2.055, -7.17648, -7.61656, 15.8737, -7.65931, 16.0242, 32.5579) +depth = 0.1 +material = SubResource("StandardMaterial3D_d6mox") + +[node name="FloorHallwayEast" type="CSGBox3D" parent="Floors/SecondFloor/Floors" unique_id=1616179542] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -46.684, 5, -97.8008) +use_collision = true +size = Vector3(185.698, 0.1, 6) +material = SubResource("StandardMaterial3D_xohet") + +[node name="FloorHallwayNorth" type="CSGBox3D" parent="Floors/SecondFloor/Floors" unique_id=781014673] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 44.9859, 5, -8.05314) +use_collision = true +size = Vector3(5.88298, 0.1, 84.0242) +material = SubResource("StandardMaterial3D_xohet") + +[node name="FloorHallwayNorth2" type="CSGBox3D" parent="Floors/SecondFloor/Floors" unique_id=1728180342] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -23.3115, 5, -8.05314) +use_collision = true +size = Vector3(5.88298, 0.1, 40.7517) +material = SubResource("StandardMaterial3D_xohet") + +[node name="FloorHallwayWest" type="CSGBox3D" parent="Floors/SecondFloor/Floors" unique_id=2037695448] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 84, 5, -97.801) +use_collision = true +size = Vector3(185.698, 0.1, 6) +material = SubResource("StandardMaterial3D_xohet") + +[node name="FloorHallwaySouth" type="CSGBox3D" parent="Floors/SecondFloor/Floors" unique_id=2051375901] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21.894, 5, -187.65) +use_collision = true +size = Vector3(131.202, 0.1, 6) +material = SubResource("StandardMaterial3D_xohet") + +[node name="FloorBallroom" type="CSGBox3D" parent="Floors/SecondFloor/Floors" unique_id=71242538] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -29.4072, 5, -26.2154) +use_collision = true +size = Vector3(28.6942, 0.1, 30.2053) +material = SubResource("StandardMaterial3D_xohet") + +[node name="TrapArea" type="Area3D" parent="Floors/SecondFloor/Floors" unique_id=412124725] +transform = Transform3D(-1, 0, -2.53518e-06, 0, 1, 0, 2.53518e-06, 0, -1, -2.83633, 7.50261, -7.965) +collision_mask = 4 +script = ExtResource("19_nwj3w") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="Floors/SecondFloor/Floors/TrapArea" unique_id=1616144741] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.49704, -0.0545154, -0.00576782) +shape = SubResource("BoxShape3D_dcfkh") + +[node name="FloorTrap" type="Node3D" parent="Floors/SecondFloor/Floors" unique_id=984263389] +transform = Transform3D(-1, 0, -2.5351817e-06, 0, 1, 0, 2.5351817e-06, 0, -1, -2.94668, 5, -7.965) + +[node name="Railing" type="CSGBox3D" parent="Floors/SecondFloor/Floors/FloorTrap" unique_id=1641810394] +transform = Transform3D(1, 0, -8.90101e-07, 0, 1, 0, 8.90101e-07, 0, 1, -2.95874, 0.659029, 3.05865) +use_collision = true +size = Vector3(5.92052, 1.40718, 0.185059) +material = SubResource("StandardMaterial3D_lnqlj") + +[node name="FloorTrapCSG" type="CSGBox3D" parent="Floors/SecondFloor/Floors/FloorTrap" unique_id=1808230321] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.96366, 0, 0.0339813) +use_collision = true +size = Vector3(5.9003, 0.1, 5.92533) +material = SubResource("StandardMaterial3D_g7vsf") + +[node name="AnimationPlayer" type="AnimationPlayer" parent="Floors/SecondFloor/Floors/FloorTrap" unique_id=715412041] +libraries/ = SubResource("AnimationLibrary_25bw3") + +[node name="Railing" type="CSGBox3D" parent="Floors/SecondFloor" unique_id=2038604218] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -8.97294, 5.65746, -11.0248) +use_collision = true +size = Vector3(12.0375, 1.40933, 0.185059) +material = SubResource("StandardMaterial3D_lnqlj") + +[node name="Railing2" type="CSGBox3D" parent="Floors/SecondFloor" unique_id=808017157] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 15.0494, 5.70988, -26.2023) +use_collision = true +size = Vector3(30.2036, 1.30532, 0.185059) +material = SubResource("StandardMaterial3D_lnqlj") + +[node name="Railing3" type="CSGBox3D" parent="Floors/SecondFloor" unique_id=215159224] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9.063, 5.66846, -11.0246) +use_collision = true +size = Vector3(12.1906, 1.38731, 0.185059) +material = SubResource("StandardMaterial3D_lnqlj") + +[node name="TheBar" type="Node3D" parent="Floors/SecondFloor" unique_id=111400760] + +[node name="BarCounter" type="CSGBox3D" parent="Floors/SecondFloor/TheBar" unique_id=1572172618] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 41.0842, 5.67148, -11.6508) +use_collision = true +size = Vector3(6, 1.25, 1) +material = SubResource("StandardMaterial3D_tmblh") + +[node name="Bar2" type="CSGBox3D" parent="Floors/SecondFloor/TheBar/BarCounter" unique_id=1886709324] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -25.6913) +use_collision = true +size = Vector3(6, 1.25, 1) +material = SubResource("StandardMaterial3D_tmblh") + +[node name="Bar3" type="CSGBox3D" parent="Floors/SecondFloor/TheBar/BarCounter" unique_id=2129391397] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -2.50714, 0, -12.8404) +use_collision = true +size = Vector3(24.8423, 1.25, 1) +material = SubResource("StandardMaterial3D_tmblh") + +[node name="BarTop" type="CSGBox3D" parent="Floors/SecondFloor/TheBar" unique_id=1872121868] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 41.0842, 9.41456, -11.6508) +use_collision = true +size = Vector3(6, 1.25, 1) +material = SubResource("StandardMaterial3D_tmblh") + +[node name="Bar2" type="CSGBox3D" parent="Floors/SecondFloor/TheBar/BarTop" unique_id=898429757] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -25.6913) +use_collision = true +size = Vector3(6, 1.25, 1) +material = SubResource("StandardMaterial3D_tmblh") + +[node name="Bar3" type="CSGBox3D" parent="Floors/SecondFloor/TheBar/BarTop" unique_id=1536717645] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -2.50714, 0, -12.8404) +use_collision = true +size = Vector3(24.8423, 1.25, 1) +material = SubResource("StandardMaterial3D_tmblh") + +[node name="BarSupport" type="CSGBox3D" parent="Floors/SecondFloor/TheBar" unique_id=647652013] +transform = Transform3D(-4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, 0, 1, 38.5729, 7.50306, -37.3731) +use_collision = true +size = Vector3(2.72263, 0.969604, 0.90538) +material = SubResource("StandardMaterial3D_tmblh") + +[node name="BarSupport2" type="CSGBox3D" parent="Floors/SecondFloor/TheBar" unique_id=714214944] +transform = Transform3D(-4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, 0, 1, 38.5729, 7.50306, -11.6113) +use_collision = true +size = Vector3(2.72263, 0.969604, 0.90538) +material = SubResource("StandardMaterial3D_tmblh") + +[node name="ThirdFloor" type="Node3D" parent="Floors" unique_id=1552922301] +visible = false + +[node name="Roof" type="CSGBox3D" parent="Floors/ThirdFloor" unique_id=971673725] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 37.0218, 10.0308, 81.7637) +use_collision = true +size = Vector3(45.9998, 0.1, 43.9306) +material = SubResource("StandardMaterial3D_xohet") + +[node name="GPUParticlesCollisionBox3D" type="GPUParticlesCollisionBox3D" parent="Floors/ThirdFloor/Roof" unique_id=1906723697] +transform = Transform3D(1, -2.98023e-08, 0, 2.98023e-08, 1, 0, 0, 0, 1, 0.262871, 0.0263767, -0.131428) +size = Vector3(58.2254, 1, 43.6852) + +[node name="Roof2" type="CSGBox3D" parent="Floors/ThirdFloor" unique_id=1228777515] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -21.9431, 10.0308, 86.5576) +use_collision = true +size = Vector3(36.4044, 0.1, 74.0817) +material = SubResource("StandardMaterial3D_xohet") + +[node name="GPUParticlesCollisionBox3D" type="GPUParticlesCollisionBox3D" parent="Floors/ThirdFloor/Roof2" unique_id=1144605004] +transform = Transform3D(1, -2.98023e-08, 0, 2.98023e-08, 1, 0, 0, 0, 1, -0.147717, 0.0263767, 0.0264301) +size = Vector3(49.0093, 1, 73.5088) + +[node name="RoofBayWindow" type="CSGPolygon3D" parent="Floors/ThirdFloor" unique_id=1323378707] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, -2.19431, 9.96778, 66.3929) +use_collision = true +polygon = PackedVector2Array(-12.8485, 2.02802, -7.75589, -2.04429, -1.70866, -5.04613, 6.09688, -5.04648, 12.1296, -2.03989, 17.2687, 2.11447) +depth = 0.1 +material = SubResource("StandardMaterial3D_d6mox") + +[node name="GPUParticlesCollisionSphere3D" type="GPUParticlesCollisionBox3D" parent="Floors/ThirdFloor/RoofBayWindow" unique_id=320958095] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.02361, -0.697571, 0.874222) +size = Vector3(31.1226, 8.68383, 2) + +[node name="Roof" type="Node3D" parent="Floors" unique_id=1255488518] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 109.722) +visible = false + +[node name="RoofPorch" type="CSGPolygon3D" parent="Floors/Roof" unique_id=1497717274] +transform = Transform3D(-3.09086e-08, -3.09086e-08, -1, -0.707107, 0.707107, 0, 0.707107, 0.707107, -4.37114e-08, -29.7222, 5.2734, -3.30595) +use_collision = true +polygon = PackedVector2Array(-1.0118, -1.31052, -4.61702, 2.30247, 6.89147, 6.63696) +depth = 59.2 +material = SubResource("StandardMaterial3D_hxnoj") + +[node name="RoofRemover" type="CSGBox3D" parent="Floors/Roof/RoofPorch" unique_id=1626479677] +transform = Transform3D(0.707107, -0.707107, 1.06581e-14, 0.707107, 0.707107, 1.06581e-14, 3.55271e-14, 0, 1, 0.381912, 3.55007, -29.705) +operation = 2 +size = Vector3(9.09454, 5.22906, 44.0879) + +[node name="RoofPorch2" type="CSGPolygon3D" parent="Floors/Roof" unique_id=553240436] +transform = Transform3D(-3.09086e-08, -3.09086e-08, -1, -0.707107, 0.707107, 0, 0.707107, 0.707107, -4.37114e-08, -22.0475, 10.2587, -3.30173) +use_collision = true +polygon = PackedVector2Array(-1.0118, -1.31052, -4.61702, 2.30247, 5.38362, 5.10716) +depth = 44.1 +material = SubResource("StandardMaterial3D_hxnoj") + +[node name="TallFireplace" type="CSGBox3D" parent="Floors" unique_id=1159353812] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21.0392, -1.71288, 88.45) +use_collision = true +size = Vector3(2.31799, 23.6489, 5.27686) +material = SubResource("StandardMaterial3D_ahvux") + +[node name="FirstFloorFireplace" type="CSGBox3D" parent="Floors/TallFireplace" unique_id=1200958702] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.696938, 2.88238, 0.0232849) +operation = 2 +size = Vector3(1, 1.72665, 2.47906) +material = SubResource("StandardMaterial3D_28m61") + +[node name="SecondFloorFireplace" type="CSGBox3D" parent="Floors/TallFireplace" unique_id=2054322610] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.696938, 7.61378, 0.0232849) +operation = 2 +size = Vector3(1, 1.72665, 2.47906) +material = SubResource("StandardMaterial3D_n8xd6") + +[node name="BasementFireplace" type="CSGBox3D" parent="Floors/TallFireplace" unique_id=1969017122] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.678043, -10.8752, 0.0232849) +operation = 2 +size = Vector3(1, 1.72665, 2.47906) +material = SubResource("StandardMaterial3D_n8xd6") + +[node name="Items" type="Node" parent="." unique_id=1119602029] + +[node name="light" parent="Items" unique_id=210171148 instance=ExtResource("24_for4i")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 23.6568, 1.02837, 64.9233) + +[node name="stick" parent="Items" unique_id=560043551 instance=ExtResource("25_rnlfc")] +transform = Transform3D(0.766672, 0.642039, 0, -0.642039, 0.766672, 0, 0, 0, 1, 37.4764, 0.810221, 61.851) + +[node name="pantry_key" parent="Items" unique_id=256308040 instance=ExtResource("26_tqinc")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 29.5894, 1.17233, 68.8409) + +[node name="Workbench" parent="Items" unique_id=28179129 instance=ExtResource("27_peks8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30.0542, 1.1514, 59.9283) + +[node name="Trees" type="Node" parent="." unique_id=551068067] + +[node name="pine_tree_low_poly" parent="Trees" unique_id=498098140 instance=ExtResource("28_bdkn1")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -21.1069, 0, -49.2484) + +[node name="pine_tree_low_poly2" parent="Trees" unique_id=650753453 instance=ExtResource("28_bdkn1")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7.24223, 0, -45.7279) + +[node name="pine_tree_low_poly3" parent="Trees" unique_id=1344431645 instance=ExtResource("28_bdkn1")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 63.6716, 0, -60.0045) + +[node name="pine_tree_low_poly4" parent="Trees" unique_id=1993050023 instance=ExtResource("28_bdkn1")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 57.4211, 0, 31.8393) + +[node name="pine_tree_low_poly5" parent="Trees" unique_id=763673276 instance=ExtResource("28_bdkn1")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 68.3268, 0, 70.1896) + +[node name="pine_tree_low_poly6" parent="Trees" unique_id=1064044975 instance=ExtResource("28_bdkn1")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -25.855, 0, 44.2021) + +[node name="AbstractPineTree" parent="Trees" unique_id=439819241 instance=ExtResource("29_svova")] +transform = Transform3D(0.8, 0, 0, 0, 0.8, 0, 0, 0, 0.8, 65.9258, 4.78534, 0.30611) + +[node name="DebrisGenerator" parent="." unique_id=1393489729 instance=ExtResource("30_i7ffm")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.02136, 0.739032, 9.99067) + +[node name="ToCampus" parent="." unique_id=1841703986 instance=ExtResource("31_pacqp")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.29349, 114.309) + +[node name="CollisionShape3D" type="CollisionShape3D" parent="ToCampus" unique_id=2082809097] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.00267792, 1.60541, 0) +shape = SubResource("BoxShape3D_dr6ce") + +[connection signal="body_entered" from="Floors/SecondFloor/Floors/TrapArea" to="Floors/SecondFloor/Floors/TrapArea" method="_on_body_entered"] +[connection signal="body_exited" from="Floors/SecondFloor/Floors/TrapArea" to="Floors/SecondFloor/Floors/TrapArea" method="_on_body_exited"] diff --git a/scenes/levels/somewhere.tscn b/scenes/levels/somewhere.tscn new file mode 100644 index 0000000..7fcbacb --- /dev/null +++ b/scenes/levels/somewhere.tscn @@ -0,0 +1,286 @@ +[gd_scene load_steps=40 format=3 uid="uid://cri5u8gql4pp6"] + +[ext_resource type="PackedScene" uid="uid://ser0oa3o1n56" path="res://scenes/player/Player.tscn" id="1_322hx"] +[ext_resource type="Script" uid="uid://c062wvisfd5bk" path="res://scripts/levels/somewhere.gd" id="1_hwf0j"] +[ext_resource type="PackedScene" uid="uid://cet8swps817sk" path="res://scenes/props/workbench.tscn" id="2_cd4n3"] +[ext_resource type="PackedScene" uid="uid://cfysmb53c7jrx" path="res://scenes/generators/object_generator.tscn" id="3_dplk8"] +[ext_resource type="Texture2D" uid="uid://tfnf487admec" path="res://assets/textures/ground/Ground029_1K-PNG_Color.png" id="4_hwbsu"] +[ext_resource type="PackedScene" uid="uid://wcxem4vbt0d0" path="res://scenes/generators/cleaner.tscn" id="4_r2dta"] +[ext_resource type="PackedScene" uid="uid://c5lt3qq7ddpg3" path="res://scenes/props/trees/abstract_pine_tree.tscn" id="6_648hg"] +[ext_resource type="PackedScene" uid="uid://w16vt7ewcdg4" path="res://scenes/props/floating_platform.tscn" id="6_hwbsu"] +[ext_resource type="Script" uid="uid://5ubhpu2i6xwb" path="res://scripts/grapple_test.gd" id="11_6glhb"] +[ext_resource type="Script" uid="uid://br705ke6jhaoa" path="res://scripts/path_follow_test.gd" id="11_ovey6"] +[ext_resource type="PackedScene" uid="uid://qb07sbwi5pda" path="res://scenes/entities/godless_pawn.tscn" id="12_6glhb"] +[ext_resource type="Shader" uid="uid://dsmpfr52p8pg7" path="res://shaders/psx_drag_and_drop.gdshader" id="13_6cwst"] +[ext_resource type="Texture2D" uid="uid://cicxindxxehw" path="res://assets/textures/stone_rocks/rock_wall_08_1k/rock_wall_08_diff_1k.png" id="14_5elfq"] + +[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_2mxl4"] + +[sub_resource type="Sky" id="Sky_648hg"] +sky_material = SubResource("ProceduralSkyMaterial_2mxl4") + +[sub_resource type="Environment" id="Environment_hwbsu"] +sky = SubResource("Sky_648hg") +ambient_light_source = 2 +ambient_light_color = Color(1, 1, 1, 1) +ambient_light_sky_contribution = 0.1 +ssao_enabled = true +fog_light_color = Color(0, 0, 0, 1) +fog_density = 0.4659 +volumetric_fog_density = 0.25 +volumetric_fog_albedo = Color(0, 0, 0, 1) +volumetric_fog_sky_affect = 0.1 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_322hx"] +albedo_color = Color(1, 0, 0, 1) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_huqc4"] +albedo_color = Color(0.4, 0.4, 0.4, 1) +uv1_triplanar = true +uv1_world_triplanar = true +texture_filter = 0 + +[sub_resource type="BoxMesh" id="BoxMesh_dplk8"] +material = SubResource("StandardMaterial3D_huqc4") +size = Vector3(1000, 1, 1000) + +[sub_resource type="BoxShape3D" id="BoxShape3D_r2dta"] +size = Vector3(1000, 1, 1000) + +[sub_resource type="SphereMesh" id="SphereMesh_hwbsu"] + +[sub_resource type="SphereMesh" id="SphereMesh_hwf0j"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_2mxl4"] +transparency = 1 +disable_ambient_light = true +albedo_color = Color(1, 1, 1, 0.0156863) + +[sub_resource type="BoxMesh" id="BoxMesh_648hg"] +material = SubResource("StandardMaterial3D_2mxl4") +size = Vector3(20, 0.204, 3) + +[sub_resource type="BoxShape3D" id="BoxShape3D_2mxl4"] +size = Vector3(20, 0.204, 3) + +[sub_resource type="Curve3D" id="Curve3D_ovey6"] +closed = true +_data = { +"points": PackedVector3Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 10), +"tilts": PackedFloat32Array(0, 0, 0, 0) +} +point_count = 4 + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_6cwst"] +render_priority = 0 +shader = ExtResource("13_6cwst") +shader_parameter/point_size = 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/emission = Color(0, 0, 0, 1) +shader_parameter/emission_energy = 0.0 +shader_parameter/uv1_scale = Vector3(0.2, 0.2, 0.2) +shader_parameter/uv1_offset = Vector3(0, 0, 0) +shader_parameter/uv2_scale = Vector3(1, 1, 1) +shader_parameter/uv2_offset = Vector3(0, 0, 0) +shader_parameter/albedo = Color(1, 1, 1, 1) +shader_parameter/texture_albedo = ExtResource("14_5elfq") +shader_parameter/resolution = Vector2i(320, 240) +shader_parameter/affine_mapping = true +shader_parameter/alpha_scissor = 0.5 +shader_parameter/jitter = 0.25 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_5elfq"] +next_pass = SubResource("ShaderMaterial_6cwst") +albedo_texture = ExtResource("14_5elfq") +uv1_scale = Vector3(0.2, 0.2, 0.2) +uv1_triplanar = true +uv1_world_triplanar = true +texture_filter = 2 + +[sub_resource type="PlaneMesh" id="PlaneMesh_4xxfe"] +material = SubResource("StandardMaterial3D_5elfq") +size = Vector2(30, 30) +subdivide_width = 15 +subdivide_depth = 15 + +[sub_resource type="BoxShape3D" id="BoxShape3D_vu7et"] +size = Vector3(30, 0.1, 30) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_yvt6c"] +albedo_color = Color(0, 0, 1, 1) + +[sub_resource type="CapsuleMesh" id="CapsuleMesh_6cwst"] +material = SubResource("StandardMaterial3D_yvt6c") + +[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_5elfq"] + +[sub_resource type="Curve3D" id="Curve3D_6cwst"] +_data = { +"points": PackedVector3Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0), +"tilts": PackedFloat32Array(0, 0) +} +point_count = 2 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_6cwst"] +albedo_color = Color(0.47448444, 0.32533848, 0.27775458, 1) + +[sub_resource type="BoxMesh" id="BoxMesh_6cwst"] +material = SubResource("StandardMaterial3D_6cwst") + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_4xxfe"] +albedo_color = Color(0.5850624, 0.5850619, 0.5850621, 1) + +[sub_resource type="TorusMesh" id="TorusMesh_6cwst"] +material = SubResource("StandardMaterial3D_4xxfe") +inner_radius = 0.2 +outer_radius = 0.3 + +[sub_resource type="SphereShape3D" id="SphereShape3D_5elfq"] +radius = 0.75 + +[node name="Somewhere" type="Node"] +script = ExtResource("1_hwf0j") + +[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +environment = SubResource("Environment_hwbsu") + +[node name="Floor" type="StaticBody3D" parent="."] +collision_layer = 7 +collision_mask = 7 + +[node name="MiddleOfSomewhere" type="CSGBox3D" parent="Floor"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 10, 0) +size = Vector3(1, 20, 1) +material = SubResource("StandardMaterial3D_322hx") + +[node name="MeshInstance3D" type="MeshInstance3D" parent="Floor"] +mesh = SubResource("BoxMesh_dplk8") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="Floor"] +shape = SubResource("BoxShape3D_r2dta") + +[node name="Player" parent="." instance=ExtResource("1_322hx")] +transform = Transform3D(-0.0856082, 0, 0.996329, 0, 1, 0, -0.996329, 0, -0.0856082, 16.824373, 2.717064, 6.773155) + +[node name="Workbench" parent="." instance=ExtResource("2_cd4n3")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.6602, 1.58769, 0) + +[node name="ObjectGenerator" parent="." instance=ExtResource("3_dplk8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14.2815, 14.3366, 17.2743) +obj_interval = 0.25 +mesh_type = SubResource("SphereMesh_hwbsu") +mesh_texture = ExtResource("4_hwbsu") + +[node name="ObjectGenerator2" parent="." instance=ExtResource("3_dplk8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -23.8502, 8.33876, 23.5235) +mesh_type = SubResource("SphereMesh_hwf0j") +mesh_texture = ExtResource("4_hwbsu") + +[node name="Cleaner" parent="." instance=ExtResource("4_r2dta")] +transform = Transform3D(3, 0, 0, 0, 3, 0, 0, 0, 3, -13.8543, 0.224901, 19.3368) +visible = false + +[node name="InvisibleBridgeNetwork" type="StaticBody3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -13.462, 8.706, 17.16) + +[node name="BridgeMesh" type="MeshInstance3D" parent="InvisibleBridgeNetwork"] +mesh = SubResource("BoxMesh_648hg") + +[node name="BridgeCollision" type="CollisionShape3D" parent="InvisibleBridgeNetwork"] +shape = SubResource("BoxShape3D_2mxl4") + +[node name="AbstractPineTree" parent="." instance=ExtResource("6_648hg")] +transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 10.2338, 2.69871, 8.11914) + +[node name="FloatingPlatform" parent="." instance=ExtResource("6_hwbsu")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -26.0456, 8.56442, 17.1398) + +[node name="FloatingPlatform2" parent="." instance=ExtResource("6_hwbsu")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.882867, 8.56442, 17.1398) + +[node name="TestRoute" type="Path3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.624287, -13.131) +curve = SubResource("Curve3D_ovey6") + +[node name="PathFollow3D" type="PathFollow3D" parent="TestRoute"] +transform = Transform3D(-4.3711214e-08, 0, -0.999996, 0, 1, 0, 0.999996, 0, -4.3711214e-08, 0, 0, 0) +script = ExtResource("11_ovey6") + +[node name="GodlessPawn" parent="TestRoute/PathFollow3D" instance=ExtResource("12_6glhb")] + +[node name="AffineMappingTest" type="StaticBody3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 43.6241, 0.614231, 20.292) + +[node name="MeshInstance3D" type="MeshInstance3D" parent="AffineMappingTest"] +transform = Transform3D(-1, -0.000628384, 0, -0.000628367, 0.999974, -0.0072256, 4.54045e-06, -0.0072256, -0.999974, 0, 0, 0) +mesh = SubResource("PlaneMesh_4xxfe") +skeleton = NodePath("../..") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="AffineMappingTest"] +shape = SubResource("BoxShape3D_vu7et") + +[node name="Dummy" type="StaticBody3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14.772047, 1.8781586, 0.5455077) + +[node name="Dum_Body" type="MeshInstance3D" parent="Dummy"] +cast_shadow = 0 +mesh = SubResource("CapsuleMesh_6cwst") +skeleton = NodePath("../..") + +[node name="Dum_Shape" type="CollisionShape3D" parent="Dummy"] +shape = SubResource("CapsuleShape3D_5elfq") + +[node name="GrapplePath" type="Path3D" parent="Dummy"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.22958755, -0.33978844, -0.5455077) +curve = SubResource("Curve3D_6cwst") +script = ExtResource("11_6glhb") + +[node name="Rope" type="CSGPolygon3D" parent="Dummy/GrapplePath"] +polygon = PackedVector2Array(0.28800488, 0.43793344, 0.33073902, 0.5529156, 0.46020508, 0.5652175, 0.6012564, 0.48161554, 0.59163, 0.29149103, 0.40962505, 0.31399393) +mode = 2 +path_node = NodePath("..") +path_interval_type = 0 +path_interval = 1.0 +path_simplify_angle = 0.0 +path_rotation = 2 +path_rotation_accurate = false +path_local = true +path_continuous_u = true +path_u_distance = 1.0 +path_joined = false + +[node name="CSGSphere3D" type="CSGSphere3D" parent="Dummy/GrapplePath"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.084593, 0.482059, 0.45855093) + +[node name="Grapple_Point" type="StaticBody3D" parent="." groups=["grapple_point"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.746016, 11.530332, 16.771793) +collision_layer = 2 + +[node name="Block" type="MeshInstance3D" parent="Grapple_Point"] +mesh = SubResource("BoxMesh_6cwst") + +[node name="Ring" type="MeshInstance3D" parent="Grapple_Point"] +transform = Transform3D(-4.371139e-08, 1, 0, -1, -4.371139e-08, 0, 0, 0, 1, 0, -0.657465, -0.010108948) +mesh = SubResource("TorusMesh_6cwst") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="Grapple_Point"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.657465, -0.010108948) +shape = SubResource("SphereShape3D_5elfq") + +[node name="Grapple_Point2" type="StaticBody3D" parent="." groups=["grapple_point"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12.545427, 8.078787, 16.771793) +collision_layer = 2 + +[node name="Block" type="MeshInstance3D" parent="Grapple_Point2"] +mesh = SubResource("BoxMesh_6cwst") + +[node name="Ring" type="MeshInstance3D" parent="Grapple_Point2"] +transform = Transform3D(-4.371139e-08, 1, 0, -1, -4.371139e-08, 0, 0, 0, 1, 0, -0.657465, -0.010108948) +mesh = SubResource("TorusMesh_6cwst") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="Grapple_Point2"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.657465, -0.010108948) +shape = SubResource("SphereShape3D_5elfq") diff --git a/scenes/menus/drifting_game_over.tscn b/scenes/menus/drifting_game_over.tscn new file mode 100644 index 0000000..a58fa7d --- /dev/null +++ b/scenes/menus/drifting_game_over.tscn @@ -0,0 +1,63 @@ +[gd_scene format=3 uid="uid://nnycodg8wsiu"] + +[ext_resource type="Script" uid="uid://d16obox44cgts" path="res://scripts/drifting/drifting_game_over.gd" id="1_uppju"] +[ext_resource type="Script" uid="uid://co0h6er0mkgyc" path="res://scripts/start_menu_buttons.gd" id="2_dkugd"] + +[sub_resource type="LabelSettings" id="LabelSettings_ekxnf"] +font_size = 50 + +[node name="Drifting_Game_Over" type="Control" unique_id=2101009925] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_uppju") + +[node name="BackgroundPanel" type="Panel" parent="." unique_id=995283712] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="VBoxContainer" type="VBoxContainer" parent="." unique_id=1635776475] +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -20.0 +offset_top = -20.0 +offset_right = 20.0 +offset_bottom = 20.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 60 +alignment = 1 + +[node name="Message" type="Label" parent="VBoxContainer" unique_id=2102328057] +custom_minimum_size = Vector2(1200, 0) +layout_mode = 2 +text = "Final Message" +label_settings = SubResource("LabelSettings_ekxnf") +horizontal_alignment = 1 +autowrap_mode = 2 + +[node name="Score" type="Label" parent="VBoxContainer" unique_id=2038603783] +layout_mode = 2 +text = "Score" +label_settings = SubResource("LabelSettings_ekxnf") +horizontal_alignment = 1 + +[node name="MenuButton" type="Button" parent="VBoxContainer" unique_id=108770272] +layout_mode = 2 +size_flags_horizontal = 4 +theme_override_font_sizes/font_size = 40 +text = "Main Menu" +script = ExtResource("2_dkugd") + +[connection signal="pressed" from="VBoxContainer/MenuButton" to="VBoxContainer/MenuButton" method="_on_pressed"] diff --git a/scenes/menus/inventory.tscn b/scenes/menus/inventory.tscn new file mode 100644 index 0000000..d063b0b --- /dev/null +++ b/scenes/menus/inventory.tscn @@ -0,0 +1,162 @@ +[gd_scene format=3 uid="uid://b3hoq5yyocp4m"] + +[ext_resource type="Script" uid="uid://bi411jclukc8q" path="res://scripts/construct_inventory.gd" id="1_ui0tw"] + +[node name="Inventory" type="Control" unique_id=228567293 groups=["inventory"]] +process_mode = 3 +visible = false +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_ui0tw") + +[node name="Panel" type="Panel" parent="." unique_id=2001678979] +layout_mode = 0 +offset_right = 1922.0 +offset_bottom = 796.0 + +[node name="Label" type="Label" parent="." unique_id=2060229052] +layout_mode = 1 +anchors_preset = 5 +anchor_left = 0.5 +anchor_right = 0.5 +offset_left = -260.0 +offset_right = 260.0 +offset_bottom = 137.0 +grow_horizontal = 2 +theme_override_font_sizes/font_size = 100 +text = "Constructs" + +[node name="FlagButton" type="Button" parent="." unique_id=995104502] +visible = false +layout_mode = 0 +offset_left = 1239.0 +offset_top = 342.0 +offset_right = 1659.0 +offset_bottom = 502.0 +theme_override_font_sizes/font_size = 75 +text = "Flag" + +[node name="SlotLabel" type="Label" parent="FlagButton" unique_id=1771062169] +layout_mode = 0 +offset_left = 4.0 +offset_right = 46.0 +offset_bottom = 69.0 +theme_override_font_sizes/font_size = 35 + +[node name="FlashlightButton" type="Button" parent="." unique_id=270601862] +visible = false +layout_mode = 0 +offset_left = 774.0 +offset_top = 346.0 +offset_right = 1194.0 +offset_bottom = 506.0 +theme_override_font_sizes/font_size = 75 +text = "Flashlight" + +[node name="SlotLabel" type="Label" parent="FlashlightButton" unique_id=707403763] +layout_mode = 0 +offset_left = 4.0 +offset_right = 46.0 +offset_bottom = 69.0 +theme_override_font_sizes/font_size = 50 + +[node name="LightButton" type="Button" parent="." unique_id=188679358] +visible = false +layout_mode = 0 +offset_left = 1001.0 +offset_top = 154.0 +offset_right = 1421.0 +offset_bottom = 314.0 +theme_override_font_sizes/font_size = 75 +text = "Light" + +[node name="SlotLabel" type="Label" parent="LightButton" unique_id=1686650886] +layout_mode = 0 +offset_left = 4.0 +offset_right = 46.0 +offset_bottom = 69.0 +theme_override_font_sizes/font_size = 35 + +[node name="HammerButton" type="Button" parent="." unique_id=1815856202] +visible = false +layout_mode = 0 +offset_left = 302.0 +offset_top = 354.0 +offset_right = 722.0 +offset_bottom = 514.0 +theme_override_font_sizes/font_size = 75 +text = "Hammer" + +[node name="SlotLabel" type="Label" parent="HammerButton" unique_id=992739447] +layout_mode = 0 +offset_left = 4.0 +offset_right = 46.0 +offset_bottom = 69.0 +theme_override_font_sizes/font_size = 35 + +[node name="StickButton" type="Button" parent="." unique_id=1809155062] +process_mode = 3 +visible = false +layout_mode = 0 +offset_left = 63.0 +offset_top = 159.0 +offset_right = 483.0 +offset_bottom = 319.0 +theme_override_font_sizes/font_size = 75 +text = "Stick" + +[node name="SlotLabel" type="Label" parent="StickButton" unique_id=560494990] +layout_mode = 0 +offset_left = 4.0 +offset_right = 46.0 +offset_bottom = 69.0 +theme_override_font_sizes/font_size = 35 + +[node name="TimeButton" type="Button" parent="." unique_id=683514145] +visible = false +layout_mode = 0 +offset_left = 1451.0 +offset_top = 154.0 +offset_right = 1871.0 +offset_bottom = 314.0 +theme_override_font_sizes/font_size = 75 +text = "Time +" + +[node name="SlotLabel" type="Label" parent="TimeButton" unique_id=1305415068] +layout_mode = 0 +offset_left = 4.0 +offset_right = 46.0 +offset_bottom = 69.0 +theme_override_font_sizes/font_size = 35 + +[node name="WeightButton" type="Button" parent="." unique_id=681742636] +process_mode = 3 +visible = false +layout_mode = 0 +offset_left = 539.0 +offset_top = 161.0 +offset_right = 959.0 +offset_bottom = 321.0 +theme_override_font_sizes/font_size = 75 +text = "Weight +" + +[node name="SlotLabel" type="Label" parent="WeightButton" unique_id=1855205908] +layout_mode = 0 +offset_left = 4.0 +offset_right = 46.0 +offset_bottom = 69.0 +theme_override_font_sizes/font_size = 35 + +[connection signal="pressed" from="FlagButton" to="." method="_on_flag_button_pressed"] +[connection signal="pressed" from="FlashlightButton" to="." method="_on_flashlight_button_pressed"] +[connection signal="pressed" from="LightButton" to="." method="_on_light_button_pressed"] +[connection signal="pressed" from="HammerButton" to="." method="_on_hammer_button_pressed"] +[connection signal="pressed" from="StickButton" to="." method="_on_stick_button_pressed"] +[connection signal="pressed" from="TimeButton" to="." method="_on_time_button_pressed"] +[connection signal="pressed" from="WeightButton" to="." method="_on_weight_button_pressed"] diff --git a/scenes/menus/loading_screen.tscn b/scenes/menus/loading_screen.tscn new file mode 100644 index 0000000..1bf7102 --- /dev/null +++ b/scenes/menus/loading_screen.tscn @@ -0,0 +1,64 @@ +[gd_scene format=3 uid="uid://bibjl61n5qa2e"] + +[ext_resource type="Script" uid="uid://bsehmw3jffimj" path="res://scripts/loading_screen.gd" id="1_ep5rh"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ep5rh"] +content_margin_left = 0.0 +content_margin_top = 0.0 +content_margin_right = 0.0 +content_margin_bottom = 0.0 +bg_color = Color(0.1, 0.1, 0.1, 0.6) +border_width_left = 64 +border_width_top = 64 +border_width_right = 64 +border_width_bottom = 64 +border_color = Color(0, 0, 0, 0) +border_blend = true +corner_radius_top_left = 128 +corner_radius_top_right = 128 +corner_radius_bottom_right = 128 +corner_radius_bottom_left = 128 +corner_detail = 5 + +[node name="Loading_Screen" type="Control" unique_id=30661771] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_ep5rh") + +[node name="Panel" type="Panel" parent="." unique_id=1449775662] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +tooltip_text = "I had dream where..." +mouse_default_cursor_shape = 16 +theme_override_styles/panel = SubResource("StyleBoxFlat_ep5rh") + +[node name="Label" type="Label" parent="." unique_id=1183240990] +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -939.0 +offset_top = -221.5 +offset_right = 939.0 +offset_bottom = 221.5 +grow_horizontal = 2 +grow_vertical = 2 +text = "Hallucinating" +horizontal_alignment = 1 +vertical_alignment = 1 +autowrap_mode = 2 + +[node name="Timer" type="Timer" parent="." unique_id=176032075] +autostart = true + +[connection signal="timeout" from="Timer" to="." method="_on_timer_timeout"] diff --git a/scenes/menus/loading_screen_drifting.tscn b/scenes/menus/loading_screen_drifting.tscn new file mode 100644 index 0000000..5534722 --- /dev/null +++ b/scenes/menus/loading_screen_drifting.tscn @@ -0,0 +1,80 @@ +[gd_scene format=3 uid="uid://dhhdfdjt1vhuf"] + +[ext_resource type="Script" uid="uid://bsehmw3jffimj" path="res://scripts/loading_screen.gd" id="1_1vpqw"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ep5rh"] +content_margin_left = 0.0 +content_margin_top = 0.0 +content_margin_right = 0.0 +content_margin_bottom = 0.0 +bg_color = Color(0.1, 0.1, 0.1, 0.6) +border_width_left = 64 +border_width_top = 64 +border_width_right = 64 +border_width_bottom = 64 +border_color = Color(0, 0, 0, 0) +border_blend = true +corner_radius_top_left = 128 +corner_radius_top_right = 128 +corner_radius_bottom_right = 128 +corner_radius_bottom_left = 128 +corner_detail = 5 + +[sub_resource type="LabelSettings" id="LabelSettings_ndlxt"] +font_size = 75 + +[node name="Control" type="Control" unique_id=30661771] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_1vpqw") + +[node name="Panel" type="Panel" parent="." unique_id=1449775662] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +tooltip_text = "I had dream where it snowed..." +mouse_default_cursor_shape = 16 +theme_override_styles/panel = SubResource("StyleBoxFlat_ep5rh") + +[node name="Label" type="Label" parent="." unique_id=1183240990] +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -939.0 +offset_top = -221.5 +offset_right = 939.0 +offset_bottom = 221.5 +grow_horizontal = 2 +grow_vertical = 2 +text = "I had a dream where my friend and I were going to a cabin in the woods. My friend was getting in late so they needed me to clear the snow from the paths leading to the cabin." +label_settings = SubResource("LabelSettings_ndlxt") +horizontal_alignment = 1 +autowrap_mode = 2 + +[node name="MarginContainer" type="MarginContainer" parent="." unique_id=1831731647] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/margin_bottom = 50 + +[node name="Label2" type="Label" parent="MarginContainer" unique_id=511333325] +layout_mode = 2 +size_flags_horizontal = 4 +size_flags_vertical = 8 +text = "Loading..." +label_settings = SubResource("LabelSettings_ndlxt") +horizontal_alignment = 1 +autowrap_mode = 2 diff --git a/scenes/menus/main_menu.tscn b/scenes/menus/main_menu.tscn new file mode 100644 index 0000000..1c174bd --- /dev/null +++ b/scenes/menus/main_menu.tscn @@ -0,0 +1,53 @@ +[gd_scene load_steps=3 format=3 uid="uid://dadipes760e3q"] + +[ext_resource type="Script" uid="uid://co0h6er0mkgyc" path="res://scripts/start_menu_buttons.gd" id="1_l6cm7"] + +[sub_resource type="LabelSettings" id="LabelSettings_ekxnf"] +font_size = 100 + +[node name="MainMenu" type="Control"] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="BackgroundPanel" type="Panel" parent="."] +layout_mode = 0 +offset_right = 1920.0 +offset_bottom = 803.0 + +[node name="Title" type="Label" parent="."] +layout_mode = 0 +offset_left = 417.0 +offset_top = 87.0 +offset_right = 1402.0 +offset_bottom = 364.0 +text = "R.E.M +Hallucinations" +label_settings = SubResource("LabelSettings_ekxnf") +horizontal_alignment = 1 + +[node name="StartButton" type="Button" parent="."] +layout_mode = 0 +offset_left = 802.0 +offset_top = 455.0 +offset_right = 1028.0 +offset_bottom = 518.0 +theme_override_font_sizes/font_size = 40 +text = "Start Game" +script = ExtResource("1_l6cm7") + +[node name="QuitButton" type="Button" parent="."] +layout_mode = 0 +offset_left = 865.0 +offset_top = 621.0 +offset_right = 957.0 +offset_bottom = 684.0 +theme_override_font_sizes/font_size = 40 +text = "Quit" +script = ExtResource("1_l6cm7") + +[connection signal="pressed" from="StartButton" to="StartButton" method="_on_pressed"] +[connection signal="pressed" from="QuitButton" to="QuitButton" method="_on_pressed"] diff --git a/scenes/menus/pause_menu.tscn b/scenes/menus/pause_menu.tscn new file mode 100644 index 0000000..10429fc --- /dev/null +++ b/scenes/menus/pause_menu.tscn @@ -0,0 +1,80 @@ +[gd_scene format=3 uid="uid://dh0mqk2ioktch"] + +[ext_resource type="Script" uid="uid://bgcsj2xmtkuyo" path="res://scripts/pause_menu.gd" id="1_n87rw"] +[ext_resource type="Script" uid="uid://tih1ci4jv86q" path="res://scripts/pause_menu_buttons.gd" id="2_myx47"] +[ext_resource type="Script" uid="uid://co0h6er0mkgyc" path="res://scripts/start_menu_buttons.gd" id="3_kukqi"] + +[node name="PauseMenu" type="Control" unique_id=259100249 groups=["pause_menu"]] +process_mode = 3 +visible = false +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_n87rw") + +[node name="Panel" type="Panel" parent="." unique_id=1309194728] +custom_minimum_size = Vector2(854, 567) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -427.0 +offset_top = -283.5 +offset_right = 427.0 +offset_bottom = 283.5 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="CloseButton" type="Button" parent="Panel" unique_id=537291664] +process_mode = 3 +layout_mode = 1 +anchors_preset = 1 +anchor_left = 1.0 +anchor_right = 1.0 +offset_left = -99.0 +offset_bottom = 104.0 +grow_horizontal = 0 +theme_override_font_sizes/font_size = 70 +text = "X" +script = ExtResource("2_myx47") + +[node name="Label" type="Label" parent="Panel" unique_id=1280886493] +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -193.0 +offset_top = -68.5 +offset_right = 193.0 +offset_bottom = 68.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_font_sizes/font_size = 100 +text = "PAUSED" + +[node name="QuitButton" type="Button" parent="Panel" unique_id=891313665] +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -108.0 +offset_top = 116.5 +offset_right = 108.0 +offset_bottom = 179.50024 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_font_sizes/font_size = 40 +text = "Quit Game" +script = ExtResource("3_kukqi") + +[connection signal="pressed" from="Panel/CloseButton" to="Panel/CloseButton" method="_on_pressed"] +[connection signal="pressed" from="Panel/QuitButton" to="Panel/QuitButton" method="_on_pressed"] diff --git a/scenes/menus/rem_drifting_credits.tscn b/scenes/menus/rem_drifting_credits.tscn new file mode 100644 index 0000000..abc5f8b --- /dev/null +++ b/scenes/menus/rem_drifting_credits.tscn @@ -0,0 +1,88 @@ +[gd_scene format=3 uid="uid://c8n0mecxta4yk"] + +[ext_resource type="Script" uid="uid://co0h6er0mkgyc" path="res://scripts/start_menu_buttons.gd" id="1_ap7om"] + +[sub_resource type="LabelSettings" id="LabelSettings_if0b7"] +font_size = 75 + +[sub_resource type="LabelSettings" id="LabelSettings_f1kox"] +font_size = 40 + +[sub_resource type="LabelSettings" id="LabelSettings_ap7om"] +font_size = 20 + +[node name="REM_Drifting_Credits" type="Control" unique_id=2101009925] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="BackgroundPanel" type="Panel" parent="." unique_id=995283712] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="MarginContainer" type="MarginContainer" parent="." unique_id=7868621] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/margin_left = 25 +theme_override_constants/margin_top = 25 +theme_override_constants/margin_right = 25 + +[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer" unique_id=1577474056] +layout_mode = 2 +theme_override_constants/separation = 4 + +[node name="Title" type="Label" parent="MarginContainer/VBoxContainer" unique_id=2102328057] +layout_mode = 2 +size_flags_horizontal = 0 +text = "Credits" +label_settings = SubResource("LabelSettings_if0b7") + +[node name="Developers" type="Label" parent="MarginContainer/VBoxContainer" unique_id=2095928693] +layout_mode = 2 +text = "A game by Jacob Baer for the Cozy Winter Jam 2026" +label_settings = SubResource("LabelSettings_f1kox") + +[node name="Assets" type="Label" parent="MarginContainer/VBoxContainer" unique_id=584307945] +layout_mode = 2 +text = "Textures: + +Dario Barresi +Dimitrios Savva, Charlotte Baglioni (charlotte.baglioni@gmail.com), Amal Kumar (artstation: https://www.artstation.com/amalbubble\\), +and Rob Tuytel (rob@polyhaven.com) via Poly Haven (https://polyhaven.com/textures) +licensed under the Creative Commons CC0 1.0 Universal License. + +Holiday Texture Pack provided by Screaming Brain Studios via Open Game Art (https://opengameart.org/content/holiday-texture-pack) + +Snow texture provided by Downdate via Open Game Art (https://opengameart.org/content/snow-texture) +and licensed under the Creative Commons CC by 3.0 Universal License (https://creativecommons.org/licenses/by/3.0/deed.en) + +SFX: + +Running, Snow, A provided by InspectorJ via freesound (https://freesound.org/people/InspectorJ/sounds/421022/) +and licensed under the Creative Commons CC by 4.0 Universal License (https://creativecommons.org/licenses/by/4.0/) + +Footsteps Walking On Wooden Floor Medium Pace provided by ralph.whitehead via freesound (https://freesound.org/people/ralph.whitehead/sounds/565716/) +and licensed under the Creative Commons CC0 1.0 Universal License. +" +label_settings = SubResource("LabelSettings_ap7om") + +[node name="MenuButton" type="Button" parent="MarginContainer" unique_id=879266732] +layout_mode = 2 +size_flags_horizontal = 8 +size_flags_vertical = 0 +theme_override_font_sizes/font_size = 40 +text = "Main Menu" +script = ExtResource("1_ap7om") + +[connection signal="pressed" from="MarginContainer/MenuButton" to="MarginContainer/MenuButton" method="_on_pressed"] diff --git a/scenes/menus/rem_drifting_menu.tscn b/scenes/menus/rem_drifting_menu.tscn new file mode 100644 index 0000000..260892b --- /dev/null +++ b/scenes/menus/rem_drifting_menu.tscn @@ -0,0 +1,66 @@ +[gd_scene format=3 uid="uid://dlfj51ni3rwa7"] + +[ext_resource type="Script" uid="uid://co0h6er0mkgyc" path="res://scripts/start_menu_buttons.gd" id="1_gkoqg"] + +[sub_resource type="LabelSettings" id="LabelSettings_ekxnf"] +font_size = 100 + +[node name="REM_Drifting_Menu" type="Control" unique_id=2101009925] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="BackgroundPanel" type="Panel" parent="." unique_id=995283712] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="VBoxContainer" type="VBoxContainer" parent="." unique_id=314757512] +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -20.0 +offset_top = -20.0 +offset_right = 20.0 +offset_bottom = 20.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 70 +alignment = 1 + +[node name="Title" type="Label" parent="VBoxContainer" unique_id=2102328057] +layout_mode = 2 +text = "R.E.M Drifting" +label_settings = SubResource("LabelSettings_ekxnf") +horizontal_alignment = 1 + +[node name="StartButton" type="Button" parent="VBoxContainer" unique_id=956169451] +layout_mode = 2 +theme_override_font_sizes/font_size = 40 +text = "Start Game" +script = ExtResource("1_gkoqg") + +[node name="QuitButton" type="Button" parent="VBoxContainer" unique_id=268040672] +layout_mode = 2 +theme_override_font_sizes/font_size = 40 +text = "Quit" +script = ExtResource("1_gkoqg") + +[node name="CreditsButton" type="Button" parent="VBoxContainer" unique_id=404285932] +layout_mode = 2 +theme_override_font_sizes/font_size = 40 +text = "Credits" +script = ExtResource("1_gkoqg") + +[connection signal="pressed" from="VBoxContainer/StartButton" to="VBoxContainer/StartButton" method="_on_pressed"] +[connection signal="pressed" from="VBoxContainer/QuitButton" to="VBoxContainer/QuitButton" method="_on_pressed"] +[connection signal="pressed" from="VBoxContainer/CreditsButton" to="VBoxContainer/CreditsButton" method="_on_pressed"] diff --git a/scenes/menus/settings.tscn b/scenes/menus/settings.tscn new file mode 100644 index 0000000..1efef40 --- /dev/null +++ b/scenes/menus/settings.tscn @@ -0,0 +1,75 @@ +[gd_scene load_steps=4 format=3 uid="uid://dmhec3fy1pk0u"] + +[ext_resource type="Script" uid="uid://ciaxxlhyiwr8d" path="res://scenes/settings.gd" id="1_5p8wc"] +[ext_resource type="Script" uid="uid://bgn75ug5kfftd" path="res://scenes/audio.gd" id="2_6wm04"] +[ext_resource type="AudioStream" uid="uid://1wru52nqe267" path="res://assets/music/Maarten Schellekens - Free Hammond Theme.mp3" id="2_r6d6q"] + +[node name="Settings" type="Control"] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_5p8wc") + +[node name="Audio" type="Control" parent="."] +anchors_preset = 0 +offset_right = 40.0 +offset_bottom = 40.0 +script = ExtResource("2_6wm04") + +[node name="VBoxContainer" type="VBoxContainer" parent="Audio"] +layout_mode = 1 +offset_right = 1923.0 +offset_bottom = 797.0 + +[node name="MasterVolumeLabel" type="Label" parent="Audio/VBoxContainer"] +layout_mode = 2 +theme_override_font_sizes/font_size = 30 +text = "Master Volume" + +[node name="MasterVolume" type="HSlider" parent="Audio/VBoxContainer"] +layout_mode = 2 +max_value = 1.0 +step = 0.01 +value = 1.0 + +[node name="ConfirmAudioButton" type="Button" parent="Audio"] +layout_mode = 0 +offset_left = 30.0 +offset_top = 90.0 +offset_right = 155.0 +offset_bottom = 140.0 +theme_override_font_sizes/font_size = 30 +text = "Confirm" + +[node name="Resolution" type="Control" parent="."] +anchors_preset = 0 +offset_right = 40.0 +offset_bottom = 40.0 + +[node name="ResolutionSelector" type="OptionButton" parent="Resolution"] +layout_mode = 0 +offset_left = 71.0 +offset_top = 175.0 +offset_right = 185.0 +offset_bottom = 206.0 +scale = Vector2(1.4, 1) +selected = 0 +item_count = 3 +popup/item_0/text = "1920x1080" +popup/item_0/id = 0 +popup/item_1/text = "1600x900" +popup/item_1/id = 1 +popup/item_2/text = "1280x720" +popup/item_2/id = 2 + +[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."] +stream = ExtResource("2_r6d6q") +volume_db = -10.0 +autoplay = true + +[connection signal="mouse_exited" from="Audio/VBoxContainer/MasterVolume" to="Audio" method="_on_master_volume_mouse_exited"] +[connection signal="pressed" from="Audio/ConfirmAudioButton" to="." method="_on_confirm_audio_button_pressed"] +[connection signal="item_selected" from="Resolution/ResolutionSelector" to="." method="_on_resolution_selector_item_selected"] diff --git a/scenes/player/Player.tscn b/scenes/player/Player.tscn new file mode 100644 index 0000000..90ffede --- /dev/null +++ b/scenes/player/Player.tscn @@ -0,0 +1,359 @@ +[gd_scene format=3 uid="uid://ser0oa3o1n56"] + +[ext_resource type="Script" uid="uid://qffjfnrcnboa" path="res://scripts/Player.gd" id="1_mba18"] +[ext_resource type="Script" uid="uid://c8d5ntqd0070m" path="res://scripts/interactor.gd" id="2_wqtol"] +[ext_resource type="Resource" uid="uid://bo7m0g7qwi8nk" path="res://scenes/constructs/stick/stick.tres" id="3_5stf6"] +[ext_resource type="PackedScene" uid="uid://ci7kg8ouj7cvu" path="res://scenes/constructs/construct.tscn" id="4_ebyyx"] +[ext_resource type="AudioStream" uid="uid://cpdd4q4lp3e40" path="res://assets/SFX/565716__ralphwhitehead__footsteps-walking-on-wooden-floor-medium-pace.wav" id="4_obb1p"] +[ext_resource type="Script" uid="uid://bh4obtyl4m7hx" path="res://scripts/reticle.gd" id="5_bj1ma"] +[ext_resource type="Script" uid="uid://b2xxx35evjgun" path="res://scripts/detect_floor.gd" id="8_ov1oi"] +[ext_resource type="PackedScene" uid="uid://dh0mqk2ioktch" path="res://scenes/menus/pause_menu.tscn" id="9_20koh"] +[ext_resource type="Script" uid="uid://d4h4veqptsoqp" path="res://scripts/ui_current_construct.gd" id="10_20koh"] +[ext_resource type="PackedScene" uid="uid://b3hoq5yyocp4m" path="res://scenes/menus/inventory.tscn" id="10_ov1oi"] +[ext_resource type="Script" uid="uid://dremwb322vlaf" path="res://scripts/text_box.gd" id="11_180ig"] +[ext_resource type="AudioStream" uid="uid://dg71qcdg8lh2f" path="res://assets/SFX/421022__inspectorj__running-snow-a.wav" id="11_es4xk"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_5stf6"] +albedo_color = Color(0, 0, 1, 1) + +[sub_resource type="CapsuleMesh" id="CapsuleMesh_2efoy"] +material = SubResource("StandardMaterial3D_5stf6") + +[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_fteo1"] + +[sub_resource type="Animation" id="Animation_7l7cn"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Neck:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector3(0, 0.56, 0)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Neck/FirstPersonCamera/ItemRig/Construct:rotation") +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)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Neck/FirstPersonCamera/ItemRig/Construct:position") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector3(0.5, -0.3, -0.7)] +} + +[sub_resource type="Animation" id="Animation_ebyyx"] +resource_name = "swing" +length = 0.6 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Neck/FirstPersonCamera/ItemRig/Construct:rotation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.15, 0.6), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Vector3(0, 1.91986, 0), Vector3(0, 1.91986, -1.22173), Vector3(0, 1.91986, 0)] +} + +[sub_resource type="Animation" id="Animation_es4xk"] +resource_name = "toss" +length = 0.6 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Neck/FirstPersonCamera/ItemRig/Construct:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.35, 0.6), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Vector3(0.5, -0.3, -0.7), Vector3(0.5, 0, -0.7), Vector3(0.5, -0.3, -0.7)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_d68m8"] +_data = { +&"RESET": SubResource("Animation_7l7cn"), +&"swing": SubResource("Animation_ebyyx"), +&"toss": SubResource("Animation_es4xk") +} + +[sub_resource type="Animation" id="Animation_rn7t0"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Neck:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector3(0, 0.56, 0)] +} + +[sub_resource type="Animation" id="Animation_g183x"] +resource_name = "crouch_down" +length = 0.25 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Neck:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.233333), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector3(0, 0.56, 0), Vector3(0, 0.15, 0)] +} + +[sub_resource type="Animation" id="Animation_ov1oi"] +resource_name = "head_bob" +loop_mode = 1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Neck:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.266667, 0.766667, 1), +"transitions": PackedFloat32Array(1, 1, 1, 1), +"update": 0, +"values": [Vector3(0, 0.56, 0), Vector3(0, 0.64, 0), Vector3(0, 0.48, 0), Vector3(0, 0.56, 0)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_ojh85"] +_data = { +&"RESET": SubResource("Animation_rn7t0"), +&"crouch": SubResource("Animation_g183x"), +&"head_bob": SubResource("Animation_ov1oi") +} + +[sub_resource type="LabelSettings" id="LabelSettings_180ig"] +font_size = 40 +outline_size = 10 +outline_color = Color(0, 0, 0, 1) + +[node name="Player" type="CharacterBody3D" unique_id=1405475883 groups=["player"]] +collision_layer = 5 +collision_mask = 5 +floor_max_angle = 1.0472 +script = ExtResource("1_mba18") +WALK = 4 +RUN = 8 +floating_jump = true +grapple_speed = 10 + +[node name="MeshInstance3D" type="MeshInstance3D" parent="." unique_id=134489333] +cast_shadow = 0 +mesh = SubResource("CapsuleMesh_2efoy") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="." unique_id=751426452] +shape = SubResource("CapsuleShape3D_fteo1") + +[node name="Neck" type="Node3D" parent="." unique_id=301242026] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.56, 0) + +[node name="FirstPersonCamera" type="Camera3D" parent="Neck" unique_id=342274786] +cull_mask = 1048573 +current = true + +[node name="ItemRig" type="Node3D" parent="Neck/FirstPersonCamera" unique_id=1994853170] + +[node name="Construct" parent="Neck/FirstPersonCamera/ItemRig" unique_id=774462802 instance=ExtResource("4_ebyyx")] +transform = Transform3D(0.3, 0, 0, 0, 0.3, 0, 0, 0, 0.3, 0.5, -0.3, -0.7) +CONSTRUCT_TYPE = ExtResource("3_5stf6") +constructs = { +"fishing_rod": false, +"flashlight": true, +"hammer": true, +"light": false, +"nothing": false, +"shovel": false, +"stick": true, +"time": true, +"weight": true +} + +[node name="InteractorRay" type="RayCast3D" parent="Neck/FirstPersonCamera" unique_id=1552266327 groups=["player_ray"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.2) +target_position = Vector3(0, 0, -4) +collision_mask = 2 +hit_from_inside = true +debug_shape_thickness = 5 +script = ExtResource("2_wqtol") + +[node name="GrappleRay" type="RayCast3D" parent="Neck/FirstPersonCamera" unique_id=362108290] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.02, 0.02, -0.482) +visible = false +target_position = Vector3(0, 0, -50) +collision_mask = 2 +debug_shape_thickness = 5 + +[node name="DumpingRay" type="RayCast3D" parent="Neck/FirstPersonCamera" unique_id=330755418 groups=["player_ray"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.2) +target_position = Vector3(0, 0, -4) +collision_mask = 4 +debug_shape_thickness = 5 +script = ExtResource("2_wqtol") + +[node name="FloorRay" type="RayCast3D" parent="." unique_id=184207867] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.997537, 0) +target_position = Vector3(0, -0.01, 0) +script = ExtResource("8_ov1oi") + +[node name="Audio" type="Node3D" parent="FloorRay" unique_id=257897972] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.525553, 0) + +[node name="AudioHardFloor" type="AudioStreamPlayer3D" parent="FloorRay/Audio" unique_id=2016510907] +transform = Transform3D(-0.114192, 0, 0.993459, 0, 1, 0, -0.993459, 0, -0.114192, 0, -1.07737, 0) +stream = ExtResource("4_obb1p") +volume_db = -20.0 + +[node name="AudioSnow" type="AudioStreamPlayer3D" parent="FloorRay/Audio" unique_id=493069702] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1.077, 0) +stream = ExtResource("11_es4xk") +pitch_scale = 0.5 + +[node name="AudioFloor" type="AudioStreamPlayer3D" parent="FloorRay/Audio" unique_id=22107579] + +[node name="ConstructAnimation" type="AnimationPlayer" parent="." unique_id=1358051717] +libraries/ = SubResource("AnimationLibrary_d68m8") + +[node name="PlayerAnimation" type="AnimationPlayer" parent="." unique_id=365955970] +libraries/ = SubResource("AnimationLibrary_ojh85") + +[node name="PauseMenu" parent="." unique_id=523104302 instance=ExtResource("9_20koh")] + +[node name="Inventory" parent="." unique_id=228567293 instance=ExtResource("10_ov1oi")] + +[node name="UserInterface" type="Control" parent="." unique_id=483806141] +process_mode = 3 +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 + +[node name="Reticle" type="CenterContainer" parent="UserInterface" unique_id=335313459] +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -20.0 +offset_top = -20.0 +offset_right = 20.0 +offset_bottom = 20.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("5_bj1ma") +dot_radius = 2.0 + +[node name="TextBoxContainer" type="MarginContainer" parent="UserInterface" unique_id=1384430051] +layout_mode = 1 +anchors_preset = 7 +anchor_left = 0.5 +anchor_top = 1.0 +anchor_right = 0.5 +anchor_bottom = 1.0 +offset_left = -500.0 +offset_top = -300.0 +offset_right = 500.0 +grow_horizontal = 2 +grow_vertical = 0 +theme_override_constants/margin_bottom = 25 + +[node name="TextBox" type="Label" parent="UserInterface/TextBoxContainer" unique_id=1880207559] +layout_mode = 2 +size_flags_vertical = 1 +text = "Where Am I" +script = ExtResource("11_180ig") + +[node name="Speaker" type="Label" parent="UserInterface/TextBoxContainer/TextBox" unique_id=906263475] +layout_mode = 0 +offset_top = -22.0 +offset_right = 77.0 +offset_bottom = 1.0 +text = "Architect" + +[node name="TextBoxBackPanel" type="Panel" parent="UserInterface/TextBoxContainer/TextBox/Speaker" unique_id=928295384] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="TextBoxBackPanel" type="Panel" parent="UserInterface/TextBoxContainer/TextBox" unique_id=1035686870] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="DebugOverlay" type="SubViewportContainer" parent="." unique_id=963593046] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_bottom = 280.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 + +[node name="SubViewport" type="SubViewport" parent="DebugOverlay" unique_id=212264955] +transparent_bg = true +handle_input_locally = false +size = Vector2i(1920, 1080) +render_target_update_mode = 4 + +[node name="VBoxContainer" type="VBoxContainer" parent="DebugOverlay/SubViewport" unique_id=666426091] +offset_right = 905.0 +offset_bottom = 195.0 +theme_override_constants/separation = 15 + +[node name="CurrentConstructLabel" type="Label" parent="DebugOverlay/SubViewport/VBoxContainer" unique_id=483855760] +layout_mode = 2 +text = "Current Construct: a really long name" +label_settings = SubResource("LabelSettings_180ig") +script = ExtResource("10_20koh") + +[node name="ConstructKeybindingLabel" type="Label" parent="DebugOverlay/SubViewport/VBoxContainer" unique_id=535737146] +layout_mode = 2 +size_flags_horizontal = 0 +size_flags_vertical = 0 +text = "Keybinding: 10" +label_settings = SubResource("LabelSettings_180ig") + +[node name="KeysLabel" type="Label" parent="DebugOverlay/SubViewport/VBoxContainer" unique_id=601443975] +layout_mode = 2 +text = "Keys:" +label_settings = SubResource("LabelSettings_180ig") diff --git a/scenes/props/CSG_geo_rock.tscn b/scenes/props/CSG_geo_rock.tscn new file mode 100644 index 0000000..ca62716 --- /dev/null +++ b/scenes/props/CSG_geo_rock.tscn @@ -0,0 +1,35 @@ +[gd_scene format=3 uid="uid://ckhy1g1hnyam1"] + +[node name="Rock" type="Node3D"] + +[node name="CSGSphere3D" type="CSGSphere3D" parent="."] + +[node name="CSGBox3D" type="CSGBox3D" parent="CSGSphere3D"] +transform = Transform3D(0.7939267, -0.60801345, 0, 0.60801345, 0.7939267, 0, 0, 0, 1, 0.4637786, 0.38866937, -0.051513672) +operation = 2 +size = Vector3(0.5, 0.74328613, 0.86083984) + +[node name="CSGBox3D2" type="CSGBox3D" parent="CSGSphere3D"] +transform = Transform3D(0.5216649, -0.8531504, 0, 0.8531504, 0.5216649, 0, 0, 0, 1, -0.38070804, 0.24613698, -0.04989624) +operation = 2 +size = Vector3(0.8798218, 0.16998291, 0.8640747) + +[node name="CSGBox3D3" type="CSGBox3D" parent="CSGSphere3D"] +transform = Transform3D(-0.034672797, -0.9993987, 0, 0.9993987, -0.034672797, 0, 0, 0, 1, -0.03805156, 0.59667724, -0.051513672) +operation = 2 +size = Vector3(0.5, 0.74328613, 0.86083984) + +[node name="CSGBox3D4" type="CSGBox3D" parent="CSGSphere3D"] +transform = Transform3D(-0.03104482, 0.023775076, -0.9992352, 0.60801345, 0.7939267, 0, 0.7933195, -0.6075485, -0.03910288, 0.056593627, 0.32711142, 0.48636) +operation = 2 +size = Vector3(0.5, 0.74328613, 0.86083984) + +[node name="CSGBox3D5" type="CSGBox3D" parent="CSGSphere3D"] +transform = Transform3D(0.04560473, -0.034925498, 0.99834883, 0.60801345, 0.7939267, 1.1653566e-09, -0.79261583, 0.6070095, 0.05744198, -0.086510755, 0.32711142, -0.4975826) +operation = 2 +size = Vector3(0.5, 0.74328613, 0.8851929) + +[node name="CSGBox3D6" type="CSGBox3D" parent="CSGSphere3D"] +transform = Transform3D(0.35925022, -0.7144408, -0.60042775, 0.7824501, 0.5812409, -0.2234522, 0.50863653, -0.38952953, 0.7678253, 0.21182856, 0.47747257, 0.19683166) +operation = 2 +size = Vector3(0.4296875, 0.5240555, 0.2975464) diff --git a/scenes/props/Cooking_Show/cooking_pot.tscn b/scenes/props/Cooking_Show/cooking_pot.tscn new file mode 100644 index 0000000..74a82cd --- /dev/null +++ b/scenes/props/Cooking_Show/cooking_pot.tscn @@ -0,0 +1,37 @@ +[gd_scene load_steps=2 format=3 uid="uid://dqnhslk6wuo0t"] + +[ext_resource type="Script" uid="uid://deucryejuru7a" path="res://scripts/cooking_pot.gd" id="1_bqvls"] + +[node name="Cooking_Pot" type="Node3D"] + +[node name="Cooking_Pot" type="CSGCylinder3D" parent="." groups=["interactable"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.45002353, 0) +use_collision = true +height = 0.8955078 +sides = 64 +script = ExtResource("1_bqvls") + +[node name="Handle_1" type="CSGTorus3D" parent="Cooking_Pot"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.46617, 0.2095393, 0) +inner_radius = 0.2 +outer_radius = 0.25 +sides = 64 + +[node name="Handle_2" type="CSGTorus3D" parent="Cooking_Pot"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.466, 0.20952392, 0) +inner_radius = 0.2 +outer_radius = 0.25 +sides = 64 + +[node name="Pot_Interior" type="CSGCylinder3D" parent="Cooking_Pot"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.018615723, 0) +operation = 2 +radius = 0.45 +height = 0.8778076 +sides = 64 + +[node name="InteractLabel" type="Label3D" parent="Cooking_Pot" groups=["interactable"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.60247195, 0) +visible = false +billboard = 2 +text = "[E] Cook" diff --git a/scenes/props/Cooking_Show/kitchen_island.tscn b/scenes/props/Cooking_Show/kitchen_island.tscn new file mode 100644 index 0000000..cd2c0ee --- /dev/null +++ b/scenes/props/Cooking_Show/kitchen_island.tscn @@ -0,0 +1,43 @@ +[gd_scene load_steps=6 format=3 uid="uid://bnpdtikvxiipa"] + +[ext_resource type="Texture2D" uid="uid://gktcbleyxtm5" path="res://assets/textures/stone_rocks/Rock013_1K-PNG_Color.png" id="1_lrhch"] +[ext_resource type="Texture2D" uid="uid://df826g11mrjod" path="res://assets/textures/wood/Wood013_1K-PNG/Wood013_1K-PNG_Color.png" id="1_mwj1j"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_tkw5d"] +albedo_texture = ExtResource("1_mwj1j") +uv1_triplanar = true +uv1_world_triplanar = true + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_mwj1j"] +albedo_texture = ExtResource("1_lrhch") +uv1_triplanar = true +uv1_world_triplanar = true + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_mh1yb"] +albedo_color = Color(0.3180198, 0.31801978, 0.31801975, 1) +metallic = 0.85 +roughness = 0.58 + +[node name="KitchenIsland" type="Node3D"] + +[node name="Island" type="CSGBox3D" parent="."] +use_collision = true +size = Vector3(5, 1, 2) +material = SubResource("StandardMaterial3D_tkw5d") + +[node name="Countertop" type="CSGBox3D" parent="Island"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.48283625, 0) +use_collision = true +size = Vector3(5.2, 0.08, 2.2) +material = SubResource("StandardMaterial3D_mwj1j") + +[node name="StoveSpot" type="CSGBox3D" parent="Island"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.012207031, -0.55279505) +operation = 2 +size = Vector3(1, 1.0244141, 1.1005859) +material = SubResource("StandardMaterial3D_mh1yb") + +[node name="Stove" type="CSGBox3D" parent="Island"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.010681152, -0.50705624) +size = Vector3(1, 1.0213623, 1) +material = SubResource("StandardMaterial3D_mh1yb") diff --git a/scenes/props/Office/coffe_mug.tscn b/scenes/props/Office/coffe_mug.tscn new file mode 100644 index 0000000..44e6727 --- /dev/null +++ b/scenes/props/Office/coffe_mug.tscn @@ -0,0 +1,29 @@ +[gd_scene load_steps=2 format=3 uid="uid://4qpj3ofufu2f"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_juufw"] +roughness = 0.2 + +[node name="Coffe_Mug" type="Node3D"] +transform = Transform3D(0.15, 0, 0, 0, 0.15, 0, 0, 0, 0.15, 0, 0, 0) + +[node name="Outer_Mug" type="CSGCylinder3D" parent="."] +use_collision = true +height = 1.0 +sides = 64 +material = SubResource("StandardMaterial3D_juufw") + +[node name="Handle" type="CSGTorus3D" parent="Outer_Mug"] +transform = Transform3D(1, 0, 0, 0, -4.371139e-08, -1, 0, 1, -4.371139e-08, 0.5, 0, 0) +inner_radius = 0.25 +outer_radius = 0.4 +sides = 64 +ring_sides = 64 +material = SubResource("StandardMaterial3D_juufw") + +[node name="Inner_Mug" type="CSGCylinder3D" parent="Outer_Mug"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.08897808, 0) +operation = 2 +radius = 0.4 +height = 0.85 +sides = 64 +material = SubResource("StandardMaterial3D_juufw") diff --git a/scenes/props/Office/keyboard.tscn b/scenes/props/Office/keyboard.tscn new file mode 100644 index 0000000..7e36e4e --- /dev/null +++ b/scenes/props/Office/keyboard.tscn @@ -0,0 +1,7 @@ +[gd_scene format=3 uid="uid://cgbtnid81krqp"] + +[node name="Keyboard" type="Node3D"] + +[node name="CSGBox3D" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.0070572793, 0) +size = Vector3(0.6, 0.03, 0.3) diff --git a/scenes/props/Office/monitor.tscn b/scenes/props/Office/monitor.tscn new file mode 100644 index 0000000..51109e7 --- /dev/null +++ b/scenes/props/Office/monitor.tscn @@ -0,0 +1,43 @@ +[gd_scene load_steps=4 format=3 uid="uid://cs7ihjlyx6ax5"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_w3q2t"] +albedo_color = Color(0, 0, 0, 1) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_7nvqy"] + +[sub_resource type="TextMesh" id="TextMesh_w3q2t"] +material = SubResource("StandardMaterial3D_7nvqy") +text = "DULL" + +[node name="Monitor" type="Node3D"] + +[node name="CSGBox3D" type="CSGBox3D" parent="."] +use_collision = true +size = Vector3(1, 0.5, 0.1) +material = SubResource("StandardMaterial3D_w3q2t") + +[node name="CSGBox3D2" type="CSGBox3D" parent="CSGBox3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.098890364) +use_collision = true +size = Vector3(0.8, 0.4, 0.1) +material = SubResource("StandardMaterial3D_w3q2t") + +[node name="CSGBox3D3" type="CSGBox3D" parent="CSGBox3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.24328715, -0.124270216) +size = Vector3(0.1, 0.5, 0.1) +material = SubResource("StandardMaterial3D_w3q2t") + +[node name="CSGBox3D4" type="CSGBox3D" parent="CSGBox3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.017160833, -0.5142771, -0.14542927) +size = Vector3(0.7, 0.05, 0.4) +material = SubResource("StandardMaterial3D_w3q2t") + +[node name="CSGBox3D" type="CSGBox3D" parent="CSGBox3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0050354004, 0.015477136, 0.051192358) +operation = 2 +size = Vector3(0.9146118, 0.4243164, 0.025177002) +material = SubResource("StandardMaterial3D_w3q2t") + +[node name="MeshInstance3D" type="MeshInstance3D" parent="CSGBox3D"] +transform = Transform3D(0.3, 0, 0, 0, 0.3, 0, 0, 0, 0.3, -0.0057032257, -0.22057027, 0.047009632) +mesh = SubResource("TextMesh_w3q2t") diff --git a/scenes/props/Office/mouse.tscn b/scenes/props/Office/mouse.tscn new file mode 100644 index 0000000..945063c --- /dev/null +++ b/scenes/props/Office/mouse.tscn @@ -0,0 +1,31 @@ +[gd_scene format=3 uid="uid://b744jtx5047ai"] + +[node name="Mouse" type="Node3D"] +transform = Transform3D(0.1, 0, 0, 0, 0.1, 0, 0, 0, 0.1, 0, 0, 0) + +[node name="CSGCylinder3D" type="CSGCylinder3D" parent="."] +transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, 0, 0, 0) +use_collision = true +height = 1.0 +sides = 64 + +[node name="CSGSphere3D" type="CSGSphere3D" parent="CSGCylinder3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 2.1855694e-08) +radial_segments = 64 +rings = 64 + +[node name="CSGSphere3D2" type="CSGSphere3D" parent="CSGCylinder3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.5, -2.1855694e-08) +radial_segments = 64 +rings = 64 + +[node name="CSGBox3D" type="CSGBox3D" parent="CSGCylinder3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.01123046, -0.26293945) +operation = 2 +size = Vector3(1, 2.0947266, 0.5258789) + +[node name="CSGCylinder3D" type="CSGCylinder3D" parent="CSGCylinder3D"] +transform = Transform3D(-4.3711385e-08, -0.99999994, 0, 0.99999994, -4.3711385e-08, 0, 0, 8.258571e-21, 1, 0, 0.413, 0.45) +radius = 0.15 +height = 0.1 +sides = 64 diff --git a/scenes/props/Office/office_chair.tscn b/scenes/props/Office/office_chair.tscn new file mode 100644 index 0000000..02eb819 --- /dev/null +++ b/scenes/props/Office/office_chair.tscn @@ -0,0 +1,90 @@ +[gd_scene format=3 uid="uid://60mcq1xuxwyn"] + +[node name="Office_Chair" type="Node3D"] +transform = Transform3D(0.66, 0, 0, 0, 0.66, 0, 0, 0, 0.66, 0, 0, 0) + +[node name="Seat" type="CSGBox3D" parent="."] +size = Vector3(1, 0.25, 0.75) + +[node name="Back" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0034179688, 0.62381315, -0.48773912) +use_collision = true +size = Vector3(1, 1.5, 0.25) + +[node name="Support_Rod" type="CSGCylinder3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.379615, 0) +use_collision = true +radius = 0.1 +height = 0.5 + +[node name="Leg" type="CSGCylinder3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 0.25881907, 0.9659258, 0, -0.9659258, 0.25881907, 0, -0.686, 0.35) +use_collision = true +radius = 0.1 +height = 0.75 + +[node name="Shitty_Wheel" type="CSGCylinder3D" parent="Leg"] +transform = Transform3D(-4.3711346e-08, -0.99999994, 0, 0.99999917, -4.3711385e-08, 0, 1.4901161e-08, -2.6645353e-15, 1.0000001, 0.0007281909, -0.34107417, 0.012283146) +radius = 0.1 +height = 0.175 +sides = 16 + +[node name="Leg2" type="CSGCylinder3D" parent="."] +transform = Transform3D(0.49999997, -0.8365163, 0.2241439, 0, 0.25881907, 0.9659258, -0.86602545, -0.48296288, 0.12940952, 0.29843757, -0.686, 0.17537837) +use_collision = true +radius = 0.1 +height = 0.75 + +[node name="Shitty_Wheel" type="CSGCylinder3D" parent="Leg2"] +transform = Transform3D(-4.3711346e-08, -0.99999994, 0, 0.99999917, -4.3711385e-08, 0, 1.4901161e-08, -2.6645353e-15, 1.0000001, 0.0007281909, -0.34107417, 0.012283146) +radius = 0.1 +height = 0.175 +sides = 16 + +[node name="Leg3" type="CSGCylinder3D" parent="."] +transform = Transform3D(-0.50000006, -0.83651626, 0.22414389, 0, 0.25881907, 0.9659258, -0.8660254, 0.48296297, -0.12940955, 0.31011435, -0.686, -0.1860052) +use_collision = true +radius = 0.1 +height = 0.75 + +[node name="Shitty_Wheel" type="CSGCylinder3D" parent="Leg3"] +transform = Transform3D(-4.3711346e-08, -0.99999994, 0, 0.99999917, -4.3711385e-08, 0, 1.4901161e-08, -2.6645353e-15, 1.0000001, 0.0007281909, -0.34107417, 0.012283146) +radius = 0.1 +height = 0.175 +sides = 16 + +[node name="Leg4" type="CSGCylinder3D" parent="."] +transform = Transform3D(-1, 8.444392e-08, -2.2626683e-08, 0, 0.25881907, 0.9659258, 8.742278e-08, 0.9659258, -0.25881907, 0.016628742, -0.686, -0.3349791) +use_collision = true +radius = 0.1 +height = 0.75 + +[node name="Shitty_Wheel" type="CSGCylinder3D" parent="Leg4"] +transform = Transform3D(-4.3711346e-08, -0.99999994, 0, 0.99999917, -4.3711385e-08, 0, 1.4901161e-08, -2.6645353e-15, 1.0000001, 0.0007281909, -0.34107417, 0.012283146) +radius = 0.1 +height = 0.175 +sides = 16 + +[node name="Leg5" type="CSGCylinder3D" parent="."] +transform = Transform3D(-0.4999999, 0.8365163, -0.2241439, 0, 0.25881907, 0.9659258, 0.86602545, 0.48296282, -0.1294095, -0.32470495, -0.686, -0.12163961) +use_collision = true +radius = 0.1 +height = 0.75 + +[node name="Shitty_Wheel" type="CSGCylinder3D" parent="Leg5"] +transform = Transform3D(-4.3711346e-08, -0.99999994, 0, 0.99999917, -4.3711385e-08, 0, 1.4901161e-08, -2.6645353e-15, 1.0000001, 0.0007281909, -0.34107417, 0.012283146) +radius = 0.1 +height = 0.175 +sides = 16 + +[node name="Leg6" type="CSGCylinder3D" parent="."] +transform = Transform3D(0.4999999, 0.8365163, -0.2241439, 0, 0.25881907, 0.9659258, 0.86602545, -0.48296282, 0.1294095, -0.34915975, -0.686, 0.17756996) +use_collision = true +radius = 0.1 +height = 0.75 + +[node name="Shitty_Wheel" type="CSGCylinder3D" parent="Leg6"] +transform = Transform3D(-4.3711346e-08, -0.99999994, 0, 0.99999917, -4.3711385e-08, 0, 1.4901161e-08, -2.6645353e-15, 1.0000001, 0.0007281909, -0.34107417, 0.012283146) +radius = 0.1 +height = 0.175 +sides = 16 diff --git a/scenes/props/Office/office_desk.tscn b/scenes/props/Office/office_desk.tscn new file mode 100644 index 0000000..2aaa33a --- /dev/null +++ b/scenes/props/Office/office_desk.tscn @@ -0,0 +1,29 @@ +[gd_scene load_steps=4 format=3 uid="uid://ch4vtgcvmmlb4"] + +[ext_resource type="Texture2D" uid="uid://df826g11mrjod" path="res://assets/textures/wood/Wood013_1K-PNG/Wood013_1K-PNG_Color.png" id="1_gvsyh"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_q4so0"] +albedo_texture = ExtResource("1_gvsyh") +uv1_triplanar = true +uv1_world_triplanar = true + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ghusu"] +albedo_color = Color(0.7529412, 0.7529412, 0.7529412, 1) + +[node name="Office_Desk" type="Node3D"] +transform = Transform3D(0.75, 0, 0, 0, 0.75, 0, 0, 0, 0.75, 0, 0, 0) + +[node name="Desktop" type="CSGBox3D" parent="."] +use_collision = true +size = Vector3(3, 0.2, 1.5) +material = SubResource("StandardMaterial3D_q4so0") + +[node name="Drawers" type="CSGBox3D" parent="Desktop"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.0332336, -0.61640847, -0.0021820068) +size = Vector3(0.9262085, 1.0277863, 1.4959412) +material = SubResource("StandardMaterial3D_ghusu") + +[node name="Support_Leg" type="CSGBox3D" parent="Desktop"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.3617201, -0.611, -0.002) +size = Vector3(0.2687683, 1.0391235, 1.4959412) +material = SubResource("StandardMaterial3D_ghusu") diff --git a/scenes/props/Office/overhead_office_light.tscn b/scenes/props/Office/overhead_office_light.tscn new file mode 100644 index 0000000..f44d06f --- /dev/null +++ b/scenes/props/Office/overhead_office_light.tscn @@ -0,0 +1,28 @@ +[gd_scene load_steps=3 format=3 uid="uid://b55nbp4i8cfsb"] + +[ext_resource type="AudioStream" uid="uid://cfhe8hhegoc3y" path="res://assets/SFX/254783__jonathantremblay__buzzing-light.mp3" id="1_18nk2"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_jekai"] +albedo_color = Color(3.2944162, 3.2944162, 3.2944162, 1) +backlight = Color(1, 1, 1, 1) + +[node name="Overhead_Office_Light" type="Node3D"] + +[node name="Light_Shape" type="CSGBox3D" parent="."] +use_collision = true +size = Vector3(0.593811, 0.38623, 1.8241) +material = SubResource("StandardMaterial3D_jekai") + +[node name="Light" type="SpotLight3D" parent="Light_Shape"] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 0.121436, 0) +light_color = Color(1.353256, 1.353256, 1.353256, 1) +light_energy = 3.5 +light_size = 1.0 +spot_range = 10.0 +spot_angle = 78.1 + +[node name="BuzzingLight" type="AudioStreamPlayer3D" parent="Light_Shape"] +stream = ExtResource("1_18nk2") +volume_db = -25.0 +autoplay = true +max_distance = 10.0 diff --git a/scenes/props/Theater/fresnel_light.tscn b/scenes/props/Theater/fresnel_light.tscn new file mode 100644 index 0000000..b4a8fc0 --- /dev/null +++ b/scenes/props/Theater/fresnel_light.tscn @@ -0,0 +1,93 @@ +[gd_scene load_steps=6 format=3 uid="uid://c0m6hupfp3ncp"] + +[ext_resource type="Texture2D" uid="uid://7fagq33bixhr" path="res://assets/textures/metal/Metal029_1K-PNG/Metal029_1K-PNG_Color.png" id="1_6op2p"] +[ext_resource type="Texture2D" uid="uid://6fdgkbvnwnph" path="res://assets/textures/metal/Metal029_1K-PNG/Metal029_1K-PNG_Metalness.png" id="2_vavmo"] +[ext_resource type="Texture2D" uid="uid://c0somfrw3col4" path="res://assets/textures/metal/Metal029_1K-PNG/Metal029_1K-PNG_Roughness.png" id="3_l22g4"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_rkads"] +albedo_texture = ExtResource("1_6op2p") +metallic = 1.0 +metallic_texture = ExtResource("2_vavmo") +roughness_texture = ExtResource("3_l22g4") +uv1_triplanar = true +uv1_world_triplanar = true + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ev3ld"] +transparency = 1 +albedo_color = Color(3.2944162, 3.2944162, 0.80437535, 1) + +[node name="Fresnel_Light" type="Node3D"] +transform = Transform3D(0.33, 0, 0, 0, 0.33, 0, 0, 0, 0.33, 0, 0, 0) + +[node name="Light_Can" type="CSGCylinder3D" parent="."] +transform = Transform3D(1, 0, 0, 0, -0.5, -0.8660253, 0, 0.8660253, -0.5, 0, 0, 0) +use_collision = true +sides = 64 +material = SubResource("StandardMaterial3D_rkads") + +[node name="Handle" type="CSGBox3D" parent="Light_Can"] +transform = Transform3D(1, 0, 0, 0, -0.50000006, 0.86602545, 0, -0.86602545, -0.50000006, -0.49642754, -0.9218519, -0.38193908) +size = Vector3(0.01, 1, 0.2) +material = SubResource("StandardMaterial3D_rkads") + +[node name="Handle" type="CSGBox3D" parent="Light_Can/Handle"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.9917309, 0, 0) +size = Vector3(0.01, 1, 0.2) +material = SubResource("StandardMaterial3D_rkads") + +[node name="Handle2" type="CSGBox3D" parent="Light_Can/Handle"] +transform = Transform3D(-4.371139e-08, -1, 0, 1, -4.371139e-08, 0, 0, 0, 1, 0.49626285, 0.4950871, 0) +size = Vector3(0.01, 1, 0.2) +material = SubResource("StandardMaterial3D_rkads") + +[node name="Battery" type="CSGBox3D" parent="Light_Can"] +transform = Transform3D(1, 0, 0, 0, 1, -2.9802322e-08, 0, 2.9802322e-08, 1, -0.030212402, -0.02485305, 0.47857618) +size = Vector3(0.79504395, 1.8030701, 0.3852234) +material = SubResource("StandardMaterial3D_rkads") + +[node name="Flap_Holder" type="CSGBox3D" parent="Light_Can"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.0010071, 0) +size = Vector3(1.1, 0.03, 1.1) +material = SubResource("StandardMaterial3D_rkads") + +[node name="Light_Hole" type="CSGCylinder3D" parent="Light_Can"] +transform = Transform3D(1, 0, 0, 0, 0.99999994, 0, 0, 0, 0.99999994, 0, 0.40478516, 2.9802322e-08) +operation = 2 +radius = 0.4 +height = 2.413086 +sides = 64 +material = SubResource("StandardMaterial3D_rkads") + +[node name="Fake_Light" type="CSGCylinder3D" parent="Light_Can"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.95045483, 8.940697e-08) +radius = 0.39892578 +height = 0.099090576 +sides = 64 +material = SubResource("StandardMaterial3D_ev3ld") + +[node name="Flap" type="CSGBox3D" parent="Light_Can"] +transform = Transform3D(1, 0, 0, 0, 0.70710677, 0.7071069, 0, -0.7071069, 0.70710677, 0, 1.2561766, -0.7842762) +size = Vector3(1.1, 0.7109219, 0.01) +material = SubResource("StandardMaterial3D_rkads") + +[node name="Flap2" type="CSGBox3D" parent="Light_Can"] +transform = Transform3D(1, 0, 0, 0, 0.86602545, -0.49999997, 0, 0.49999997, 0.86602545, 0, 1.3090622, 0.7136126) +size = Vector3(1.1, 0.7109219, 0.01) +material = SubResource("StandardMaterial3D_rkads") + +[node name="Flap3" type="CSGBox3D" parent="."] +transform = Transform3D(0.6911033, 0.0033385274, 0.72274816, 0.34214833, 0.87933034, -0.33122945, -0.6366401, 0.47620085, 0.6065656, 0.79249114, -0.6115823, 1.0774342) +size = Vector3(0.01, 1.0954345, 0.6865547) +material = SubResource("StandardMaterial3D_rkads") + +[node name="Flap4" type="CSGBox3D" parent="."] +transform = Transform3D(0.6908506, -0.0024003247, -0.7229934, -0.3428368, 0.87933135, -0.33051437, 0.63654387, 0.47620508, 0.6066635, -0.792, -0.612, 1.077) +size = Vector3(0.01, 1.0954345, 0.6865547) +material = SubResource("StandardMaterial3D_rkads") + +[node name="SpotLight3D" type="SpotLight3D" parent="."] +transform = Transform3D(3.030303, 0, 0, 0, -2.6243193, 1.5151519, 0, -1.5151519, -2.6243193, 0, -0.49498045, 0.7872948) +light_color = Color(1, 1, 0.9137255, 1) +light_energy = 5.0 +spot_range = 10.0 +spot_angle = 20.0 diff --git a/scenes/props/Theater/spotlight_large.tscn b/scenes/props/Theater/spotlight_large.tscn new file mode 100644 index 0000000..252dc58 --- /dev/null +++ b/scenes/props/Theater/spotlight_large.tscn @@ -0,0 +1,75 @@ +[gd_scene load_steps=6 format=3 uid="uid://b48lml18a55me"] + +[ext_resource type="Texture2D" uid="uid://7fagq33bixhr" path="res://assets/textures/metal/Metal029_1K-PNG/Metal029_1K-PNG_Color.png" id="1_3kd6f"] +[ext_resource type="Texture2D" uid="uid://6fdgkbvnwnph" path="res://assets/textures/metal/Metal029_1K-PNG/Metal029_1K-PNG_Metalness.png" id="2_nblif"] +[ext_resource type="Texture2D" uid="uid://c0somfrw3col4" path="res://assets/textures/metal/Metal029_1K-PNG/Metal029_1K-PNG_Roughness.png" id="3_hqoki"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_url3y"] +albedo_texture = ExtResource("1_3kd6f") +metallic = 1.0 +metallic_texture = ExtResource("2_nblif") +roughness_texture = ExtResource("3_hqoki") +uv1_triplanar = true +uv1_world_triplanar = true + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_0hlcm"] +transparency = 1 +albedo_color = Color(3.2944162, 3.2944162, 0.80437535, 1) + +[node name="Spotlight_Large" type="Node3D"] + +[node name="Light_Can" type="CSGCylinder3D" parent="."] +transform = Transform3D(-1, 8.742278e-08, 0, -1.518081e-08, -0.17364822, 0.9848077, 8.609462e-08, 0.9848077, 0.17364822, 3.752246e-08, -0.2523501, -0.42920694) +use_collision = true +height = 1.0 +sides = 64 +material = SubResource("StandardMaterial3D_url3y") + +[node name="Handle" type="CSGBox3D" parent="Light_Can"] +transform = Transform3D(1, 5.4245913e-08, 1.10754e-08, -1.7531363e-08, 0.12050073, 0.99271405, 5.251603e-08, -0.99271405, 0.12050073, -0.49642745, -0.16262475, -0.5229789) +size = Vector3(0.01, 1, 0.2) +material = SubResource("StandardMaterial3D_url3y") + +[node name="Handle" type="CSGBox3D" parent="Light_Can/Handle"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.9917309, 0, 0) +size = Vector3(0.01, 1, 0.2) +material = SubResource("StandardMaterial3D_url3y") + +[node name="Handle2" type="CSGBox3D" parent="Light_Can/Handle"] +transform = Transform3D(-4.371139e-08, -1, 0, 1, -4.371139e-08, 0, 0, 0, 1, 0.49626285, 0.4950871, 0) +size = Vector3(0.01, 1, 0.2) +material = SubResource("StandardMaterial3D_url3y") + +[node name="Battery" type="CSGBox3D" parent="Light_Can"] +transform = Transform3D(1, 0, 5.0803806e-13, 0, 1, -2.9802322e-08, 0, 2.9802322e-08, 1, -0.030212436, 0.03608346, -0.37270272) +size = Vector3(0.795, 0.6, 0.263) +material = SubResource("StandardMaterial3D_url3y") + +[node name="Light_Hole" type="CSGCylinder3D" parent="Light_Can"] +transform = Transform3D(1, 3.8369308e-13, -2.877698e-13, 7.1054274e-14, 1.0000156, 5.2154064e-07, -1.7763568e-15, -5.2154064e-07, 1.0000156, -1.8474111e-13, 0.022636235, 2.682209e-07) +operation = 2 +radius = 0.4 +height = 1.0150146 +sides = 64 +material = SubResource("StandardMaterial3D_url3y") + +[node name="Fake_Light" type="CSGCylinder3D" parent="Light_Can"] +transform = Transform3D(1, 0, 3.1974423e-14, 0, 1, 0, 0, 0, 1, 4.1232813e-08, 0.4047735, -0.0018504895) +radius = 0.39892578 +height = 0.099090576 +sides = 64 +material = SubResource("StandardMaterial3D_0hlcm") + +[node name="Base" type="CSGCylinder3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1.2838144, -0.7390037) +radius = 0.65 +height = 0.107177734 +sides = 64 +material = SubResource("StandardMaterial3D_url3y") + +[node name="SpotLight3D" type="SpotLight3D" parent="."] +transform = Transform3D(1, 0, 0, 0, -0.96592593, 0.25881916, 0, -0.25881916, -0.96592593, 0, -0.28050324, -0.03820777) +light_color = Color(1, 1, 0.9137255, 1) +light_energy = 5.0 +spot_range = 10.0 +spot_angle = 20.0 diff --git a/scenes/props/Theater/theater_chair.tscn b/scenes/props/Theater/theater_chair.tscn new file mode 100644 index 0000000..d2bb149 --- /dev/null +++ b/scenes/props/Theater/theater_chair.tscn @@ -0,0 +1,55 @@ +[gd_scene load_steps=6 format=3 uid="uid://2nfc3gsam5yd"] + +[ext_resource type="Texture2D" uid="uid://qkkfwk1pn85v" path="res://assets/textures/fabric_carpet/velour_velvet/velour_velvet_diff_1k.jpg" id="1_wd673"] +[ext_resource type="Texture2D" uid="uid://cp0lt8d8r3otb" path="res://assets/textures/fabric_carpet/velour_velvet/velour_velvet_metal_1k.jpg" id="2_qs2yr"] +[ext_resource type="Texture2D" uid="uid://u18v7fe875we" path="res://assets/textures/fabric_carpet/velour_velvet/velour_velvet_nor_gl_1k.jpg" id="3_ilgf8"] +[ext_resource type="Texture2D" uid="uid://dbej44vy4ies0" path="res://assets/textures/fabric_carpet/velour_velvet/velour_velvet_rough_1k.jpg" id="4_m4d2f"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_bkadj"] +albedo_texture = ExtResource("1_wd673") +metallic = 1.0 +metallic_texture = ExtResource("2_qs2yr") +roughness_texture = ExtResource("4_m4d2f") +normal_enabled = true +normal_texture = ExtResource("3_ilgf8") +uv1_triplanar = true +uv1_world_triplanar = true + +[node name="Theater_Chair" type="Node3D"] + +[node name="CSGBox3D" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.091406286, 0) +use_collision = true +size = Vector3(1.4, 1.6, 1) +material = SubResource("StandardMaterial3D_bkadj") + +[node name="CSGBox3D" type="CSGBox3D" parent="CSGBox3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.21876717, 0.36511463, 0.008041382) +operation = 2 +size = Vector3(0.9734764, 0.8751068, 0.6861267) +material = SubResource("StandardMaterial3D_bkadj") + +[node name="CSGBox3D2" type="CSGBox3D" parent="CSGBox3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.017638564, -0.69731885, 0.003129512) +operation = 2 +size = Vector3(1.4593811, 0.30981445, 0.83203125) +material = SubResource("StandardMaterial3D_bkadj") + +[node name="CSGBox3D3" type="CSGBox3D" parent="CSGBox3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.22741699, 0.59605277, 0.41381836) +operation = 2 +size = Vector3(0.9875488, 0.43554688, 0.17236328) +material = SubResource("StandardMaterial3D_bkadj") + +[node name="CSGBox3D4" type="CSGBox3D" parent="CSGBox3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.234375, 0.59605277, -0.4207173) +operation = 2 +size = Vector3(1.003418, 0.436, 0.172) +material = SubResource("StandardMaterial3D_bkadj") + +[node name="CSGCylinder3D" type="CSGCylinder3D" parent="CSGBox3D"] +transform = Transform3D(-4.371139e-08, 1, 0, -1, -4.371139e-08, 0, 0, 0, 1, -0.48288715, 0.75, 0) +radius = 0.50390625 +height = 0.43254298 +sides = 64 +material = SubResource("StandardMaterial3D_bkadj") diff --git a/scenes/props/Theater/theater_movie_screen.tscn b/scenes/props/Theater/theater_movie_screen.tscn new file mode 100644 index 0000000..ba7e51a --- /dev/null +++ b/scenes/props/Theater/theater_movie_screen.tscn @@ -0,0 +1,50 @@ +[gd_scene load_steps=5 format=3 uid="uid://dnh1xm700maqp"] + +[ext_resource type="VideoStream" uid="uid://dphulh88pqy1a" path="res://videos/Desktop.ogv" id="1_oh1an"] + +[sub_resource type="ViewportTexture" id="ViewportTexture_hsx7e"] +viewport_path = NodePath("Movie_Screen/SubViewport") + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_hsx7e"] +resource_local_to_scene = true +shading_mode = 0 +albedo_texture = SubResource("ViewportTexture_hsx7e") + +[sub_resource type="PlaneMesh" id="PlaneMesh_hsx7e"] +resource_local_to_scene = true +material = SubResource("StandardMaterial3D_hsx7e") +size = Vector2(25, 10) + +[node name="Movie_Screen" type="Node3D"] + +[node name="Movie_Screen" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, -4.3711385e-08, -0.99999994, 0, 0.99999994, -4.3711385e-08, 0, 0, 0) +mesh = SubResource("PlaneMesh_hsx7e") + +[node name="SubViewport" type="SubViewport" parent="Movie_Screen"] +size = Vector2i(1000, 600) + +[node name="VideoStreamPlayer" type="VideoStreamPlayer" parent="Movie_Screen/SubViewport"] +offset_right = 1925.0 +offset_bottom = 795.0 +stream = ExtResource("1_oh1an") +autoplay = true +loop = true + +[node name="SpotLight3D" type="SpotLight3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 9.542648) +visible = false +spot_range = 33.837 +spot_angle = 26.95 + +[node name="SpotLight3D2" type="SpotLight3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7.530497, 0, 9.542648) +visible = false +spot_range = 33.837 +spot_angle = 26.95 + +[node name="SpotLight3D3" type="SpotLight3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7.611431, 0, 9.542648) +visible = false +spot_range = 33.837 +spot_angle = 26.95 diff --git a/scenes/props/Theater/theater_sconce.tscn b/scenes/props/Theater/theater_sconce.tscn new file mode 100644 index 0000000..9040b4e --- /dev/null +++ b/scenes/props/Theater/theater_sconce.tscn @@ -0,0 +1,21 @@ +[gd_scene load_steps=2 format=3 uid="uid://cjtc733mh60l0"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ksj24"] +albedo_color = Color(0, 0, 0, 1) +metallic = 0.49 +roughness = 0.38 + +[node name="Theater_Sconce" type="Node3D"] + +[node name="Sconce" type="CSGSphere3D" parent="."] +material = SubResource("StandardMaterial3D_ksj24") + +[node name="CSGCylinder3D" type="CSGCylinder3D" parent="Sconce"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.42480052, 0) +operation = 2 +height = 0.5909424 + +[node name="SpotLight3D" type="SpotLight3D" parent="."] +transform = Transform3D(1, 0, 0, 0, -4.371139e-08, -1, 0, 1, -4.371139e-08, 0, 0, 0.28322488) +light_color = Color(0.99215686, 0.6666667, 0.28235295, 1) +shadow_enabled = true diff --git a/scenes/props/bookshelf.tscn b/scenes/props/bookshelf.tscn new file mode 100644 index 0000000..f4b4ed3 --- /dev/null +++ b/scenes/props/bookshelf.tscn @@ -0,0 +1,87 @@ +[gd_scene load_steps=6 format=3 uid="uid://cqc7a7324pe8q"] + +[ext_resource type="Texture2D" uid="uid://df826g11mrjod" path="res://assets/textures/wood/Wood013_1K-PNG/Wood013_1K-PNG_Color.png" id="1_qh28o"] +[ext_resource type="Texture2D" uid="uid://7fvtdfu86knj" path="res://assets/picture/freepik-ring-binder-used-stored-documents_fixed.png" id="2_n3y63"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_n3y63"] +albedo_texture = ExtResource("1_qh28o") +uv1_triplanar = true +uv1_world_triplanar = true + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_pcujx"] +albedo_texture = ExtResource("2_n3y63") + +[sub_resource type="PlaneMesh" id="PlaneMesh_1swca"] +material = SubResource("StandardMaterial3D_pcujx") +size = Vector2(0.5, 0.5) + +[node name="Bookshelf" type="CSGBox3D"] +use_collision = true +size = Vector3(2.2, 2.5, 0.5) +material = SubResource("StandardMaterial3D_n3y63") + +[node name="Shelf" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.019378662, 0.82697976, 0.05203718) +operation = 2 +size = Vector3(2, 0.66, 0.4) +material = SubResource("StandardMaterial3D_n3y63") + +[node name="Shelf2" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.019378662, 0.02619043, 0.05203718) +operation = 2 +size = Vector3(2, 0.66, 0.4) +material = SubResource("StandardMaterial3D_n3y63") + +[node name="Shelf3" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.019378662, -0.7679902, 0.05203718) +operation = 2 +size = Vector3(2, 0.66, 0.4) +material = SubResource("StandardMaterial3D_n3y63") + +[node name="Binders" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, -4.371139e-08, -1, 0, 1, -4.371139e-08, -0.7295467, 0.75457907, 0.18684357) +mesh = SubResource("PlaneMesh_1swca") + +[node name="Binders2" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, -4.371139e-08, -1, 0, 1, -4.371139e-08, -0.22994733, 0.75457907, 0.18684357) +mesh = SubResource("PlaneMesh_1swca") + +[node name="Binders3" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, -4.371139e-08, -1, 0, 1, -4.371139e-08, 0.270999, 0.75457907, 0.18684357) +mesh = SubResource("PlaneMesh_1swca") + +[node name="Binders4" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, -4.371139e-08, -1, 0, 1, -4.371139e-08, 0.77370137, 0.75457907, 0.18684357) +mesh = SubResource("PlaneMesh_1swca") + +[node name="Binders5" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, -4.371139e-08, -1, 0, 1, -4.371139e-08, -0.7295467, -0.050529063, 0.18684357) +mesh = SubResource("PlaneMesh_1swca") + +[node name="Binders6" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, -4.371139e-08, -1, 0, 1, -4.371139e-08, -0.22994733, -0.050529063, 0.18684357) +mesh = SubResource("PlaneMesh_1swca") + +[node name="Binders7" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, -4.371139e-08, -1, 0, 1, -4.371139e-08, 0.270999, -0.050529063, 0.18684357) +mesh = SubResource("PlaneMesh_1swca") + +[node name="Binders8" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, -4.371139e-08, -1, 0, 1, -4.371139e-08, 0.77370137, -0.050529063, 0.18684357) +mesh = SubResource("PlaneMesh_1swca") + +[node name="Binders9" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, -4.371139e-08, -1, 0, 1, -4.371139e-08, -0.7295467, -0.84539133, 0.18684357) +mesh = SubResource("PlaneMesh_1swca") + +[node name="Binders10" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, -4.371139e-08, -1, 0, 1, -4.371139e-08, -0.22994733, -0.84539133, 0.18684357) +mesh = SubResource("PlaneMesh_1swca") + +[node name="Binders11" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, -4.371139e-08, -1, 0, 1, -4.371139e-08, 0.270999, -0.84539133, 0.18684357) +mesh = SubResource("PlaneMesh_1swca") + +[node name="Binders12" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, -4.371139e-08, -1, 0, 1, -4.371139e-08, 0.77370137, -0.84539133, 0.18684357) +mesh = SubResource("PlaneMesh_1swca") diff --git a/scenes/props/box.tscn b/scenes/props/box.tscn new file mode 100644 index 0000000..35eacf3 --- /dev/null +++ b/scenes/props/box.tscn @@ -0,0 +1,13 @@ +[gd_scene load_steps=3 format=3 uid="uid://bfpf2hccp2gy2"] + +[sub_resource type="BoxMesh" id="BoxMesh_1cclh"] + +[sub_resource type="BoxShape3D" id="BoxShape3D_g4j6v"] + +[node name="Box" type="RigidBody3D"] + +[node name="MeshInstance3D" type="MeshInstance3D" parent="."] +mesh = SubResource("BoxMesh_1cclh") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="."] +shape = SubResource("BoxShape3D_g4j6v") diff --git a/scenes/props/breakable_wall.tscn b/scenes/props/breakable_wall.tscn new file mode 100644 index 0000000..b989414 --- /dev/null +++ b/scenes/props/breakable_wall.tscn @@ -0,0 +1,31 @@ +[gd_scene format=3 uid="uid://tbtmdq3qw0h0"] + +[ext_resource type="Script" uid="uid://c3igw81nke1l1" path="res://scripts/Breakable.gd" id="1_4v01d"] +[ext_resource type="Texture2D" uid="uid://dubgjsy23ewhg" path="res://assets/textures/cracked_texture.png" id="2_wqk0f"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_51wcf"] +albedo_color = Color(0.66, 0.66, 0.66, 1) + +[sub_resource type="BoxMesh" id="BoxMesh_e4qnn"] +material = SubResource("StandardMaterial3D_51wcf") +size = Vector3(2, 3, 0.3) + +[sub_resource type="BoxShape3D" id="BoxShape3D_fyydt"] +size = Vector3(2, 3, 0.0927734) + +[node name="BreakableWall" type="StaticBody3D" unique_id=1567217624 groups=["breakable"]] +collision_layer = 3 +script = ExtResource("1_4v01d") + +[node name="MeshWall" type="MeshInstance3D" parent="." unique_id=1305566895] +mesh = SubResource("BoxMesh_e4qnn") + +[node name="CollisionWall" type="CollisionShape3D" parent="." unique_id=1893658791] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0020752, 0.00602722, -0.000976563) +shape = SubResource("BoxShape3D_fyydt") + +[node name="Decal" type="Decal" parent="." unique_id=189006667] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 1.61289e-09, -0.0368986) +visible = false +size = Vector3(1.9668, 0.720148, 2.96912) +texture_albedo = ExtResource("2_wqk0f") diff --git a/scenes/props/buildings/breakable_csg_box.gd b/scenes/props/buildings/breakable_csg_box.gd new file mode 100644 index 0000000..6358caa --- /dev/null +++ b/scenes/props/buildings/breakable_csg_box.gd @@ -0,0 +1,19 @@ +extends CSGBox3D + +@onready var debris_generator: Node3D = get_tree().get_first_node_in_group("generator") + +@export var stability = 2 + +func _process(_delta: float) -> void: + + match stability: + 1: + print("decal") + ##Assumes decal is always 3rd child and checks if object has a decal + if self.get_children().size() > 0 and self.get_child(0) is Decal: + $Decal.visible = true + 0: + print("debris") + debris_generator.generate_debris(self.global_position, self.size, self.material) + self.visibility = false + diff --git a/scenes/props/buildings/breakable_csg_box.gd.uid b/scenes/props/buildings/breakable_csg_box.gd.uid new file mode 100644 index 0000000..723cc93 --- /dev/null +++ b/scenes/props/buildings/breakable_csg_box.gd.uid @@ -0,0 +1 @@ +uid://cfi825qkfljow diff --git a/scenes/props/buildings/cottage.tscn b/scenes/props/buildings/cottage.tscn new file mode 100644 index 0000000..fe2a7f1 --- /dev/null +++ b/scenes/props/buildings/cottage.tscn @@ -0,0 +1,132 @@ +[gd_scene load_steps=6 format=3 uid="uid://bobmvagvsys2m"] + +[ext_resource type="Texture2D" uid="uid://dwdk6x0sqlah4" path="res://assets/textures/blockout_textures/64/basic/gray_dots.png" id="2_6txq0"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_6oict"] +albedo_texture = ExtResource("2_6txq0") +uv1_triplanar = true +uv1_world_triplanar = true + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_70il3"] +albedo_texture = ExtResource("2_6txq0") +uv1_triplanar = true +uv1_world_triplanar = true + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_p6esd"] +albedo_texture = ExtResource("2_6txq0") +uv1_triplanar = true +uv1_world_triplanar = true + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_itc8y"] +albedo_texture = ExtResource("2_6txq0") +uv1_triplanar = true +uv1_world_triplanar = true + +[node name="Cottage" type="Node3D"] + +[node name="Roof" type="CSGPolygon3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.24556, 5.50341, 6.70229) +use_collision = true +polygon = PackedVector2Array(-2.92163, -0.27592, 0.268877, 4.19049, 3.74505, -0.248177) +depth = 13.35 + +[node name="RoofSpace" type="CSGPolygon3D" parent="Roof"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0598283, 0.193057, -0.496836) +operation = 2 +polygon = PackedVector2Array(-2.52771, -0.604166, 0.421174, 3.76462, 3.42161, -0.503259) +depth = 12.5 + +[node name="CSGPolygon3D" type="CSGPolygon3D" parent="Roof"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.86579, 0, 0.244097) +polygon = PackedVector2Array(0.140591, -0.697144, 4.21357, 4.67795, 4.45139, 4.44764, 0.505661, -1.05847) +depth = 13.9 + +[node name="CSGPolygon3D2" type="CSGPolygon3D" parent="Roof"] +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 4.60998, -0.0238457, -13.6576) +polygon = PackedVector2Array(0.38581, -0.544517, 4.10423, 4.54899, 4.42661, 4.17799, 0.746056, -0.781674) +depth = 13.9 + +[node name="Floor" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.72516, 0, 0.0542603) +use_collision = true +size = Vector3(6.5011, 0.5, 13.3021) +material = SubResource("StandardMaterial3D_6oict") + +[node name="WallBack" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.40696, 2.76576, 0.0331974) +use_collision = true +size = Vector3(0.482, 5, 13.314) +material = SubResource("StandardMaterial3D_70il3") + +[node name="WallFront" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.8209, 2.76628, -0.167142) +use_collision = true +size = Vector3(0.368, 5, 12.7984) +material = SubResource("StandardMaterial3D_p6esd") + +[node name="DoorFrame" type="CSGBox3D" parent="WallFront"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1.38248, -0.010231) +operation = 2 +size = Vector3(0.526794, 2.2439, 1.31953) + +[node name="WindowFront" type="CSGBox3D" parent="WallFront"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.00408173, -0.134131, 3.20137) +operation = 2 +size = Vector3(0.571701, 2.34607, 1.21326) + +[node name="WindowFront2" type="CSGBox3D" parent="WallFront"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.00408173, -0.134131, 4.52689) +operation = 2 +size = Vector3(0.571701, 2.34607, 1.21326) + +[node name="WindowFront3" type="CSGBox3D" parent="WallFront"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.00408173, -0.134131, -4.48151) +operation = 2 +size = Vector3(0.571701, 2.34607, 1.21326) + +[node name="WindowFront4" type="CSGBox3D" parent="WallFront"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.00408173, -0.134131, -3.15599) +operation = 2 +size = Vector3(0.571701, 2.34607, 1.21326) + +[node name="WindowFrontSill" type="CSGBox3D" parent="WallFront"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.282921, -1.38477, 3.86377) +size = Vector3(0.249771, 0.154297, 2.53467) + +[node name="WindowFrontSill2" type="CSGBox3D" parent="WallFront"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.282921, -1.38477, -3.81657) +size = Vector3(0.249771, 0.154297, 2.53467) + +[node name="WallSide" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.68331, 2.75809, 6.45326) +use_collision = true +size = Vector3(6.6502, 5, 0.5) +material = SubResource("StandardMaterial3D_itc8y") + +[node name="WindowSide" type="CSGBox3D" parent="WallSide"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.126845, -0.513109, 0) +operation = 2 +size = Vector3(3.98859, 1.59122, 1) +material = SubResource("StandardMaterial3D_70il3") + +[node name="FloorSecond" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.68639, 4.38411, 3.81314) +use_collision = true +size = Vector3(6.56363, 0.5, 5.66524) + +[node name="TestRamp" type="CSGBox3D" parent="."] +transform = Transform3D(-3.08005e-08, -3.10163e-08, 1, -0.709571, 0.704634, 0, -0.704634, -0.709571, -4.37114e-08, -0.340302, 2.26674, -1.12299) +use_collision = true +size = Vector3(6.26116, 0.390625, 1.24756) + +[node name="WallSide2" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.72062, 2.74324, -6.37202) +use_collision = true +size = Vector3(6.562, 5, 0.5) +material = SubResource("StandardMaterial3D_itc8y") + +[node name="WindowSide" type="CSGBox3D" parent="WallSide2"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.126845, -0.890321, 0) +operation = 2 +size = Vector3(3.98859, 1.59122, 1) +material = SubResource("StandardMaterial3D_70il3") diff --git a/scenes/props/buildings/portable.tscn b/scenes/props/buildings/portable.tscn new file mode 100644 index 0000000..037f993 --- /dev/null +++ b/scenes/props/buildings/portable.tscn @@ -0,0 +1,1018 @@ +[gd_scene format=3 uid="uid://beqeiiommaqiq"] + +[ext_resource type="Texture2D" uid="uid://d3ex562xuc5gi" path="res://assets/textures/metal/CorrugatedSteel004_1K-PNG/CorrugatedSteel004_1K-PNG_Color.png" id="1_8tv8p"] +[ext_resource type="Material" uid="uid://b6gm2sotwdai" path="res://assets/material/glass_window.tres" id="1_qlrsu"] +[ext_resource type="Texture2D" uid="uid://bku3q66ex7ea2" path="res://assets/textures/metal/CorrugatedSteel004_1K-PNG/CorrugatedSteel004_1K-PNG_NormalGL.png" id="2_w5q66"] +[ext_resource type="Texture2D" uid="uid://cncjhm6ehbbpp" path="res://assets/textures/wallpaper_walls/texpaint/PT_BEIGE.png" id="3_w5q66"] +[ext_resource type="Texture2D" uid="uid://0qb88nh42aeb" path="res://assets/textures/metal/metal_grate_rusty_1k/metal_grate_rusty_diff_1k.png" id="5_6jtvh"] +[ext_resource type="Script" uid="uid://c3igw81nke1l1" path="res://scripts/Breakable.gd" id="5_h2t65"] +[ext_resource type="Texture2D" uid="uid://btid4oi8d3gos" path="res://assets/textures/metal/metal_grate_rusty_1k/metal_grate_rusty_metal_1k.png" id="6_yd3et"] +[ext_resource type="Texture2D" uid="uid://dll1jn7npbs72" path="res://assets/textures/metal/metal_grate_rusty_1k/metal_grate_rusty_nor_gl_1k.png" id="7_u8bxd"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_8tv8p"] +albedo_texture = ExtResource("1_8tv8p") +normal_enabled = true +normal_texture = ExtResource("2_w5q66") +uv1_scale = Vector3(0.2, 0.2, 0.2) +uv1_triplanar = true +uv1_world_triplanar = true +texture_filter = 2 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_640pw"] +albedo_texture = ExtResource("3_w5q66") +uv1_scale = Vector3(0.2, 0.2, 0.2) +uv1_triplanar = true +uv1_world_triplanar = true + +[sub_resource type="BoxMesh" id="BoxMesh_duefv"] +material = ExtResource("1_qlrsu") +size = Vector3(6.19824, 2.45801, 0.552979) + +[sub_resource type="BoxShape3D" id="BoxShape3D_h2t65"] +size = Vector3(6.19824, 2.45801, 0.552979) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_3c6uu"] +albedo_texture = ExtResource("5_6jtvh") +metallic_texture = ExtResource("6_yd3et") +normal_texture = ExtResource("7_u8bxd") +uv1_scale = Vector3(0.2, 0.2, 0.2) +uv1_triplanar = true +uv1_world_triplanar = true +texture_filter = 2 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_1aidg"] +albedo_texture = ExtResource("5_6jtvh") +metallic_texture = ExtResource("6_yd3et") +normal_texture = ExtResource("7_u8bxd") +uv1_scale = Vector3(0.2, 0.2, 0.2) +uv1_triplanar = true +uv1_world_triplanar = true +texture_filter = 2 + +[node name="Portable" type="Node3D" unique_id=308634389] + +[node name="Body" type="CSGBox3D" parent="." unique_id=133043157] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.24707, 0) +use_collision = true +size = Vector3(40, 8.5, 14) +material = SubResource("StandardMaterial3D_8tv8p") + +[node name="Hollower" type="CSGBox3D" parent="Body" unique_id=1781127770] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.46921, 0) +operation = 2 +size = Vector3(39, 5, 13) +material = SubResource("StandardMaterial3D_640pw") + +[node name="Doorframe" type="CSGBox3D" parent="Body" unique_id=232483102] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16.9, 0.461124, 6.82291) +operation = 2 +size = Vector3(2, 3, 0.680176) +material = SubResource("StandardMaterial3D_8tv8p") + +[node name="Doorframe2" type="CSGBox3D" parent="Body" unique_id=1893730675] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16.9, 0.47, 6.82926) +operation = 2 +size = Vector3(2, 3, 0.66748) +material = SubResource("StandardMaterial3D_8tv8p") + +[node name="DividerWall" type="CSGBox3D" parent="Body" unique_id=747720528] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.206, 0) +size = Vector3(0.5, 5.006, 12.972) + +[node name="WindowFrontRemover" type="CSGBox3D" parent="Body" unique_id=524103531] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6, 1.376, 6.748) +operation = 2 +size = Vector3(6.19824, 2.45801, 0.552979) + +[node name="WindowFrontRemover2" type="CSGBox3D" parent="Body" unique_id=266663203] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 1.376, 6.748) +operation = 2 +size = Vector3(6.19824, 2.45801, 0.552979) + +[node name="WindowBack" type="CSGBox3D" parent="Body" unique_id=650175321] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -15, 1.089, -6.751) +size = Vector3(1.5, 2.5, 0.507) +material = ExtResource("1_qlrsu") + +[node name="WindowBack2" type="CSGBox3D" parent="Body" unique_id=173538094] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -10, 1.089, -6.751) +size = Vector3(1.5, 2.5, 0.507) +material = ExtResource("1_qlrsu") + +[node name="WindowBack3" type="CSGBox3D" parent="Body" unique_id=773074852] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5, 1.089, -6.751) +size = Vector3(1.5, 2.5, 0.507) +material = ExtResource("1_qlrsu") + +[node name="WindowBack4" type="CSGBox3D" parent="Body" unique_id=1373601955] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5, 1.089, -6.751) +size = Vector3(1.5, 2.5, 0.507) +material = ExtResource("1_qlrsu") + +[node name="WindowBack5" type="CSGBox3D" parent="Body" unique_id=2124081584] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 1.089, -6.751) +size = Vector3(1.5, 2.5, 0.507) +material = ExtResource("1_qlrsu") + +[node name="WindowBack6" type="CSGBox3D" parent="Body" unique_id=1788516713] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15, 1.089, -6.751) +size = Vector3(1.5, 2.5, 0.507) +material = ExtResource("1_qlrsu") + +[node name="FrontWindow" type="StaticBody3D" parent="Body" unique_id=1203822933 groups=["breakable", "interactable"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6, 1.376, 6.748) +collision_layer = 3 +script = ExtResource("5_h2t65") + +[node name="MeshInstance3D" type="MeshInstance3D" parent="Body/FrontWindow" unique_id=1826456221] +mesh = SubResource("BoxMesh_duefv") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="Body/FrontWindow" unique_id=772356973] +shape = SubResource("BoxShape3D_h2t65") + +[node name="FrontWindow2" type="StaticBody3D" parent="Body" unique_id=49037810 groups=["breakable", "interactable"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 1.376, 6.748) +collision_layer = 3 +script = ExtResource("5_h2t65") + +[node name="MeshInstance3D" type="MeshInstance3D" parent="Body/FrontWindow2" unique_id=66384996] +mesh = SubResource("BoxMesh_duefv") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="Body/FrontWindow2" unique_id=2041274972] +shape = SubResource("BoxShape3D_h2t65") + +[node name="StairsLanding" type="CSGBox3D" parent="." unique_id=2090795928] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16.8358, -1.396, 9.21865) +use_collision = true +size = Vector3(6.31507, 0.2, 4.56531) +material = SubResource("StandardMaterial3D_3c6uu") + +[node name="Ramp" type="CSGBox3D" parent="StairsLanding" unique_id=2086821962] +transform = Transform3D(0.965926, 0.258819, 0, -0.258819, 0.965926, 0, 0, 0, 1, 8.523, -1.44, -0.915) +size = Vector3(11.1234, 0.2, 2.68299) +material = SubResource("StandardMaterial3D_3c6uu") + +[node name="Railing" type="CSGBox3D" parent="StairsLanding" unique_id=2062396075] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.10414, 0.723354, 0.0240479) +size = Vector3(0.1, 1.25, 4.504) + +[node name="RailHoles" type="CSGBox3D" parent="StairsLanding/Railing" unique_id=1972354792] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, 1.9494) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles2" type="CSGBox3D" parent="StairsLanding/Railing" unique_id=1359730337] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, 1.6494) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles3" type="CSGBox3D" parent="StairsLanding/Railing" unique_id=2068689178] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, 1.3494) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles4" type="CSGBox3D" parent="StairsLanding/Railing" unique_id=1683816823] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, 1.0494) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles5" type="CSGBox3D" parent="StairsLanding/Railing" unique_id=1828026045] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, 0.749395) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles6" type="CSGBox3D" parent="StairsLanding/Railing" unique_id=189371585] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, 0.449396) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles7" type="CSGBox3D" parent="StairsLanding/Railing" unique_id=1636110457] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, 0.149396) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles8" type="CSGBox3D" parent="StairsLanding/Railing" unique_id=1318678444] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, -0.150604) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles9" type="CSGBox3D" parent="StairsLanding/Railing" unique_id=458001700] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, -0.450604) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles10" type="CSGBox3D" parent="StairsLanding/Railing" unique_id=1590745472] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, -0.750605) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles11" type="CSGBox3D" parent="StairsLanding/Railing" unique_id=1948163062] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.001, -1.051) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles12" type="CSGBox3D" parent="StairsLanding/Railing" unique_id=652734218] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.001, -1.351) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles13" type="CSGBox3D" parent="StairsLanding/Railing" unique_id=1911291130] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.001, -1.651) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles14" type="CSGBox3D" parent="StairsLanding/Railing" unique_id=1712460407] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.001, -1.951) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="Railing2" type="CSGBox3D" parent="StairsLanding" unique_id=1409358667] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 0.00517082, 0.723354, 2.23067) +size = Vector3(0.1, 1.25, 6.3097) + +[node name="RailHoles" type="CSGBox3D" parent="StairsLanding/Railing2" unique_id=2081029394] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, 1.9494) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles2" type="CSGBox3D" parent="StairsLanding/Railing2" unique_id=1099062134] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, 1.6494) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles3" type="CSGBox3D" parent="StairsLanding/Railing2" unique_id=1025564428] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, 1.3494) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles4" type="CSGBox3D" parent="StairsLanding/Railing2" unique_id=1907930596] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, 1.0494) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles5" type="CSGBox3D" parent="StairsLanding/Railing2" unique_id=2093011224] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, 0.749395) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles6" type="CSGBox3D" parent="StairsLanding/Railing2" unique_id=1408944941] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, 0.449396) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles7" type="CSGBox3D" parent="StairsLanding/Railing2" unique_id=887862095] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, 0.149396) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles8" type="CSGBox3D" parent="StairsLanding/Railing2" unique_id=886436953] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, -0.150604) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles9" type="CSGBox3D" parent="StairsLanding/Railing2" unique_id=2007332163] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, -0.450604) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles10" type="CSGBox3D" parent="StairsLanding/Railing2" unique_id=33535124] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, -0.750605) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles11" type="CSGBox3D" parent="StairsLanding/Railing2" unique_id=205941413] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.001, -1.051) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles12" type="CSGBox3D" parent="StairsLanding/Railing2" unique_id=662756806] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.001, -1.351) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles13" type="CSGBox3D" parent="StairsLanding/Railing2" unique_id=60258942] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.001, -1.651) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles14" type="CSGBox3D" parent="StairsLanding/Railing2" unique_id=1081280216] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.001, -1.951) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles15" type="CSGBox3D" parent="StairsLanding/Railing2" unique_id=244239043] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.001, 2.249) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles16" type="CSGBox3D" parent="StairsLanding/Railing2" unique_id=769290029] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.001, 2.549) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles17" type="CSGBox3D" parent="StairsLanding/Railing2" unique_id=1393609762] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.001, 2.849) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles18" type="CSGBox3D" parent="StairsLanding/Railing2" unique_id=1208650103] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.001, -2.251) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles19" type="CSGBox3D" parent="StairsLanding/Railing2" unique_id=565721975] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.001, -2.551) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles20" type="CSGBox3D" parent="StairsLanding/Railing2" unique_id=1211965817] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.001, -2.851) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="Railing3" type="CSGBox3D" parent="StairsLanding" unique_id=472870278] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.10666, 0.723354, 1.3368) +size = Vector3(0.1, 1.25, 1.8785) + +[node name="RailHoles5" type="CSGBox3D" parent="StairsLanding/Railing3" unique_id=1991897258] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, 0.749395) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles6" type="CSGBox3D" parent="StairsLanding/Railing3" unique_id=1979545179] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, 0.449396) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles7" type="CSGBox3D" parent="StairsLanding/Railing3" unique_id=810685757] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, 0.149396) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles8" type="CSGBox3D" parent="StairsLanding/Railing3" unique_id=1302802576] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, -0.150604) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles9" type="CSGBox3D" parent="StairsLanding/Railing3" unique_id=1933771544] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, -0.450604) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles10" type="CSGBox3D" parent="StairsLanding/Railing3" unique_id=1592021075] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, -0.750605) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="Railing4" type="CSGBox3D" parent="StairsLanding" unique_id=1638080246] +transform = Transform3D(-4.37114e-08, 0.258819, 0.965926, 0, 0.965926, -0.258819, -1, -1.13133e-08, -4.2222e-08, 8.60196, -0.757858, 0.375932) +size = Vector3(0.1, 1.25, 10.9361) + +[node name="RailHoles" type="CSGBox3D" parent="StairsLanding/Railing4" unique_id=358077734] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, 1.9494) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles2" type="CSGBox3D" parent="StairsLanding/Railing4" unique_id=568016966] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, 1.6494) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles3" type="CSGBox3D" parent="StairsLanding/Railing4" unique_id=829210864] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, 1.3494) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles4" type="CSGBox3D" parent="StairsLanding/Railing4" unique_id=663269369] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, 1.0494) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles5" type="CSGBox3D" parent="StairsLanding/Railing4" unique_id=1014396205] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, 0.749395) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles6" type="CSGBox3D" parent="StairsLanding/Railing4" unique_id=1334030111] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, 0.449396) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles7" type="CSGBox3D" parent="StairsLanding/Railing4" unique_id=1968006707] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, 0.149396) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles8" type="CSGBox3D" parent="StairsLanding/Railing4" unique_id=413516786] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, -0.150604) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles9" type="CSGBox3D" parent="StairsLanding/Railing4" unique_id=613421219] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, -0.450604) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles10" type="CSGBox3D" parent="StairsLanding/Railing4" unique_id=678383725] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, -0.750605) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles11" type="CSGBox3D" parent="StairsLanding/Railing4" unique_id=652979309] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.001, -1.051) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles12" type="CSGBox3D" parent="StairsLanding/Railing4" unique_id=1226095910] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.001, -1.351) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles13" type="CSGBox3D" parent="StairsLanding/Railing4" unique_id=458474191] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.001, -1.651) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles14" type="CSGBox3D" parent="StairsLanding/Railing4" unique_id=1205669977] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.001, -1.951) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles15" type="CSGBox3D" parent="StairsLanding/Railing4" unique_id=741099449] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.001, 2.249) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles16" type="CSGBox3D" parent="StairsLanding/Railing4" unique_id=1054952] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.001, 2.549) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles17" type="CSGBox3D" parent="StairsLanding/Railing4" unique_id=915299597] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.001, 2.849) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles18" type="CSGBox3D" parent="StairsLanding/Railing4" unique_id=1142278924] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.001, -2.251) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles19" type="CSGBox3D" parent="StairsLanding/Railing4" unique_id=1355914373] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.001, -2.551) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles20" type="CSGBox3D" parent="StairsLanding/Railing4" unique_id=1606652037] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.001, -2.851) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles21" type="CSGBox3D" parent="StairsLanding/Railing4" unique_id=287647682] +transform = Transform3D(1, 0, 4.26326e-14, 0, 0.999999, 0, 0, 0, 0.999999, 0.001, -0.001, -3.151) +operation = 2 +size = Vector3(0.106152, 1, 0.2) + +[node name="RailHoles22" type="CSGBox3D" parent="StairsLanding/Railing4" unique_id=1671394404] +transform = Transform3D(1, 0, 4.61853e-14, 0, 0.999999, 0, 0, 0, 0.999999, 0.00645638, -0.000999987, -3.48405) +operation = 2 +size = Vector3(0.117712, 1, 0.2) + +[node name="RailHoles23" type="CSGBox3D" parent="StairsLanding/Railing4" unique_id=1827403566] +transform = Transform3D(1, 0, 2.4869e-14, 0, 0.999999, 0, 0, 0, 0.999999, -0.0143042, -0.000999987, -3.78405) +operation = 2 +size = Vector3(0.128613, 1, 0.2) + +[node name="RailHoles24" type="CSGBox3D" parent="StairsLanding/Railing4" unique_id=563922914] +transform = Transform3D(1, 0, 3.55271e-14, 0, 0.999999, 0, 0, 0, 0.999999, -0.00453854, -0.000999987, -4.08405) +operation = 2 +size = Vector3(0.109082, 1, 0.2) + +[node name="RailHoles25" type="CSGBox3D" parent="StairsLanding/Railing4" unique_id=618015011] +transform = Transform3D(1, 0, 4.61853e-14, 0, 0.999999, 0, 0, 0, 0.999999, 0.0010004, -0.000999987, -4.38405) +operation = 2 +size = Vector3(0.106152, 1, 0.2) + +[node name="RailHoles26" type="CSGBox3D" parent="StairsLanding/Railing4" unique_id=2088128237] +transform = Transform3D(1, 0, 2.84217e-14, 0, 0.999999, 0, 0, 0, 0.999999, -0.0143023, -0.000999987, -4.68017) +operation = 2 +size = Vector3(0.128613, 1, 0.2) + +[node name="RailHoles27" type="CSGBox3D" parent="StairsLanding/Railing4" unique_id=1943509597] +transform = Transform3D(1, 0, 3.90799e-14, 0, 0.999999, 0, 0, 0, 0.999999, -0.00453663, -0.000999987, -4.98017) +operation = 2 +size = Vector3(0.109082, 1, 0.2) + +[node name="RailHoles29" type="CSGBox3D" parent="StairsLanding/Railing4" unique_id=772117134] +transform = Transform3D(1, 0, 7.10543e-15, 0, 1, 0, 0, 0, 1, 0, -0.000999987, 3.15648) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles30" type="CSGBox3D" parent="StairsLanding/Railing4" unique_id=939622246] +transform = Transform3D(1, 0, 7.10543e-15, 0, 1, 0, 0, 0, 1, 0, -0.000999987, 3.45648) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles31" type="CSGBox3D" parent="StairsLanding/Railing4" unique_id=628507429] +transform = Transform3D(1, 0, 7.10543e-15, 0, 1, 0, 0, 0, 1, 0, -0.000999987, 3.75648) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles32" type="CSGBox3D" parent="StairsLanding/Railing4" unique_id=399527365] +transform = Transform3D(1, 0, 1.42109e-14, 0, 1, 0, 0, 0, 1, 0, -0.000999987, 4.10128) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles33" type="CSGBox3D" parent="StairsLanding/Railing4" unique_id=1234810792] +transform = Transform3D(1, 0, 1.42109e-14, 0, 1, 0, 0, 0, 1, 0, -0.000999987, 4.40128) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles34" type="CSGBox3D" parent="StairsLanding/Railing4" unique_id=1438409529] +transform = Transform3D(1, 0, 1.42109e-14, 0, 1, 0, 0, 0, 1, 0, -0.000999987, 4.70128) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles35" type="CSGBox3D" parent="StairsLanding/Railing4" unique_id=1171352349] +transform = Transform3D(1, 0, 1.42109e-14, 0, 1, 0, 0, 0, 1, 0, -0.000999987, 4.99064) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles36" type="CSGBox3D" parent="StairsLanding/Railing4" unique_id=2113928595] +transform = Transform3D(1, 0, 1.42109e-14, 0, 1, 0, 0, 0, 1, 0, -0.000999987, 5.29064) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="Joint" type="CSGBox3D" parent="StairsLanding" unique_id=1474992433] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.27584, 0.677002, 0.375658) +size = Vector3(0.447998, 1.33936, 0.105713) + +[node name="Pole" type="CSGBox3D" parent="StairsLanding" unique_id=1231125081] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, -2.585, 2.129) +size = Vector3(0.3, 5.03168, 0.3) + +[node name="Pole2" type="CSGBox3D" parent="StairsLanding" unique_id=525964084] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.00486, -2.58463, -0.162737) +size = Vector3(0.3, 5.03168, 0.3) + +[node name="Pole3" type="CSGBox3D" parent="StairsLanding" unique_id=1233524538] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -2.585, 2.129) +size = Vector3(0.3, 5.03168, 0.3) + +[node name="Pole4" type="CSGBox3D" parent="StairsLanding" unique_id=41903826] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, -2.585, 2.129) +size = Vector3(0.3, 5.03168, 0.3) + +[node name="Pole5" type="CSGBox3D" parent="StairsLanding" unique_id=1679537953] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.00337, -2.6156, 0.273548) +size = Vector3(0.306738, 5.09288, 0.306128) + +[node name="Pole6" type="CSGBox3D" parent="StairsLanding" unique_id=1897851521] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, -3.187, 0.274) +size = Vector3(0.306738, 5.09288, 0.306128) + +[node name="Pole7" type="CSGBox3D" parent="StairsLanding" unique_id=379544438] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9, -4.129, 0.274) +size = Vector3(0.306738, 5.09288, 0.306128) + +[node name="Pole8" type="CSGBox3D" parent="StairsLanding" unique_id=1435561753] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12, -4.886, 0.274) +size = Vector3(0.306738, 5.09288, 0.306128) + +[node name="StairsLanding2" type="CSGBox3D" parent="." unique_id=1103035929] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16.8428, -1.396, 9.21865) +use_collision = true +size = Vector3(6.31507, 0.2, 4.56531) +material = SubResource("StandardMaterial3D_1aidg") + +[node name="Ramp" type="CSGBox3D" parent="StairsLanding2" unique_id=1539799238] +transform = Transform3D(-0.965926, -0.258819, -8.74228e-08, -0.258819, 0.965926, 0, 8.44439e-08, 2.26267e-08, -1, -8.50621, -1.44, -0.915) +size = Vector3(11.1234, 0.2, 2.68299) +material = SubResource("StandardMaterial3D_1aidg") + +[node name="Railing" type="CSGBox3D" parent="StairsLanding2" unique_id=112296741] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.19879, 0.723354, 0.0240479) +size = Vector3(0.1, 1.25, 4.504) + +[node name="RailHoles" type="CSGBox3D" parent="StairsLanding2/Railing" unique_id=2046954061] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, 1.9494) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles2" type="CSGBox3D" parent="StairsLanding2/Railing" unique_id=395830453] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, 1.6494) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles3" type="CSGBox3D" parent="StairsLanding2/Railing" unique_id=1640670062] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, 1.3494) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles4" type="CSGBox3D" parent="StairsLanding2/Railing" unique_id=35210415] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, 1.0494) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles5" type="CSGBox3D" parent="StairsLanding2/Railing" unique_id=407332028] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, 0.749395) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles6" type="CSGBox3D" parent="StairsLanding2/Railing" unique_id=446281113] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, 0.449396) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles7" type="CSGBox3D" parent="StairsLanding2/Railing" unique_id=367657267] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, 0.149396) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles8" type="CSGBox3D" parent="StairsLanding2/Railing" unique_id=477042885] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, -0.150604) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles9" type="CSGBox3D" parent="StairsLanding2/Railing" unique_id=228941984] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, -0.450604) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles10" type="CSGBox3D" parent="StairsLanding2/Railing" unique_id=1468171110] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, -0.750605) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles11" type="CSGBox3D" parent="StairsLanding2/Railing" unique_id=1688214770] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.001, -1.051) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles12" type="CSGBox3D" parent="StairsLanding2/Railing" unique_id=1737712915] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.001, -1.351) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles13" type="CSGBox3D" parent="StairsLanding2/Railing" unique_id=917154359] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.001, -1.651) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles14" type="CSGBox3D" parent="StairsLanding2/Railing" unique_id=1965622690] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.001, -1.951) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="Railing2" type="CSGBox3D" parent="StairsLanding2" unique_id=593508861] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 0.00517082, 0.723354, 2.23067) +size = Vector3(0.1, 1.25, 6.3097) + +[node name="RailHoles" type="CSGBox3D" parent="StairsLanding2/Railing2" unique_id=1799718492] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, 1.9494) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles2" type="CSGBox3D" parent="StairsLanding2/Railing2" unique_id=1875523127] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, 1.6494) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles3" type="CSGBox3D" parent="StairsLanding2/Railing2" unique_id=290294171] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, 1.3494) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles4" type="CSGBox3D" parent="StairsLanding2/Railing2" unique_id=951980438] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, 1.0494) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles5" type="CSGBox3D" parent="StairsLanding2/Railing2" unique_id=1701118901] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, 0.749395) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles6" type="CSGBox3D" parent="StairsLanding2/Railing2" unique_id=1108509311] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, 0.449396) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles7" type="CSGBox3D" parent="StairsLanding2/Railing2" unique_id=730498331] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, 0.149396) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles8" type="CSGBox3D" parent="StairsLanding2/Railing2" unique_id=1170318393] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, -0.150604) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles9" type="CSGBox3D" parent="StairsLanding2/Railing2" unique_id=173542061] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, -0.450604) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles10" type="CSGBox3D" parent="StairsLanding2/Railing2" unique_id=1294655991] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, -0.750605) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles11" type="CSGBox3D" parent="StairsLanding2/Railing2" unique_id=1253710872] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.001, -1.051) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles12" type="CSGBox3D" parent="StairsLanding2/Railing2" unique_id=1301100831] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.001, -1.351) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles13" type="CSGBox3D" parent="StairsLanding2/Railing2" unique_id=1568008433] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.001, -1.651) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles14" type="CSGBox3D" parent="StairsLanding2/Railing2" unique_id=249269790] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.001, -1.951) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles15" type="CSGBox3D" parent="StairsLanding2/Railing2" unique_id=565438442] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.001, 2.249) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles16" type="CSGBox3D" parent="StairsLanding2/Railing2" unique_id=1015710673] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.001, 2.549) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles17" type="CSGBox3D" parent="StairsLanding2/Railing2" unique_id=514197194] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.001, 2.849) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles18" type="CSGBox3D" parent="StairsLanding2/Railing2" unique_id=181212466] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.001, -2.251) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles19" type="CSGBox3D" parent="StairsLanding2/Railing2" unique_id=325540291] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.001, -2.551) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles20" type="CSGBox3D" parent="StairsLanding2/Railing2" unique_id=1753584568] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.001, -2.851) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="Railing3" type="CSGBox3D" parent="StairsLanding2" unique_id=571322049] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.14419, 0.723354, 1.3368) +size = Vector3(0.1, 1.25, 1.8785) + +[node name="RailHoles5" type="CSGBox3D" parent="StairsLanding2/Railing3" unique_id=345667303] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, 0.749395) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles6" type="CSGBox3D" parent="StairsLanding2/Railing3" unique_id=406853337] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, 0.449396) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles7" type="CSGBox3D" parent="StairsLanding2/Railing3" unique_id=1480823018] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, 0.149396) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles8" type="CSGBox3D" parent="StairsLanding2/Railing3" unique_id=1193777902] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, -0.150604) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles9" type="CSGBox3D" parent="StairsLanding2/Railing3" unique_id=1456829085] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, -0.450604) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles10" type="CSGBox3D" parent="StairsLanding2/Railing3" unique_id=689630952] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, -0.750605) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="Railing4" type="CSGBox3D" parent="StairsLanding2" unique_id=635735404] +transform = Transform3D(1.19249e-08, -0.258819, -0.965926, 0, 0.965926, -0.258819, 1, 3.08639e-09, 1.15185e-08, -8.4699, -0.757858, 0.375932) +size = Vector3(0.1, 1.25, 10.9361) + +[node name="RailHoles" type="CSGBox3D" parent="StairsLanding2/Railing4" unique_id=846236841] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, 1.9494) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles2" type="CSGBox3D" parent="StairsLanding2/Railing4" unique_id=267172185] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, 1.6494) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles3" type="CSGBox3D" parent="StairsLanding2/Railing4" unique_id=876789732] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, 1.3494) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles4" type="CSGBox3D" parent="StairsLanding2/Railing4" unique_id=359345136] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, 1.0494) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles5" type="CSGBox3D" parent="StairsLanding2/Railing4" unique_id=1860451170] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, 0.749395) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles6" type="CSGBox3D" parent="StairsLanding2/Railing4" unique_id=970127960] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, 0.449396) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles7" type="CSGBox3D" parent="StairsLanding2/Railing4" unique_id=343305378] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, 0.149396) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles8" type="CSGBox3D" parent="StairsLanding2/Railing4" unique_id=657586141] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, -0.150604) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles9" type="CSGBox3D" parent="StairsLanding2/Railing4" unique_id=861059718] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, -0.450604) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles10" type="CSGBox3D" parent="StairsLanding2/Railing4" unique_id=481102534] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.000999987, -0.750605) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles11" type="CSGBox3D" parent="StairsLanding2/Railing4" unique_id=144937873] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.001, -1.051) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles12" type="CSGBox3D" parent="StairsLanding2/Railing4" unique_id=1714913249] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.001, -1.351) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles13" type="CSGBox3D" parent="StairsLanding2/Railing4" unique_id=878091909] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.001, -1.651) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles14" type="CSGBox3D" parent="StairsLanding2/Railing4" unique_id=492530804] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.001, -1.951) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles15" type="CSGBox3D" parent="StairsLanding2/Railing4" unique_id=1863675536] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.001, 2.249) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles16" type="CSGBox3D" parent="StairsLanding2/Railing4" unique_id=1724643685] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.001, 2.549) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles17" type="CSGBox3D" parent="StairsLanding2/Railing4" unique_id=239824976] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.001, 2.849) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles18" type="CSGBox3D" parent="StairsLanding2/Railing4" unique_id=309577686] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.001, -2.251) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles19" type="CSGBox3D" parent="StairsLanding2/Railing4" unique_id=1201065140] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.001, -2.551) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles20" type="CSGBox3D" parent="StairsLanding2/Railing4" unique_id=874909591] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.001, -2.851) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles21" type="CSGBox3D" parent="StairsLanding2/Railing4" unique_id=1323582359] +transform = Transform3D(1, 0, 4.26326e-14, 0, 0.999999, 0, 0, 0, 0.999999, 0.001, -0.001, -3.151) +operation = 2 +size = Vector3(0.106152, 1, 0.2) + +[node name="RailHoles22" type="CSGBox3D" parent="StairsLanding2/Railing4" unique_id=848338924] +transform = Transform3D(1, 0, 4.61853e-14, 0, 0.999999, 0, 0, 0, 0.999999, 0.00645638, -0.000999987, -3.48405) +operation = 2 +size = Vector3(0.117712, 1, 0.2) + +[node name="RailHoles23" type="CSGBox3D" parent="StairsLanding2/Railing4" unique_id=1110278644] +transform = Transform3D(1, 0, 2.4869e-14, 0, 0.999999, 0, 0, 0, 0.999999, -0.0143042, -0.000999987, -3.78405) +operation = 2 +size = Vector3(0.128613, 1, 0.2) + +[node name="RailHoles24" type="CSGBox3D" parent="StairsLanding2/Railing4" unique_id=1169679748] +transform = Transform3D(1, 0, 3.55271e-14, 0, 0.999999, 0, 0, 0, 0.999999, -0.00453854, -0.000999987, -4.08405) +operation = 2 +size = Vector3(0.109082, 1, 0.2) + +[node name="RailHoles25" type="CSGBox3D" parent="StairsLanding2/Railing4" unique_id=1234099507] +transform = Transform3D(1, 0, 4.61853e-14, 0, 0.999999, 0, 0, 0, 0.999999, 0.0010004, -0.000999987, -4.38405) +operation = 2 +size = Vector3(0.106152, 1, 0.2) + +[node name="RailHoles26" type="CSGBox3D" parent="StairsLanding2/Railing4" unique_id=1608358673] +transform = Transform3D(1, 0, 2.84217e-14, 0, 0.999999, 0, 0, 0, 0.999999, -0.0143023, -0.000999987, -4.68017) +operation = 2 +size = Vector3(0.128613, 1, 0.2) + +[node name="RailHoles27" type="CSGBox3D" parent="StairsLanding2/Railing4" unique_id=1060283298] +transform = Transform3D(1, 0, 3.90799e-14, 0, 0.999999, 0, 0, 0, 0.999999, -0.00453663, -0.000999987, -4.98017) +operation = 2 +size = Vector3(0.109082, 1, 0.2) + +[node name="RailHoles29" type="CSGBox3D" parent="StairsLanding2/Railing4" unique_id=1921383480] +transform = Transform3D(1, 0, 7.10543e-15, 0, 1, 0, 0, 0, 1, 0, -0.000999987, 3.15648) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles30" type="CSGBox3D" parent="StairsLanding2/Railing4" unique_id=1326059313] +transform = Transform3D(1, 0, 7.10543e-15, 0, 1, 0, 0, 0, 1, 0, -0.000999987, 3.45648) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles31" type="CSGBox3D" parent="StairsLanding2/Railing4" unique_id=1062665057] +transform = Transform3D(1, 0, 7.10543e-15, 0, 1, 0, 0, 0, 1, 0, -0.000999987, 3.75648) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles32" type="CSGBox3D" parent="StairsLanding2/Railing4" unique_id=632050775] +transform = Transform3D(1, 0, 1.42109e-14, 0, 1, 0, 0, 0, 1, 0, -0.000999987, 4.10128) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles33" type="CSGBox3D" parent="StairsLanding2/Railing4" unique_id=1393278520] +transform = Transform3D(1, 0, 1.42109e-14, 0, 1, 0, 0, 0, 1, 0, -0.000999987, 4.40128) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles34" type="CSGBox3D" parent="StairsLanding2/Railing4" unique_id=1012513540] +transform = Transform3D(1, 0, 1.42109e-14, 0, 1, 0, 0, 0, 1, 0, -0.000999987, 4.70128) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles35" type="CSGBox3D" parent="StairsLanding2/Railing4" unique_id=1200349407] +transform = Transform3D(1, 0, 1.42109e-14, 0, 1, 0, 0, 0, 1, 0, -0.000999987, 4.99064) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="RailHoles36" type="CSGBox3D" parent="StairsLanding2/Railing4" unique_id=1697487430] +transform = Transform3D(1, 0, 1.42109e-14, 0, 1, 0, 0, 0, 1, 0, -0.000999987, 5.29064) +operation = 2 +size = Vector3(0.1, 1, 0.2) + +[node name="Joint" type="CSGBox3D" parent="StairsLanding2" unique_id=118923262] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.12695, 0.677002, 0.375658) +size = Vector3(0.447998, 1.33936, 0.105713) + +[node name="Pole" type="CSGBox3D" parent="StairsLanding2" unique_id=154648044] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, -2.585, 2.129) +size = Vector3(0.3, 5.03168, 0.3) + +[node name="Pole2" type="CSGBox3D" parent="StairsLanding2" unique_id=1682188675] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.00486, -2.58463, 0.270505) +size = Vector3(0.3, 5.03168, 0.3) + +[node name="Pole3" type="CSGBox3D" parent="StairsLanding2" unique_id=1973937766] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -2.585, 2.129) +size = Vector3(0.3, 5.03168, 0.3) + +[node name="Pole4" type="CSGBox3D" parent="StairsLanding2" unique_id=989473910] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, -2.585, 2.129) +size = Vector3(0.3, 5.03168, 0.3) + +[node name="Pole5" type="CSGBox3D" parent="StairsLanding2" unique_id=1904151397] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.003, -2.616, 0) +size = Vector3(0.306738, 5.09288, 0.306128) + +[node name="Pole6" type="CSGBox3D" parent="StairsLanding2" unique_id=231331052] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.57523, -3.187, 0.274) +size = Vector3(0.306738, 5.09288, 0.306128) + +[node name="Pole7" type="CSGBox3D" parent="StairsLanding2" unique_id=659020228] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -8.75059, -4.02227, 0.274) +size = Vector3(0.306738, 5.09288, 0.306128) + +[node name="Pole8" type="CSGBox3D" parent="StairsLanding2" unique_id=1477215519] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -11.9441, -4.886, 0.274) +size = Vector3(0.306738, 5.09288, 0.306128) diff --git a/scenes/props/buildings/small_house.tscn b/scenes/props/buildings/small_house.tscn new file mode 100644 index 0000000..28d5246 --- /dev/null +++ b/scenes/props/buildings/small_house.tscn @@ -0,0 +1,134 @@ +[gd_scene load_steps=7 format=3 uid="uid://cic1f4ivxshnl"] + +[ext_resource type="Texture2D" uid="uid://dwdk6x0sqlah4" path="res://assets/textures/blockout_textures/64/basic/gray_dots.png" id="1_fuqkp"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_6oict"] +albedo_texture = ExtResource("1_fuqkp") +uv1_triplanar = true +uv1_world_triplanar = true + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_70il3"] +albedo_texture = ExtResource("1_fuqkp") +uv1_triplanar = true +uv1_world_triplanar = true + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_p6esd"] +albedo_texture = ExtResource("1_fuqkp") +uv1_triplanar = true +uv1_world_triplanar = true + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_itc8y"] +albedo_texture = ExtResource("1_fuqkp") +uv1_triplanar = true +uv1_world_triplanar = true + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ep5gs"] +albedo_texture = ExtResource("1_fuqkp") +uv1_triplanar = true +uv1_world_triplanar = true + +[node name="SmallHouse" type="Node3D"] + +[node name="Floor" type="CSGBox3D" parent="."] +use_collision = true +size = Vector3(12, 0.5, 18) +material = SubResource("StandardMaterial3D_6oict") + +[node name="WallBack" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.74633, 2.72874, -0.00143433) +use_collision = true +size = Vector3(0.5, 5, 17.983) +material = SubResource("StandardMaterial3D_70il3") + +[node name="WallFront" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.74058, 2.72874, -0.00143433) +use_collision = true +size = Vector3(0.5, 5, 17.983) +material = SubResource("StandardMaterial3D_p6esd") + +[node name="DoorFrame" type="CSGBox3D" parent="WallFront"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1.357, -0.010231) +operation = 2 +size = Vector3(0.526794, 2.2439, 1.31953) + +[node name="WindowFront" type="CSGBox3D" parent="WallFront"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.00408173, -0.413729, 3.20137) +operation = 2 +size = Vector3(0.571701, 2.34607, 1.21326) + +[node name="WindowFront2" type="CSGBox3D" parent="WallFront"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.00408173, -0.413729, 4.52689) +operation = 2 +size = Vector3(0.571701, 2.34607, 1.21326) + +[node name="WindowFront3" type="CSGBox3D" parent="WallFront"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.00408173, -0.413729, -4.48151) +operation = 2 +size = Vector3(0.571701, 2.34607, 1.21326) + +[node name="WindowFront4" type="CSGBox3D" parent="WallFront"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.00408173, -0.413729, -3.15599) +operation = 2 +size = Vector3(0.571701, 2.34607, 1.21326) + +[node name="WindowFrontSill" type="CSGBox3D" parent="WallFront"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.282921, -1.66437, 3.86377) +size = Vector3(0.249771, 0.154297, 2.53467) + +[node name="WindowFrontSill2" type="CSGBox3D" parent="WallFront"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.282921, -1.66437, -3.81657) +size = Vector3(0.249771, 0.154297, 2.53467) + +[node name="WallSide" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0057354, 2.73214, 8.74243) +use_collision = true +size = Vector3(10.985, 4.984, 0.5) +material = SubResource("StandardMaterial3D_itc8y") + +[node name="WindowSide" type="CSGBox3D" parent="WallSide"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.56, 0) +operation = 2 +size = Vector3(6.04519, 2.0448, 1) +material = SubResource("StandardMaterial3D_70il3") + +[node name="RoofSiding" type="CSGBox3D" parent="WallSide"] +transform = Transform3D(0.558513, -0.829496, 0, 0.829496, 0.558513, 0, 1.36424e-12, -2.72848e-12, 1, 2.4066, 2.2799, 0) +size = Vector3(3.47998, 7.08752, 0.520813) +material = SubResource("StandardMaterial3D_70il3") + +[node name="RoofSiding2" type="CSGBox3D" parent="WallSide"] +transform = Transform3D(-0.439108, -0.898434, 0, 0.898434, -0.439108, 0, -1.23634e-12, -2.47269e-12, 1, -1.67034, 2.56162, 0) +size = Vector3(3.47998, 7.08752, 0.518494) +material = SubResource("StandardMaterial3D_70il3") + +[node name="WallSide2" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0057354, 2.73214, -8.74042) +use_collision = true +size = Vector3(10.985, 4.984, 0.5) +material = SubResource("StandardMaterial3D_ep5gs") + +[node name="WindowSide" type="CSGBox3D" parent="WallSide2"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.56, 0) +operation = 2 +size = Vector3(6.04519, 2.0448, 1) +material = SubResource("StandardMaterial3D_70il3") + +[node name="RoofSiding" type="CSGBox3D" parent="WallSide2"] +transform = Transform3D(0.558513, -0.829496, 0, 0.829496, 0.558513, 0, 1.36424e-12, -2.72848e-12, 1, 2.4066, 2.2799, 0) +size = Vector3(3.47998, 7.08752, 0.520813) +material = SubResource("StandardMaterial3D_70il3") + +[node name="RoofSiding2" type="CSGBox3D" parent="WallSide2"] +transform = Transform3D(-0.439108, -0.898434, 0, 0.898434, -0.439108, 0, -1.23634e-12, -2.47269e-12, 1, -1.67034, 2.56162, 0) +size = Vector3(3.47998, 7.08752, 0.518494) +material = SubResource("StandardMaterial3D_70il3") + +[node name="Roof" type="CSGBox3D" parent="."] +transform = Transform3D(0.5, -0.866025, 0, 0.866025, 0.5, 0, 0, 0, 1, 3.57608, 6.34875, -0.00550747) +size = Vector3(0.5, 8.54818, 18.6125) +material = SubResource("StandardMaterial3D_70il3") + +[node name="Roof2" type="CSGBox3D" parent="."] +transform = Transform3D(-0.5, 0.866025, -8.74228e-08, 0.866025, 0.5, 0, 4.37114e-08, -7.57103e-08, -1, -3.58128, 6.34875, -0.00550747) +size = Vector3(0.5, 8.54818, 18.6125) +material = SubResource("StandardMaterial3D_70il3") diff --git a/scenes/props/buildings/west_dorm.tscn b/scenes/props/buildings/west_dorm.tscn new file mode 100644 index 0000000..f324e65 --- /dev/null +++ b/scenes/props/buildings/west_dorm.tscn @@ -0,0 +1,35 @@ +[gd_scene format=3 uid="uid://ctvvbtk13o20x"] + +[node name="WestDorm" type="Node3D"] + +[node name="Body" type="CSGBox3D" parent="."] +use_collision = true +size = Vector3(100, 20, 20) + +[node name="HollowBody" type="CSGBox3D" parent="Body"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0158539, -0.292985, 0) +operation = 2 +size = Vector3(98.2439, 19.0711, 18) + +[node name="WideDoorframe" type="CSGBox3D" parent="Body"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -42.7442, -8.33296, 9.50654) +operation = 2 +size = Vector3(4, 3, 1.041) + +[node name="WideDoorframe2" type="CSGBox3D" parent="Body"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -8.333, 9.507) +operation = 2 +size = Vector3(4, 3, 1.041) + +[node name="WideDoorframe3" type="CSGBox3D" parent="Body"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 42.744, -8.333, 9.507) +operation = 2 +size = Vector3(4, 3, 1.041) + +[node name="Floor" type="CSGBox3D" parent="."] +size = Vector3(100, 1, 20) + +[node name="FloorRemover" type="CSGBox3D" parent="Floor"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.888186, 0.505323, -0.0134354) +operation = 2 +size = Vector3(15.7041, 2.12392, 18.0448) diff --git a/scenes/props/clock_base.tscn b/scenes/props/clock_base.tscn new file mode 100644 index 0000000..ae407af --- /dev/null +++ b/scenes/props/clock_base.tscn @@ -0,0 +1,25 @@ +[gd_scene format=3 uid="uid://b2tfhcdb53n50"] + +[ext_resource type="Script" uid="uid://c7sopya1b0k57" path="res://scripts/breakable_base.gd" id="1_rinws"] +[ext_resource type="Texture2D" uid="uid://dubgjsy23ewhg" path="res://assets/textures/cracked_texture.png" id="2_im0no"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ularv"] +albedo_color = Color(0.662745, 0.662745, 0.662745, 1) + +[node name="ClockBase" type="CSGCylinder3D" unique_id=1988657037 groups=["breakable"]] +use_collision = true +collision_layer = 3 +height = 0.574951 +sides = 16 +material = SubResource("StandardMaterial3D_ularv") +script = ExtResource("1_rinws") + +[node name="Decal3" type="Decal" parent="." unique_id=1150030523] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.00376892, 0.265625, -0.0157776) +size = Vector3(0.95401, 0.0917969, 0.957214) +texture_albedo = ExtResource("2_im0no") + +[node name="Decal4" type="Decal" parent="." unique_id=1005239308] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0.000849426, -0.013075, 0.00943124) +size = Vector3(1.00632, 1.05084, 0.957214) +texture_albedo = ExtResource("2_im0no") diff --git a/scenes/props/countdown_timer.tscn b/scenes/props/countdown_timer.tscn new file mode 100644 index 0000000..21d3dea --- /dev/null +++ b/scenes/props/countdown_timer.tscn @@ -0,0 +1,17 @@ +[gd_scene load_steps=2 format=3 uid="uid://p1a6b3hb5oap"] + +[ext_resource type="Script" uid="uid://cgw38wosdq5s3" path="res://scripts/countdown_label.gd" id="1_4gdog"] + +[node name="CountdownTimer" type="Node3D" groups=["timer"]] + +[node name="CountdownLabel" type="Label3D" parent="."] +text = "12:00:00" +font_size = 60 +script = ExtResource("1_4gdog") + +[node name="Timer" type="Timer" parent="."] +wait_time = 86400.0 +one_shot = true +autostart = true + +[connection signal="timeout" from="Timer" to="CountdownLabel" method="_on_timer_timeout"] diff --git a/scenes/props/door.tscn b/scenes/props/door.tscn new file mode 100644 index 0000000..d142d1e --- /dev/null +++ b/scenes/props/door.tscn @@ -0,0 +1,107 @@ +[gd_scene format=3 uid="uid://bohun3ja2bcfq"] + +[ext_resource type="Script" uid="uid://bgka5mmchi3bg" path="res://scripts/door.gd" id="2_kykci"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_60uuc"] +albedo_color = Color(0.490196, 0.345098, 0.223529, 1) + +[sub_resource type="BoxMesh" id="BoxMesh_2hxpa"] +material = SubResource("StandardMaterial3D_60uuc") +size = Vector3(2, 3, 0.2) + +[sub_resource type="BoxShape3D" id="BoxShape3D_1r2df"] +size = Vector3(2, 3, 0.2) + +[sub_resource type="Animation" id="Animation_kihjj"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:rotation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector3(0, 1.5708, 0)] +} + +[sub_resource type="Animation" id="Animation_6gvek"] +resource_name = "door_close" +length = 0.5 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:rotation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.5), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector3(0, 1.5708, 0), Vector3(0, 0, 0)] +} + +[sub_resource type="Animation" id="Animation_yxc4b"] +resource_name = "door_open" +length = 0.5 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:rotation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.5), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector3(0, 1.5708, 0), Vector3(0, 3.14159, 0)] +} + +[sub_resource type="Animation" id="Animation_5e0ln"] +resource_name = "door_open_backwards" +length = 0.5 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:rotation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.5), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector3(0, 0, 0), Vector3(0, -1.5708, 0)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_xrnhw"] +_data = { +&"RESET": SubResource("Animation_kihjj"), +&"door_close": SubResource("Animation_6gvek"), +&"door_open": SubResource("Animation_yxc4b"), +&"door_open_backwards": SubResource("Animation_5e0ln") +} + +[node name="Door" type="Node3D" unique_id=2135938050] + +[node name="Hinge" type="Node3D" parent="." unique_id=615803189] +transform = Transform3D(-3.6199901e-06, 0, 1, 0, 1, 0, -1, 0, -3.6199901e-06, -0.988132, 0, 0) + +[node name="Door" type="StaticBody3D" parent="Hinge" unique_id=1335810390 node_paths=PackedStringArray("animation_player") groups=["interactable", "locked_door"]] +collision_layer = 3 +script = ExtResource("2_kykci") +animation_player = NodePath("../../AnimationPlayer") + +[node name="DoorMesh" type="MeshInstance3D" parent="Hinge/Door" unique_id=1809404518] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.988132, 0, 0) +mesh = SubResource("BoxMesh_2hxpa") +skeleton = NodePath("") + +[node name="DoorCollision" type="CollisionShape3D" parent="Hinge/Door" unique_id=663950494] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.988132, 0, 0) +shape = SubResource("BoxShape3D_1r2df") + +[node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=1084917534] +root_node = NodePath("../Hinge") +libraries/ = SubResource("AnimationLibrary_xrnhw") diff --git a/scenes/props/drifting/nothing.tscn b/scenes/props/drifting/nothing.tscn new file mode 100644 index 0000000..fa94408 --- /dev/null +++ b/scenes/props/drifting/nothing.tscn @@ -0,0 +1,3 @@ +[gd_scene format=3 uid="uid://bdpqhe8n5vrqn"] + +[node name="Nothing" type="Node3D" unique_id=452554391] diff --git a/scenes/props/drifting/snow_spot.tscn b/scenes/props/drifting/snow_spot.tscn new file mode 100644 index 0000000..a028aca --- /dev/null +++ b/scenes/props/drifting/snow_spot.tscn @@ -0,0 +1,46 @@ +[gd_scene format=3 uid="uid://b41xvkh4y5smm"] + +[ext_resource type="Script" uid="uid://bdeld6f1c21ic" path="res://scripts/drifting/snow_spot.gd" id="1_agjcw"] + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_agjcw"] +height = 4.7924805 +radius = 2.1088867 + +[node name="Snow_Spot" type="Node3D" unique_id=1759046867] +script = ExtResource("1_agjcw") + +[node name="Snow_Spot_Body" type="StaticBody3D" parent="." unique_id=940934842 groups=["snow_spot"]] +collision_layer = 2 + +[node name="Snow_Spot_Shape" type="CollisionShape3D" parent="Snow_Spot_Body" unique_id=733087153] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.3962402, 0) +shape = SubResource("CylinderShape3D_agjcw") + +[node name="Spot_Area" type="Area3D" parent="." unique_id=801734112] + +[node name="Snow_Spot_Shape" type="CollisionShape3D" parent="Spot_Area" unique_id=733036362] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.3962402, 0) +shape = SubResource("CylinderShape3D_agjcw") + +[node name="North_Ray" type="RayCast3D" parent="." unique_id=709488276] +transform = Transform3D(4.371139e-08, -1, 8.742278e-08, -1, -4.371139e-08, 0, 3.821371e-15, -8.742278e-08, -1, 0, 0.15, 0) +target_position = Vector3(0, -8, 0) +collision_mask = 2 +debug_shape_custom_color = Color(0.039215688, 0.90588236, 0, 1) + +[node name="West_Ray" type="RayCast3D" parent="." unique_id=534931564] +transform = Transform3D(1.9106855e-15, -4.371139e-08, -1, -1, -4.371139e-08, 0, -4.371139e-08, 1, -4.371139e-08, 0, 0.15, 0) +target_position = Vector3(0, -8, 0) +collision_mask = 2 +debug_shape_custom_color = Color(0.43137255, 0, 0.7647059, 1) + +[node name="South_Ray" type="RayCast3D" parent="." unique_id=1936332237] +transform = Transform3D(-4.371139e-08, 1, 0, -1, -4.371139e-08, 0, 0, 0, 1, 0, 0.15, 0) +target_position = Vector3(0, -8, 0) +collision_mask = 2 +debug_shape_custom_color = Color(0.9098039, 0.38039216, 0, 1) + +[node name="East_Ray" type="RayCast3D" parent="." unique_id=1650953744] +transform = Transform3D(1.9106855e-15, -4.371139e-08, 1, -1, -4.371139e-08, 0, 4.371139e-08, -1, -4.371139e-08, 0, 0.15, 0) +target_position = Vector3(0, -8, 0) +collision_mask = 2 diff --git a/scenes/props/drifting/snowball.tscn b/scenes/props/drifting/snowball.tscn new file mode 100644 index 0000000..f4a1664 --- /dev/null +++ b/scenes/props/drifting/snowball.tscn @@ -0,0 +1,15 @@ +[gd_scene format=3 uid="uid://cdk3dn782o0bt"] + +[ext_resource type="Texture2D" uid="uid://vwnrymaoxu3l" path="res://assets/textures/snow_ice/snow.png" id="1_bqg7x"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_whkru"] +albedo_texture = ExtResource("1_bqg7x") +uv1_triplanar = true +uv1_world_triplanar = true + +[node name="Snowball" type="Node3D" unique_id=2099061735] + +[node name="Ball" type="CSGSphere3D" parent="." unique_id=1755723832] +use_collision = true +radius = 1.4870276 +material = SubResource("StandardMaterial3D_whkru") diff --git a/scenes/props/drifting/snowball_2.tscn b/scenes/props/drifting/snowball_2.tscn new file mode 100644 index 0000000..edadfd5 --- /dev/null +++ b/scenes/props/drifting/snowball_2.tscn @@ -0,0 +1,21 @@ +[gd_scene format=3 uid="uid://1u4o5rynq8ds"] + +[ext_resource type="Texture2D" uid="uid://vwnrymaoxu3l" path="res://assets/textures/snow_ice/snow.png" id="1_vcyqf"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_vcyqf"] +albedo_texture = ExtResource("1_vcyqf") +uv1_triplanar = true +uv1_world_triplanar = true + +[node name="Snowball_2" type="Node3D" unique_id=2099061735] + +[node name="Ball" type="CSGSphere3D" parent="." unique_id=1755723832] +use_collision = true +radius = 1.4870276 +material = SubResource("StandardMaterial3D_vcyqf") + +[node name="Ball2" type="CSGSphere3D" parent="." unique_id=2114888846] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.7080362, 0) +use_collision = true +radius = 1.2 +material = SubResource("StandardMaterial3D_vcyqf") diff --git a/scenes/props/drifting/snowball_3.tscn b/scenes/props/drifting/snowball_3.tscn new file mode 100644 index 0000000..3e2909c --- /dev/null +++ b/scenes/props/drifting/snowball_3.tscn @@ -0,0 +1,27 @@ +[gd_scene format=3 uid="uid://bx8ya3a8a7rqh"] + +[ext_resource type="Texture2D" uid="uid://vwnrymaoxu3l" path="res://assets/textures/snow_ice/snow.png" id="1_fubif"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_fubif"] +albedo_texture = ExtResource("1_fubif") +uv1_triplanar = true +uv1_world_triplanar = true + +[node name="Snowball_3" type="Node3D" unique_id=2099061735] + +[node name="Ball" type="CSGSphere3D" parent="." unique_id=1755723832] +use_collision = true +radius = 1.4870276 +material = SubResource("StandardMaterial3D_fubif") + +[node name="Ball2" type="CSGSphere3D" parent="." unique_id=2114888846] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.7080362, 0) +use_collision = true +radius = 1.2 +material = SubResource("StandardMaterial3D_fubif") + +[node name="Ball3" type="CSGSphere3D" parent="." unique_id=1841307733] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3.1389139, 0) +use_collision = true +radius = 0.8 +material = SubResource("StandardMaterial3D_fubif") diff --git a/scenes/props/floating_platform.tscn b/scenes/props/floating_platform.tscn new file mode 100644 index 0000000..3499c2a --- /dev/null +++ b/scenes/props/floating_platform.tscn @@ -0,0 +1,42 @@ +[gd_scene load_steps=6 format=3 uid="uid://w16vt7ewcdg4"] + +[ext_resource type="Texture2D" uid="uid://gktcbleyxtm5" path="res://assets/textures/stone_rocks/Rock013_1K-PNG_Color.png" id="1_tfgbv"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_wh8fe"] +albedo_color = Color(0.6, 0.4, 0.737255, 1) +albedo_texture = ExtResource("1_tfgbv") +uv1_triplanar = true +uv1_world_triplanar = true +texture_filter = 0 + +[sub_resource type="CylinderMesh" id="CylinderMesh_tfgbv"] +material = SubResource("StandardMaterial3D_wh8fe") +top_radius = 3.0 +bottom_radius = 3.0 +height = 0.5 +radial_segments = 6 + +[sub_resource type="CylinderMesh" id="CylinderMesh_yw7u0"] +material = SubResource("StandardMaterial3D_wh8fe") +top_radius = 3.0 +bottom_radius = 0.0 +height = 4.5 +radial_segments = 6 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_dr1y1"] +height = 6.5 +radius = 3.0 + +[node name="FloatingPlatform" type="StaticBody3D"] + +[node name="MeshInstance3D" type="MeshInstance3D" parent="."] +mesh = SubResource("CylinderMesh_tfgbv") + +[node name="MeshInstance3D2" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -2.49915, 0) +mesh = SubResource("CylinderMesh_yw7u0") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -2.97334, 0) +visible = false +shape = SubResource("CylinderShape3D_dr1y1") diff --git a/scenes/props/generic_key.tscn b/scenes/props/generic_key.tscn new file mode 100644 index 0000000..91cf5c7 --- /dev/null +++ b/scenes/props/generic_key.tscn @@ -0,0 +1,59 @@ +[gd_scene format=3 uid="uid://cbyvle3mfwjkf"] + +[ext_resource type="Script" uid="uid://ms6xj5id35mr" path="res://scripts/get_key.gd" id="1_n04ja"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_n04ja"] +albedo_color = Color(0.752941, 0.752941, 0.752941, 1) +metallic = 0.8 + +[sub_resource type="CylinderMesh" id="CylinderMesh_o5tat"] +material = SubResource("StandardMaterial3D_n04ja") +top_radius = 0.1 +bottom_radius = 0.1 +height = 1.2 + +[sub_resource type="TorusMesh" id="TorusMesh_n04ja"] +material = SubResource("StandardMaterial3D_n04ja") +inner_radius = 0.2 +outer_radius = 0.4 + +[sub_resource type="CylinderMesh" id="CylinderMesh_6qh8s"] +material = SubResource("StandardMaterial3D_n04ja") +top_radius = 0.1 +bottom_radius = 0.1 +height = 0.3 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_n04ja"] + +[node name="generic_key" type="StaticBody3D" unique_id=1849439408 groups=["interactable"]] +collision_layer = 3 +script = ExtResource("1_n04ja") + +[node name="MeshInstance3D" type="MeshInstance3D" parent="." unique_id=595961690] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.200974, 0) +mesh = SubResource("CylinderMesh_o5tat") + +[node name="MeshInstance3D2" type="MeshInstance3D" parent="MeshInstance3D" unique_id=1429033466] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 0.898569, 0) +mesh = SubResource("TorusMesh_n04ja") +skeleton = NodePath("../..") + +[node name="MeshInstance3D3" type="MeshInstance3D" parent="MeshInstance3D" unique_id=1413968203] +transform = Transform3D(-4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 0, 0, 1, -0.213569, -0.373756, 0) +mesh = SubResource("CylinderMesh_6qh8s") +skeleton = NodePath("../..") + +[node name="MeshInstance3D4" type="MeshInstance3D" parent="MeshInstance3D" unique_id=2009666274] +transform = Transform3D(-4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 0, 0, 1, -0.221281, 0.050396, 0) +mesh = SubResource("CylinderMesh_6qh8s") +skeleton = NodePath("../..") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="." unique_id=1022402148] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.215872, 0) +shape = SubResource("CylinderShape3D_n04ja") + +[node name="InteractLabel" type="Label3D" parent="." unique_id=1777440926 groups=["interactable"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.27622, 0) +visible = false +billboard = 2 +text = "[E] Pickup" diff --git a/scenes/props/green_bottle.tscn b/scenes/props/green_bottle.tscn new file mode 100644 index 0000000..6278837 --- /dev/null +++ b/scenes/props/green_bottle.tscn @@ -0,0 +1,29 @@ +[gd_scene format=3 uid="uid://ccc65kmrcbypm"] + +[ext_resource type="PackedScene" uid="uid://dy2vgg4u66u38" path="res://assets/model/bottle.glb" id="1_xjle5"] +[ext_resource type="Script" uid="uid://c3igw81nke1l1" path="res://scripts/Breakable.gd" id="2_hnwdw"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ypau6"] +transparency = 1 +blend_mode = 1 +cull_mode = 2 +depth_draw_mode = 2 +albedo_color = Color(0, 0.611765, 0.305882, 1) +roughness = 0.0 +ao_light_affect = 0.23 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_r2guq"] +height = 5.98615 +radius = 1.41113 + +[node name="green_bottle" unique_id=894725417 instance=ExtResource("1_xjle5")] +collision_layer = 3 +script = ExtResource("2_hnwdw") +stability = 1 + +[node name="Bottle" parent="." index="0"] +surface_material_override/0 = SubResource("StandardMaterial3D_ypau6") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="." index="1" unique_id=1088509230] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.89023, 0) +shape = SubResource("CylinderShape3D_r2guq") diff --git a/scenes/props/hammer.tscn b/scenes/props/hammer.tscn new file mode 100644 index 0000000..d2405cb --- /dev/null +++ b/scenes/props/hammer.tscn @@ -0,0 +1,46 @@ +[gd_scene load_steps=7 format=3 uid="uid://cpaeyhow168"] + +[ext_resource type="PackedScene" uid="uid://br64bedksp8u8" path="res://scenes/props/vanishing_body.tscn" id="1_xox8g"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_tl6ur"] +albedo_color = Color(0.490196, 0.345098, 0.223529, 1) + +[sub_resource type="CylinderMesh" id="CylinderMesh_0uhdt"] +material = SubResource("StandardMaterial3D_tl6ur") +top_radius = 0.1 +bottom_radius = 0.1 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_uve7f"] +albedo_color = Color(0.61339, 0.61339, 0.61339, 1) +metallic = 0.5 + +[sub_resource type="CylinderMesh" id="CylinderMesh_x7st5"] +material = SubResource("StandardMaterial3D_uve7f") +top_radius = 0.3 +bottom_radius = 0.3 +height = 1.0 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_hjwc5"] +height = 2.48312 +radius = 0.54428 + +[node name="Hammer" type="Node3D"] + +[node name="HammerBody" parent="." instance=ExtResource("1_xox8g")] +collision_layer = 2 +script = null + +[node name="HammerMesh" type="MeshInstance3D" parent="HammerBody"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.01944, 0) +layers = 2 +mesh = SubResource("CylinderMesh_0uhdt") + +[node name="HammerMesh2" type="MeshInstance3D" parent="HammerBody/HammerMesh"] +transform = Transform3D(-4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, 0, 1, 0, 1.20912, 0) +layers = 2 +mesh = SubResource("CylinderMesh_x7st5") +skeleton = NodePath("../..") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="HammerBody"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.30416, 0) +shape = SubResource("CylinderShape3D_hjwc5") diff --git a/scenes/props/keyhole.tscn b/scenes/props/keyhole.tscn new file mode 100644 index 0000000..3953135 --- /dev/null +++ b/scenes/props/keyhole.tscn @@ -0,0 +1,39 @@ +[gd_scene load_steps=5 format=3 uid="uid://b47ka5ju0myi1"] + +[ext_resource type="Script" uid="uid://dpa30ouf8ng5d" path="res://scripts/keyhole.gd" id="1_dacsw"] +[ext_resource type="Texture2D" uid="uid://0qb88nh42aeb" path="res://assets/textures/metal/metal_grate_rusty_1k/metal_grate_rusty_diff_1k.png" id="1_hyy8d"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_dacsw"] +albedo_texture = ExtResource("1_hyy8d") + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ilicl"] +albedo_color = Color(0, 0, 0, 1) + +[node name="Keyhole" type="Node3D"] + +[node name="Padlock" type="CSGBox3D" parent="." groups=["interactable", "locked"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.38916016) +use_collision = true +size = Vector3(1, 1, 0.22167969) +material = SubResource("StandardMaterial3D_dacsw") +script = ExtResource("1_dacsw") + +[node name="Keyhole_Top" type="CSGCylinder3D" parent="Padlock"] +transform = Transform3D(1, 0, 0, 0, -4.371139e-08, -1, 0, 1, -4.371139e-08, 0, 0.14701623, 0.015380859) +operation = 2 +radius = 0.1 +height = 0.2 +sides = 20 +material = SubResource("StandardMaterial3D_ilicl") + +[node name="Keyhole_Bottom" type="CSGPolygon3D" parent="Padlock"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.026608288, -0.23394972, 0.113140315) +operation = 2 +polygon = PackedVector2Array(-0.15165938, 0.048560143, -0.06205775, 0.28956875, 0.0066036806, 0.28852177, 0.07692136, 0.050221503) +depth = 0.2 +material = SubResource("StandardMaterial3D_ilicl") + +[node name="InteractLabel" type="Label3D" parent="Padlock" groups=["interactable"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.6253556, 0.014797181) +visible = false +text = "[E] Interact" diff --git a/scenes/props/light_orb.tscn b/scenes/props/light_orb.tscn new file mode 100644 index 0000000..2cf4c30 --- /dev/null +++ b/scenes/props/light_orb.tscn @@ -0,0 +1,23 @@ +[gd_scene load_steps=5 format=3 uid="uid://dyl8tueimcmme"] + +[ext_resource type="Script" uid="uid://voof2ikd6ont" path="res://scripts/light_orb.gd" id="1_1p6bb"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_0ubl4"] +emission_energy_multiplier = 2.85 + +[sub_resource type="SphereMesh" id="SphereMesh_aa38r"] +material = SubResource("StandardMaterial3D_0ubl4") + +[sub_resource type="SphereShape3D" id="SphereShape3D_8id8c"] + +[node name="LightOrb" type="StaticBody3D"] +transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0) +script = ExtResource("1_1p6bb") + +[node name="LightMesh" type="MeshInstance3D" parent="."] +mesh = SubResource("SphereMesh_aa38r") + +[node name="LightShape" type="CollisionShape3D" parent="."] +shape = SubResource("SphereShape3D_8id8c") + +[node name="OmniLight" type="OmniLight3D" parent="."] diff --git a/scenes/props/mirror.tscn b/scenes/props/mirror.tscn new file mode 100644 index 0000000..c37e347 --- /dev/null +++ b/scenes/props/mirror.tscn @@ -0,0 +1,25 @@ +[gd_scene load_steps=4 format=3 uid="uid://drsvu0jc8anw7"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_g5ket"] +metallic = 1.0 +roughness = 0.0 + +[sub_resource type="CylinderMesh" id="CylinderMesh_6sdu2"] +material = SubResource("StandardMaterial3D_g5ket") +top_radius = 1.0 +bottom_radius = 1.0 +height = 0.1 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_w0x80"] +height = 0.1 +radius = 1.0 + +[node name="Mirror" type="StaticBody3D"] + +[node name="MeshInstance3D" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, 0) +mesh = SubResource("CylinderMesh_6sdu2") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="."] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, 0) +shape = SubResource("CylinderShape3D_w0x80") diff --git a/scenes/props/open_close_sign.tscn b/scenes/props/open_close_sign.tscn new file mode 100644 index 0000000..c5c2ef9 --- /dev/null +++ b/scenes/props/open_close_sign.tscn @@ -0,0 +1,101 @@ +[gd_scene format=3 uid="uid://5ephfkqjvl0p"] + +[ext_resource type="Script" uid="uid://6bm5giaora3" path="res://scripts/open_close_sign.gd" id="1_y70io"] + +[sub_resource type="BoxMesh" id="BoxMesh_m4d0g"] +size = Vector3(2, 1, 0.05) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_y70io"] +albedo_color = Color(0.490196, 0.345098, 0.223529, 1) + +[sub_resource type="CylinderMesh" id="CylinderMesh_at0c4"] +material = SubResource("StandardMaterial3D_y70io") +top_radius = 0.01 +bottom_radius = 0.01 +height = 1.43 + +[sub_resource type="BoxShape3D" id="BoxShape3D_m4d0g"] +size = Vector3(2.03479, 1.05396, 0.220459) + +[sub_resource type="Animation" id="Animation_y70io"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:rotation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector3(0, 0, 0)] +} + +[sub_resource type="Animation" id="Animation_m4d0g"] +resource_name = "flip sign" +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:rotation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.5, 1), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Vector3(0, 0, 0), Vector3(0, 1.5708, 1.5708), Vector3(0, 3.14159, 0)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_at0c4"] +_data = { +&"RESET": SubResource("Animation_y70io"), +&"flip_sign": SubResource("Animation_m4d0g") +} + +[node name="OpenCloseSign" type="Node3D" unique_id=1296870710] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.24622, 0) + +[node name="StaticBody3D" type="StaticBody3D" parent="." unique_id=1119751346 groups=["interactable", "open_close_sign"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1.47962, 0) +collision_layer = 3 +script = ExtResource("1_y70io") + +[node name="SignMesh" type="MeshInstance3D" parent="StaticBody3D" unique_id=1199212068] +mesh = SubResource("BoxMesh_m4d0g") + +[node name="OpenLabel" type="Label3D" parent="StaticBody3D/SignMesh" unique_id=1437340013] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.0174429, 0.0349858) +text = "OPEN + +8 AM - 8 PM " +font_size = 40 + +[node name="OpenLabel2" type="Label3D" parent="StaticBody3D/SignMesh" unique_id=886096424] +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0.0244299, -0.0297058) +text = "CLOSED + +8 PM - 8 AM" +font_size = 40 + +[node name="StringMesh" type="MeshInstance3D" parent="StaticBody3D" unique_id=804223918] +transform = Transform3D(0.707107, 0.707107, 0, -0.707107, 0.707107, 0, 0, 0, 1, -0.5, 0.968, 0) +mesh = SubResource("CylinderMesh_at0c4") + +[node name="StringMesh2" type="MeshInstance3D" parent="StaticBody3D" unique_id=916281516] +transform = Transform3D(-0.707107, -0.707107, -8.74228e-08, -0.707107, 0.707107, 0, 6.18172e-08, 6.18172e-08, -1, 0.5, 0.968, 0) +mesh = SubResource("CylinderMesh_at0c4") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D" unique_id=809142179] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.00848389, 0.0169678, 0.0118408) +shape = SubResource("BoxShape3D_m4d0g") + +[node name="SignAnimation" type="AnimationPlayer" parent="StaticBody3D" unique_id=945030559] +root_node = NodePath("../..") +libraries/ = SubResource("AnimationLibrary_at0c4") + +[node name="InteractLabel" type="Label3D" parent="." unique_id=1714122589] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.593952, 0) +visible = false +billboard = 2 +text = "[E] Flip" diff --git a/scenes/props/open_closed_door.tscn b/scenes/props/open_closed_door.tscn new file mode 100644 index 0000000..ce63d41 --- /dev/null +++ b/scenes/props/open_closed_door.tscn @@ -0,0 +1,117 @@ +[gd_scene format=3 uid="uid://bekw2mdkpbiu1"] + +[ext_resource type="Script" uid="uid://bgka5mmchi3bg" path="res://scripts/door.gd" id="1_ix0r3"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_60uuc"] +albedo_color = Color(0.490196, 0.345098, 0.223529, 1) + +[sub_resource type="BoxMesh" id="BoxMesh_2hxpa"] +material = SubResource("StandardMaterial3D_60uuc") +size = Vector3(2, 3, 0.2) + +[sub_resource type="BoxShape3D" id="BoxShape3D_1r2df"] +size = Vector3(2, 3, 0.300488) + +[sub_resource type="Animation" id="Animation_kihjj"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:rotation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector3(0, 1.5708, 0)] +} + +[sub_resource type="Animation" id="Animation_6gvek"] +resource_name = "door_close" +length = 0.5 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:rotation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.5), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector3(0, 1.5708, 0), Vector3(0, 0, 0)] +} + +[sub_resource type="Animation" id="Animation_bvoq7"] +resource_name = "door_open_backwards" +length = 0.5 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:rotation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.5), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector3(0, 1.5708, 0), Vector3(0, 0, 0)] +} + +[sub_resource type="Animation" id="Animation_yxc4b"] +resource_name = "door_open" +length = 0.5 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:rotation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.5), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector3(0, 1.5708, 0), Vector3(0, 3.14159, 0)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_xrnhw"] +_data = { +&"RESET": SubResource("Animation_kihjj"), +&"door_close": SubResource("Animation_6gvek"), +&"door_open_backwards": SubResource("Animation_bvoq7"), +&"door_open_forwards": SubResource("Animation_yxc4b") +} + +[node name="OpenClosedDoor" type="Node3D" unique_id=897210283] + +[node name="Hinge" type="Node3D" parent="." unique_id=156875671] +transform = Transform3D(-3.6199901e-06, 0, 1, 0, 1, 0, -1, 0, -3.6199901e-06, -0.988132, 0, 0) + +[node name="OpenCloseDoor" type="StaticBody3D" parent="Hinge" unique_id=1850549136 node_paths=PackedStringArray("animation_player") groups=["interactable"]] +collision_layer = 3 +script = ExtResource("1_ix0r3") +animation_player = NodePath("../../AnimationPlayer") + +[node name="DoorMesh" type="CSGMesh3D" parent="Hinge/OpenCloseDoor" unique_id=1792648438] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.988132, 0, 0) +use_collision = true +mesh = SubResource("BoxMesh_2hxpa") + +[node name="DoorCollision" type="CollisionShape3D" parent="Hinge/OpenCloseDoor" unique_id=1129896260] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.988132, 0, -0.00698239) +shape = SubResource("BoxShape3D_1r2df") + +[node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=1409124104] +root_node = NodePath("../Hinge") +libraries/ = SubResource("AnimationLibrary_xrnhw") + +[node name="InteractLabel" type="Label3D" parent="." unique_id=1115718379] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -0.736963, 0.593289, -0.953882) +visible = false +text = "[E] Open" + +[node name="InteractLabel2" type="Label3D" parent="." unique_id=21398400] +transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -1.13622, 0.593289, -0.953882) +visible = false +text = "[E] Open" diff --git a/scenes/props/park_clock.gd b/scenes/props/park_clock.gd new file mode 100644 index 0000000..d583db5 --- /dev/null +++ b/scenes/props/park_clock.gd @@ -0,0 +1,16 @@ +extends Node3D +#@onready var decal: Decal = $"../../Floor/Decal" +@onready var audio_clock: AudioStreamPlayer3D = $AudioClock +@onready var animation_park_clock: AnimationPlayer = $AnimationParkClock +##Get length of audio and subtract a small amount so fade out happens before audio stops +@onready var fade_out_time = $AudioClock.stream.get_length() - 0.05 + +func death_clock(): + #print(fade_out_time) + animation_park_clock.play("clock_down") + await animation_park_clock.animation_finished + var tween = create_tween() + ##Object, Property, Target Volume (between -60 and -80 in silent), Time + tween.tween_property(audio_clock, "volume_db", -60, fade_out_time) + $AudioClock.play() + #decal.visible = true diff --git a/scenes/props/park_clock.gd.uid b/scenes/props/park_clock.gd.uid new file mode 100644 index 0000000..7588fbf --- /dev/null +++ b/scenes/props/park_clock.gd.uid @@ -0,0 +1 @@ +uid://dib0h35wkm16e diff --git a/scenes/props/park_clock.tscn b/scenes/props/park_clock.tscn new file mode 100644 index 0000000..2c70f86 --- /dev/null +++ b/scenes/props/park_clock.tscn @@ -0,0 +1,84 @@ +[gd_scene load_steps=8 format=3 uid="uid://b7dckyxwj80ff"] + +[ext_resource type="Script" uid="uid://dib0h35wkm16e" path="res://scenes/props/park_clock.gd" id="1_oxsyg"] +[ext_resource type="AudioStream" uid="uid://c5ugemxooiq4r" path="res://assets/SFX/big_ben_single_bong.mp3" id="2_5fsla"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_257xc"] +albedo_color = Color(1, 0.0313726, 0, 1) +metallic = 0.85 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_oxsyg"] +albedo_color = Color(1, 0.0313726, 0, 1) +metallic = 0.85 + +[sub_resource type="Animation" id="Animation_5fsla"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:rotation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector3(0, 0, 0)] +} + +[sub_resource type="Animation" id="Animation_oxsyg"] +resource_name = "clock_down" +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:rotation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 1), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector3(0, 0, 0), Vector3(0, 0, -1.4399)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_wxmr0"] +_data = { +&"RESET": SubResource("Animation_5fsla"), +&"clock_down": SubResource("Animation_oxsyg") +} + +[node name="ParkClock" type="Node3D"] +script = ExtResource("1_oxsyg") + +[node name="ClockPole" type="CSGCylinder3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.39027, 0) +use_collision = true +radius = 0.2 +height = 2.33301 +sides = 64 +smooth_faces = false +material = SubResource("StandardMaterial3D_257xc") + +[node name="ClockTop" type="CSGCylinder3D" parent="."] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 2.98738, 0) +use_collision = true +height = 0.5 +sides = 64 +material = SubResource("StandardMaterial3D_oxsyg") + +[node name="ClockSpike" type="CSGCylinder3D" parent="."] +transform = Transform3D(1, 0, 0, 0, -1, 8.74228e-08, 0, -8.74228e-08, -1, 0, -0.0262876, 0) +radius = 0.2 +height = 0.5 +sides = 64 +cone = true +material = SubResource("StandardMaterial3D_257xc") + +[node name="AudioClock" type="AudioStreamPlayer3D" parent="."] +stream = ExtResource("2_5fsla") +volume_db = 20.0 + +[node name="AnimationParkClock" type="AnimationPlayer" parent="."] +libraries = { +&"": SubResource("AnimationLibrary_wxmr0") +} diff --git a/scenes/props/park_lamp.tscn b/scenes/props/park_lamp.tscn new file mode 100644 index 0000000..eafdc53 --- /dev/null +++ b/scenes/props/park_lamp.tscn @@ -0,0 +1,119 @@ +[gd_scene load_steps=10 format=3 uid="uid://buupbbacb5pmc"] + +[ext_resource type="Texture2D" uid="uid://7fagq33bixhr" path="res://assets/textures/metal/Metal029_1K-PNG/Metal029_1K-PNG_Color.png" id="1_h6610"] +[ext_resource type="Material" uid="uid://b6gm2sotwdai" path="res://assets/material/glass_window.tres" id="1_t0l00"] +[ext_resource type="Texture2D" uid="uid://6fdgkbvnwnph" path="res://assets/textures/metal/Metal029_1K-PNG/Metal029_1K-PNG_Metalness.png" id="2_6r4i8"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_oth47"] +albedo_texture = ExtResource("1_h6610") +metallic = 1.0 +metallic_texture = ExtResource("2_6r4i8") +uv1_triplanar = true +uv1_world_triplanar = true +texture_filter = 2 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_s6i8d"] +albedo_color = Color(49.724, 33.15, 0, 1) + +[sub_resource type="CylinderMesh" id="CylinderMesh_h6610"] +top_radius = 1.05 +bottom_radius = 0.7 +height = 1.2 +radial_segments = 4 + +[sub_resource type="CylinderMesh" id="CylinderMesh_6r4i8"] +material = ExtResource("1_t0l00") +top_radius = 0.9 +bottom_radius = 0.6 +height = 1.0 +radial_segments = 4 + +[sub_resource type="CylinderMesh" id="CylinderMesh_t0l00"] +material = SubResource("StandardMaterial3D_oth47") +top_radius = 0.3 +bottom_radius = 1.2 +height = 0.5 +radial_segments = 4 + +[sub_resource type="CylinderMesh" id="CylinderMesh_s6i8d"] +material = SubResource("StandardMaterial3D_oth47") +top_radius = 0.35 +bottom_radius = 0.6 +height = 1.0 + +[node name="ParkLamp" type="Node3D"] + +[node name="Pole" type="CSGCylinder3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.972904, 0) +use_collision = true +radius = 0.35 +height = 3.9458 +sides = 32 +material = SubResource("StandardMaterial3D_oth47") + +[node name="LampHeadBase" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.00131226, 2.95614, 0.00100708) +use_collision = true +size = Vector3(0.984802, 0.012207, 0.983093) +material = SubResource("StandardMaterial3D_oth47") + +[node name="Light" type="CSGSphere3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3.63952, 0) +use_collision = true +radius = 0.2 +radial_segments = 100 +rings = 64 +material = SubResource("StandardMaterial3D_s6i8d") + +[node name="OmniLight3D" type="OmniLight3D" parent="Light"] +light_color = Color(1, 0.717647, 0, 1) +light_energy = 3.0 +omni_range = 25.0 + +[node name="Lightbulb" type="CSGSphere3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3.63952, 0) +use_collision = true +radius = 0.35 +radial_segments = 100 +rings = 64 +material = ExtResource("1_t0l00") + +[node name="LampHead" type="CSGMesh3D" parent="."] +transform = Transform3D(0.707107, 0, 0.707107, 0, 1, 0, -0.707107, 0, 0.707107, -0.00240707, 3.54509, 0) +use_collision = true +mesh = SubResource("CylinderMesh_h6610") +material = SubResource("StandardMaterial3D_oth47") + +[node name="CSGMesh3D" type="CSGMesh3D" parent="LampHead"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0793712, 0.0176244, -0.0673712) +cast_shadow = 0 +operation = 2 +mesh = SubResource("CylinderMesh_6r4i8") + +[node name="CSGMesh3D2" type="CSGMesh3D" parent="LampHead"] +transform = Transform3D(-8.9407e-08, 0, 1, 0, 1, 0, -1, 0, -8.9407e-08, -0.0724406, 0.0176244, -0.0627987) +cast_shadow = 0 +operation = 2 +mesh = SubResource("CylinderMesh_6r4i8") + +[node name="CSGMesh3D3" type="CSGMesh3D" parent="LampHead"] +transform = Transform3D(-1, 0, -8.9407e-08, 0, 1, 0, 8.9407e-08, 0, -1, -0.0615578, 0.0176244, 0.0735578) +cast_shadow = 0 +operation = 2 +mesh = SubResource("CylinderMesh_6r4i8") + +[node name="CSGMesh3D4" type="CSGMesh3D" parent="LampHead"] +transform = Transform3D(0, 0, -1, 0, 1, 0, 1, 0, 0, 0.0789015, 0.0176244, 0.0627143) +cast_shadow = 0 +operation = 2 +mesh = SubResource("CylinderMesh_6r4i8") + +[node name="LampCap" type="CSGMesh3D" parent="."] +transform = Transform3D(0.707107, 0, 0.707107, 0, 1, 0, -0.707107, 0, 0.707107, 0, 4.39616, 0) +use_collision = true +mesh = SubResource("CylinderMesh_t0l00") + +[node name="LampBase" type="CSGMesh3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.50415, 0) +use_collision = true +mesh = SubResource("CylinderMesh_s6i8d") diff --git a/scenes/props/snake_plant_potter.tscn b/scenes/props/snake_plant_potter.tscn new file mode 100644 index 0000000..b7d2a4a --- /dev/null +++ b/scenes/props/snake_plant_potter.tscn @@ -0,0 +1,71 @@ +[gd_scene load_steps=13 format=3 uid="uid://0ammn4ociseh"] + +[ext_resource type="Texture2D" uid="uid://c7epqfbtlldeq" path="res://assets/picture/freepik_snake_plant_painting_trans_back.png" id="1_tbikp"] +[ext_resource type="Texture2D" uid="uid://ue5eee631uic" path="res://assets/textures/stone_rocks/ambeintCG_Clay001_1K-PNG/Clay001_1K-PNG_Color.png" id="2_c12b8"] +[ext_resource type="Texture2D" uid="uid://gat7htvdapsp" path="res://assets/textures/ground/Ground048/Ground048_1K-PNG_Color.png" id="2_ovd88"] +[ext_resource type="Texture2D" uid="uid://6uiw2k5ucl1h" path="res://assets/textures/stone_rocks/ambeintCG_Clay001_1K-PNG/Clay001_1K-PNG_NormalGL.png" id="3_naptl"] +[ext_resource type="Texture2D" uid="uid://ryaim1unb321" path="res://assets/textures/ground/Ground048/Ground048_1K-PNG_AmbientOcclusion.png" id="3_xlnh7"] +[ext_resource type="Texture2D" uid="uid://ddkfxln16wgur" path="res://assets/textures/ground/Ground048/Ground048_1K-PNG_NormalGL.png" id="4_e2yb3"] +[ext_resource type="Texture2D" uid="uid://urtllcvum86g" path="res://assets/textures/stone_rocks/ambeintCG_Clay001_1K-PNG/Clay001_1K-PNG_Roughness.png" id="4_nlixk"] +[ext_resource type="Texture2D" uid="uid://bcl0sorkyxttg" path="res://assets/textures/ground/Ground048/Ground048_1K-PNG_Roughness.png" id="5_c12b8"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_hki3c"] +transparency = 1 +albedo_texture = ExtResource("1_tbikp") +billboard_mode = 2 + +[sub_resource type="PlaneMesh" id="PlaneMesh_p0oth"] +material = SubResource("StandardMaterial3D_hki3c") +size = Vector2(4, 4) +center_offset = Vector3(0.2, 1.7, 0) +orientation = 2 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_lfy4t"] +albedo_texture = ExtResource("2_c12b8") +roughness_texture = ExtResource("4_nlixk") +normal_enabled = true +normal_texture = ExtResource("3_naptl") +uv1_triplanar = true +uv1_world_triplanar = true + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_p0oth"] +albedo_texture = ExtResource("2_ovd88") +roughness_texture = ExtResource("5_c12b8") +normal_enabled = true +normal_texture = ExtResource("4_e2yb3") +ao_enabled = true +ao_texture = ExtResource("3_xlnh7") +uv1_triplanar = true +uv1_world_triplanar = true + +[node name="Snake_Plant" type="MeshInstance3D"] +mesh = SubResource("PlaneMesh_p0oth") + +[node name="Pot" type="CSGCylinder3D" parent="."] +transform = Transform3D(2, 0, 0, 0, -2, -1.7484555e-07, 0, 1.7484555e-07, -2, 0, -0.8525221, 0) +use_collision = true +radius = 0.3 +height = 1.0 +sides = 64 +cone = true +material = SubResource("StandardMaterial3D_lfy4t") + +[node name="Pot_Bottom_Shaper" type="CSGBox3D" parent="Pot"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.1454834, -2.0721949e-09) +operation = 2 +size = Vector3(1, 0.66162694, 1) +material = SubResource("StandardMaterial3D_lfy4t") + +[node name="Dirt" type="CSGCylinder3D" parent="Pot"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.451436, -3.946579e-08) +radius = 0.25 +height = 0.1 +sides = 64 +material = SubResource("StandardMaterial3D_p0oth") + +[node name="Pot_lip" type="CSGCylinder3D" parent="Pot"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.47308648, -1.12121384e-07) +radius = 0.32 +height = 0.052703857 +sides = 64 +material = SubResource("StandardMaterial3D_lfy4t") diff --git a/scenes/props/tombstone_decoration.tscn b/scenes/props/tombstone_decoration.tscn new file mode 100644 index 0000000..ac9ba89 --- /dev/null +++ b/scenes/props/tombstone_decoration.tscn @@ -0,0 +1,48 @@ +[gd_scene load_steps=9 format=3 uid="uid://dmncm13oeuh7s"] + +[ext_resource type="Texture2D" uid="uid://bxlo31dkr1go" path="res://assets/textures/stone_rocks/seaside_rock_1k/seaside_rock_ao_1k.png" id="1_s1ylu"] +[ext_resource type="Texture2D" uid="uid://dg8t4foaqplop" path="res://assets/textures/wood/WoodFloor043_1K-PNG/WoodFloor043_1K-PNG_Color.png" id="2_dw683"] + +[sub_resource type="BoxMesh" id="BoxMesh_anayp"] +size = Vector3(1, 1.5, 0.18) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_2cb4t"] +albedo_color = Color(0.423651, 0.423651, 0.423651, 1) +albedo_texture = ExtResource("1_s1ylu") +uv1_scale = Vector3(0.2, 0.2, 0.2) +uv1_triplanar = true +uv1_world_triplanar = true + +[sub_resource type="CylinderMesh" id="CylinderMesh_ku2uk"] +height = 0.18 + +[sub_resource type="BoxMesh" id="BoxMesh_vecq8"] +size = Vector3(1, 1.5, 0.02) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_cts40"] +albedo_texture = ExtResource("2_dw683") +uv1_scale = Vector3(0.2, 0.2, 0.2) +uv1_triplanar = true +uv1_world_triplanar = true + +[sub_resource type="CylinderMesh" id="CylinderMesh_08au0"] +height = 0.02 + +[node name="TombstoneDecoration" type="CSGMesh3D"] +mesh = SubResource("BoxMesh_anayp") +material = SubResource("StandardMaterial3D_2cb4t") + +[node name="TombstoneTop" type="CSGMesh3D" parent="."] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0.75, 0) +mesh = SubResource("CylinderMesh_ku2uk") +material = SubResource("StandardMaterial3D_2cb4t") + +[node name="TombstoneBack" type="CSGMesh3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.0990259) +mesh = SubResource("BoxMesh_vecq8") +material = SubResource("StandardMaterial3D_cts40") + +[node name="TombstoneTopBack" type="CSGMesh3D" parent="TombstoneBack"] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0.75, 0) +mesh = SubResource("CylinderMesh_08au0") +material = SubResource("StandardMaterial3D_cts40") diff --git a/scenes/props/treadmill.tscn b/scenes/props/treadmill.tscn new file mode 100644 index 0000000..e4b637c --- /dev/null +++ b/scenes/props/treadmill.tscn @@ -0,0 +1,38 @@ +[gd_scene format=3 uid="uid://dpk46bare4m8y"] + +[node name="TreadmillBase" type="CSGBox3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.76133, -0.0446642, -0.405487) +use_collision = true +size = Vector3(2.79011, 0.145984, 1.304) + +[node name="BaseSide" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.111679, 0.00892924, 0.746323) +size = Vector3(3.0177, 0.259867, 0.223999) + +[node name="BaseSide2" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.112, 0.009, -0.73653) +size = Vector3(3.0177, 0.259867, 0.204346) + +[node name="BaseFront" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.59703, 0.0302676, 0.00942749) +size = Vector3(1, 0.303647, 1.69633) + +[node name="Joint" type="CSGBox3D" parent="."] +transform = Transform3D(0.866025, 0.5, 0, -0.5, 0.866025, 0, 0, 0, 1, -1.78576, 0.518247, 0.750348) +size = Vector3(0.2, 0.9, 0.2) + +[node name="Joint2" type="CSGBox3D" parent="."] +transform = Transform3D(0.866025, 0.5, 0, -0.5, 0.866025, 0, 0, 0, 1, -1.78888, 0.512454, -0.736372) +size = Vector3(0.2, 0.898621, 0.2) + +[node name="Display" type="CSGBox3D" parent="."] +transform = Transform3D(0.866025, -0.5, 0, 0.5, 0.866025, 0, 0, 0, 1, -1.66227, 1.14114, 0.00455022) +size = Vector3(0.245117, 0.635483, 1.69139) + +[node name="Arm" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.855169, 0.925014, -0.741606) +size = Vector3(1.3319, 0.2, 0.198633) + +[node name="Arm2" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.855239, 0.925279, 0.750115) +size = Vector3(1.3319, 0.2, 0.198633) diff --git a/scenes/props/trees/abstract_generic_tree.tscn b/scenes/props/trees/abstract_generic_tree.tscn new file mode 100644 index 0000000..e7ec44a --- /dev/null +++ b/scenes/props/trees/abstract_generic_tree.tscn @@ -0,0 +1,22 @@ +[gd_scene load_steps=3 format=3 uid="uid://cbryi6cp68x4d"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_m83eb"] +albedo_color = Color(0.490196, 0.345098, 0.223529, 1) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_tqg3o"] +albedo_color = Color(0.360784, 0.662745, 0.0156863, 1) + +[node name="AbstractGenericTree" type="Node3D"] + +[node name="Trunk" type="CSGCylinder3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1.0424, 0) +use_collision = true +radius = 1.0 +height = 8.0 +material = SubResource("StandardMaterial3D_m83eb") + +[node name="Crown" type="CSGSphere3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 4.55482, 0) +radius = 4.0 +radial_segments = 64 +material = SubResource("StandardMaterial3D_tqg3o") diff --git a/scenes/props/trees/abstract_pine_tree.tscn b/scenes/props/trees/abstract_pine_tree.tscn new file mode 100644 index 0000000..74dcacf --- /dev/null +++ b/scenes/props/trees/abstract_pine_tree.tscn @@ -0,0 +1,94 @@ +[gd_scene format=3 uid="uid://c5lt3qq7ddpg3"] + +[ext_resource type="Texture2D" uid="uid://bte1deufy2k6e" path="res://assets/textures/wood/pine_bark_1k/pine_bark_diff_1k.png" id="1_fp107"] +[ext_resource type="Texture2D" uid="uid://djbsbts3nq7vl" path="res://assets/textures/plant/holiday_pine_01-256x256.png" id="2_obkhx"] +[ext_resource type="Texture2D" uid="uid://vwnrymaoxu3l" path="res://assets/textures/snow_ice/snow.png" id="3_obkhx"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_21lva"] +albedo_texture = ExtResource("1_fp107") +uv1_scale = Vector3(0.2, 0.2, 0.2) +uv1_triplanar = true +uv1_world_triplanar = true +texture_filter = 0 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_4s460"] +albedo_texture = ExtResource("2_obkhx") +uv1_scale = Vector3(0.2, 0.2, 0.2) +uv1_triplanar = true +uv1_world_triplanar = true +texture_filter = 0 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_pfyvq"] +albedo_texture = ExtResource("2_obkhx") +uv1_scale = Vector3(0.2, 0.2, 0.2) +uv1_triplanar = true +uv1_world_triplanar = true +texture_filter = 0 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_1hh31"] +albedo_texture = ExtResource("2_obkhx") +uv1_scale = Vector3(0.2, 0.2, 0.2) +uv1_triplanar = true +uv1_world_triplanar = true +texture_filter = 0 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_34scb"] +albedo_texture = ExtResource("3_obkhx") +uv1_triplanar = true +uv1_world_triplanar = true + +[node name="AbstractPineTree" type="Node3D" unique_id=595201290] + +[node name="Trunk" type="CSGCylinder3D" parent="." unique_id=397201632] +use_collision = true +radius = 1.0 +height = 12.0 +material = SubResource("StandardMaterial3D_21lva") + +[node name="Crown" type="CSGCylinder3D" parent="." unique_id=80649952] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7.38372, 0) +radius = 3.0 +height = 4.0 +cone = true +smooth_faces = false +material = SubResource("StandardMaterial3D_4s460") + +[node name="Crown2" type="CSGCylinder3D" parent="." unique_id=966056218] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 4.52946, 0) +radius = 4.0 +height = 4.0 +cone = true +smooth_faces = false +material = SubResource("StandardMaterial3D_pfyvq") + +[node name="Crown3" type="CSGCylinder3D" parent="." unique_id=876619281] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.15524, 0) +radius = 5.0 +height = 4.0 +cone = true +smooth_faces = false +material = SubResource("StandardMaterial3D_1hh31") + +[node name="Crown4" type="CSGCylinder3D" parent="." unique_id=1057979707] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7.6976295, 0) +radius = 2.8935547 +height = 4.269043 +cone = true +smooth_faces = false +material = SubResource("StandardMaterial3D_34scb") + +[node name="Crown5" type="CSGCylinder3D" parent="." unique_id=1447536920] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 4.937756, 0) +radius = 3.9091797 +height = 4.5117188 +cone = true +smooth_faces = false +material = SubResource("StandardMaterial3D_34scb") + +[node name="Crown6" type="CSGCylinder3D" parent="." unique_id=1971221889] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.410511, 0) +radius = 4.833008 +height = 4.220703 +cone = true +smooth_faces = false +material = SubResource("StandardMaterial3D_34scb") diff --git a/scenes/props/trees/pine_tree_low_poly.tscn b/scenes/props/trees/pine_tree_low_poly.tscn new file mode 100644 index 0000000..5532ecc --- /dev/null +++ b/scenes/props/trees/pine_tree_low_poly.tscn @@ -0,0 +1,12 @@ +[gd_scene load_steps=3 format=3 uid="uid://v8352kk4m2na"] + +[ext_resource type="PackedScene" uid="uid://c2b07utp6oull" path="res://assets/model/pine_tree_-_ps1_low_poly/pine_tree_ps1_low_poly.gltf" id="1_tdhg2"] + +[sub_resource type="BoxShape3D" id="BoxShape3D_w4um0"] +size = Vector3(8.36639, 12.518, 8.28671) + +[node name="pine_tree_low_poly" instance=ExtResource("1_tdhg2")] + +[node name="CollisionShape3D" type="CollisionShape3D" parent="." index="1"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.452991, 5.99669, 0.0377464) +shape = SubResource("BoxShape3D_w4um0") diff --git a/scenes/props/vanishing_body.tscn b/scenes/props/vanishing_body.tscn new file mode 100644 index 0000000..0b2a957 --- /dev/null +++ b/scenes/props/vanishing_body.tscn @@ -0,0 +1,6 @@ +[gd_scene load_steps=2 format=3 uid="uid://br64bedksp8u8"] + +[ext_resource type="Script" uid="uid://cam4ohtva7ft" path="res://scripts/vanishing_body.gd" id="1_i8033"] + +[node name="VanishingBody" type="StaticBody3D" groups=["VanishingBody"]] +script = ExtResource("1_i8033") diff --git a/scenes/props/vanishing_light.tscn b/scenes/props/vanishing_light.tscn new file mode 100644 index 0000000..87fafd6 --- /dev/null +++ b/scenes/props/vanishing_light.tscn @@ -0,0 +1,7 @@ +[gd_scene load_steps=2 format=3 uid="uid://tpqj8hi3gp2l"] + +[ext_resource type="Script" uid="uid://703td84x3hgr" path="res://scripts/vanishing_light.gd" id="1_8x1id"] + +[node name="VanishingLight" type="OmniLight3D" groups=["VanishingLight"]] +light_color = Color(1, 0.462745, 0, 1) +script = ExtResource("1_8x1id") diff --git a/scenes/props/vending_machine.tscn b/scenes/props/vending_machine.tscn new file mode 100644 index 0000000..db09692 --- /dev/null +++ b/scenes/props/vending_machine.tscn @@ -0,0 +1,45 @@ +[gd_scene load_steps=2 format=3 uid="uid://dbi3uhrh5o82j"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_704b3"] + +[node name="Vending_Machine" type="Node3D"] + +[node name="Body" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.38110352, 0.5283203, -0.25048974) +use_collision = true +size = Vector3(1, 2.5, 1.6577148) +material = SubResource("StandardMaterial3D_704b3") + +[node name="Goods_Space_Remover" type="CSGBox3D" parent="Body"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.26514292, 0.03239441, 0.14566362) +operation = 2 +size = Vector3(0.47462463, 1.4953308, 0.95581055) + +[node name="Wake_Brand" type="Label3D" parent="Body"] +transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 0.5204674, 1.035, 0) +text = "WAKE +" + +[node name="Wake_Hidden_Message_1" type="Label3D" parent="Body/Wake_Brand"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.16285896, 0) +visible = false +text = "up" +font_size = 12 + +[node name="Wake_Hidden_Message_2" type="Label3D" parent="Body/Wake_Brand"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.13212013, 0) +visible = false +text = "Please" +font_size = 12 + +[node name="Snap_Brand" type="Label3D" parent="Body"] +transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 0.5204674, 1.035, 0) +visible = false +text = "SNAP +" + +[node name="Snap_Hidden_Message_1" type="Label3D" parent="Body/Snap_Brand"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.16285896, 0) +visible = false +text = "out of it" +font_size = 12 diff --git a/scenes/props/workbench.tscn b/scenes/props/workbench.tscn new file mode 100644 index 0000000..3169124 --- /dev/null +++ b/scenes/props/workbench.tscn @@ -0,0 +1,106 @@ +[gd_scene format=3 uid="uid://cet8swps817sk"] + +[ext_resource type="Script" uid="uid://t0xhxvyoert4" path="res://scripts/workbench.gd" id="1_ycbor"] +[ext_resource type="Texture2D" uid="uid://df826g11mrjod" path="res://assets/textures/wood/Wood013_1K-PNG/Wood013_1K-PNG_Color.png" id="2_d3wgm"] +[ext_resource type="Texture2D" uid="uid://cydetx4hbmcti" path="res://assets/textures/wood/Wood013_1K-PNG/Wood013_1K-PNG_NormalGL.png" id="3_pn057"] +[ext_resource type="Texture2D" uid="uid://bwk3t7yqsxj2d" path="res://assets/textures/wood/Wood013_1K-PNG/Wood013_1K-PNG_Roughness.png" id="4_nm58r"] +[ext_resource type="Script" uid="uid://l0koncj131rq" path="res://scripts/item_stand_1.gd" id="5_pn057"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_odejd"] +albedo_texture = ExtResource("2_d3wgm") +roughness_texture = ExtResource("4_nm58r") +normal_enabled = true +normal_texture = ExtResource("3_pn057") +uv1_triplanar = true +uv1_world_triplanar = true +texture_filter = 0 + +[sub_resource type="BoxMesh" id="BoxMesh_7jd0r"] +material = SubResource("StandardMaterial3D_odejd") +size = Vector3(3, 0.2, 1.5) + +[sub_resource type="BoxMesh" id="BoxMesh_ycbor"] +material = SubResource("StandardMaterial3D_odejd") +size = Vector3(0.2, 1, 0.2) + +[sub_resource type="BoxShape3D" id="BoxShape3D_i0vrc"] +size = Vector3(3, 1.23975, 1.5) + +[sub_resource type="BoxMesh" id="BoxMesh_d3wgm"] +material = SubResource("StandardMaterial3D_odejd") +size = Vector3(0.75, 0.2, 0.75) + +[sub_resource type="BoxShape3D" id="BoxShape3D_pn057"] +size = Vector3(0.75, 1, 0.75) + +[node name="Workbench" type="StaticBody3D" unique_id=1694309928 groups=["interactable"]] +collision_layer = 3 +script = ExtResource("1_ycbor") + +[node name="BenchTop" type="MeshInstance3D" parent="." unique_id=1648736723] +mesh = SubResource("BoxMesh_7jd0r") + +[node name="BenchLeg" type="MeshInstance3D" parent="BenchTop" unique_id=315668501] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.39987, -0.6, 0.65004) +mesh = SubResource("BoxMesh_ycbor") + +[node name="BenchLeg2" type="MeshInstance3D" parent="BenchTop" unique_id=567848772] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.4, -0.6, 0.65) +mesh = SubResource("BoxMesh_ycbor") + +[node name="BenchLeg3" type="MeshInstance3D" parent="BenchTop" unique_id=1692560002] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.39987, -0.6, -0.65) +mesh = SubResource("BoxMesh_ycbor") + +[node name="BenchLeg4" type="MeshInstance3D" parent="BenchTop" unique_id=16698189] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.4, -0.6, -0.65) +mesh = SubResource("BoxMesh_ycbor") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="." unique_id=786867462] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.480483, 0) +shape = SubResource("BoxShape3D_i0vrc") + +[node name="InteractLabel" type="Label3D" parent="." unique_id=2112448531] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.375652, 0) +text = "[E] Craft" + +[node name="CraftLabel" type="Label3D" parent="." unique_id=635980477] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.657479, 0) + +[node name="ItemStand1" type="StaticBody3D" parent="." unique_id=67639388 groups=["interactable"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1, 0.193, 0) +collision_layer = 3 +script = ExtResource("5_pn057") + +[node name="ItemStandMesh" type="MeshInstance3D" parent="ItemStand1" unique_id=572209388] +mesh = SubResource("BoxMesh_d3wgm") +skeleton = NodePath("../..") + +[node name="ItemMesh" type="MeshInstance3D" parent="ItemStand1" unique_id=1820423270] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.6, 0) + +[node name="ItemStandCollision" type="CollisionShape3D" parent="ItemStand1" unique_id=116538025] +shape = SubResource("BoxShape3D_pn057") + +[node name="InteractLabel" type="Label3D" parent="ItemStand1" unique_id=234758283] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.0221463, 0.377451) +text = "[E] Item 1" + +[node name="ItemStand2" type="StaticBody3D" parent="." unique_id=1929102858 groups=["interactable"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0.193, 0) +collision_layer = 3 +script = ExtResource("5_pn057") + +[node name="ItemStandMesh" type="MeshInstance3D" parent="ItemStand2" unique_id=1226552968] +mesh = SubResource("BoxMesh_d3wgm") +skeleton = NodePath("../..") + +[node name="ItemMesh" type="MeshInstance3D" parent="ItemStand2" unique_id=1728259119] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.6, 0) + +[node name="ItemStandCollision" type="CollisionShape3D" parent="ItemStand2" unique_id=1344530036] +shape = SubResource("BoxShape3D_pn057") + +[node name="InteractLabel" type="Label3D" parent="ItemStand2" unique_id=1567098859] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.0181672, 0.377533) +text = "[E] Item 2" diff --git a/scenes/settings.gd b/scenes/settings.gd new file mode 100644 index 0000000..df9d11e --- /dev/null +++ b/scenes/settings.gd @@ -0,0 +1,16 @@ +extends Control + +@onready var resolution_selector: OptionButton = $Resolution/ResolutionSelector + +func _on_confirm_audio_button_pressed() -> void: + AudioServer.set_bus_volume_db(0,linear_to_db($Audio/VBoxContainer/MasterVolume.value)) + + +func _on_resolution_selector_item_selected(index: int) -> void: + match index: + 0: + get_window().set_size(Vector2i(1920,1080)) + 1: + get_window().set_size(Vector2i(1600,900)) + 2: + get_window().set_size(Vector2i(1280,720)) diff --git a/scenes/settings.gd.uid b/scenes/settings.gd.uid new file mode 100644 index 0000000..73eaebb --- /dev/null +++ b/scenes/settings.gd.uid @@ -0,0 +1 @@ +uid://ciaxxlhyiwr8d diff --git a/scenes/warp_area.tscn b/scenes/warp_area.tscn new file mode 100644 index 0000000..5f5b508 --- /dev/null +++ b/scenes/warp_area.tscn @@ -0,0 +1,8 @@ +[gd_scene format=3 uid="uid://bh0m8jrngk1sv"] + +[ext_resource type="Script" uid="uid://c72bbipvxdhl6" path="res://scripts/change_scene.gd" id="1_sykdl"] + +[node name="WarpArea" type="Area3D" unique_id=347008991] +script = ExtResource("1_sykdl") + +[connection signal="body_entered" from="." to="." method="_on_body_entered"] diff --git a/scripts/Breakable.gd b/scripts/Breakable.gd new file mode 100644 index 0000000..5cb18f1 --- /dev/null +++ b/scripts/Breakable.gd @@ -0,0 +1,18 @@ +extends StaticBody3D + +@onready var debris_generator: Node3D = get_tree().get_first_node_in_group("generator") + +@export var stability = 2 + +func _process(_delta: float) -> void: + match stability: + 1: + ##Assumes decal is always 3rd child and checks if object has a decal + if self.get_children().size() > 2 and self.get_child(2) is Decal: + $Decal.visible = true + 0: + if self.get_child(0).mesh is ArrayMesh: + debris_generator.generate_debris(self.global_position, self.get_child(0).get_aabb().size * self.scale, self.get_child(0).get_surface_override_material(0), "one_shot") + elif self.get_child(0).mesh is BoxMesh: + debris_generator.generate_debris(self.global_position, self.get_child(0).get_aabb().size, self.get_child(0).mesh.material, "one_shot") + queue_free() diff --git a/scripts/Breakable.gd.uid b/scripts/Breakable.gd.uid new file mode 100644 index 0000000..e378bcd --- /dev/null +++ b/scripts/Breakable.gd.uid @@ -0,0 +1 @@ +uid://c3igw81nke1l1 diff --git a/scripts/FloorTrap.gd b/scripts/FloorTrap.gd new file mode 100644 index 0000000..35c3244 --- /dev/null +++ b/scripts/FloorTrap.gd @@ -0,0 +1,21 @@ +extends Area3D + +@onready var animation_player = $"../FloorTrap/AnimationPlayer" +@onready var Player: CharacterBody3D = get_tree().get_first_node_in_group("Player") +@onready var collision: CollisionShape3D = $CollisionShape3D + +var await_animation = false + +##TODO Make this signal function not run every time the player enters the area +## or at least wait unit the return animation is done playing + +func _on_body_entered(_body: Node3D) -> void: + if !await_animation: + animation_player.play("drop") + await_animation = true + await get_tree().create_timer(3, false).timeout + await_animation = false + + +func _on_body_exited(_body: Node3D) -> void: + animation_player.play("return") diff --git a/scripts/FloorTrap.gd.uid b/scripts/FloorTrap.gd.uid new file mode 100644 index 0000000..965d914 --- /dev/null +++ b/scripts/FloorTrap.gd.uid @@ -0,0 +1 @@ +uid://cpumk63448i3g diff --git a/scripts/Player.gd b/scripts/Player.gd new file mode 100644 index 0000000..0e7feff --- /dev/null +++ b/scripts/Player.gd @@ -0,0 +1,311 @@ +extends CharacterBody3D + +@export var head_bob: bool = true + +@export_category("Movement") +@export var WALK = 3 +@export var RUN = 6 +@export var CROUCH = 1.5 +@export var JUMP_VELOCITY = 4 +@export var HEAVY = 0.5 +@export var run_toggle = false + +@export_category("Jumping") +@export var floating_jump = false +@export var infinite_jump = false +@export var no_jump = false + +@export_category("Constructs") +@export var grapple_speed = 20 +#var grap_post = Vector3(0,0,0) + +@export_category("Items") +@export var keys = [] +@export var inventory = ["hydrogen_peroxide", "vinegar"] + +# Get the gravity from the project settings to be synced with RigidBody nodes. +var gravity = ProjectSettings.get_setting("physics/3d/default_gravity") + +## the current modifier to movement speed +## Changes based on whether player is walking, running, crouching... +var speed_mode: float +var con_mod: float = 1 +var switch_state_run = false +var switch_state_crouch = false + +var current_time: int = 12 +var contains: bool = false + +@onready var neck := $Neck +@onready var con_animation := $ConstructAnimation +@onready var player_animation: AnimationPlayer = $PlayerAnimation +@onready var interactor_ray: RayCast3D = $Neck/FirstPersonCamera/InteractorRay +@onready var dumping_ray: RayCast3D = $Neck/FirstPersonCamera/DumpingRay +@onready var grapple_ray: RayCast3D = $Neck/FirstPersonCamera/GrappleRay +@onready var mesh_instance: MeshInstance3D = $MeshInstance3D +@onready var collision: CollisionShape3D = $CollisionShape3D +@onready var camera := $Neck/FirstPersonCamera +@onready var construct: Node3D = $Neck/FirstPersonCamera/ItemRig/Construct + +func _ready(): + + speed_mode = WALK + +func _unhandled_input(event): + + if event is InputEventMouseButton: + Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED) + if Input.get_mouse_mode() == Input.MOUSE_MODE_CAPTURED: + if event is InputEventMouseMotion: + if camera.current: + ## First Person Camera + neck.rotate_y(-event.relative.x * 0.01) + camera.rotate_x(-event.relative.y * 0.01) + camera.rotation.x = clamp(camera.rotation.x, deg_to_rad(-60), deg_to_rad(60)) + +func _physics_process(delta): + + ##Neck is magically at 0.56 on the y after being set to 0.3 in the player scene??? + #print("neck positon: " + str(neck.position.y)) + + ##CONSTRUCT FUNCTIONS + if construct.CONSTRUCT_TYPE.name == "Stick": + use_stick() + ##If the player is using the hammer then go into the hammer function. + elif construct.CONSTRUCT_TYPE.name == "Hammer": + use_hammer() + elif construct.CONSTRUCT_TYPE.name == "Weight": + use_weight() + ##Change the the current_time when time changing occurs + elif construct.CONSTRUCT_TYPE.name == "Time": + use_time() + elif construct.CONSTRUCT_TYPE.name == "fishing_rod": + use_fishing_rod(delta) + elif construct.CONSTRUCT_TYPE.name == "shovel": + use_shovel() + + + + ##Gravity + ##If not grappling (issue with gravity pulling the player down from grapple spot) + if not is_on_floor() and Global.grappling == false: + velocity.y -= gravity * delta + + ##Jumping + ##Check that jumping is enabled + if not no_jump: + ##Infinite Jump + if infinite_jump: + ##Handle jump. + if Input.is_action_just_pressed("Jump"): #and is_on_floor(): + velocity.y = JUMP_VELOCITY * con_mod + ##Floating Jump + elif floating_jump: + ## Will float up when space is held + ## Mod on jump for TESTING + if Input.is_action_pressed("Jump"): + velocity.y = JUMP_VELOCITY * con_mod + else: + if Input.is_action_just_pressed("Jump") and is_on_floor(): + velocity.y = JUMP_VELOCITY * con_mod + + ##Player Crouch + if Input.is_action_just_pressed("Crouch") and is_on_floor(): + if !switch_state_crouch: + speed_mode = CROUCH + collision.shape.height = 1 + player_animation.play("crouch") + switch_state_crouch = true + elif switch_state_crouch: + speed_mode = WALK + collision.shape.height = 2 + player_animation.play_backwards("crouch") + switch_state_crouch = false + switch_state_run = false + + if camera.current: + # Get the input direction and handle the movement/deceleration. + var input_dir = Input.get_vector("Left", "Right", "Forward", "Back") + var direction = (neck.global_basis * Vector3(input_dir.x, 0, input_dir.y)).normalized() + if direction: + + velocity.x = direction.x * speed_mode * con_mod + velocity.z = direction.z * speed_mode * con_mod + + ##Run set to toggle + if run_toggle == true: + if Input.is_action_just_pressed("Run") and switch_state_crouch == false: + if !switch_state_run: + speed_mode = RUN + switch_state_run = true + elif switch_state_run: + speed_mode = WALK + switch_state_run = false + + ##Run set to hold + elif run_toggle == false: + if Input.is_action_pressed("Run") and switch_state_crouch == false: + speed_mode = RUN + switch_state_run = true + else: + if switch_state_crouch == false: + speed_mode = WALK + switch_state_run = false + + + else: + #Don't move + velocity.x = move_toward(velocity.x, 0, WALK) + velocity.z = move_toward(velocity.z, 0, WALK) + #switch_state_run = false + #if switch_state_crouch == false and (run_toggle == true and switch_state_run == false): + #speed_mode = WALK + + ## Top Down Movement mode + #if camera_top_down.current: + #top_down_movement() + + make_head_bob() + + move_and_slide() + +func make_head_bob(): + #Allows head bob to be disabled + if head_bob == true: + #Track if the player is moving + if self.velocity.x != 0 or self.velocity.z != 0: + #Do a head bob animation and have it play at a speed equiv to move speed + player_animation.speed_scale = speed_mode / 4 + player_animation.play("head_bob") + else: + player_animation.stop() + +func use_shovel(): + + if Input.is_action_just_pressed("UseConstruct"): + ##Change this to be a shovel animation + if not con_animation.is_playing(): + con_animation.play("swing") + + if interactor_ray.is_colliding(): + print("is colliding") + if interactor_ray.get_collider().is_in_group("snow_spot") and contains == false: + ##Make sure the pile has snow + if interactor_ray.get_collider().get_parent().snow_amount > 0: + interactor_ray.get_collider().get_parent().snow_amount -= 1 + contains = true + ##Show the shovel as having snow + self.find_child("shovel").find_child("snow").show() + + if Input.is_action_just_pressed("UseConstructAlt"): + ##Change this to shovel dump + if not con_animation.is_playing(): + con_animation.play("swing") + + if contains: + ##If dumping snow not in pile + if dumping_ray.is_colliding(): + if !dumping_ray.get_collider().is_in_group("snow_spot"): + contains = false + ##Hide the snow + self.find_child("shovel").find_child("snow").hide() + else: + contains = false + ##Hide the snow + self.find_child("shovel").find_child("snow").hide() + + ##Add snow to snow spot if it is colliding + if dumping_ray.is_colliding(): + if dumping_ray.get_collider().is_in_group("snow_spot"): + ##Make sure the pile is not full + if dumping_ray.get_collider().get_parent().snow_amount < 3: + dumping_ray.get_collider().get_parent().snow_amount += 1 + contains = false + ##Hide the snow + self.find_child("shovel").find_child("snow").hide() + + + +func use_fishing_rod(delta): + + ##Play the animation every time the construct is used + if Input.is_action_just_pressed("UseConstruct"): + if not con_animation.is_playing(): + con_animation.play("swing") + + ##Use the grapple + grapple(delta) + +## If the player is using the hammer play the animation and check for breakable objects +func use_hammer(): + if Input.is_action_just_pressed("UseConstruct"): + if not con_animation.is_playing(): + con_animation.play("swing") + if interactor_ray.is_colliding(): + if interactor_ray.get_collider().is_in_group("breakable"): + interactor_ray.get_collider().stability -= 1 + +func use_tape(): + if Input.is_action_just_pressed("UseConstruct"): + if not con_animation.is_playing(): + pass ##TODO Add Construct Animation: con_animation.play("toss") + ##TODO Remove this and apply it to tape!!! + if interactor_ray.get_collider().is_in_group("fixable"): + interactor_ray.get_collider().fixed = true + +##If the player has the weight selected, play a lil animation when they try to use the construct +func use_weight(): + if Input.is_action_just_pressed("UseConstruct"): + if not con_animation.is_playing(): + con_animation.play("toss") + +func use_stick(): + if Input.is_action_just_pressed("UseConstruct"): + if not con_animation.is_playing(): + con_animation.play("swing") + +func use_time(): + if Input.is_action_just_pressed("UseConstruct"): + construct.construct_mesh2.rotation += Vector3(0,deg_to_rad(-30),0) + + if current_time < 24: + current_time += 1 + else: + current_time = 1 + + #print("current_time: " + str(current_time)) + +func grapple(delta): + + #print(Global.grap_post) + #print(Global.grappling) + + ##If valid grapple point in range and grapple button pressed then set grapple true and get grapple point position + if grapple_ray.is_colliding() and grapple_ray.get_collider().is_in_group("grapple_point") and Global.grappling == false: + if Input.is_action_just_pressed("UseConstruct"): + Global.grappling = true + Global.grap_post = grapple_ray.get_collider().position + + ##If the use item button is released stop grappling + ##If the player jumps cancel the grapple + if Input.is_action_just_released("UseConstruct") or Input.is_action_just_pressed("Jump"): + Global.grappling = false + + ## If grappling move the player towards the target point + ##TODO Make it so the player can only get so close to the grapple point? + if Global.grappling: + #for i in range(0, grapple_speed): + self.position = position.move_toward(Global.grap_post - Vector3(0,1.5,0), delta * grapple_speed) + +## Test function to shift between two different areas in the same scene +## Based on time travel mechanic implementation in Dishonered 2 +## Idea with this would be to allow "instance" transfer between different dreamscapes +## This test allows the player to do it with a key press but later implementations would require the right interactable prompt +func shift(): + if Input.is_action_just_pressed("shift"): + if self.global_position.y > 1000: + self.translate(Vector3(0,-1002,0)) + elif self.global_position.y < 1000: + self.translate(Vector3(0,1001,0)) + else: + print(self.global_position) diff --git a/scripts/Player.gd.uid b/scripts/Player.gd.uid new file mode 100644 index 0000000..ed64188 --- /dev/null +++ b/scripts/Player.gd.uid @@ -0,0 +1 @@ +uid://qffjfnrcnboa diff --git a/scripts/breakable_base.gd b/scripts/breakable_base.gd new file mode 100644 index 0000000..fada27f --- /dev/null +++ b/scripts/breakable_base.gd @@ -0,0 +1,21 @@ +extends CSGCylinder3D + +@onready var construct: Node3D = get_tree().get_first_node_in_group("Constructs") +@onready var player_ray: RayCast3D = get_tree().get_first_node_in_group("player_ray") +@onready var debris_generator: Node3D = get_tree().get_first_node_in_group("generator") +@onready var audio_clock: AudioStreamPlayer3D = $"../AudioClock" +@onready var park_clock: Node3D = $".." + +var stability: int = 1 +var loop: int = 2 +var dims = PI * pow(radius,2) * height + +func _ready() -> void: + pass + +func _physics_process(_delta: float) -> void: + + if stability == 0 and is_instance_valid(self): + debris_generator.generate_debris(self.global_position, dims, self.material, "ons_shot") + park_clock.death_clock() + self.queue_free() diff --git a/scripts/breakable_base.gd.uid b/scripts/breakable_base.gd.uid new file mode 100644 index 0000000..1e7551c --- /dev/null +++ b/scripts/breakable_base.gd.uid @@ -0,0 +1 @@ +uid://c7sopya1b0k57 diff --git a/scripts/change_scene.gd b/scripts/change_scene.gd new file mode 100644 index 0000000..73531ac --- /dev/null +++ b/scripts/change_scene.gd @@ -0,0 +1,39 @@ +extends Area3D + +@onready var Player: CharacterBody3D = get_tree().get_first_node_in_group("Player") +@export var warp_point: Vector3 + +var the_mess + +func _on_body_entered(body: Node3D) -> void: + if body.is_in_group("player"): + ##Get the file name of the current level + Global.warp_from = get_tree().current_scene.scene_file_path + ##Find correct next level + match self.name: + "ToCampus": + print("schoolhouse rock") + Global.next_scene = "res://scenes/levels/campus.tscn" + "ToSnowHouse": + print("It's snowing somewhere") + Global.next_scene = "res://scenes/levels/snow_house.tscn" + "ToWaterway": + print("Drinking under the moonlight") + Global.next_scene = "res://scenes/levels/drunken_waterway.tscn" + "ToGrunge": + Global.next_scene = "res://scenes/levels/grunge_world.tscn" + "ToHauntedHouse": + Global.next_scene = "res://scenes/levels/gag_haunted_house.tscn" + "ToCruelCalculus": + Global.next_scene = "res://scenes/levels/cruel_calculus.tscn" + "ToGardenLights": + Global.next_scene = "res://scenes/levels/garden_of_lights.tscn" + + ## GOTO loading screen + get_tree().change_scene_to_file.call_deferred("res://scenes/menus/loading_screen.tscn") + + ##Cleanup the debris so it does not load into the next scene + ## Might need to call deffered the litter if load times get bad + the_mess = get_tree().get_nodes_in_group("mess") + for litter in the_mess: + litter.queue_free() diff --git a/scripts/change_scene.gd.uid b/scripts/change_scene.gd.uid new file mode 100644 index 0000000..a743843 --- /dev/null +++ b/scripts/change_scene.gd.uid @@ -0,0 +1 @@ +uid://c72bbipvxdhl6 diff --git a/scripts/class_test.gd b/scripts/class_test.gd new file mode 100644 index 0000000..c1896a7 --- /dev/null +++ b/scripts/class_test.gd @@ -0,0 +1,37 @@ +class_name class_test +extends Node3D + +func print_something(): + print("classified") + +func generate_debris(where): + + print("classic") + + #var debris_node = Node3D.new() + self.position = where + ##TEST TO SEE IF NODE IS EVEN GENERATING IN SCENE + self.add_child(MeshInstance3D.new()) + self.get_child(0).mesh = SphereMesh.new() + self.get_child(0).mesh.material = StandardMaterial3D.new() + self.get_child(0).mesh.material.albedo_color = Color(0.663,0.663,0.663,256) + + print(where) + + for i in 100: + var rigid_debris = RigidBody3D.new() + #debris_node.add_child(rigid_debris) + rigid_debris.add_child(MeshInstance3D.new()) + rigid_debris.get_child(0).mesh = BoxMesh.new() + rigid_debris.add_child(CollisionShape3D.new()) + rigid_debris.get_child(1).shape = BoxShape3D.new() + rigid_debris.get_child(0).mesh.material = StandardMaterial3D.new() + rigid_debris.get_child(0).mesh.material.albedo_color = Color(0.663,0.663,0.663,256) + for children in rigid_debris.get_children(): + children.scale = Vector3(0.2,0.2,0.2) + self.add_child(rigid_debris) + var velocity = Vector3(randf_range(-1,1), randf_range(0,1), randf_range(-1,1)) * 12 + ##Direction + rigid_debris.linear_velocity = velocity + ##Spin + rigid_debris.angular_velocity = velocity diff --git a/scripts/class_test.gd.uid b/scripts/class_test.gd.uid new file mode 100644 index 0000000..c9efa65 --- /dev/null +++ b/scripts/class_test.gd.uid @@ -0,0 +1 @@ +uid://3xuydwk63622 diff --git a/scripts/construct_buttons.gd b/scripts/construct_buttons.gd new file mode 100644 index 0000000..54e7361 --- /dev/null +++ b/scripts/construct_buttons.gd @@ -0,0 +1,40 @@ +extends Button + +@onready var construct: Node3D = get_tree().get_first_node_in_group("Constructs") + +var slot: int = 1 +var con_name: String + +func _process(_delta: float) -> void: + #print(self.toggle_mode) + ##Show the construct which makes it pressable + ##TODO make this aware of every possible construct + ##Basically just visible is stick true right now + if construct != null: + if construct.constructs["stick"] == true: + self.visible = true + else: + self.visible = true + + +func _on_pressed() -> void: + pass + ##TODO Make it so the player can select which slot to assign stick to + ## Step 1: Have the button stay "selected" when pressed + ## Step 2: If a button is selected when the player pressed 1 - 10 + ## assign stick to that slot + ## Step 3: If the player presses the selected button again OR presses + ## a new button THEN deselect that button + ##Make sure the player can't assign it outside of 1 - 10 + + #match self.name: + #"StickButton": + #con_name = "stick" + #print(con_name) + #"WeightButton": + #con_name = "weight" + #print(con_name) + #if construct != null: + #construct.assigned_slot[1] = "weight" + #construct.set_construct(1, "weight") + diff --git a/scripts/construct_buttons.gd.uid b/scripts/construct_buttons.gd.uid new file mode 100644 index 0000000..fad2a93 --- /dev/null +++ b/scripts/construct_buttons.gd.uid @@ -0,0 +1 @@ +uid://nm1inebau70j diff --git a/scripts/construct_inventory.gd b/scripts/construct_inventory.gd new file mode 100644 index 0000000..340ddf5 --- /dev/null +++ b/scripts/construct_inventory.gd @@ -0,0 +1,88 @@ +extends Control + +@onready var pause_menu: Control = get_tree().get_first_node_in_group("pause_menu") +@onready var construct: Node3D = get_tree().get_first_node_in_group("Constructs") +@onready var stick_button: Button = $StickButton +@onready var weight_button: Button = $WeightButton + +var con_name: String = "" +var con_count: int + +func _ready() -> void: + + con_count = construct.constructs.size() + + ##TODO make buttons visible when player has construct + for i in range(con_count): + #print(i) + ##Check if the player has the construct and the construct is not nothing + if construct.constructs.keys()[i] != "nothing" and construct.constructs.values()[i]: + ##Make button visible and show assigned slot on button + get_node(construct.constructs.keys()[i].capitalize() + "Button").visible = true + + if construct.assigned_slot.values()[i]: + get_node(construct.assigned_slot.values()[i].capitalize() + "Button/SlotLabel").text = str(i + 1) + +func _input(event: InputEvent) -> void: + ##Prevent crash if pause menu not found (like during isolated testing) + #if pause_menu != null: + if event.is_action_pressed("inventory"): #and pause_menu.visible == false: + Global.change_paused_state() + self.visible = !self.visible + con_name = "" + + if con_name != "": + ##Allow the player to assign the current selected construct to keys 1 - 10 + for i in range(1,11): + if event.is_action_pressed("construct" + str(i)): + ##Remove the old slot number assignment from the previous construct + if construct.assigned_slot[i] != null: + for j in range(1,11): + if construct.assigned_slot[j] == con_name: + get_node(construct.assigned_slot[j].capitalize() + "Button/SlotLabel").text = "" + construct.assigned_slot[j] = null + #print(construct.assigned_slot) + + ##Show assigned slot number on new construct button + get_node(con_name.capitalize() + "Button/SlotLabel").text = str(i) + ##Set the new construct to the assigned slot + construct.assigned_slot[i] = con_name + construct.set_construct(i, con_name) + #print(construct.assigned_slot) + ##TODO add logic to swap constructs if both assigned + + ##TESTING for labels showing correctly during construct swaps + #for j in range(1,construct.constructs.size()): + #print(j) + #if construct.assigned_slot[j] != null: + #get_node(construct.assigned_slot[j].capitalize() + "Button/SlotLabel").text = str(j) + + +func _on_stick_button_pressed() -> void: + con_name = "stick" + + +func _on_weight_button_pressed() -> void: + con_name = "weight" + + +func _on_flashlight_button_pressed() -> void: + con_name = "flashlight" + + +func _on_time_button_pressed() -> void: + con_name = "time" + + +func _on_light_button_pressed() -> void: + con_name = "light" + + +func _on_hammer_button_pressed() -> void: + con_name = "hammer" + +func _on_fishing_rod_button_pressed() -> void: + con_name = "fishing_rod" + +func _on_flag_button_pressed() -> void: + con_name = "flag" diff --git a/scripts/construct_inventory.gd.uid b/scripts/construct_inventory.gd.uid new file mode 100644 index 0000000..d429d04 --- /dev/null +++ b/scripts/construct_inventory.gd.uid @@ -0,0 +1 @@ +uid://bi411jclukc8q diff --git a/scripts/constructs/ConstructCamera.gd b/scripts/constructs/ConstructCamera.gd new file mode 100644 index 0000000..8baa820 --- /dev/null +++ b/scripts/constructs/ConstructCamera.gd @@ -0,0 +1,7 @@ +extends Camera3D + +@export var MAIN_CAMERA : Node3D + +#Match weapon camera to player camera +func _process(_delta: float) -> void: + global_transform = MAIN_CAMERA.global_transform diff --git a/scripts/constructs/ConstructCamera.gd.uid b/scripts/constructs/ConstructCamera.gd.uid new file mode 100644 index 0000000..1153d04 --- /dev/null +++ b/scripts/constructs/ConstructCamera.gd.uid @@ -0,0 +1 @@ +uid://b2jn2ap13n12e diff --git a/scripts/constructs/ConstructViewport.gd b/scripts/constructs/ConstructViewport.gd new file mode 100644 index 0000000..4fdf6f3 --- /dev/null +++ b/scripts/constructs/ConstructViewport.gd @@ -0,0 +1,10 @@ +extends SubViewport + +var screen_size: Vector2 + +func ready() -> void: + screen_size = get_window().size + size = screen_size + +func _process(_delta: float) -> void: + pass diff --git a/scripts/constructs/ConstructViewport.gd.uid b/scripts/constructs/ConstructViewport.gd.uid new file mode 100644 index 0000000..5adde2b --- /dev/null +++ b/scripts/constructs/ConstructViewport.gd.uid @@ -0,0 +1 @@ +uid://dvk71ygxdbajg diff --git a/scripts/constructs/construct_pickup.gd b/scripts/constructs/construct_pickup.gd new file mode 100644 index 0000000..95fb5a3 --- /dev/null +++ b/scripts/constructs/construct_pickup.gd @@ -0,0 +1,60 @@ +extends StaticBody3D + +@onready var construct: Node3D = get_tree().get_first_node_in_group("Constructs") +@onready var construct_name: StringName = $".".name.to_lower() +@onready var player_ray: RayCast3D = get_tree().get_first_node_in_group("player_ray") +@onready var inventory: Control = get_tree().get_first_node_in_group("inventory") +@onready var player: CharacterBody3D = get_tree().get_first_node_in_group("player") +@onready var label: Label3D = $InteractLabel + +var empty_slot: bool = false +var number: int = 1 +var con_num = 0 + +func _process(_delta: float) -> void: + # Checks that the ray is colliding and is colliding with this particular object + if player_ray.is_colliding() and player_ray.get_collider() == $".": + label.show() + else: + label.hide() + +func interact(): + ##Detects which construct was picked up and sets it to TRUE + construct.constructs[construct_name] = true + find_empty_slot() + construct.set_construct(con_num, construct_name) + ##Make construct button visible in inventory + ##TODO Fix this logic so it's not getting parent twice (It's inconsistent) + player.get_node("Inventory/" + self.name.capitalize() + "Button").visible = true + ##Remove the construct + queue_free() + +##Working for now but still dodgy NEEDS TESTING +func find_empty_slot(): + + while number < 11 and empty_slot == false: + if construct.assigned_slot[number] != null and construct.assigned_slot[number] != "nothing": + number += 1 + else: + if detect_duplicate_cons(construct_name) == false: + construct.assigned_slot[number] = construct_name + con_num = number + ##TODO Fix this logic so it's not getting parent twice (It's inconsistent) + player.get_node("Inventory/" + self.name.capitalize() + "Button/SlotLabel").text = str(number) + empty_slot = true + break + + number = 1 + empty_slot = false + +##This is working fine +func detect_duplicate_cons(con_name): + var i: int = 1 + + while i < 11: + if construct.assigned_slot[i] == con_name: + con_num = i + return true + i += 1 + + return false diff --git a/scripts/constructs/construct_pickup.gd.uid b/scripts/constructs/construct_pickup.gd.uid new file mode 100644 index 0000000..1bc819f --- /dev/null +++ b/scripts/constructs/construct_pickup.gd.uid @@ -0,0 +1 @@ +uid://cdg27cwpw8rn7 diff --git a/scripts/constructs/constructs.gd b/scripts/constructs/constructs.gd new file mode 100644 index 0000000..2360e43 --- /dev/null +++ b/scripts/constructs/constructs.gd @@ -0,0 +1,27 @@ +class_name Constructs extends Resource + +@export var name: StringName +@export_category("Transform") +@export var position: Vector3 +@export var rotation: Vector3 +@export var scale: Vector3 = Vector3(1,1,1) +@export_category("Transform 2") +@export var position2: Vector3 +@export var rotation2: Vector3 +@export var scale2: Vector3 = Vector3(1,1,1) +@export_category("Transform 3") +@export var position3: Vector3 +@export var rotation3: Vector3 +@export var scale3: Vector3 = Vector3(1,1,1) +@export_category("Transform 4") +@export var position4: Vector3 +@export var rotation4: Vector3 +@export var scale4: Vector3 = Vector3(1,1,1) +@export_category("Visual Settings") +@export var mesh: Mesh +@export var mesh2: Mesh +@export var mesh3: Mesh +@export var mesh4: Mesh +@export var shadow: bool +@export_category("Properties") +@export var heavy: bool diff --git a/scripts/constructs/constructs.gd.uid b/scripts/constructs/constructs.gd.uid new file mode 100644 index 0000000..7b73162 --- /dev/null +++ b/scripts/constructs/constructs.gd.uid @@ -0,0 +1 @@ +uid://d0hoytht5yf8c diff --git a/scripts/constructs/init_construct.gd b/scripts/constructs/init_construct.gd new file mode 100644 index 0000000..1c24576 --- /dev/null +++ b/scripts/constructs/init_construct.gd @@ -0,0 +1,107 @@ +#@tool + +extends Node3D + +@export var CONSTRUCT_TYPE : Constructs: + set(value): + CONSTRUCT_TYPE = value + if Engine.is_editor_hint(): + load_construct() + +@onready var construct_mesh: MeshInstance3D = $ConstructMesh +@onready var construct_mesh2: MeshInstance3D = $ConstructMesh2 +@onready var construct_mesh3: MeshInstance3D = $ConstructMesh2/ConstructMesh3 +@onready var construct_mesh4: MeshInstance3D = $ConstructMesh2/ConstructMesh4 +@onready var construct_shadow: MeshInstance3D = $ConstructShadow +@onready var animation: AnimationPlayer = $"../../../../ConstructAnimation" +@onready var construct_omni_light: OmniLight3D = $ConstructOmniLight +@onready var construct_direct_light: DirectionalLight3D = $ConstructDirectionalLight +@onready var construct_spot_light: SpotLight3D = $ConstructSpotLight +@onready var labels_time: Node3D = $ConstructMesh/labels_time +@onready var player: Node3D = get_tree().get_first_node_in_group("player") + +var con_number: int = 1 +@export var constructs = {"nothing": true, "stick": false, "weight": false, "hammer": false, "light": false, "flashlight": false, "time": false, "fishing_rod": false, "shovel": false} +var assigned_slot = {1: null, 2: null, 3: null, 4: null, 5: null, 6: null, 7: null, 8: null, 9: null, 10: null} + +func _ready() -> void: + + ##Start checking the assigned slot at 2 since we want the first construct + ##to always be what is initialized by the construct node + var j: int = 2 + assigned_slot[1] = CONSTRUCT_TYPE.name.to_lower() + + ##Slot all constructs the player has into a slot + for i in range(0, constructs.size()): + if constructs.values()[i] == true and constructs.keys()[i] != "nothing" and constructs.keys()[i] != CONSTRUCT_TYPE.name.to_lower(): + assigned_slot[j] = constructs.keys()[i] + j += 1 + ## Show the slots constructs are being assigned to + ##print(assigned_slot) + load_construct() + +func _process(_delta: float) -> void: + + ##If the flashlight is the active construct then allow the light to be turned on and off + if Input.is_action_just_pressed("UseConstruct") and CONSTRUCT_TYPE.resource_path.get_file() == "flashlight.tres": + construct_spot_light.visible = !construct_spot_light.visible + +func _input(event): + + if (event.is_action_pressed("construct1") or (event.is_action_pressed("con_up") and con_number == 2)) and assigned_slot[1]: + set_construct(1, assigned_slot[1]) + elif (event.is_action_pressed("construct2") or (event.is_action_pressed("con_up") and con_number == 3) or (event.is_action_pressed("con_down") and con_number == 1)) and assigned_slot[2]: + set_construct(2, assigned_slot[2]) + elif (event.is_action_pressed("construct3") or (event.is_action_pressed("con_up") and con_number == 4) or (event.is_action_pressed("con_down") and con_number == 2)) and assigned_slot[3]: + set_construct(3, assigned_slot[3]) + elif (event.is_action_pressed("construct4") or (event.is_action_pressed("con_up") and con_number == 5) or (event.is_action_pressed("con_down") and con_number == 3)) and assigned_slot[4]: + set_construct(4, assigned_slot[4]) + elif (event.is_action_pressed("construct5") or (event.is_action_pressed("con_up") and con_number == 6) or (event.is_action_pressed("con_down") and con_number == 4)) and assigned_slot[5]: + set_construct(5, assigned_slot[5]) + elif (event.is_action_pressed("construct6") or (event.is_action_pressed("con_up") and con_number == 7) or (event.is_action_pressed("con_down") and con_number == 5)) and assigned_slot[6]: + set_construct(6, assigned_slot[6]) + elif (event.is_action_pressed("construct7") or (event.is_action_pressed("con_up") and con_number == 8) or (event.is_action_pressed("con_down") and con_number == 6)) and assigned_slot[7]: + set_construct(7, assigned_slot[7]) + elif (event.is_action_pressed("construct8") or (event.is_action_pressed("con_up") and con_number == 9) or (event.is_action_pressed("con_down") and con_number == 7)) and assigned_slot[8]: + set_construct(8, assigned_slot[8]) + elif (event.is_action_pressed("construct9") or (event.is_action_pressed("con_up") and con_number == 10) or (event.is_action_pressed("con_down") and con_number == 8)) and assigned_slot[9]: + set_construct(9, assigned_slot[9]) + elif (event.is_action_pressed("construct10")or (event.is_action_pressed("con_down") and con_number == 9)) and assigned_slot[10]: + set_construct(10, assigned_slot[10]) + +func set_construct(con_num, con_name): + con_number = con_num + con_param_reset() + if con_name == "light": + construct_omni_light.visible = true + if con_name == "flashlight": + construct_spot_light.position = Vector3(-9,0,5) + if con_name == "time": + labels_time.show() + + CONSTRUCT_TYPE = load("res://scenes/constructs/" + con_name + "/" + con_name + ".tres") + load_construct() + +func load_construct() -> void: + construct_mesh.mesh = CONSTRUCT_TYPE.mesh #Set construct mesh + position = CONSTRUCT_TYPE.position #Set construct position + rotation_degrees = CONSTRUCT_TYPE.rotation #Set rotation + scale = CONSTRUCT_TYPE.scale #Set scale + construct_shadow.visible = CONSTRUCT_TYPE.shadow #Turn Shadow ON/OFF + if construct_mesh2 != null: + construct_mesh2.mesh = CONSTRUCT_TYPE.mesh2 + if construct_mesh3 != null: + construct_mesh3.mesh = CONSTRUCT_TYPE.mesh3 + if construct_mesh4 != null: + construct_mesh4.mesh = CONSTRUCT_TYPE.mesh4 + #If construct is heavy modify player speed to be slower + if self.CONSTRUCT_TYPE.heavy: + player.con_mod = 0.5 + +func con_param_reset() -> void: + animation.stop() + labels_time.hide() + player.con_mod = 1 + construct_omni_light.visible = false + construct_direct_light.visible = false + construct_spot_light.visible = false diff --git a/scripts/constructs/init_construct.gd.uid b/scripts/constructs/init_construct.gd.uid new file mode 100644 index 0000000..cc20b9d --- /dev/null +++ b/scripts/constructs/init_construct.gd.uid @@ -0,0 +1 @@ +uid://c22qt040vk62r diff --git a/scripts/cooking_pot.gd b/scripts/cooking_pot.gd new file mode 100644 index 0000000..737129c --- /dev/null +++ b/scripts/cooking_pot.gd @@ -0,0 +1,38 @@ +extends Node3D + +@onready var player: Node3D = get_tree().get_first_node_in_group("player") +@onready var player_ray: Node3D = get_tree().get_first_node_in_group("player_ray") + +#var ingredients = {"Pot": "pristine_key"} +var ingredients = [] + +var dialogue + +func _ready() -> void: + ## Load in the correct dialogue tree for the character + dialogue = load("res://dialogue/" + self.name.to_lower() + ".dialogue") + +func _physics_process(_delta: float) -> void: + if has_node("InteractLabel"): + if player_ray.is_colliding() and player_ray.get_collider() == self: + $InteractLabel.show() + else: + $InteractLabel.hide() + +func interact(): + + #if Global.dialogue_wait == false: + #DialogueManager.show_dialogue_balloon(dialogue, "start") + #print("res://dialogue/" + self.name + ".dialogue") + + if player.keys.has("pristine_key") and not ingredients.has("pristine_key"): + ingredients.append("pristine_key") + print(ingredients) + + ##TODO Ideally find way to not have to for loop + ##TODO Make screen asking player what they want to put in the pot + ##Creates a rusty key if the player puts the right ingredients into the pot + if player.keys.has("pristine_key") and player.inventory.has("hydrogen_peroxide") and player.inventory.has("vinegar"): + for i in player.keys.size(): + if player.keys[i] == "pristine_key": + player.keys[i] = "rusty_key" diff --git a/scripts/cooking_pot.gd.uid b/scripts/cooking_pot.gd.uid new file mode 100644 index 0000000..090dbf0 --- /dev/null +++ b/scripts/cooking_pot.gd.uid @@ -0,0 +1 @@ +uid://deucryejuru7a diff --git a/scripts/countdown_label.gd b/scripts/countdown_label.gd new file mode 100644 index 0000000..ab30248 --- /dev/null +++ b/scripts/countdown_label.gd @@ -0,0 +1,31 @@ +extends Label3D + +@onready var timer: Timer = $"../Timer" +@onready var construct: Node3D = get_tree().get_first_node_in_group("Constructs") +@onready var timer_door: Node3D = get_tree().get_first_node_in_group("timer_door") +@onready var exit_label: Label3D = get_tree().get_first_node_in_group("exit_label") + +var door_state: bool = false + +func _physics_process(_delta: float) -> void: + ##Displays HH:MM:SS left from the timer on the label + $".".text = "This door will open in\n" + "%02d:%02d:%02d" % [floor(timer.time_left / 3600), int(floor(timer.time_left / 60)) % 60, int(timer.time_left) % 60] + if construct.CONSTRUCT_TYPE.name == "Time" and Input.is_action_just_pressed("UseConstruct"): + #print("ZA WORLDO!!!!!!!") + if timer.wait_time <= 3600: + timer.wait_time = 1 + timer.start() + else: + timer.wait_time -= 3600 + timer.start() + #print(timer.wait_time) + + +func _on_timer_timeout() -> void: + ##ADD LOGIC HERE TO MAKE THE TIMER DOOR OPEN + if !door_state: + print("THE DOOR IS NOW OPEN") + exit_label.hide() + timer_door.get_node("AnimationPlayer").play("door_open") + door_state = true + diff --git a/scripts/countdown_label.gd.uid b/scripts/countdown_label.gd.uid new file mode 100644 index 0000000..0ac9d08 --- /dev/null +++ b/scripts/countdown_label.gd.uid @@ -0,0 +1 @@ +uid://cgw38wosdq5s3 diff --git a/scripts/curve_generator.gd b/scripts/curve_generator.gd new file mode 100644 index 0000000..d41abe5 --- /dev/null +++ b/scripts/curve_generator.gd @@ -0,0 +1,100 @@ +extends Path3D +##TODO Make it so error is raised if more than one func_type is selected +##Make editor shape dissapear when game runs and make editor shape mimic expected shape +## Add more functions +## Make it so steps generate an invisible collision area over them +## to allow for ease of walking up steps + +@export_flags("Curve", "Steps") var use_case +@export_category("Steps") +@export var steps: int = 10 +@export var step_height: float = 1 +@export var invisible_slope: bool = false +@export_category("Curve") +@export var slope: float = 1 +@export var offset: float = 0 +@export var log_base: int = 10 +@export var start_point: int = 0 +@export var end_point: int = 2 +@export_flags("Linear", "Quadratic", "Logarithmic", "Absolute") var func_type +var y: float = 0 +var x: float = 0 +var first_run: bool = true +var prev_slope: float +var prev_offset: float +var prev_log_base: int + +func _ready() -> void: + + prev_slope = slope + prev_offset = offset + prev_log_base = log_base + + match use_case: + 0: + assert(func_type != 0, "ERROR: Please select a use case in the inspector") + 1: + update_function() + 2: + make_steps() + + first_run = false + +func _process(_delta: float) -> void: + + match use_case: + 1: + if prev_slope != slope or prev_offset != offset or prev_log_base != log_base: + update_function() + print("points: " + str(self.curve.point_count)) + prev_slope = slope + prev_offset = offset + prev_log_base = log_base + +func make_steps(): + + ##Set the first point at zeros and go from there + self.curve.add_point(Vector3(0,0,0)) + ##The y value + var yval = 0 + + ##Add all of the steps + for xval in range(1, steps + 2): + ##For each point after the first add a point at the same y and another that is up more + self.curve.add_point(Vector3(xval,yval,0)) + yval += step_height + self.curve.add_point(Vector3(xval,yval,0)) + + ##Remove the last point so the steps are flat at the top + self.curve.remove_point(self.curve.point_count - 1) + +func update_function(): + print(log_base) + ##The curve index for where the point should be placed + var index = 0 + ##For every x-value to be populated onto the curve + for xval in range(start_point, end_point + 1): + ##Add the new point with an x value equal to xval + if first_run: + self.curve.add_point(Vector3(xval,0,0)) + ##Get x value of curve at point + x = self.curve.get_point_position(index).x + ##Get y value relative to x for the curve + match func_type: + 0: + assert(func_type != 0, "ERROR: Curve must be set to a function type") + 1: + y = slope * x + offset + 2: + y = slope * x**2 + offset + 4: + if self.curve.get_point_position(index).x > 0 and log_base > 1: + y = log(x) / log(log_base) + else: + y = x + 8: + y = abs(x) + ##Set curve to x and y values + self.curve.set_point_position(index, Vector3(x,y,0)) + index += 1 + #print(y) diff --git a/scripts/curve_generator.gd.uid b/scripts/curve_generator.gd.uid new file mode 100644 index 0000000..6ea2332 --- /dev/null +++ b/scripts/curve_generator.gd.uid @@ -0,0 +1 @@ +uid://bg6aimgk1ttjr diff --git a/scripts/curvetroller.gd b/scripts/curvetroller.gd new file mode 100644 index 0000000..a5c6669 --- /dev/null +++ b/scripts/curvetroller.gd @@ -0,0 +1,48 @@ +extends CSGBox3D + +@onready var player: CharacterBody3D = get_tree().get_first_node_in_group("player") +@onready var player_ray: RayCast3D = get_tree().get_first_node_in_group("player_ray") + +@export_flags("Slope", "Offset", "Base") var mode +@export_range(-1,1) var math_sign: int +@export var delta: float = 0.1 +@export var base: int = 10 + +var control_num: int + +func _ready() -> void: + control_num = self.name.right(self.name.length() - 12).to_int() + + match mode: + 1: + $InteractLabel.text = "[E] Slope" + 2: + $InteractLabel.text = "[E] Offset" + 4: + $InteractLabel.text = "[E] Base" + +func _process(_delta: float) -> void: + + if has_node("InteractLabel"): + if player_ray.is_colliding() and player_ray.get_collider() == self: + $InteractLabel.show() + else: + $InteractLabel.hide() + + if player_ray.is_colliding() and player_ray.get_collider() == self: + pass + +func interact(): + ##TODO Make it so self.name extracts the button number and matches it to the path number + match mode: + 0: + assert(mode != 0, "ERROR: Mode must be set") + 1: + ##Change the slope of the paired curve function + get_parent().get_node("FunctionPath" + str(control_num)).slope += delta * math_sign + 2: + ##Change the offset of the paired curve function + get_parent().get_node("FunctionPath" + str(control_num)).offset += delta * math_sign + 4: + ##Change the offset of the paired curve function + get_parent().get_node("FunctionPath" + str(control_num)).log_base += base * math_sign diff --git a/scripts/curvetroller.gd.uid b/scripts/curvetroller.gd.uid new file mode 100644 index 0000000..1a42877 --- /dev/null +++ b/scripts/curvetroller.gd.uid @@ -0,0 +1 @@ +uid://vmbr6bsgtvbp diff --git a/scripts/debris_cleaner.gd b/scripts/debris_cleaner.gd new file mode 100644 index 0000000..f08b510 --- /dev/null +++ b/scripts/debris_cleaner.gd @@ -0,0 +1,18 @@ +extends Area3D + +@export var interval: float = 5 + +var get_bodies: Array + +func _physics_process(_delta: float) -> void: + ## Remove older bodies to prevent lag + get_bodies = self.get_overlapping_bodies() + for i in get_bodies.size(): + if get_bodies[i].is_in_group("mess"): + get_bodies[i].queue_free() + + set_physics_process(false) + await(get_tree().create_timer(interval, false).timeout) + set_physics_process(true) + + #self.position.y += 0.03 diff --git a/scripts/debris_cleaner.gd.uid b/scripts/debris_cleaner.gd.uid new file mode 100644 index 0000000..d6afc2d --- /dev/null +++ b/scripts/debris_cleaner.gd.uid @@ -0,0 +1 @@ +uid://bt1pta3noegsk diff --git a/scripts/debris_generator.gd b/scripts/debris_generator.gd new file mode 100644 index 0000000..b0adaa5 --- /dev/null +++ b/scripts/debris_generator.gd @@ -0,0 +1,63 @@ +extends Node3D + +@export var debris_scale: float = 0.2 +@export var launch_magnitude: float = 5 +@onready var debris_sounds: AudioStreamPlayer3D = $DebrisSounds +@onready var fade_out_time = $DebrisSounds.stream.get_length() - 0.05 +@onready var default_volume = debris_sounds.volume_db + +func generate_debris(demo_site, object_size, material, _mode): + + var debris_count: int + + ##Calculate the amount of debris based on the object type + if is_instance_of(object_size, TYPE_VECTOR3): + debris_count = round((object_size.x * object_size.y * object_size.z) / pow(debris_scale,3)) + elif is_instance_of(object_size, TYPE_FLOAT): + debris_count = round(object_size / pow(debris_scale,3)) + + #self.global_position = demo_site + #print("debris generator: " + str(self.position)) + #print("obj_size: " + str(object_size)) + print(debris_count) + + ##Play the debris sound and tween it so it fades out + debris_sounds.volume_db = default_volume + var tween = create_tween() + ##Object, Property, Target Volume (between -60 and -80 in silent), Time + tween.tween_property(debris_sounds, "volume_db", -60, fade_out_time) + debris_sounds.play() + + ##Make the debris generator + var debris_generator = Node3D.new() + debris_generator.position = demo_site + debris_generator.add_to_group("mess") + get_node("/root").add_child(debris_generator) + + ##Make the debris + for i in debris_count: + #print("making_debris") + var rigid_debris = RigidBody3D.new() + ##Add debris as child to debris generator + debris_generator.add_child(rigid_debris) + ##Make it so player is not impeded by debris but debris is moved around by player + rigid_debris.collision_layer = 2 + rigid_debris.add_child(MeshInstance3D.new()) + rigid_debris.get_child(0).mesh = BoxMesh.new() + rigid_debris.add_child(CollisionShape3D.new()) + rigid_debris.get_child(1).shape = BoxShape3D.new() + rigid_debris.get_child(0).mesh.material = material + for children in rigid_debris.get_children(): + children.scale = Vector3(debris_scale,debris_scale,debris_scale) + var velocity = Vector3(randf_range(-1,1), randf_range(0,1), randf_range(-1,1)) * launch_magnitude + var ang_velocity = Vector3(randf_range(-1,1), randf_range(0,1), randf_range(-1,1)) * (launch_magnitude / 2) + ##Direction + rigid_debris.linear_velocity = velocity + ##Spin + rigid_debris.angular_velocity = ang_velocity + + if i == debris_count - 1: + pass + #print("debris instance: " + str(debris_generator.position)) + #print("groups: " + str(debris_generator.get_groups())) + diff --git a/scripts/debris_generator.gd.uid b/scripts/debris_generator.gd.uid new file mode 100644 index 0000000..202d215 --- /dev/null +++ b/scripts/debris_generator.gd.uid @@ -0,0 +1 @@ +uid://bmxyctbcdeakw diff --git a/scripts/detect_floor.gd b/scripts/detect_floor.gd new file mode 100644 index 0000000..5b77597 --- /dev/null +++ b/scripts/detect_floor.gd @@ -0,0 +1,73 @@ +extends RayCast3D + +@onready var player: CharacterBody3D = $".." +@onready var audio_hard_floor: AudioStreamPlayer3D = $Audio/AudioHardFloor +@onready var audio_snow: AudioStreamPlayer3D = $Audio/AudioSnow +@onready var audio_floor: AudioStreamPlayer3D = $Audio/AudioFloor + +var collider +var audio_path +var get_pitch +##Using floor name aquire the correct pitch setting based on if player is running or not +@export var pitch = {"wood_floor": {false: 1, true: 2}, "snow_floor": {false: 0.66, true: 1.33}, "grass_floor": {false: 1, true: 2}} + + ## Play footstep sounds while walking and running + ## TODO Add audio and speed while crouching +func _physics_process(_delta): + + ##If the player is moving and the floor ray is colliding with a floor + ##Using get_collider() not null as it can account for objects queue freeing + if get_collider() != null and (player.velocity.x != 0 or player.velocity.z != 0): + collider = get_collider() + if collider.is_in_group("wood_floor"): + + ##Set the pitch + get_pitch = pitch["wood_floor"][player.switch_state_run] * player.con_mod + audio_floor.pitch_scale = randf_range(get_pitch - 0.2, get_pitch + 0.2) + + ##Load audio if not already playing or correct audio + if audio_floor.stream == null or audio_floor.stream.resource_path.get_file() != "565716__ralphwhitehead__footsteps-walking-on-wooden-floor-medium-pace.wav": + audio_floor.stream = load("res://assets/SFX/565716__ralphwhitehead__footsteps-walking-on-wooden-floor-medium-pace.wav") + #print(audio_floor.stream.resource_path) + + ## Play the audio + if !audio_floor.is_playing(): + audio_floor.play() + + elif collider.is_in_group("snow_floor"): + + ##Set the pitch + ##TODO Fix something so snow walking sound effect does not have weird noise caused by pitch shifting + get_pitch = pitch["snow_floor"][player.switch_state_run] * player.con_mod + audio_floor.pitch_scale = randf_range(get_pitch - 0.05, get_pitch + 0.05) + + if audio_floor.stream == null or audio_floor.stream.resource_path.get_file() != "421022__inspectorj__running-snow-a.wav": + audio_floor.stream = load("res://assets/SFX/421022__inspectorj__running-snow-a.wav") + #print(audio_floor.stream.resource_path) + + ## Play the audio + if !audio_floor.is_playing(): + audio_floor.play() + + elif collider.is_in_group("grass_floor"): + + ##Set the pitch + ##TODO Fix something so snow walking sound effect does not have weird noise caused by pitch shifting + get_pitch = pitch["grass_floor"][player.switch_state_run] * player.con_mod + audio_floor.pitch_scale = randf_range(get_pitch - 0.2, get_pitch + 0.2) + + if audio_floor.stream == null or audio_floor.stream.resource_path.get_file() != "389625__silentstrikez__footsteps_grass_1.wav": + audio_floor.stream = load("res://assets/SFX/389625__silentstrikez__footsteps_grass_1.wav") + #print(audio_floor.stream.resource_path) + + ## Play the audio + if !audio_floor.is_playing(): + audio_floor.play() + + ##No collider with sound detected + else: + pass + + ## Stop playing foot sounds + else: + audio_floor.stop() diff --git a/scripts/detect_floor.gd.uid b/scripts/detect_floor.gd.uid new file mode 100644 index 0000000..b84233f --- /dev/null +++ b/scripts/detect_floor.gd.uid @@ -0,0 +1 @@ +uid://b2xxx35evjgun diff --git a/scripts/dialogue_test.gd b/scripts/dialogue_test.gd new file mode 100644 index 0000000..18ed540 --- /dev/null +++ b/scripts/dialogue_test.gd @@ -0,0 +1,27 @@ +##TODO Add something to determine what character the script is attached to for proper dialogue +extends CharacterBody3D + +@onready var player_ray: RayCast3D = get_tree().get_first_node_in_group("player_ray") +var dialogue + +var mood: float = 5 + +func _ready() -> void: + ## Load in the correct dialogue tree for the character + dialogue = load("res://dialogue/" + self.name.to_lower() + ".dialogue") + +func _physics_process(_delta: float) -> void: + if has_node("InteractLabel"): + if player_ray.is_colliding() and player_ray.get_collider() == $".": + $InteractLabel.show() + else: + $InteractLabel.hide() + +func interact(): + if Global.dialogue_wait == false: + DialogueManager.show_dialogue_balloon(dialogue, "start") + print("res://dialogue/" + self.name + ".dialogue") + +func affinity(mood_swing): + mood += mood_swing + print("mariana mood: " + str(mood)) diff --git a/scripts/dialogue_test.gd.uid b/scripts/dialogue_test.gd.uid new file mode 100644 index 0000000..2e8cdc6 --- /dev/null +++ b/scripts/dialogue_test.gd.uid @@ -0,0 +1 @@ +uid://c70rhipr6hxjl diff --git a/scripts/door.gd b/scripts/door.gd new file mode 100644 index 0000000..43ceffd --- /dev/null +++ b/scripts/door.gd @@ -0,0 +1,74 @@ +extends Node3D + +var toggle = true +var interactable = true +var wait: bool = false + +@export var animation_player: AnimationPlayer +@onready var Player: Node3D = get_tree().get_first_node_in_group("player") +@onready var player_ray: Node3D = get_tree().get_first_node_in_group("player_ray") +@onready var Sign: Node3D = get_tree().get_first_node_in_group("open_close_sign") +@onready var timer: Node3D = get_tree().get_first_node_in_group("timer") + +var door_key = {"Door": "pantry_key"} +var door_state = {"Door": "door_open", "OpenCloseDoor": "door_open"} + +func _physics_process(_delta: float) -> void: + if self.name == "OpenCloseDoor": + if player_ray.is_colliding() and player_ray.get_collider() == self and wait == false: + if player_ray.global_rotation_degrees.y >= -90 and player_ray.global_rotation_degrees.y <= 90 and Sign.toggle == true: + $"../../InteractLabel".show() + if (player_ray.global_rotation_degrees.y < -90 or player_ray.global_rotation_degrees.y > 90) and Sign.toggle == false: + $"../../InteractLabel2".show() + else: + $"../../InteractLabel".hide() + $"../../InteractLabel2".hide() + +func interact(): + if interactable == true: + if self.is_in_group("locked_door"): + for i in Player.keys.size(): + if Player.keys[i] == door_key[self.name]: + door_animation() + + else: + if self.name == "OpenCloseDoor": + ##IF the player is facing a certain direction and the sign facing they can see is open + ##THEN play the door animation + ##print(Ray.global_rotation_degrees.y) + if player_ray.global_rotation_degrees.y >= -90 and player_ray.global_rotation_degrees.y <= 90 and Sign.toggle == true: + self_closing_door("forwards") + elif (player_ray.global_rotation_degrees.y < -90 or player_ray.global_rotation_degrees.y > 90) and Sign.toggle == false: + self_closing_door("backwards") + + ##Open any non-special and non-locked door + else: + door_animation() + +func door_animation(): + interactable = false + match door_state[self.name]: + "door_open": + door_state[self.name] = "door_close" + "door_close": + door_state[self.name] = "door_open" + + animation_player.play(door_state[self.name]) + + ## waits for a one second timer to finish before leaving the interactable if loop + ## the false statement makes it so when the game is paused the timer is too + await get_tree().create_timer(0.5, false).timeout + interactable = true + +func self_closing_door(direction: String): + interactable = false + wait = true + + animation_player.play("door_open_" + direction) + ## waits for a one second timer to finish before leaving the interactable if loop + ## the false statement makes it so when the game is paused the timer is too + await get_tree().create_timer(3, false).timeout + animation_player.play_backwards("door_open_" + direction) + await get_tree().create_timer(0.5, false).timeout + interactable = true + wait = false diff --git a/scripts/door.gd.uid b/scripts/door.gd.uid new file mode 100644 index 0000000..a98a4b0 --- /dev/null +++ b/scripts/door.gd.uid @@ -0,0 +1 @@ +uid://bgka5mmchi3bg diff --git a/scripts/dream_logic.gd b/scripts/dream_logic.gd new file mode 100644 index 0000000..0173216 --- /dev/null +++ b/scripts/dream_logic.gd @@ -0,0 +1,16 @@ +extends Node + +@export var vividness: float = 0 +@export var lucidity: float = 0 + + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + pass # Replace with function body. + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(_delta: float) -> void: + if vividness < 100: + pass #vividness += 0.05 + print("vividness: ", vividness) diff --git a/scripts/dream_logic.gd.uid b/scripts/dream_logic.gd.uid new file mode 100644 index 0000000..dcce81d --- /dev/null +++ b/scripts/dream_logic.gd.uid @@ -0,0 +1 @@ +uid://cdlk6n05jwfww diff --git a/scripts/drifting/detect_snow.gd b/scripts/drifting/detect_snow.gd new file mode 100644 index 0000000..bffebfe --- /dev/null +++ b/scripts/drifting/detect_snow.gd @@ -0,0 +1,29 @@ +extends Area3D + +var check_once: bool = true + +var snow_counter: int = 0 + +var snowtal: int = 0 + +var spots: int = 0 + +func _ready() -> void: + pass + +func _process(_delta: float) -> void: + + ##Get a count of all the snow spots on this path + if check_once: + spots = self.get_overlapping_areas().size() + print("Spots: " + str(spots)) + check_once = false + + for n in self.get_overlapping_areas().size(): + #print(self.get_overlapping_areas()[n].get_parent().snow_amount) + if !self.get_overlapping_areas()[n].get_parent().is_in_group("path_area"): + snow_counter += self.get_overlapping_areas()[n].get_parent().snow_amount + + snowtal = snow_counter + #print("Snowtal: " + str(snowtal)) + snow_counter = 0 diff --git a/scripts/drifting/detect_snow.gd.uid b/scripts/drifting/detect_snow.gd.uid new file mode 100644 index 0000000..5149933 --- /dev/null +++ b/scripts/drifting/detect_snow.gd.uid @@ -0,0 +1 @@ +uid://cdx4r2nbjfbwk diff --git a/scripts/drifting/drifting_game_over.gd b/scripts/drifting/drifting_game_over.gd new file mode 100644 index 0000000..2cde101 --- /dev/null +++ b/scripts/drifting/drifting_game_over.gd @@ -0,0 +1,10 @@ +extends Control + +func _ready() -> void: + + ##Reveal the mouse so buttons may be clicked! + Input.mouse_mode = Input.MOUSE_MODE_VISIBLE + + self.find_child("Message").text = Global.message #"Thank you. Play again!" + + self.find_child("Score").text = Global.final_score #"100%" diff --git a/scripts/drifting/drifting_game_over.gd.uid b/scripts/drifting/drifting_game_over.gd.uid new file mode 100644 index 0000000..50d04c3 --- /dev/null +++ b/scripts/drifting/drifting_game_over.gd.uid @@ -0,0 +1 @@ +uid://d16obox44cgts diff --git a/scripts/drifting/snow_spot.gd b/scripts/drifting/snow_spot.gd new file mode 100644 index 0000000..5fee688 --- /dev/null +++ b/scripts/drifting/snow_spot.gd @@ -0,0 +1,86 @@ +extends Node3D + +@onready var player: CharacterBody3D = get_tree().get_first_node_in_group("player") +@onready var player_ray: RayCast3D = get_tree().get_first_node_in_group("player_ray") +@onready var construct: Node3D = get_tree().get_first_node_in_group("Constructs") +@onready var wind_dir = self.get_parent().find_child("Snow_Particles").wind_direction + +## Positive X is North +## Negative X is South +## Positive Z is East +## Negative Z is West +## North = 0, East = 1, South = 2, West = 3 + +var snowball_scene = preload("res://scenes/props/drifting/snowball.tscn") +var snowball_scene_2 = preload("res://scenes/props/drifting/snowball_2.tscn") +var snowball_scene_3 = preload("res://scenes/props/drifting/snowball_3.tscn") +var snowball +var wind_ray: String = "NorthRay" + +var last_snow_amount: int + +@export var snow_amount: int = 0 + +func _ready() -> void: + update_snow() + +func _physics_process(_delta: float) -> void: + + ##TODO Fix it so snow does not accumulate when player is in the way of spot + if snow_amount < last_snow_amount or (snow_amount > last_snow_amount and self.find_child("Spot_Area").overlaps_body(player) == false): + update_snow() + +func blow_snow(): + + ## If snow spot has snow get the wind direction name + if self.snow_amount != 0: + match wind_dir: + 0: + wind_ray = "North_Ray" + 1: + wind_ray = "East_Ray" + 2: + wind_ray = "South_Ray" + 3: + wind_ray = "West_Ray" + + ##If north of snow pile there is something + if self.find_child(wind_ray).is_colliding(): + + ##If thing north of snow pile is snow pile + if self.find_child(wind_ray).get_collider().is_in_group("snow_spot"): + + ##If snow pile to north is not full + if self.find_child(wind_ray).get_collider().get_parent().snow_amount < 3: + + ##Add snow to adjacent pile and subtract snow from current pile + self.find_child(wind_ray).get_collider().get_parent().snow_amount += 1 + self.snow_amount -= 1 + #update_snow() + +func update_snow(): + #print(snowball) + ##Remove old snowball if one exists + if is_instance_valid(snowball): + snowball.queue_free() + snowball = null + + ##instance new snowball + match snow_amount: + 0: + pass + 1: + snowball = snowball_scene.instantiate() + 2: + snowball = snowball_scene_2.instantiate() + 3: + snowball = snowball_scene_3.instantiate() + + ##Add snowball + ##TODO Fix bug where when pile is emptied throws + ##ERROR: Can't add child 'Snowball' to 'Snow_Spot#', already has parent 'Snow_Spot#' + if is_instance_valid(snowball): + add_child(snowball) + + ##update last snow amount + last_snow_amount = snow_amount diff --git a/scripts/drifting/snow_spot.gd.uid b/scripts/drifting/snow_spot.gd.uid new file mode 100644 index 0000000..14cd940 --- /dev/null +++ b/scripts/drifting/snow_spot.gd.uid @@ -0,0 +1 @@ +uid://bdeld6f1c21ic diff --git a/scripts/drifting/weather.gd b/scripts/drifting/weather.gd new file mode 100644 index 0000000..e48a779 --- /dev/null +++ b/scripts/drifting/weather.gd @@ -0,0 +1,113 @@ +extends Node3D + +@onready var wind_dir = self.find_child("Snow_Particles").wind_direction + +@export var storm_intensity: int = 1 +var prev_storm_intensity: int + +var random_accumulation +var random_blow +var numb_spots: int = 183 +var numb_paths: int = 18 +var final_score: float = 0.0 +var snow_on_path: float = 0 +var spots_on_paths: float = 0 +var end_message: String = "Thank you for playing my game!" +var time_left: float + +func _ready() -> void: + + time_left = self.find_child("Game_Over").get_time_left() / self.find_child("Game_Over").wait_time + + random_accumulation = [randi_range(1,numb_spots), randi_range(1,numb_spots), randi_range(1,numb_spots), randi_range(1,numb_spots)] + + random_blow = [randi_range(1,numb_spots), randi_range(1,numb_spots), randi_range(1,numb_spots), randi_range(1,numb_spots)] + + ##Set previous storm intensity to match starting storm intensity + prev_storm_intensity = storm_intensity + +func _process(_delta: float) -> void: + ## Ratio of time left in game + time_left = self.find_child("Game_Over").get_time_left() / self.find_child("Game_Over").wait_time + + ##Intensify the storm as game time goes on + if time_left <= 0.66 and time_left > 0.33: + storm_intensity = 2 + elif time_left <= 0.33: + storm_intensity = 3 + + print(self.find_child("Snow_Accumulation_Timer").wait_time) + + ##Make the sky darker over time + #print(self.find_child("Game_Over").get_time_left()) + #print(self.find_child("WorldEnvironment").environment.background_energy_multiplier) + self.find_child("WorldEnvironment").environment.background_energy_multiplier = self.find_child("Game_Over").get_time_left() / self.find_child("Game_Over").wait_time + + ##Update timer to add snow more frequently as storm intensifies + if storm_intensity != prev_storm_intensity: + match storm_intensity: + 1: + self.find_child("Snow_Accumulation_Timer").wait_time = 7 + self.find_child("Snow_Particles").amount = 66666 + 2: + self.find_child("Snow_Accumulation_Timer").wait_time = 5 + self.find_child("Snow_Particles").amount = 133333 + 3: + self.find_child("Snow_Accumulation_Timer").wait_time = 3 + self.find_child("Snow_Particles").amount = 200000 + + prev_storm_intensity = storm_intensity + +func _on_snow_accumulation_timer_timeout(): + ##Accumulate snow at random spot + for n in range(0,4): + if self.find_child("Snow_Spot" + str(random_accumulation[n])).snow_amount < 3: + self.find_child("Snow_Spot" + str(random_accumulation[n])).snow_amount += 1 + + ##Rerandomize snow spots to accumulate + random_accumulation = [randi_range(1,numb_spots), randi_range(1,numb_spots), randi_range(1,numb_spots), randi_range(1,numb_spots)] + + ##Blow around random snow from spots based on wind direction + for n in range(0,4): + self.find_child("Snow_Spot" + str(random_blow[n])).blow_snow() + + ##Rerandomize snow spots to blow snow off of + random_blow = [randi_range(1,numb_spots), randi_range(1,numb_spots), randi_range(1,numb_spots), randi_range(1,numb_spots)] + + ##Change wind direction + self.find_child("Snow_Particles").wind_direction = randi_range(0,3) + + +func _on_game_over_timeout() -> void: + print("Game Over Man") + + ##Get the final total amount of snow on the paths + for n in range(1, numb_paths + 1): + snow_on_path += self.find_child("Path" + str(n)).find_child("Path_Area").snowtal + spots_on_paths += self.find_child("Path" + str(n)).find_child("Path_Area").spots + + final_score = snapped(100 - (snow_on_path / (3 * spots_on_paths)) * 100, 0.01) + + ##Print final score + print("snow on path: " + str(snow_on_path)) + print("spots on paths: " + str(spots_on_paths)) + print("Final Score: " + str(final_score) + "% Clear") + + if final_score > 70: + end_message = "Friend: Great job clearing the paths! Getting to the cabin was easy!" + elif final_score > 40: + end_message = "Friend: That storm out there is crazy! It took me a little bit to get to the cabin. Thank you for clearing the paths!" + else: + end_message = "Friend: I had a hard time getting here. But I know you did your best clearing the paths!" + + print(end_message) + Global.message = end_message + Global.final_score = "Path Cleared: " + str(final_score) + "%" + + ##Reset the score metrics + snow_on_path = 0 + spots_on_paths = 0 + final_score = 0.0 + + ##End the Game + get_tree().change_scene_to_file.call_deferred("res://scenes/levels/drifting/drifting_game_over.tscn") diff --git a/scripts/drifting/weather.gd.uid b/scripts/drifting/weather.gd.uid new file mode 100644 index 0000000..1144ace --- /dev/null +++ b/scripts/drifting/weather.gd.uid @@ -0,0 +1 @@ +uid://cg7tt0dm133t0 diff --git a/scripts/drifting/wind.gd b/scripts/drifting/wind.gd new file mode 100644 index 0000000..64d2885 --- /dev/null +++ b/scripts/drifting/wind.gd @@ -0,0 +1,11 @@ +extends GPUParticles3D + +##North = 0, East = 1, South = 2, West = 3 +var wind_direction: int = 2 +#var snow_amount = GPUParticles3D.amount + +func _ready() -> void: + pass + +func _process(_delta: float) -> void: + pass diff --git a/scripts/drifting/wind.gd.uid b/scripts/drifting/wind.gd.uid new file mode 100644 index 0000000..0f66188 --- /dev/null +++ b/scripts/drifting/wind.gd.uid @@ -0,0 +1 @@ +uid://drssmk77u0oyu diff --git a/scripts/entities/chaser.gd b/scripts/entities/chaser.gd new file mode 100644 index 0000000..3df37f7 --- /dev/null +++ b/scripts/entities/chaser.gd @@ -0,0 +1,22 @@ +extends CharacterBody3D + +@onready var nav_agent: NavigationAgent3D = $NavigationAgent3D + +var SPEED = 1 + +func _ready() -> void: + pass + +func _physics_process(_delta): + var current_location = global_transform.origin + var next_location = nav_agent.get_next_path_position() + var new_velocity = (next_location - current_location).normalized() * SPEED + + velocity = velocity.move_toward(new_velocity, 0.25) + move_and_slide() + +func update_target_location(target_location): + nav_agent.target_position = target_location + +func _on_navigation_agent_3d_target_reached() -> void: + print("GOTCHA!") diff --git a/scripts/entities/chaser.gd.uid b/scripts/entities/chaser.gd.uid new file mode 100644 index 0000000..864e4cb --- /dev/null +++ b/scripts/entities/chaser.gd.uid @@ -0,0 +1 @@ +uid://ckl13buypxr7a diff --git a/scripts/entities/godless_pawn.gd b/scripts/entities/godless_pawn.gd new file mode 100644 index 0000000..d038a79 --- /dev/null +++ b/scripts/entities/godless_pawn.gd @@ -0,0 +1,14 @@ +extends CharacterBody3D + +@onready var path = self.get_parent() + +var progress = 0.0001 + +func _process(_delta): + + if $AnimationPlayer.current_animation == "pawn_move": + ##print("ADVANCE!") + path.progress_ratio += progress + +func _on_timer_timeout() -> void: + $AnimationPlayer.play("pawn_move") diff --git a/scripts/entities/godless_pawn.gd.uid b/scripts/entities/godless_pawn.gd.uid new file mode 100644 index 0000000..332372b --- /dev/null +++ b/scripts/entities/godless_pawn.gd.uid @@ -0,0 +1 @@ +uid://bmnjry0jqpbfa diff --git a/scripts/fixable.gd b/scripts/fixable.gd new file mode 100644 index 0000000..2909458 --- /dev/null +++ b/scripts/fixable.gd @@ -0,0 +1,14 @@ +extends CSGPolygon3D + +@onready var hole: CSGPolygon3D = $StairHole +@onready var debris: CSGPolygon3D = $StairDebris +var fixed = false + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(_delta: float) -> void: + + if fixed: + if is_instance_valid(hole): + hole.queue_free() + if is_instance_valid(debris): + debris.queue_free() diff --git a/scripts/fixable.gd.uid b/scripts/fixable.gd.uid new file mode 100644 index 0000000..ca16a6c --- /dev/null +++ b/scripts/fixable.gd.uid @@ -0,0 +1 @@ +uid://qricgtwkhtp2 diff --git a/scripts/get_key.gd b/scripts/get_key.gd new file mode 100644 index 0000000..60c5a64 --- /dev/null +++ b/scripts/get_key.gd @@ -0,0 +1,17 @@ +extends StaticBody3D + +@onready var Player: Node3D = get_tree().get_first_node_in_group("player") +@onready var player_ray: RayCast3D = get_tree().get_first_node_in_group("player_ray") + +func _physics_process(_delta: float) -> void: + if has_node("InteractLabel"): + if player_ray.is_colliding() and player_ray.get_collider() == self: + $InteractLabel.show() + else: + $InteractLabel.hide() + +func interact(): + ##Appends the key name to the keys array + Player.keys.append(self.name) + + queue_free() diff --git a/scripts/get_key.gd.uid b/scripts/get_key.gd.uid new file mode 100644 index 0000000..be3d5ae --- /dev/null +++ b/scripts/get_key.gd.uid @@ -0,0 +1 @@ +uid://ms6xj5id35mr diff --git a/scripts/global.gd b/scripts/global.gd new file mode 100644 index 0000000..f039112 --- /dev/null +++ b/scripts/global.gd @@ -0,0 +1,41 @@ +extends Node + +@onready var mariana: CharacterBody3D = get_tree().get_first_node_in_group("mariana") + +##Drifting Variables +var final_score: String = "Path Cleared: 100%" +var message: String = "Friend: That storm out there is crazy! It took me a little bit to get to the cabin. Thank you for clearing the paths!" + +##Scene change variables +var next_scene: String = "res://scenes/levels/campus.tscn" +var warp_from: String = "" + +##Character variables +var dialogue_wait: bool = false +var mariana_current_name: String = "Mariana" +var char_mood: float +var dynamic_word: String + +##Construct Variables +var grappling = false +var grap_post = Vector3(0,0,0) + +func scene_change(): + mariana = get_tree().get_first_node_in_group("mariana") + +func change_paused_state() -> void: + if !get_tree().paused: + get_tree().paused = true + Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE) + else: + get_tree().paused = false + Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED) + +func get_char_mood(char_name): + match char_name: + "mariana": + char_mood = mariana.mood + +func change_char(char_name, mood_swing): + if char_name == "mariana": + mariana.affinity(mood_swing) diff --git a/scripts/global.gd.uid b/scripts/global.gd.uid new file mode 100644 index 0000000..f6fc98c --- /dev/null +++ b/scripts/global.gd.uid @@ -0,0 +1 @@ +uid://xgq6cloy63sj diff --git a/scripts/grapple_test.gd b/scripts/grapple_test.gd new file mode 100644 index 0000000..2750efd --- /dev/null +++ b/scripts/grapple_test.gd @@ -0,0 +1,25 @@ +extends Path3D + +var post: float = 0 +@export var extend_rate: float = 0.01 +@export var extend_max: float = 5.0 +var extending: bool = true +var grapple: bool = true + +##TODO Add logic to retract if path collides with a solid object +func _process(_delta: float) -> void: + + ##extend the grapple out to the max distance then return it + if grapple == true: + if post > extend_max: + extending = false + + if extending == true: + post += extend_rate + else: + post -= extend_rate + + if extending == false and post <= 0.1: + grapple = false + + self.curve.set_point_position(1, Vector3(post,0,0)) diff --git a/scripts/grapple_test.gd.uid b/scripts/grapple_test.gd.uid new file mode 100644 index 0000000..233629b --- /dev/null +++ b/scripts/grapple_test.gd.uid @@ -0,0 +1 @@ +uid://5ubhpu2i6xwb diff --git a/scripts/interactor.gd b/scripts/interactor.gd new file mode 100644 index 0000000..0f6ae03 --- /dev/null +++ b/scripts/interactor.gd @@ -0,0 +1,16 @@ +extends RayCast3D + +func _process(_delta: float) -> void: + #Keeps raycast from trying to detect objects that being queue freed + if get_collider() != null: + #Get collision object that raycast is hitting + var collider = get_collider() + #If the raycast is colliding with the object and the object is interactable + if is_colliding() and collider.is_in_group("interactable"): + + if collider.has_method("interact") and Input.is_action_just_pressed("interact"): + collider.interact() + + ##code for detecting a label and displaying it if it exists + #if collider.find_child("InteractLabel") != null: + #collider.find_child("InteractLabel").show() diff --git a/scripts/interactor.gd.uid b/scripts/interactor.gd.uid new file mode 100644 index 0000000..4e51394 --- /dev/null +++ b/scripts/interactor.gd.uid @@ -0,0 +1 @@ +uid://c8d5ntqd0070m diff --git a/scripts/item_stand_1.gd b/scripts/item_stand_1.gd new file mode 100644 index 0000000..dc84fe1 --- /dev/null +++ b/scripts/item_stand_1.gd @@ -0,0 +1,19 @@ +extends StaticBody3D + +@onready var construct: Node3D = get_tree().get_first_node_in_group("Constructs") +@onready var workbench: StaticBody3D = $".." +@onready var con_name: String +@onready var item_mesh: MeshInstance3D = self.get_child(1) + +func interact(): + + if self.name == "ItemStand1": + con_name = construct.CONSTRUCT_TYPE.name.to_lower() + workbench.item = con_name + item_mesh.mesh = load("res://scenes/constructs/" + con_name + "/" + con_name + "_mesh.tres") + item_mesh.scale = construct.CONSTRUCT_TYPE.scale + elif self.name == "ItemStand2": + con_name = construct.CONSTRUCT_TYPE.name.to_lower() + workbench.item2 = con_name + item_mesh.mesh = load("res://scenes/constructs/" + con_name + "/" + con_name + "_mesh.tres") + item_mesh.scale = construct.CONSTRUCT_TYPE.scale diff --git a/scripts/item_stand_1.gd.uid b/scripts/item_stand_1.gd.uid new file mode 100644 index 0000000..8eb43b0 --- /dev/null +++ b/scripts/item_stand_1.gd.uid @@ -0,0 +1 @@ +uid://l0koncj131rq diff --git a/scripts/keyhole.gd b/scripts/keyhole.gd new file mode 100644 index 0000000..21ebfeb --- /dev/null +++ b/scripts/keyhole.gd @@ -0,0 +1,20 @@ +extends Node3D + +@onready var Player: Node3D = get_tree().get_first_node_in_group("player") +@onready var player_ray: Node3D = get_tree().get_first_node_in_group("player_ray") + +var lock_key = {"Padlock": "rusty_key"} + +func _physics_process(_delta: float) -> void: + if has_node("InteractLabel"): + if player_ray.is_colliding() and player_ray.get_collider() == self: + $InteractLabel.show() + else: + $InteractLabel.hide() + +func interact(): + if self.is_in_group("locked"): + for i in Player.keys.size(): + if Player.keys[i] == lock_key[self.name]: + ##TODO Add an animation of the key going into the lock and it falling on the ground + queue_free() diff --git a/scripts/keyhole.gd.uid b/scripts/keyhole.gd.uid new file mode 100644 index 0000000..a742a5f --- /dev/null +++ b/scripts/keyhole.gd.uid @@ -0,0 +1 @@ +uid://dpa30ouf8ng5d diff --git a/scripts/levels/campus.gd b/scripts/levels/campus.gd new file mode 100644 index 0000000..2258259 --- /dev/null +++ b/scripts/levels/campus.gd @@ -0,0 +1,32 @@ +extends Node + +@onready var Player: CharacterBody3D = get_tree().get_first_node_in_group("player") +@onready var waterway_spawn: Node3D = $WarpSpawnPoints/ToWaterway/WaterwaySpawn +@onready var snow_spawn: Node3D = $WarpSpawnPoints/ToSnowHouse/SnowSpawn +@onready var haunted_spawn: Node3D = $WarpSpawnPoints/ToHauntedHouse/HauntedSpawn +@onready var grunge_spawn: Node3D = $WarpSpawnPoints/ToGrunge/GrungeSpawn +@onready var calculus_spawn: Node3D = $WarpSpawnPoints/ToCruelCalculus/CalculusSpawn +@onready var garden_spawn: Node3D = $WarpSpawnPoints/ToGardenLights/GardenSpawn + +func _ready() -> void: + ##Make sure global refinds characters + Global.scene_change() + match Global.warp_from: + "res://scenes/levels/cruel_calculus.tscn": + Player.transform.origin = calculus_spawn.global_position + Player.rotation.y = calculus_spawn.get_parent().rotation.y + "res://scenes/levels/drunken_waterway.tscn": + Player.transform.origin = waterway_spawn.global_position + Player.rotation.y = waterway_spawn.get_parent().rotation.y + "res://scenes/levels/gag_haunted_house.tscn": + Player.transform.origin = haunted_spawn.global_position + Player.rotation.y = haunted_spawn.get_parent().rotation.y + "res://scenes/levels/garden_of_lights.tscn": + Player.transform.origin = garden_spawn.global_position + Player.rotation.y = garden_spawn.get_parent().rotation.y + "res://scenes/levels/grunge_world.tscn": + Player.transform.origin = grunge_spawn.global_position + Player.rotation.y = grunge_spawn.get_parent().rotation.y + "res://scenes/levels/snow_house.tscn": + Player.transform.origin = snow_spawn.global_position + Player.rotation.y = snow_spawn.get_parent().rotation.y diff --git a/scripts/levels/campus.gd.uid b/scripts/levels/campus.gd.uid new file mode 100644 index 0000000..2bc1be9 --- /dev/null +++ b/scripts/levels/campus.gd.uid @@ -0,0 +1 @@ +uid://dvv30fis0ncwh diff --git a/scripts/levels/cruel_calculus.gd b/scripts/levels/cruel_calculus.gd new file mode 100644 index 0000000..d7a4d9f --- /dev/null +++ b/scripts/levels/cruel_calculus.gd @@ -0,0 +1,12 @@ +extends Node + +@onready var Player: CharacterBody3D = get_tree().get_first_node_in_group("player") +@onready var haunted_spawn: Node3D = $WarpSpawnPoints/ToHauntedHouse/HauntedSpawn + +func _ready() -> void: + ##Make sure global refinds characters + Global.scene_change() + match Global.warp_from: + "res://scenes/levels/gag_haunted_house.tscn": + Player.transform.origin = haunted_spawn.global_position + Player.rotation.y = haunted_spawn.get_parent().rotation.y diff --git a/scripts/levels/cruel_calculus.gd.uid b/scripts/levels/cruel_calculus.gd.uid new file mode 100644 index 0000000..2dc4d5d --- /dev/null +++ b/scripts/levels/cruel_calculus.gd.uid @@ -0,0 +1 @@ +uid://cvv7oseudq14x diff --git a/scripts/levels/drunken_waterway.gd b/scripts/levels/drunken_waterway.gd new file mode 100644 index 0000000..18c66ab --- /dev/null +++ b/scripts/levels/drunken_waterway.gd @@ -0,0 +1,16 @@ +extends Node + +@onready var Player: CharacterBody3D = get_tree().get_first_node_in_group("player") +@onready var garden_spawn: Node3D = $WarpSpawnPoints/ToGardenLights/GardenSpawn +@onready var campus_spawn: Node3D = $WarpSpawnPoints/ToCampus/CampusSpawn + +func _ready() -> void: + ##Make sure global refinds characters + Global.scene_change() + match Global.warp_from: + "res://scenes/levels/campus.tscn": + Player.transform.origin = campus_spawn.global_position + Player.rotation.y = campus_spawn.get_parent().rotation.y + "res://scenes/levels/garden_of_lights.tscn": + Player.transform.origin = garden_spawn.global_position + Player.rotation.y = garden_spawn.get_parent().rotation.y diff --git a/scripts/levels/drunken_waterway.gd.uid b/scripts/levels/drunken_waterway.gd.uid new file mode 100644 index 0000000..662b365 --- /dev/null +++ b/scripts/levels/drunken_waterway.gd.uid @@ -0,0 +1 @@ +uid://dcfa2widdgi3m diff --git a/scripts/levels/escape_room_1.gd b/scripts/levels/escape_room_1.gd new file mode 100644 index 0000000..364b99b --- /dev/null +++ b/scripts/levels/escape_room_1.gd @@ -0,0 +1,5 @@ +extends Node3D + +func _ready() -> void: + ##Make sure global refinds characters + Global.scene_change() diff --git a/scripts/levels/escape_room_1.gd.uid b/scripts/levels/escape_room_1.gd.uid new file mode 100644 index 0000000..c03fb4c --- /dev/null +++ b/scripts/levels/escape_room_1.gd.uid @@ -0,0 +1 @@ +uid://dm04nb067jj6v diff --git a/scripts/levels/gag_haunted_house.gd b/scripts/levels/gag_haunted_house.gd new file mode 100644 index 0000000..4d30ab6 --- /dev/null +++ b/scripts/levels/gag_haunted_house.gd @@ -0,0 +1,24 @@ +extends Node + +@onready var Player: CharacterBody3D = get_tree().get_first_node_in_group("player") +@onready var grunge_spawn: Node3D = $WarpSpawnPoints/ToGrunge/GrungeSpawn +@onready var calculus_spawn: Node3D = $WarpSpawnPoints/ToCruelCalculus/CalculusSpawn +@onready var campus_spawn: Node3D = $WarpSpawnPoints/ToCampus/CampusSpawn + + +func _ready() -> void: + ##Make sure global refinds characters + Global.scene_change() + match Global.warp_from: + "res://scenes/levels/campus.tscn": + Player.transform.origin = campus_spawn.global_position + Player.rotation.y = campus_spawn.get_parent().rotation.y + "res://scenes/levels/cruel_calculus.tscn": + Player.transform.origin = calculus_spawn.global_position + Player.rotation.y = calculus_spawn.get_parent().rotation.y + "res://scenes/levels/grunge_world.tscn": + Player.transform.origin = grunge_spawn.global_position + Player.rotation.y = grunge_spawn.get_parent().rotation.y + +func _physics_process(_delta): + get_tree().call_group("enemy", "update_target_location", Player.global_transform.origin) diff --git a/scripts/levels/gag_haunted_house.gd.uid b/scripts/levels/gag_haunted_house.gd.uid new file mode 100644 index 0000000..a0c1364 --- /dev/null +++ b/scripts/levels/gag_haunted_house.gd.uid @@ -0,0 +1 @@ +uid://r12evnxbh7ee diff --git a/scripts/levels/garden_of_lights.gd b/scripts/levels/garden_of_lights.gd new file mode 100644 index 0000000..4cdd252 --- /dev/null +++ b/scripts/levels/garden_of_lights.gd @@ -0,0 +1,17 @@ +extends Node + +@onready var Player: CharacterBody3D = get_tree().get_first_node_in_group("player") +@onready var campus_spawn: Node3D = $WarpSpawnPoints/ToCampus/CampusSpawn +@onready var waterway_spawn: Node3D = $WarpSpawnPoints/ToWaterway/WaterwaySpawn + +func _ready() -> void: + ##Make sure global refinds characters + Global.scene_change() + + match Global.warp_from: + "res://scenes/levels/campus.tscn": + Player.transform.origin = campus_spawn.global_position + Player.rotation.y = campus_spawn.get_parent().rotation.y + "res://scenes/levels/drunken_waterway.tscn": + Player.transform.origin = waterway_spawn.global_position + Player.rotation.y = waterway_spawn.get_parent().rotation.y diff --git a/scripts/levels/garden_of_lights.gd.uid b/scripts/levels/garden_of_lights.gd.uid new file mode 100644 index 0000000..314196b --- /dev/null +++ b/scripts/levels/garden_of_lights.gd.uid @@ -0,0 +1 @@ +uid://d1fxcx37egfx diff --git a/scripts/levels/grunge_world.gd b/scripts/levels/grunge_world.gd new file mode 100644 index 0000000..d7a4d9f --- /dev/null +++ b/scripts/levels/grunge_world.gd @@ -0,0 +1,12 @@ +extends Node + +@onready var Player: CharacterBody3D = get_tree().get_first_node_in_group("player") +@onready var haunted_spawn: Node3D = $WarpSpawnPoints/ToHauntedHouse/HauntedSpawn + +func _ready() -> void: + ##Make sure global refinds characters + Global.scene_change() + match Global.warp_from: + "res://scenes/levels/gag_haunted_house.tscn": + Player.transform.origin = haunted_spawn.global_position + Player.rotation.y = haunted_spawn.get_parent().rotation.y diff --git a/scripts/levels/grunge_world.gd.uid b/scripts/levels/grunge_world.gd.uid new file mode 100644 index 0000000..7b70425 --- /dev/null +++ b/scripts/levels/grunge_world.gd.uid @@ -0,0 +1 @@ +uid://db80qoel55b05 diff --git a/scripts/levels/house_of_leave.gd b/scripts/levels/house_of_leave.gd new file mode 100644 index 0000000..2a7b6f8 --- /dev/null +++ b/scripts/levels/house_of_leave.gd @@ -0,0 +1,5 @@ +extends Node + +func _ready() -> void: + ##Make sure global refinds characters + Global.scene_change() diff --git a/scripts/levels/house_of_leave.gd.uid b/scripts/levels/house_of_leave.gd.uid new file mode 100644 index 0000000..56a337c --- /dev/null +++ b/scripts/levels/house_of_leave.gd.uid @@ -0,0 +1 @@ +uid://cgr5nehqlsquy diff --git a/scripts/levels/snow_house.gd b/scripts/levels/snow_house.gd new file mode 100644 index 0000000..2a7b6f8 --- /dev/null +++ b/scripts/levels/snow_house.gd @@ -0,0 +1,5 @@ +extends Node + +func _ready() -> void: + ##Make sure global refinds characters + Global.scene_change() diff --git a/scripts/levels/snow_house.gd.uid b/scripts/levels/snow_house.gd.uid new file mode 100644 index 0000000..e7358b7 --- /dev/null +++ b/scripts/levels/snow_house.gd.uid @@ -0,0 +1 @@ +uid://bxd87swl2vv5v diff --git a/scripts/levels/somewhere.gd b/scripts/levels/somewhere.gd new file mode 100644 index 0000000..2a7b6f8 --- /dev/null +++ b/scripts/levels/somewhere.gd @@ -0,0 +1,5 @@ +extends Node + +func _ready() -> void: + ##Make sure global refinds characters + Global.scene_change() diff --git a/scripts/levels/somewhere.gd.uid b/scripts/levels/somewhere.gd.uid new file mode 100644 index 0000000..fc7ab8a --- /dev/null +++ b/scripts/levels/somewhere.gd.uid @@ -0,0 +1 @@ +uid://c062wvisfd5bk diff --git a/scripts/light_orb.gd b/scripts/light_orb.gd new file mode 100644 index 0000000..f9aa47f --- /dev/null +++ b/scripts/light_orb.gd @@ -0,0 +1,14 @@ +extends StaticBody3D + +@export var light_color: Color + +func _ready() -> void: + pass + #if self.name == "LightOrb": + #print(self.name) + #self.get_child(0).mesh.material.albedo_color = light_color + #self.get_child(0).mesh.material.emission = light_color + #if self.name == "LightOrb3": + #print(self.name) + #self.get_child(0).mesh.material.albedo_color = light_color + #self.get_child(0).mesh.material.emission = light_color diff --git a/scripts/light_orb.gd.uid b/scripts/light_orb.gd.uid new file mode 100644 index 0000000..237cf77 --- /dev/null +++ b/scripts/light_orb.gd.uid @@ -0,0 +1 @@ +uid://voof2ikd6ont diff --git a/scripts/loading_screen.gd b/scripts/loading_screen.gd new file mode 100644 index 0000000..cea5b89 --- /dev/null +++ b/scripts/loading_screen.gd @@ -0,0 +1,23 @@ +extends Control + +#@onready var label_color = self.find_child("Label").label_settings.font_color + +var text_color: Color = Color(randf(), randf(), randf()) + +func _ready(): + ResourceLoader.load_threaded_request(Global.next_scene) + + #set("font_color", text_color) + #label_color = text_color + self.find_child("Label").add_theme_color_override("font_color", text_color) + self.find_child("Label").add_theme_font_size_override("font_size", 200) + +func _process(_delta): + + if ResourceLoader.load_threaded_get_status(Global.next_scene) == 1: + var packed_scene = ResourceLoader.load_threaded_get(Global.next_scene) + get_tree().change_scene_to_packed(packed_scene) + + +func _on_timer_timeout() -> void: + self.find_child("Label").add_theme_color_override("font_color", Color(randf(), randf(), randf())) diff --git a/scripts/loading_screen.gd.uid b/scripts/loading_screen.gd.uid new file mode 100644 index 0000000..35755d3 --- /dev/null +++ b/scripts/loading_screen.gd.uid @@ -0,0 +1 @@ +uid://bsehmw3jffimj diff --git a/scripts/mariana.gd b/scripts/mariana.gd new file mode 100644 index 0000000..f82c159 --- /dev/null +++ b/scripts/mariana.gd @@ -0,0 +1,21 @@ +extends CharacterBody3D + +@onready var player_ray: RayCast3D = get_tree().get_first_node_in_group("player_ray") +var dialogue = load("res://dialogue/mariana_test.dialogue") + +var mood: float = 5 + +func _physics_process(_delta: float) -> void: + if has_node("InteractLabel"): + if player_ray.is_colliding() and player_ray.get_collider() == $".": + $InteractLabel.show() + else: + $InteractLabel.hide() + +func interact(): + if Global.dialogue_wait == false: + DialogueManager.show_dialogue_balloon(dialogue, "start") + +func affinity(mood_swing): + mood += mood_swing + print("mariana mood: " + str(mood)) diff --git a/scripts/mariana.gd.uid b/scripts/mariana.gd.uid new file mode 100644 index 0000000..7c1fd3a --- /dev/null +++ b/scripts/mariana.gd.uid @@ -0,0 +1 @@ +uid://d12mh4d41yaws diff --git a/scripts/object_generator.gd b/scripts/object_generator.gd new file mode 100644 index 0000000..43c0c31 --- /dev/null +++ b/scripts/object_generator.gd @@ -0,0 +1,59 @@ +extends Node3D +@export_category("Parameters") +@export var obj_scale: float = 0.2 +@export var launch_magnitude: float = 5 +@export var obj_interval = 0.5 +@export var obj_range = 0.2 +@export_category("Mesh") +@export var mesh_type: Mesh = BoxMesh.new() +@export var mesh_color: Color = Color("FFFFFF") +@export var mesh_texture: Texture2D +@export var triplanar: bool = true +@export var world_triplanar: bool = false +#@onready var debris_sounds: AudioStreamPlayer3D = $DebrisSounds +#@onready var fade_out_time = $DebrisSounds.stream.get_length() - 0.05 +#@onready var default_volume = debris_sounds.volume_db + +var shape_match = {"SphereMesh": SphereShape3D.new(), "BoxMesh": BoxShape3D.new(),"CapsuleMesh": CapsuleShape3D.new(), "TextMesh": BoxShape3D.new()} + +func _physics_process(_delta: float) -> void: + + ##Play the debris sound and tween it so it fades out + #debris_sounds.volume_db = default_volume + #var tween = create_tween() + ##Object, Property, Target Volume (between -60 and -80 in silent), Time + #tween.tween_property(debris_sounds, "volume_db", -60, fade_out_time) + #debris_sounds.play() + + ##Make the debris + var rigid_debris = RigidBody3D.new() + ##Make it so player is not impeded by debris but debris is moved around by player + self.add_child(rigid_debris) + rigid_debris.add_to_group("mess") + rigid_debris.continuous_cd = true + ##Set by bit values (ex. just layer 1 (0 or 1), just layer 2 (2), layer 1 and 2 (3), just layer 4 (4) + rigid_debris.collision_layer = 2 + rigid_debris.collision_mask = 1 + rigid_debris.add_child(MeshInstance3D.new()) + rigid_debris.get_child(0).mesh = mesh_type + rigid_debris.add_child(CollisionShape3D.new()) + rigid_debris.get_child(1).shape = shape_match[str(mesh_type.get_class())] + rigid_debris.get_child(0).mesh.material = StandardMaterial3D.new() + rigid_debris.get_child(0).mesh.material.albedo_color = mesh_color + if mesh_texture != null: + rigid_debris.get_child(0).mesh.material.albedo_texture = mesh_texture + rigid_debris.get_child(0).mesh.material.uv1_triplanar = triplanar + rigid_debris.get_child(0).mesh.material.uv1_world_triplanar = world_triplanar + rigid_debris.get_child(0).mesh.material.texture_filter = 0 + for children in rigid_debris.get_children(): + children.scale = Vector3(obj_scale,obj_scale,obj_scale) + var velocity = Vector3(randf_range(-1 * obj_range,obj_range), 0, randf_range(-1 * obj_range,obj_range)) * launch_magnitude + var ang_velocity = Vector3(randf_range(-1 * obj_range,obj_range), 0, randf_range(-1 * obj_range,obj_range)) * (launch_magnitude / 2) + ##Direction + rigid_debris.linear_velocity = velocity + ##Spin + rigid_debris.angular_velocity = ang_velocity + + set_physics_process(false) + await(get_tree().create_timer(obj_interval, false).timeout) + set_physics_process(true) diff --git a/scripts/object_generator.gd.uid b/scripts/object_generator.gd.uid new file mode 100644 index 0000000..66b26ef --- /dev/null +++ b/scripts/object_generator.gd.uid @@ -0,0 +1 @@ +uid://c5js2667jpmsh diff --git a/scripts/open_close_sign.gd b/scripts/open_close_sign.gd new file mode 100644 index 0000000..ba02858 --- /dev/null +++ b/scripts/open_close_sign.gd @@ -0,0 +1,43 @@ +extends Node3D + +var toggle: bool = true +var interactable: bool = true +var time: int + +@onready var animation_player: AnimationPlayer = $SignAnimation +@onready var label: Label3D = $"../InteractLabel" +@onready var Player: Node3D = get_tree().get_first_node_in_group("player") +@onready var construct: Node3D = get_tree().get_first_node_in_group("Constructs") +@onready var player_ray: RayCast3D = get_tree().get_first_node_in_group("player_ray") + +func ready(): + time = Player.current_time + +func _physics_process(_delta: float) -> void: + + if construct.CONSTRUCT_TYPE.name == "Time" and Input.is_action_just_pressed("UseConstruct"): + if Player.current_time in [8,9,10,11,12,13,14,15,16,17,18,19] and toggle == false: + interact() + if Player.current_time in [1,2,3,4,5,6,7,20,21,22,23,24] and toggle == true: + interact() + + if player_ray.is_colliding() and player_ray.get_collider() == $".": + label.show() + else: + label.hide() + +func interact(): + + if interactable == true: + interactable = false + toggle = !toggle + if toggle == false: + animation_player.play("flip_sign") + #print(toggle) + if toggle == true: + animation_player.play_backwards("flip_sign") + #print(toggle) + ## waits for a one second timer to finish before leaving the interactable if loop + ## the false statement makes it so when the game is paused the timer is too + await get_tree().create_timer(0.5, false).timeout + interactable = true diff --git a/scripts/open_close_sign.gd.uid b/scripts/open_close_sign.gd.uid new file mode 100644 index 0000000..3138ab5 --- /dev/null +++ b/scripts/open_close_sign.gd.uid @@ -0,0 +1 @@ +uid://6bm5giaora3 diff --git a/scripts/path_follow_test.gd b/scripts/path_follow_test.gd new file mode 100644 index 0000000..4086ce1 --- /dev/null +++ b/scripts/path_follow_test.gd @@ -0,0 +1,7 @@ +extends PathFollow3D + +func _process(_delta: float) -> void: + pass + +func _on_timer_timeout() -> void: + self.progress_ratio += 0.003 diff --git a/scripts/path_follow_test.gd.uid b/scripts/path_follow_test.gd.uid new file mode 100644 index 0000000..449e472 --- /dev/null +++ b/scripts/path_follow_test.gd.uid @@ -0,0 +1 @@ +uid://br705ke6jhaoa diff --git a/scripts/pause_menu.gd b/scripts/pause_menu.gd new file mode 100644 index 0000000..1bf55d0 --- /dev/null +++ b/scripts/pause_menu.gd @@ -0,0 +1,10 @@ +extends Control + +@onready var inventory: Control = get_tree().get_first_node_in_group("inventory") + +func _physics_process(_delta: float) -> void: + ##Prevent crash if pause menu not found (like during isolated testing) + if inventory != null: + if Input.is_action_just_pressed("pause_game"): #and inventory.visible == false: + Global.change_paused_state() + self.visible = !self.visible diff --git a/scripts/pause_menu.gd.uid b/scripts/pause_menu.gd.uid new file mode 100644 index 0000000..51e7056 --- /dev/null +++ b/scripts/pause_menu.gd.uid @@ -0,0 +1 @@ +uid://bgcsj2xmtkuyo diff --git a/scripts/pause_menu_buttons.gd b/scripts/pause_menu_buttons.gd new file mode 100644 index 0000000..d514a56 --- /dev/null +++ b/scripts/pause_menu_buttons.gd @@ -0,0 +1,9 @@ +extends Button + +@onready var pause_menu: Control = self.get_parent() + +func _on_pressed() -> void: + match self.name: + "CloseButton": + Global.change_paused_state() + pause_menu.visible = !pause_menu.visible diff --git a/scripts/pause_menu_buttons.gd.uid b/scripts/pause_menu_buttons.gd.uid new file mode 100644 index 0000000..08fb2f7 --- /dev/null +++ b/scripts/pause_menu_buttons.gd.uid @@ -0,0 +1 @@ +uid://tih1ci4jv86q diff --git a/scripts/reticle.gd b/scripts/reticle.gd new file mode 100644 index 0000000..c9ed103 --- /dev/null +++ b/scripts/reticle.gd @@ -0,0 +1,10 @@ +extends CenterContainer + +@export var dot_radius : float = 3.0 +@export var dot_color : Color = Color.WHITE + +func _ready(): + queue_redraw() + +func _draw(): + draw_circle(Vector2(0,0),dot_radius,dot_color) diff --git a/scripts/reticle.gd.uid b/scripts/reticle.gd.uid new file mode 100644 index 0000000..d5df795 --- /dev/null +++ b/scripts/reticle.gd.uid @@ -0,0 +1 @@ +uid://bh4obtyl4m7hx diff --git a/scripts/start_menu_buttons.gd b/scripts/start_menu_buttons.gd new file mode 100644 index 0000000..8589911 --- /dev/null +++ b/scripts/start_menu_buttons.gd @@ -0,0 +1,15 @@ +extends Button + +func _on_pressed() -> void: + match self.name: + "StartButton": + ##Load to the current scene + ##TODO Add logic that keeps track of a save state OR always load to campus + get_tree().change_scene_to_file.call_deferred("res://scenes/menus/loading_screen.tscn") + "MenuButton": + get_tree().change_scene_to_file.call_deferred("res://scenes/menus/main_menu.tscn") + "CreditsButton": + get_tree().change_scene_to_file.call_deferred("res://scenes/menus/rem_drifting_credits.tscn") + "QuitButton": + ##Quit the game + get_tree().quit() diff --git a/scripts/start_menu_buttons.gd.uid b/scripts/start_menu_buttons.gd.uid new file mode 100644 index 0000000..a5e76f0 --- /dev/null +++ b/scripts/start_menu_buttons.gd.uid @@ -0,0 +1 @@ +uid://co0h6er0mkgyc diff --git a/scripts/state_machine/idle_state.gd b/scripts/state_machine/idle_state.gd new file mode 100644 index 0000000..c7203b2 --- /dev/null +++ b/scripts/state_machine/idle_state.gd @@ -0,0 +1,8 @@ +class_name IdleState + +extends State + +func update(): + pass + #if Global.player.velocity.length() > 0.0 and Global.player.is_on_floor(): + #transition.emit("WalkingState") diff --git a/scripts/state_machine/idle_state.gd.uid b/scripts/state_machine/idle_state.gd.uid new file mode 100644 index 0000000..d322fd4 --- /dev/null +++ b/scripts/state_machine/idle_state.gd.uid @@ -0,0 +1 @@ +uid://dtukvxt8brwfy diff --git a/scripts/state_machine/state.gd b/scripts/state_machine/state.gd new file mode 100644 index 0000000..e3cfb92 --- /dev/null +++ b/scripts/state_machine/state.gd @@ -0,0 +1,18 @@ +class_name State + +extends Node + +##signal transition(new_state_name: StringName) + +func enter() -> void: + pass + +func exit() -> void: + pass + +func update() -> void: + pass + +func physics_update(_delta: float) -> void: + pass + diff --git a/scripts/state_machine/state.gd.uid b/scripts/state_machine/state.gd.uid new file mode 100644 index 0000000..72bc56f --- /dev/null +++ b/scripts/state_machine/state.gd.uid @@ -0,0 +1 @@ +uid://dp4tdyfl7kmky diff --git a/scripts/state_machine/state_machine.gd b/scripts/state_machine/state_machine.gd new file mode 100644 index 0000000..354cf2e --- /dev/null +++ b/scripts/state_machine/state_machine.gd @@ -0,0 +1,33 @@ +class_name StateMachine + +extends Node + +@export var CURRENT_STATE: State +var states: Dictionary = {} + +func _ready(): + for child in get_children(): + if child is State: + states[child.name] = child + ##child.transition.connect(on_child_transition) + else: + push_warning("incompatible child in state machine") + + CURRENT_STATE.enter() + +## Does update need the delta? Godot claims update does not accept any arguments +func _process(_delta): + CURRENT_STATE.update() + +func _physics_process(delta): + CURRENT_STATE.physics_update(delta) + +func on_child_transition(new_state_name: StringName) -> void: + var new_state = states.get(new_state_name) + if new_state != null: + if new_state != CURRENT_STATE: + CURRENT_STATE.exit() + new_state.enter() + CURRENT_STATE = new_state + else: + push_warning("State does not exist") diff --git a/scripts/state_machine/state_machine.gd.uid b/scripts/state_machine/state_machine.gd.uid new file mode 100644 index 0000000..afdf277 --- /dev/null +++ b/scripts/state_machine/state_machine.gd.uid @@ -0,0 +1 @@ +uid://cbb73774y7pva diff --git a/scripts/state_machine/walking_state.gd b/scripts/state_machine/walking_state.gd new file mode 100644 index 0000000..bc915cf --- /dev/null +++ b/scripts/state_machine/walking_state.gd @@ -0,0 +1,9 @@ +class_name WalkingState + +extends State + +func update(): + + if Global.player.velocity.length() == 0.0: + pass + ##transition.emit("IdleState") diff --git a/scripts/state_machine/walking_state.gd.uid b/scripts/state_machine/walking_state.gd.uid new file mode 100644 index 0000000..1953d9b --- /dev/null +++ b/scripts/state_machine/walking_state.gd.uid @@ -0,0 +1 @@ +uid://gfy4kon7a1io diff --git a/scripts/store_label.gd b/scripts/store_label.gd new file mode 100644 index 0000000..5152857 --- /dev/null +++ b/scripts/store_label.gd @@ -0,0 +1,9 @@ +extends Label3D + +var title = {"1": "Ol'", "2": "Doc", "3": "Mr.", "4": "Madam", "5": "Uncle"} +var store_owner = {"1": "Rusty", "2": "Holiday", "3": "Chester", "4": "Baer", "5": "Jenny", "6": "Lucy"} +var adjective = {"1": "Chop", "2": "Slop", "3": "Dollar", "4": "Quick", "5": "Fine", "6": "Used"} +var establishment = {"1": "Store", "2": "Emporium", "3": "Shack", "4": "Stop", "5": "Station", "6": "Goods"} + +func _ready() -> void: + $".".text = title[str(randi_range(1, title.size()))] + " " + store_owner[str(randi_range(1, store_owner.size()))] + "'s " + adjective[str(randi_range(1, adjective.size()))] + " " + establishment[str(randi_range(1, establishment.size()))] diff --git a/scripts/store_label.gd.uid b/scripts/store_label.gd.uid new file mode 100644 index 0000000..50c3260 --- /dev/null +++ b/scripts/store_label.gd.uid @@ -0,0 +1 @@ +uid://bpnuhe8sqsi8h diff --git a/scripts/sun_time.gd b/scripts/sun_time.gd new file mode 100644 index 0000000..bb5121c --- /dev/null +++ b/scripts/sun_time.gd @@ -0,0 +1,22 @@ +extends DirectionalLight3D + +@onready var Player: Node3D = get_tree().get_first_node_in_group("player") + +func _ready(): + ##Set sun positions to current time at level start + self.rotation.x = deg_to_rad(90 + (-15 * Player.current_time)) + +func _process(_delta: float) -> void: + pass + ## 360 / 24 is 15 so make it rotate 15 degrees every hour + ## subtract from 90 to offset light to start at bottom + self.rotation.x = deg_to_rad(90 + (-15 * Player.current_time)) + ##Reset rotation to start position after a full cycle + if self.rotation.x < -360: + self.rotation.x = 90 + ## Hide sun at night + ##TODO Change sky so it seems like night time + if Player.current_time in range(6,18): + self.visible = true + else: + self.visible = false diff --git a/scripts/sun_time.gd.uid b/scripts/sun_time.gd.uid new file mode 100644 index 0000000..14e7527 --- /dev/null +++ b/scripts/sun_time.gd.uid @@ -0,0 +1 @@ +uid://cp5x2hv8mnxc diff --git a/scripts/text_box.gd b/scripts/text_box.gd new file mode 100644 index 0000000..9c5ee60 --- /dev/null +++ b/scripts/text_box.gd @@ -0,0 +1,8 @@ +extends Label + +@onready var speaker: Label = $Speaker + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + self.text = "lorem ipsum" + speaker.text = "Entity" diff --git a/scripts/text_box.gd.uid b/scripts/text_box.gd.uid new file mode 100644 index 0000000..43bc501 --- /dev/null +++ b/scripts/text_box.gd.uid @@ -0,0 +1 @@ +uid://dremwb322vlaf diff --git a/scripts/time_interact.gd b/scripts/time_interact.gd new file mode 100644 index 0000000..6e71858 --- /dev/null +++ b/scripts/time_interact.gd @@ -0,0 +1,53 @@ +extends StaticBody3D + +@onready var construct: Node3D = get_tree().get_first_node_in_group("Constructs") +@onready var player_ray: RayCast3D = get_tree().get_first_node_in_group("player_ray") +@onready var label: Label3D = $InteractLabel + +var empty_slot: bool = false +var number: int = 1 +var con_num: int = 0 + +func _physics_process(_delta: float) -> void: + if construct.CONSTRUCT_TYPE.name == "Time" and Input.is_action_just_pressed("UseConstruct"): + #$Clock/HourHand.rotation += Vector3(0,deg_to_rad(-30),0) + $".".get_child(1).rotation += Vector3(0,deg_to_rad(-30),0) + + if player_ray.is_colliding() and player_ray.get_collider() == $"." and !construct.constructs["time"]: + label.show() + else: + label.hide() + +func interact(): + construct.constructs["time"] = true + find_empty_slot() + construct.set_construct(con_num, "time") + +##Working for now but still dodgy NEEDS TESTING +func find_empty_slot(): + + while number < 11 and empty_slot == false: + if construct.assigned_slot[number] != null: + number += 1 + else: + if detect_duplicate_cons("time") == false: + construct.assigned_slot[number] = "time" + con_num = number + empty_slot = true + break + + number = 1 + empty_slot = false + print(construct.assigned_slot) + +##This is working fine +func detect_duplicate_cons(con_name): + var i: int = 1 + + while i < 11: + if construct.assigned_slot[i] == con_name: + con_num = i + return true + i += 1 + + return false diff --git a/scripts/time_interact.gd.uid b/scripts/time_interact.gd.uid new file mode 100644 index 0000000..ec18d6d --- /dev/null +++ b/scripts/time_interact.gd.uid @@ -0,0 +1 @@ +uid://c62lyddb4ue2t diff --git a/scripts/ui_current_construct.gd b/scripts/ui_current_construct.gd new file mode 100644 index 0000000..c49446d --- /dev/null +++ b/scripts/ui_current_construct.gd @@ -0,0 +1,17 @@ +extends Label + +@onready var player: Node3D = get_tree().get_first_node_in_group("player") +@onready var construct: Node3D = get_tree().get_first_node_in_group("Constructs") +@onready var keybinding_label: Label = $"../ConstructKeybindingLabel" +@onready var keys_label: Label = $"../KeysLabel" + +#@onready var key_count = player.keys.size() +var key_array = [] + +func _process(_delta: float) -> void: + + self.text = "current construct: " + str(construct.CONSTRUCT_TYPE.name) + keybinding_label.text = "keybinding: " + str(construct.con_number) + if !player.keys.is_empty(): + keys_label.text = "keys: " + str(player.keys[0]) + diff --git a/scripts/ui_current_construct.gd.uid b/scripts/ui_current_construct.gd.uid new file mode 100644 index 0000000..b1b6624 --- /dev/null +++ b/scripts/ui_current_construct.gd.uid @@ -0,0 +1 @@ +uid://d4h4veqptsoqp diff --git a/scripts/update_vividness.gd b/scripts/update_vividness.gd new file mode 100644 index 0000000..029b029 --- /dev/null +++ b/scripts/update_vividness.gd @@ -0,0 +1,33 @@ +extends StaticBody3D + +var previous_vividness: float = 0 +var toggle = false +var interactable = true + +@onready var mesh: MeshInstance3D = $".".get_child(0) +@onready var collision: CollisionShape3D = $".".get_child(1) +#@onready var light: OmniLight3D = $".".get_child(2) +@onready var dream_test: Node = get_tree().get_first_node_in_group("Level") +@export var vivid_threshold : float = 50 + +@export var animation_player: AnimationPlayer + +func _ready() -> void: + previous_vividness = dream_test.vividness + +func _process(_delta: float) -> void: + ##if the vividness is high enough the collision and mesh dissapear + if dream_test.vividness >= vivid_threshold and dream_test.vividness != previous_vividness: + ## Set collision shape to zero effectively removing it + collision.disabled = true + mesh.visible = false + #if light != null: + #light.visible = false + elif dream_test.vividness < vivid_threshold and dream_test.vividness != previous_vividness: + collision.disabled = false + mesh.visible = true + #if light != null: + #light.visible = true + +func interact(): + dream_test.vividness = 60 diff --git a/scripts/update_vividness.gd.uid b/scripts/update_vividness.gd.uid new file mode 100644 index 0000000..fe896e9 --- /dev/null +++ b/scripts/update_vividness.gd.uid @@ -0,0 +1 @@ +uid://dd1ry3gqeahm6 diff --git a/scripts/vanishing_body.gd b/scripts/vanishing_body.gd new file mode 100644 index 0000000..69bb0c5 --- /dev/null +++ b/scripts/vanishing_body.gd @@ -0,0 +1,34 @@ +class_name VanishingBody extends StaticBody3D + +var previous_vividness: float = 0 + +var scene = load("res://scenes/props/vanishing_body.tscn") +@onready var mesh: MeshInstance3D = $".".get_child(0) +@onready var collision: CollisionShape3D = $".".get_child(1) +#@onready var light: OmniLight3D = $".".get_child(2) +@onready var gpu_collision: GPUParticlesCollisionBox3D = $".".get_child(2) +@onready var dream_logic: Node = get_tree().get_first_node_in_group("Level") +@export var vivid_threshold : float = 50 + +func _ready() -> void: + previous_vividness = dream_logic.vividness + +func _process(_delta: float) -> void: + ##if the vividness is high enough the collision and mesh dissapear + if dream_logic.vividness > vivid_threshold: #and dream_logic.vividness != previous_vividness: + ## Set collision shape to zero effectively removing it + collision.disabled = false + mesh.visible = true + if gpu_collision: + gpu_collision.visible = true + previous_vividness = dream_logic.vividness + #if light != null: + #light.visible = false + elif dream_logic.vividness < vivid_threshold: #and dream_logic.vividness != previous_vividness: + collision.disabled = true + mesh.visible = false + if gpu_collision: + gpu_collision.visible = false + previous_vividness = dream_logic.vividness + #if light != null: + #light.visible = true diff --git a/scripts/vanishing_body.gd.uid b/scripts/vanishing_body.gd.uid new file mode 100644 index 0000000..42e1f6e --- /dev/null +++ b/scripts/vanishing_body.gd.uid @@ -0,0 +1 @@ +uid://cam4ohtva7ft diff --git a/scripts/vanishing_light.gd b/scripts/vanishing_light.gd new file mode 100644 index 0000000..561b038 --- /dev/null +++ b/scripts/vanishing_light.gd @@ -0,0 +1,11 @@ +class_name VanishingLight extends OmniLight3D + + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + pass # Replace with function body. + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta: float) -> void: + pass diff --git a/scripts/vanishing_light.gd.uid b/scripts/vanishing_light.gd.uid new file mode 100644 index 0000000..3d47a13 --- /dev/null +++ b/scripts/vanishing_light.gd.uid @@ -0,0 +1 @@ +uid://703td84x3hgr diff --git a/scripts/workbench.gd b/scripts/workbench.gd new file mode 100644 index 0000000..5e0979d --- /dev/null +++ b/scripts/workbench.gd @@ -0,0 +1,66 @@ +extends StaticBody3D + +@onready var player: CharacterBody3D = get_tree().get_first_node_in_group("player") +@onready var player_ray: RayCast3D = get_tree().get_first_node_in_group("player_ray") +@onready var construct: Node3D = get_tree().get_first_node_in_group("Constructs") +@onready var item_1: StaticBody3D = $ItemStand1 + +var empty_slot: bool = false +var number: int = 1 +var con_num: int = 0 +var item +var item2 + +func _physics_process(_delta: float) -> void: + if has_node("InteractLabel"): + if player_ray.is_colliding() and player_ray.get_collider() == self: + $InteractLabel.show() + else: + $InteractLabel.hide() + +func interact(): + if (item == "stick" and item2 == "weight") or (item == "weight" and item2 == "stick"): + if !construct.constructs["hammer"]: + crafting("hammer") + else: + crafting(null) + + elif (item == "stick" and item2 == "light") or (item == "light" and item2 == "stick"): + if !construct.constructs["flashlight"]: + crafting("flashlight") + else: + crafting(null) + + else: + crafting(null) + + +func crafting(con_name): + if con_name != null: + $InteractLabel.hide() + construct.constructs[con_name] = true + player.get_node("Inventory/" + con_name.capitalize() + "Button").visible = true + find_empty_slot(con_name) + construct.set_construct(con_num, con_name) + $CraftLabel.text = con_name + " Get!" + else: + $CraftLabel.text = "Nothing to craft!" + + $CraftLabel.show() + await get_tree().create_timer(3, false).timeout + $CraftLabel.hide() + +func find_empty_slot(con_name): + + while empty_slot == false and number < 11: + if construct.assigned_slot[number] != null: + number += 1 + else: + construct.assigned_slot[number] = con_name + con_num = number + player.get_node("Inventory/" + con_name.capitalize() + "Button/SlotLabel").text = str(number) + empty_slot = true + + number = 1 + empty_slot = false + print(construct.assigned_slot) diff --git a/scripts/workbench.gd.uid b/scripts/workbench.gd.uid new file mode 100644 index 0000000..c02087f --- /dev/null +++ b/scripts/workbench.gd.uid @@ -0,0 +1 @@ +uid://t0xhxvyoert4 diff --git a/shaders/Desktop.ogv b/shaders/Desktop.ogv new file mode 100644 index 0000000..d63ae3d Binary files /dev/null and b/shaders/Desktop.ogv differ diff --git a/shaders/Desktop.ogv.uid b/shaders/Desktop.ogv.uid new file mode 100644 index 0000000..e1946c6 --- /dev/null +++ b/shaders/Desktop.ogv.uid @@ -0,0 +1 @@ +uid://dddtyhl0jduqn diff --git a/shaders/affine_effect.gdshader b/shaders/affine_effect.gdshader new file mode 100644 index 0000000..0a93bf8 --- /dev/null +++ b/shaders/affine_effect.gdshader @@ -0,0 +1,50 @@ +shader_type spatial; +render_mode blend_mix, + cull_disabled, + depth_prepass_alpha, + shadows_disabled, + specular_disabled, + vertex_lighting; + +uniform bool affine_mapping = false; +uniform sampler2D albedo : source_color, filter_nearest; +uniform float alpha_scissor : hint_range(0, 1) = 0.5; +uniform float jitter: hint_range(0, 1) = 0.25; +uniform ivec2 resolution = ivec2(320, 240); + +vec4 snap_to_position(vec4 base_position) +{ + vec4 snapped_position = base_position; + snapped_position.xyz = base_position.xyz / base_position.w; + + vec2 snap_resulotion = floor(vec2(resolution) * (1.0 - jitter)); + snapped_position.x = floor(snap_resulotion.x * snapped_position.x) / snap_resulotion.x; + snapped_position.y = floor(snap_resulotion.y * snapped_position.y) / snap_resulotion.y; + + snapped_position.xyz *= base_position.w; + return snapped_position; +} + +void vertex() +{ + vec4 snapped_position = snap_to_position(PROJECTION_MATRIX * MODELVIEW_MATRIX * vec4(VERTEX, 1.0)); + if (affine_mapping) + { + POSITION = snapped_position; + POSITION /= abs(POSITION.w); + } + else + { + POSITION = snapped_position; + } +} + +void fragment() +{ + vec4 color_base = COLOR; + vec4 texture_color = texture(albedo, UV); + + ALBEDO = (color_base * texture_color).rgb; + ALPHA = texture_color.a * color_base.a; + ALPHA_SCISSOR_THRESHOLD = alpha_scissor; +} diff --git a/shaders/affine_effect.gdshader.uid b/shaders/affine_effect.gdshader.uid new file mode 100644 index 0000000..71f1a68 --- /dev/null +++ b/shaders/affine_effect.gdshader.uid @@ -0,0 +1 @@ +uid://xgf4lcj0rh6r diff --git a/shaders/crystal.gdshader b/shaders/crystal.gdshader new file mode 100644 index 0000000..8fafc74 --- /dev/null +++ b/shaders/crystal.gdshader @@ -0,0 +1,44 @@ +shader_type spatial; +render_mode blend_mix, depth_draw_opaque, cull_back, diffuse_lambert, specular_schlick_ggx; + +// Varyings +varying vec3 WorldPos; + +uniform sampler2D colorGradient1; +uniform sampler2D colorGradient2; +uniform sampler2D NoiseTexture_Alpha : hint_normal; +uniform sampler2D NoiseTexture_Specular : hint_normal; +uniform sampler2D gradientSpecular; + +void vertex() { + mat4 n_out2p0 = MODEL_MATRIX; + vec3 n_out3p0 = VERTEX; + vec3 n_out4p0 = (n_out2p0 * vec4(n_out3p0, 1.0)).xyz; + WorldPos = n_out4p0; +} + +void fragment() { + float worldPosY = WorldPos.y; + float worldPosZ = WorldPos.z; + + vec4 color1 = texture(colorGradient1, vec2(worldPosY)); + vec4 color2 = texture(colorGradient2, vec2(worldPosZ)); + + vec3 mixVector = vec3(1.00000, 1.00000, 1.00000); + vec3 base_color = mix(vec3(color1.xyz), vec3(color2.xyz), mixVector); + +// Alpha + float noiseAlpha = texture(NoiseTexture_Alpha, UV).r; + vec2 scaleUVFunc = vec2(1.00000, 1.00000); + vec2 offsetUVFunc = vec2(0.00000, 1.00000); + vec2 transparency = offsetUVFunc * scaleUVFunc + vec2(noiseAlpha); + +// Specular + float noiseSpecular = texture(NoiseTexture_Specular, UV).r; + vec4 specular = texture(gradientSpecular, vec2(noiseSpecular)); + +// Output:0 + ALBEDO = base_color; + ALPHA = transparency.x; + SPECULAR = specular.x; +} diff --git a/shaders/crystal.gdshader.uid b/shaders/crystal.gdshader.uid new file mode 100644 index 0000000..015126c --- /dev/null +++ b/shaders/crystal.gdshader.uid @@ -0,0 +1 @@ +uid://bqxwe22bac7mm diff --git a/shaders/glitch_material.gdshader b/shaders/glitch_material.gdshader new file mode 100644 index 0000000..2673078 --- /dev/null +++ b/shaders/glitch_material.gdshader @@ -0,0 +1,60 @@ +shader_type spatial; + +// Transparency +// I added this +uniform float transparency: hint_range(0.0, 1.0) = 0.5; + +// Glitch intensity +uniform float shake_power = 0.5; + +// Probability +uniform float shake_rate : hint_range(0.0, 1.0) = 0.5; + +uniform float shake_speed = 5.0; + +// Hard to describe, change it and monitor result +uniform float shake_block_size = 30.5; + +uniform float shake_color_rate : hint_range(0.0, 1.0) = 0.5; + +uniform sampler2D main_tex : filter_nearest, source_color; + +varying float enable_shift; + +float random(float seed) { + return fract(sin(seed * 12345.678) * 43758.5453); +} + +void vertex() { + float adjusted_time = mod(TIME, 5.0); + + enable_shift = float(random(trunc(adjusted_time * shake_speed)) < shake_rate); + + float offset_x = (random((trunc(VERTEX.y * shake_block_size) / shake_block_size) + adjusted_time) - 0.5) * shake_power * enable_shift; + VERTEX.x += offset_x; +} + +void fragment() { + float adjusted_time = mod(TIME, 5.0); + vec2 fixed_uv = UV; + fixed_uv.x += ( + random((trunc(UV.y * shake_block_size) / shake_block_size) + adjusted_time) - 0.5 + ) * shake_power * enable_shift; + + vec4 pixel_color = texture(main_tex, fixed_uv); + + pixel_color.r = mix( + pixel_color.r, + texture(main_tex, fixed_uv + vec2(shake_color_rate, 0.0)).r, + enable_shift + ); + pixel_color.b = mix( + pixel_color.b, + texture(main_tex, fixed_uv + vec2(-shake_color_rate, 0.0)).b, + enable_shift + ); + + ALBEDO = pixel_color.rgb; + + ALPHA = transparency; +} \ No newline at end of file diff --git a/shaders/glitch_material.gdshader.uid b/shaders/glitch_material.gdshader.uid new file mode 100644 index 0000000..b212896 --- /dev/null +++ b/shaders/glitch_material.gdshader.uid @@ -0,0 +1 @@ +uid://x34r6y5jmh1a diff --git a/shaders/low_poly_water.gdshader b/shaders/low_poly_water.gdshader new file mode 100644 index 0000000..b7e98f3 --- /dev/null +++ b/shaders/low_poly_water.gdshader @@ -0,0 +1,57 @@ +shader_type spatial; + +// Water color +uniform vec4 out_color: source_color = vec4(0.0, 0.2, 1.0, 1.0); +// Amount of height for each triangle +uniform float amount: hint_range(0.2, 5.0, 0.1) = 0.8; +// The speed of the trangles height change +uniform float speed: hint_range(0.1, 5.0, 0.1) = 1; +// Beer factor (used to calculate how transparent the water is going to be) if equals to 0.0 then the alpha is going to be the out_color's alpha +uniform float beer_factor = 0.2; +uniform float metallic = 0.6; +uniform float specular = 0.5; +uniform float roughness = 0.2; +uniform sampler2D DEPTH_TEXTURE: hint_depth_texture;//FIX FOR GODOT 3.3+ DUE TO DEPTH_TEXTURE NAME CHANGE + +float generateOffset(float x, float z, float val1, float val2, float time) { + float radiansX = ((mod(x + z * x * val1, amount) / amount) + (time * speed) * mod(x * 0.8 + z, 1.5)) * 2.0 * 3.14; + float radiansZ = ((mod(val2 * (z * x + x * z), amount) / amount) + (time * speed) * 2.0 * mod(x, 2.0)) * 2.0 * 3.14; + + return amount * 0.5 * (sin(radiansZ) * cos(radiansX)); +} + +vec3 applyDistortion(vec3 vertex, float time) { + float xd = generateOffset(vertex.x, vertex.z, 0.2, 0.1, time); + float yd = generateOffset(vertex.x, vertex.z, 0.1, 0.3, time); + float zd = generateOffset(vertex.x, vertex.z, 0.15, 0.2, time); + + return vertex + vec3(xd, yd, zd); +} + +void vertex() { + VERTEX = applyDistortion(VERTEX, TIME * 0.1); +} + +void fragment() { + //NORMAL = normalize(cross(dFdx(VERTEX), dFdy(VERTEX))); OLD NORMAL METHOD (TOO DARK!!!) + //NEW NORMAL METHOD THAT MAKES COLOR MORE VISIBLE + vec3 world_vertex = (INV_VIEW_MATRIX * vec4(VERTEX,1.0)).xyz; + NORMAL = -normalize(cross(dFdx(world_vertex), dFdy(world_vertex))); + METALLIC = metallic; + SPECULAR = specular; + ROUGHNESS = roughness; + ALBEDO = out_color.rgb; + + if (beer_factor != 0.0) { + float depth = texture(DEPTH_TEXTURE, SCREEN_UV).r; + + //depth = depth * 2.0 - 1.0; + depth = PROJECTION_MATRIX[3][2] / (depth + PROJECTION_MATRIX[2][2]); + depth = depth + VERTEX.z; + + depth = exp(-depth * beer_factor); + ALPHA = clamp(1.0 - depth, 0.0, 1.0); + } else { + ALPHA = out_color.a; + } +} \ No newline at end of file diff --git a/shaders/low_poly_water.gdshader.uid b/shaders/low_poly_water.gdshader.uid new file mode 100644 index 0000000..dbcf77b --- /dev/null +++ b/shaders/low_poly_water.gdshader.uid @@ -0,0 +1 @@ +uid://biuyqas7tg6xi diff --git a/shaders/panoramic_sky.gdshader b/shaders/panoramic_sky.gdshader new file mode 100644 index 0000000..3499b1f --- /dev/null +++ b/shaders/panoramic_sky.gdshader @@ -0,0 +1,140 @@ +shader_type sky; + +render_mode use_half_res_pass; + +uniform sampler2D source_panorama : filter_linear, source_color, hint_default_black; +//uniform vec3 sky_color : source_color; ADDED BY BAER +uniform vec3 sky_color_1 : source_color = vec3(0.); +uniform vec3 sky_color_2 : source_color = vec3(1.); +uniform bool add_clouds = true; +uniform bool clouds_below = false; +uniform float cloud_scale : hint_range(0.0, 1.0, 0.01) = 0.25; +uniform float speed : hint_range(0.0, 0.25, 0.001) = 0.002; +uniform float cloud_dark : hint_range(0.0, 1.0, 0.01) = 0.5; +uniform float cloud_light : hint_range(0.0, 1.0, 0.01) = 0.3; +uniform float cloud_cover : hint_range(0.0, 1.0, 0.01) = 0.2; +uniform float cloud_alpha : hint_range(0.0, 10.0, 0.01) = 8.0; +uniform float sky_tint : hint_range(0.0, 1.0, 0.001) = 0.5; +uniform float height_offset : hint_range(0.0, 1.0, 0.001) = 0.2; +uniform float sky_contribution : hint_range(0.0, 1.0, 0.1) = 0.5; + +const mat2 m = mat2(vec2( 1.6, 1.2), vec2(-1.2, 1.6)); + +vec2 hash( vec2 p ) { + p = vec2(dot(p, vec2(127.1, 311.7)), dot(p, vec2(269.5, 183.3))); + return -1.0 + 2.0 * fract(sin(p) * 43758.5453123); +} + +float noise( in vec2 p ) { + const float K1 = 0.366025404; // (sqrt(3)-1)/2; + const float K2 = 0.211324865; // (3-sqrt(3))/6; + vec2 i = floor(p + (p.x + p.y)*K1); + vec2 a = p - i + (i.x + i.y) * K2; + vec2 o = (a.x > a.y) ? vec2(1.0, 0.0) : vec2(0.0, 1.0); + vec2 b = a - o + K2; + vec2 c = a - 1.0 + 2.0 * K2; + vec3 h = max(0.5 - vec3(dot(a, a), dot(b, b), dot(c, c)), 0.0 ); + vec3 n = h * h * h * h * vec3(dot(a, hash(i + 0.0)), dot(b, hash(i + o)), dot(c, hash(i + 1.0))); + return dot(n, vec3(70.0)); +} + +float fbm(vec2 n) { + float total = 0.0, amplitude = 0.1; + for (int i = 0; i < 7; i++) { + total += noise(n) * amplitude; + n = m * n; + amplitude *= 0.4; + } + return total; +} + +void sky() { + COLOR = texture(source_panorama, SKY_COORDS).rgb; + //COLOR = vec3(100,100,100); + if(AT_CUBEMAP_PASS){ + COLOR *= sky_contribution; + }else if(add_clouds){ + vec3 normal = normalize(EYEDIR); + vec3 plane_intersect = normal / (normal.y + height_offset); + + if(clouds_below){ + plane_intersect = normal / -(normal.y - height_offset); + } + + vec2 p = plane_intersect.xz; + p.y *= -1.0; + vec2 uv = p; + + float time = TIME * speed; + float q = fbm(uv * cloud_scale * 0.5); + + //ridged noise shape + float r = 0.0; + uv *= cloud_scale; + uv -= q - time; + float weight = 0.8; + for(int i = 0; i < 8; i++){ + r += abs(weight*noise( uv )); + uv = m*uv + time; + weight *= 0.7; + } + + //noise shape + float f = 0.0; + uv = p; + uv *= cloud_scale; + uv -= q - time; + weight = 0.7; + for(int i = 0; i < 8; i++){ + f += weight*noise( uv ); + uv = m*uv + time; + weight *= 0.6; + } + + f *= r + f; + + //noise colour + float c = 0.0; + time = TIME * speed * 2.0; + uv = p; + uv *= cloud_scale * 2.0; + uv -= q - time; + weight = 0.4; + for(int i = 0; i < 7; i++){ + c += weight*noise( uv ); + uv = m*uv + time; + weight *= 0.6; + } + + //noise ridge colour + float c1 = 0.0; + time = TIME * speed * 3.0; + uv = p; + uv *= cloud_scale * 3.0; + uv -= q - time; + weight = 0.4; + for (int i = 0; i < 7; i++){ + c1 += abs(weight*noise( uv )); + uv = m*uv + time; + weight *= 0.6; + } + + c += c1; + + vec3 skycolour = COLOR; + vec3 cloudcolour = vec3(1.1, 1.1, 0.9) * clamp((cloud_dark + cloud_light * c), 0.0, 1.0); + float horizon_fall_off = max(normal.y, 0.0); + + if(clouds_below){ + horizon_fall_off = max(-normal.y, 0.0); + } + + f = cloud_cover + cloud_alpha * f * r; + + vec3 result = mix(skycolour, clamp(sky_tint * skycolour + cloudcolour, 0.0, 1.0), clamp(f + c, 0.0, 1.0) * horizon_fall_off); + + // Convert the color to black and white. + //COLOR = vec3((result.r + result.g + result.b) / 1.0); original color method black/white + COLOR = mix(sky_color_1, sky_color_2, (result.r + result.g + result.b) / 3.0); //Rob fix for changing colors + } +} \ No newline at end of file diff --git a/shaders/panoramic_sky.gdshader.uid b/shaders/panoramic_sky.gdshader.uid new file mode 100644 index 0000000..99a3106 --- /dev/null +++ b/shaders/panoramic_sky.gdshader.uid @@ -0,0 +1 @@ +uid://cttjw0xwkiig0 diff --git a/shaders/pixel_water.gdshader b/shaders/pixel_water.gdshader new file mode 100644 index 0000000..c8ce515 --- /dev/null +++ b/shaders/pixel_water.gdshader @@ -0,0 +1,15 @@ +shader_type spatial; + +uniform vec4 color1 : source_color; +uniform vec4 color2 : source_color; +uniform vec4 color3 : source_color; +uniform float x_amount = 32.0; +uniform float y_amount = 32.0; + +float random (vec2 uv) { return fract(sin(dot(uv.xy, vec2(12.9898,78.233))) * 43758.5453123) ; } + +void fragment() { + vec2 tiled_uvs = vec2(trunc(UV.x/(1.0/x_amount)), trunc(UV.y/(1.0/y_amount))); + ALBEDO = mix(mix(color1.rgb, color2.rgb, sin(TIME + tiled_uvs.x - tiled_uvs.y * random(tiled_uvs))/2.5), color3.rgb, sin(TIME + tiled_uvs.x - tiled_uvs.y * random(tiled_uvs.yx))/2.0); + +} \ No newline at end of file diff --git a/shaders/pixel_water.gdshader.uid b/shaders/pixel_water.gdshader.uid new file mode 100644 index 0000000..ac02f01 --- /dev/null +++ b/shaders/pixel_water.gdshader.uid @@ -0,0 +1 @@ +uid://bi0clkl7lcqgf diff --git a/shaders/psx_drag_and_drop.gdshader b/shaders/psx_drag_and_drop.gdshader new file mode 100644 index 0000000..3189f76 --- /dev/null +++ b/shaders/psx_drag_and_drop.gdshader @@ -0,0 +1,76 @@ +shader_type spatial; +//IMPORTANT NOTE: SHADOWS ARE DISABLED. +render_mode blend_mix, + depth_draw_opaque, + cull_back, + diffuse_burley, + specular_schlick_ggx, + depth_prepass_alpha, + shadows_disabled, + skip_vertex_transform; + +varying float w_comp; + +uniform float point_size : hint_range(0,128); +uniform float roughness : hint_range(0,1); +uniform sampler2D texture_metallic : hint_default_white,filter_linear_mipmap,repeat_enable; +uniform vec4 metallic_texture_channel; +uniform sampler2D texture_roughness : hint_roughness_r,filter_linear_mipmap,repeat_enable; +uniform float specular; +uniform float metallic; +uniform sampler2D texture_emission : source_color, hint_default_black,filter_linear_mipmap,repeat_enable; +uniform vec4 emission : source_color; +uniform float emission_energy; +uniform vec3 uv1_scale; +uniform vec3 uv1_offset; +uniform vec3 uv2_scale; +uniform vec3 uv2_offset; + +uniform vec4 albedo : source_color; +uniform sampler2D texture_albedo : source_color,filter_linear_mipmap,repeat_enable; + +uniform ivec2 resolution = ivec2(320, 240); +uniform bool affine_mapping = true; +uniform float alpha_scissor : hint_range(0, 1) = 0.5; +uniform float jitter: hint_range(0, 1) = 0.25; + + +void vertex() +{ + VERTEX = (MODELVIEW_MATRIX * vec4(VERTEX, 1.0)).xyz; + w_comp = (PROJECTION_MATRIX * vec4(VERTEX, 1.0)).w; + VERTEX /= w_comp; + vec2 grid_to_snap = vec2(resolution) * (1.0 - jitter); + VERTEX.x = floor(VERTEX.x * grid_to_snap.x) / grid_to_snap.x; + VERTEX.y = floor(VERTEX.y * grid_to_snap.y) / grid_to_snap.y; + VERTEX *= w_comp; + + if(affine_mapping == true){ + UV *= w_comp; + } + + //IMPORTANT NOTE: Make sure `NORMAL`s are transformed out of local space aswell. + NORMAL = normalize((MODELVIEW_MATRIX * vec4(NORMAL, 0.0)).xyz); +} + +void fragment() { + vec2 base_uv = UV * uv1_scale.xy + uv1_offset.xy; + if(affine_mapping == true){ + base_uv /= w_comp; + } + + vec4 color_base = COLOR; + vec4 texture_color = texture(texture_albedo, base_uv); + + ALBEDO = albedo.rgb * texture_color.rgb; + ALPHA = texture_color.a * color_base.a; + ALPHA_SCISSOR_THRESHOLD = alpha_scissor; + float metallic_tex = dot(texture(texture_metallic,base_uv),metallic_texture_channel); + METALLIC = metallic_tex * metallic; + vec4 roughness_texture_channel = vec4(1.0,0.0,0.0,0.0); + float roughness_tex = dot(texture(texture_roughness,base_uv),roughness_texture_channel); + ROUGHNESS = roughness_tex * roughness; + SPECULAR = specular; + vec3 emission_tex = texture(texture_emission,base_uv).rgb; + EMISSION = (emission.rgb+emission_tex)*emission_energy; +} diff --git a/shaders/psx_drag_and_drop.gdshader.uid b/shaders/psx_drag_and_drop.gdshader.uid new file mode 100644 index 0000000..66132d0 --- /dev/null +++ b/shaders/psx_drag_and_drop.gdshader.uid @@ -0,0 +1 @@ +uid://dsmpfr52p8pg7 diff --git a/shaders/psx_style_water_surface.gdshader b/shaders/psx_style_water_surface.gdshader new file mode 100644 index 0000000..9560ebf --- /dev/null +++ b/shaders/psx_style_water_surface.gdshader @@ -0,0 +1,55 @@ +shader_type spatial; +render_mode blend_mix, depth_draw_opaque, cull_back, diffuse_lambert, specular_schlick_ggx; + +uniform vec3 albedo : source_color; +uniform sampler2D water_texture1; +uniform sampler2D water_texture2; +uniform sampler2D noise_texture; +uniform vec2 scroll_speed1 = vec2(0.05, 0.0); +uniform vec2 scroll_speed2 = vec2(-0.03, 0.0); +uniform float blend_factor = 0.5; +uniform vec2 scale1 = vec2(1.0, 1.0); +uniform vec2 scale2 = vec2(1.0, 1.0); +uniform float wave_strength = 1.0; +uniform float wave_scale = 0.02; +uniform int pixelation_level = 64; +uniform float FoamSize = 0.5; +uniform sampler2D DepthTexture : hint_depth_texture; +uniform float WaterOpacity = 1.0; +uniform float FoamGlowIntensity = 0.5; + +void vertex() { + vec2 global_position = (MODEL_MATRIX * vec4(VERTEX, 1.0)).xz; + float noise_value = texture(noise_texture, global_position * wave_scale).r; + float wave = sin(global_position.x * 0.2 + global_position.y * 0.2 + TIME + noise_value * 10.0) * wave_strength; + VERTEX.y += wave; +} + +void fragment() { + vec2 scaledUV1 = UV * scale1; + vec2 scaledUV2 = UV * scale2; + vec2 scrolledUV1 = scaledUV1 + scroll_speed1 * TIME; + vec2 scrolledUV2 = scaledUV2 + scroll_speed2 * TIME; + scrolledUV1 = mod(scrolledUV1, vec2(1.0, 1.0)); + scrolledUV2 = mod(scrolledUV2, vec2(1.0, 1.0)); + scrolledUV1 = floor(scrolledUV1 * float(pixelation_level)) / float(pixelation_level); + scrolledUV2 = floor(scrolledUV2 * float(pixelation_level)) / float(pixelation_level); + + vec4 water_color1 = texture(water_texture1, scrolledUV1); + vec4 water_color2 = texture(water_texture2, scrolledUV2); + vec4 blended_water_color = mix(water_color1, water_color2, blend_factor); + + float depthValue = texture(DepthTexture, SCREEN_UV).r; + vec4 worldPosition = INV_PROJECTION_MATRIX * vec4(SCREEN_UV * 2.0 - 1.0, depthValue, 1.0); + worldPosition.xyz /= worldPosition.w; + float foamEffect = clamp(1.0 - smoothstep(worldPosition.z + FoamSize, worldPosition.z, VERTEX.z), 0.0, 1.0); + float foamOpacity = 1.0 - foamEffect; + float foamEffectRounded = round(foamOpacity); + float finalOpacity = foamEffectRounded + WaterOpacity; + + ALBEDO = blended_water_color.rgb * albedo; + ALPHA = finalOpacity; + EMISSION = vec3(foamEffectRounded) * FoamGlowIntensity; + METALLIC = 0.0; + ROUGHNESS = 1.0; +} \ No newline at end of file diff --git a/shaders/psx_style_water_surface.gdshader.uid b/shaders/psx_style_water_surface.gdshader.uid new file mode 100644 index 0000000..7088a61 --- /dev/null +++ b/shaders/psx_style_water_surface.gdshader.uid @@ -0,0 +1 @@ +uid://drji5y5o74vx1 diff --git a/shaders/simple_water.gdshader b/shaders/simple_water.gdshader new file mode 100644 index 0000000..13ce1b1 --- /dev/null +++ b/shaders/simple_water.gdshader @@ -0,0 +1,47 @@ +shader_type spatial; + +uniform sampler2D Depth : hint_depth_texture, repeat_disable, filter_nearest; +uniform sampler3D Noise : repeat_enable; +uniform vec3 Color : source_color = vec3(1.0, 0.5, 0.0); + +void vertex() { + + vec3 sample_pos = TIME * 0.1 + vec3(VERTEX.x, 0, VERTEX.z) * 0.05; + + float sample = texture(Noise, sample_pos).r; + + VERTEX.y += sample; + + float sample_px = texture(Noise, sample_pos + vec3( 0.05, 0, 0)).r; + float sample_nx = texture(Noise, sample_pos + vec3(-0.05, 0, 0)).r; + float sample_pz = texture(Noise, sample_pos + vec3(0, 0, 0.05)).r; + float sample_nz = texture(Noise, sample_pos + vec3(0, 0, -0.05)).r; + + NORMAL = vec3((sample_nx - sample_px) / 2.0, 1.0, (sample_nz - sample_pz) / 2.0); +} + +void fragment() { + + ALBEDO = Color; + + METALLIC = 0.0; + SPECULAR = 1.0; + ROUGHNESS = 0.0; + + // use depth texture to make shallow areas more translucent + float depth = texture(Depth, SCREEN_UV).x; + //vec3 ndc = vec3(SCREEN_UV, depth) * 2.0 - 1.0; + vec3 ndc = vec3(SCREEN_UV * 2.0 - 1.0, depth); + vec4 view = INV_PROJECTION_MATRIX * vec4(ndc, 1.0); + view.xyz /= view.w; + float linear_depth = -view.z; + + float object_depth = FRAGCOORD.z; + //vec3 object_ndc = vec3(SCREEN_UV, object_depth) * 2.0 - 1.0; + vec3 object_ndc = vec3(SCREEN_UV * 2.0 - 1.0, object_depth); + vec4 object_view = INV_PROJECTION_MATRIX * vec4(object_ndc, 1.0); + object_view.xyz /= object_view.w; + float linear_object_depth = -object_view.z; + + ALPHA = (smoothstep(0.0, 4.0, linear_depth - linear_object_depth) + 1.0) / 2.0; +} diff --git a/shaders/simple_water.gdshader.uid b/shaders/simple_water.gdshader.uid new file mode 100644 index 0000000..4cd41bc --- /dev/null +++ b/shaders/simple_water.gdshader.uid @@ -0,0 +1 @@ +uid://b2ualgwboffym diff --git a/shaders/stylized_sky.gdshader b/shaders/stylized_sky.gdshader new file mode 100644 index 0000000..ad90534 --- /dev/null +++ b/shaders/stylized_sky.gdshader @@ -0,0 +1,227 @@ +shader_type sky; +render_mode use_half_res_pass; + +group_uniforms clouds; + +uniform sampler2D cloud_shape_sampler : filter_linear_mipmap_anisotropic, repeat_enable; +uniform sampler2D cloud_noise_sampler : filter_linear_mipmap_anisotropic, repeat_enable; +uniform sampler2D cloud_curves; + +uniform int clouds_samples : hint_range(8, 32, 8) = 16; +uniform int shadow_sample : hint_range(1, 4, 1) = 4; + +uniform float clouds_density : hint_range(0.0, 1.0, 0.1) = 0.5; +uniform float clouds_scale : hint_range(0.5, 1.5, 0.1) = 1.0; +uniform float clouds_smoothness : hint_range(0.01, 0.1, 0.01) = 0.035; +uniform vec3 clouds_light_color : source_color; +uniform float clouds_shadow_intensity : hint_range(0.1, 10.0, 0.1) = 1.0; + +group_uniforms high_clouds; + +uniform sampler2D high_clouds_sampler; +uniform float high_clouds_density : hint_range(0.0, 1.0, 0.05) = 0.0; + +group_uniforms sky; + +uniform vec3 top_color : source_color = vec3(1.0); +uniform vec3 bottom_color : source_color = vec3(1.0); +uniform vec3 sun_scatter : source_color = vec3(1.0); + +group_uniforms astro; + +uniform vec3 astro_tint : source_color; +uniform sampler2D astro_sampler : repeat_disable, filter_linear_mipmap; +uniform float astro_scale : hint_range(0.1, 10.0, 0.1) = 1.0; +uniform float astro_intensity : hint_range(1.0, 3.0, 0.1) = 1.0; + +group_uniforms stars; + +uniform float stars_intensity : hint_range(0.0, 5.0, 0.1) = 0.0; + +group_uniforms shooting_stars; + +uniform float shooting_stars_intensity : hint_range(0.0, 10.0, 0.1) = 0.0; +uniform sampler2D shooting_star_sampler : filter_linear, repeat_disable; +uniform vec3 shooting_star_tint : source_color; + +float rand(float n){return fract(sin(n) * 43758.5453123);} + +// Voronoi method credit: +// The MIT License +// Copyright © 2013 Inigo Quilez +// https://www.shadertoy.com/view/ldl3Dl + +vec3 hash( vec3 x ){ + x = vec3( dot(x,vec3(127.1,311.7, 74.7)), + dot(x,vec3(269.5,183.3,246.1)), + dot(x,vec3(113.5,271.9,124.6))); + return fract(sin(x)*43758.5453123); +} + +vec3 voronoi( in vec3 x ){ + vec3 p = floor( x ); + vec3 f = fract( x ); + + float id = 0.0; + vec2 res = vec2( 100.0 ); + for( int k=-1; k<=1; k++ ) + for( int j=-1; j<=1; j++ ) + for( int i=-1; i<=1; i++ ) { + vec3 b = vec3( float(i), float(j), float(k) ); + vec3 r = vec3( b ) - f + hash( p + b ); + float d = dot( r, r ); + if( d < res.x ) { + id = dot( p+b, vec3(1.0,57.0,113.0 ) ); + res = vec2( d, res.x ); + } else if( d < res.y ) { + res.y = d; + } + } + return vec3( sqrt( res ), abs(id) ); +} + +// https://stackoverflow.com/questions/18558910/direction-vector-to-rotation-matrix + +mat3 direction_to_matrix(vec3 direction) { + vec3 x_axis = normalize(cross(vec3(0.0, 1.0, 0.0), direction)); + vec3 y_axis = normalize(cross(direction, x_axis)); + return mat3(vec3(x_axis.x, y_axis.x, direction.x), + vec3(x_axis.y, y_axis.y, direction.y), + vec3(x_axis.z, y_axis.z, direction.z)); +} + +float cloud_density(vec3 p, float progress){ + float t_o = TIME * 0.001; + float t_o_small = TIME * -0.005; + float noise = texture(cloud_noise_sampler, p.xy * 4.0 + t_o_small).x * 0.1 + 0.9; + float clouds_shape = texture(cloud_shape_sampler, (p.xy + t_o) * clouds_scale).x; + float height_curve = texture(cloud_curves, vec2(progress, 0.0)).x; + float base_density = 1.0 - clouds_density; + float density = + smoothstep(base_density - clouds_smoothness, + base_density + clouds_smoothness, + clouds_shape * noise * height_curve + ); + return density; +} + +vec2 cloud_ray_march(vec3 direction, vec3 sun_direction){ + + float density = 0.0; + float light = 0.0; + + float height = 0.03; + vec3 sample_point = vec3(0.0, 0.0, 2.0); + + int loop_offset = clouds_samples * 3; + + for(int i = loop_offset; i < clouds_samples + loop_offset; i++) { + float progress = float(i) / float(clouds_samples); + sample_point = direction * height * progress; + float point_density = cloud_density(sample_point, progress); + density += point_density; + + float point_light = 0.0; + for(int f = 0; f < shadow_sample; f++){ + float shadow_progress = float(f) / float(shadow_sample); + vec3 shadow_offset = sun_direction * height * shadow_progress; + point_light += cloud_density(sample_point + shadow_offset, progress); + } + light += point_light; + } + return vec2(density, light / float(shadow_sample * clouds_samples)); +} + +vec3 random_direction(float seed){ + float phi = rand(seed) * PI; + float costheta = rand(seed + 100.0) * 2.0 - 1.0; + float theta = acos(costheta); + return vec3( sin(theta) * cos(phi), (theta) * sin(phi), cos(theta) ); +} + +float get_shooting_star(vec3 eyedir){ + float shooting_star = 0.0; + for(int i = 0; i < 4; i++){ + float base_rand = rand(float(i)); + float time = TIME + base_rand * 2.0; + float duration = 0.5 + base_rand; + float seed = floor(time / duration) * duration + base_rand; + float progress = mod(time, duration) / duration; + float rand_value = rand(seed + 100.0); + float rand_scale = base_rand * 10.0; + float a = rand_value * 0.8; + mat3 angle = mat3(vec3(cos(a), -sin(a), 0.0), vec3(sin(a), cos(a), 0.0), vec3(0.0, 0.0, 1.0)); + vec3 shooting_dir = direction_to_matrix(random_direction(seed)) * angle * eyedir; + vec2 shooting_uv = ((shooting_dir.xy + vec2(0.0, progress * 0.4)) * (8.0 + rand_scale)) + vec2(0.5); + + float shooting_mask = ceil( + clamp(shooting_uv.x * (1.0 - shooting_uv.x), 0.0, 1.0) * + clamp(shooting_uv.y * (1.0 - shooting_uv.y), 0.0, 1.0) + ) * ceil(shooting_dir.z); + + shooting_star = clamp( + shooting_star + texture(shooting_star_sampler, shooting_uv).x + * sin(progress * PI) + * shooting_mask * rand_value, + 0.0, 1.0); + } + return clamp(shooting_star, 0.0, 1.0); +} + +void sky() { + + float horizon_mask = abs(EYEDIR.y); + float bottom_mask = smoothstep(0.5, 0.45, SKY_COORDS.y); + + vec3 dir = direction_to_matrix(LIGHT0_DIRECTION) * EYEDIR; + vec2 astro_uv = (-(dir.xy / dir.z) * astro_scale) + vec2(0.5); + float astro_mask = ceil( + clamp(astro_uv.x * (1.0 - astro_uv.x), 0.0, 1.0) * + clamp(astro_uv.y * (1.0 - astro_uv.y), 0.0, 1.0) + ) * ceil(dir.z); + vec4 astro_color = texture(astro_sampler, astro_uv); + + // Sky color + + vec3 sky_gradient = mix(bottom_color.rgb, top_color.rgb, clamp(EYEDIR.y, 0.0, 1.0)); + vec3 sunset_color = sun_scatter * (1.0 - horizon_mask); + vec3 sky_color = clamp(sky_gradient + sunset_color, 0.0, 1.0); + + // Stars + + if(stars_intensity > 0.0){ + vec2 stars = voronoi(EYEDIR * 25.0).xz; + sky_color += smoothstep(0.025 + ((1.0 + sin(TIME + stars.y)) / 2.0) * 0.05, 0.0, stars.x) * stars_intensity; + } + + // Add shooting stars + + if(shooting_stars_intensity > 0.0){ + sky_color += get_shooting_star(EYEDIR) * shooting_stars_intensity * shooting_star_tint; + } + + // Add astro + + sky_color = mix(sky_color, astro_color.rgb * astro_intensity * astro_tint, astro_color.a * astro_mask * bottom_mask); + + // Add high clouds + + if(high_clouds_density > 0.0){ + vec2 high_clouds_uv = (EYEDIR.xz / clamp(EYEDIR.y, 0.0, 1.0)) * 0.25 + TIME * 0.001; + float high_clouds_mask = texture(high_clouds_sampler, high_clouds_uv).x; + sky_color = mix(sky_color, clouds_light_color, smoothstep(0.0, 1.0, high_clouds_mask) * horizon_mask * bottom_mask * high_clouds_density); + } + + // clouds + if (AT_HALF_RES_PASS) { + vec3 clouds_direction = vec3(EYEDIR.xz / clamp(EYEDIR.y, 0.0, 1.0), 1.0); + vec2 clouds = EYEDIR.y > 0.0 ? cloud_ray_march(clouds_direction, LIGHT0_DIRECTION) : vec2(0.0); + + COLOR = mix(bottom_color, clouds_light_color, exp(-clouds.y * clouds_shadow_intensity)); + ALPHA = (1.0 - exp(-clouds.x * horizon_mask * bottom_mask * 10.0)); + + }else{ + COLOR.rgb = mix(sky_color, HALF_RES_COLOR.rgb, HALF_RES_COLOR.a); + } +} + diff --git a/shaders/stylized_sky.gdshader.uid b/shaders/stylized_sky.gdshader.uid new file mode 100644 index 0000000..437ee98 --- /dev/null +++ b/shaders/stylized_sky.gdshader.uid @@ -0,0 +1 @@ +uid://bjansmtqekq7y diff --git a/theater_couch.tscn b/theater_couch.tscn new file mode 100644 index 0000000..cb1bd10 --- /dev/null +++ b/theater_couch.tscn @@ -0,0 +1,37 @@ +[gd_scene load_steps=2 format=3 uid="uid://b5gwysalf0ydr"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_a1h2f"] +albedo_color = Color(0.8653613, 0, 0.17019206, 1) +metallic_specular = 0.0 + +[node name="Theater_Chair" type="Node3D"] + +[node name="CSGBox3D" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.091406286, 0) +use_collision = true +size = Vector3(1.4, 1.6, 3) +material = SubResource("StandardMaterial3D_a1h2f") + +[node name="CSGBox3D" type="CSGBox3D" parent="CSGBox3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.2895213, 0.4298119, 0.004367113) +operation = 2 +size = Vector3(0.83146876, 0.74560547, 2.5) +material = SubResource("StandardMaterial3D_a1h2f") + +[node name="CSGBox3D2" type="CSGBox3D" parent="CSGBox3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.017638564, -0.69731885, 0.10045007) +operation = 2 +size = Vector3(1.4593811, 0.30981445, 2.4574585) +material = SubResource("StandardMaterial3D_a1h2f") + +[node name="CSGBox3D3" type="CSGBox3D" parent="CSGBox3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.29943848, 0.59605277, 1.36994) +operation = 2 +size = Vector3(0.84350586, 0.43554688, 0.29656982) +material = SubResource("StandardMaterial3D_a1h2f") + +[node name="CSGBox3D4" type="CSGBox3D" parent="CSGBox3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.2987671, 0.59605277, -1.4296734) +operation = 2 +size = Vector3(0.84484863, 0.43554688, 0.38305664) +material = SubResource("StandardMaterial3D_a1h2f") diff --git a/videos/Desktop.ogv b/videos/Desktop.ogv new file mode 100644 index 0000000..d63ae3d Binary files /dev/null and b/videos/Desktop.ogv differ diff --git a/videos/Desktop.ogv.uid b/videos/Desktop.ogv.uid new file mode 100644 index 0000000..5438382 --- /dev/null +++ b/videos/Desktop.ogv.uid @@ -0,0 +1 @@ +uid://dphulh88pqy1a