commit b7defbdbfc9ed13fdb87ecadc4bd093ffcc18fed Author: chris bell Date: Fri May 22 23:25:13 2026 -0500 Inital project diff --git a/.envrc b/.envrc new file mode 100644 index 0000000..3550a30 --- /dev/null +++ b/.envrc @@ -0,0 +1 @@ +use flake diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9b42106 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.direnv/ diff --git a/3d_mp_base/.editorconfig b/3d_mp_base/.editorconfig new file mode 100644 index 0000000..f28239b --- /dev/null +++ b/3d_mp_base/.editorconfig @@ -0,0 +1,4 @@ +root = true + +[*] +charset = utf-8 diff --git a/3d_mp_base/.gitattributes b/3d_mp_base/.gitattributes new file mode 100644 index 0000000..8ad74f7 --- /dev/null +++ b/3d_mp_base/.gitattributes @@ -0,0 +1,2 @@ +# Normalize EOL for all files that Git considers text files. +* text=auto eol=lf diff --git a/3d_mp_base/.gitignore b/3d_mp_base/.gitignore new file mode 100644 index 0000000..0af181c --- /dev/null +++ b/3d_mp_base/.gitignore @@ -0,0 +1,3 @@ +# Godot 4+ specific ignores +.godot/ +/android/ diff --git a/3d_mp_base/addons/godotsteam/androidarm64/libgodotsteam.android.template_debug.arm64.so b/3d_mp_base/addons/godotsteam/androidarm64/libgodotsteam.android.template_debug.arm64.so new file mode 100644 index 0000000..5381b65 Binary files /dev/null and b/3d_mp_base/addons/godotsteam/androidarm64/libgodotsteam.android.template_debug.arm64.so differ diff --git a/3d_mp_base/addons/godotsteam/androidarm64/libgodotsteam.android.template_release.arm64.so b/3d_mp_base/addons/godotsteam/androidarm64/libgodotsteam.android.template_release.arm64.so new file mode 100644 index 0000000..a03bd03 Binary files /dev/null and b/3d_mp_base/addons/godotsteam/androidarm64/libgodotsteam.android.template_release.arm64.so differ diff --git a/3d_mp_base/addons/godotsteam/androidarm64/libsteam_api.so b/3d_mp_base/addons/godotsteam/androidarm64/libsteam_api.so new file mode 100644 index 0000000..4c0bd94 Binary files /dev/null and b/3d_mp_base/addons/godotsteam/androidarm64/libsteam_api.so differ diff --git a/3d_mp_base/addons/godotsteam/editor/steamworks_panel.gd b/3d_mp_base/addons/godotsteam/editor/steamworks_panel.gd new file mode 100644 index 0000000..a43b78b --- /dev/null +++ b/3d_mp_base/addons/godotsteam/editor/steamworks_panel.gd @@ -0,0 +1,8 @@ +@tool +extends Control + +@onready var container_frame: VBoxContainer = %ContainerFrame + + +func add_companion_dock(companion_dock: Control) -> void: + container_frame.add_child(companion_dock) diff --git a/3d_mp_base/addons/godotsteam/editor/steamworks_panel.gd.uid b/3d_mp_base/addons/godotsteam/editor/steamworks_panel.gd.uid new file mode 100644 index 0000000..fa8bce3 --- /dev/null +++ b/3d_mp_base/addons/godotsteam/editor/steamworks_panel.gd.uid @@ -0,0 +1 @@ +uid://1oo0gvamoxgp diff --git a/3d_mp_base/addons/godotsteam/editor/steamworks_panel.tscn b/3d_mp_base/addons/godotsteam/editor/steamworks_panel.tscn new file mode 100644 index 0000000..fdaf9c1 --- /dev/null +++ b/3d_mp_base/addons/godotsteam/editor/steamworks_panel.tscn @@ -0,0 +1,125 @@ +[gd_scene load_steps=6 format=3 uid="uid://cyniebd6yahu5"] + +[ext_resource type="Script" uid="uid://1oo0gvamoxgp" path="res://addons/godotsteam/editor/steamworks_panel.gd" id="1_qn6cd"] +[ext_resource type="Script" uid="uid://b4nvgu7h84u53" path="res://addons/godotsteam/editor/updates/updates.gd" id="2_qn6cd"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_qn6cd"] +content_margin_top = 2.0 +content_margin_bottom = 2.0 +bg_color = Color(0.0980392, 0.0980392, 0.0980392, 1) + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_qf1vo"] +content_margin_top = 2.0 +content_margin_bottom = 2.0 +bg_color = Color(0.337255, 0.619608, 1, 1) + +[sub_resource type="Theme" id="Theme_sqmbs"] +ProgressBar/styles/background = SubResource("StyleBoxFlat_qn6cd") +ProgressBar/styles/fill = SubResource("StyleBoxFlat_qf1vo") + +[node name="Steamworks" type="Control"] +process_mode = 3 +custom_minimum_size = Vector2(0, 150) +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_qn6cd") +metadata/_edit_lock_ = true + +[node name="Scroller" type="ScrollContainer" parent="."] +custom_minimum_size = Vector2(0, 150) +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +metadata/_edit_lock_ = true + +[node name="DockFrame" type="TabContainer" parent="Scroller"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +current_tab = 0 +metadata/_edit_lock_ = true + +[node name="Updates" type="MarginContainer" parent="Scroller/DockFrame"] +unique_name_in_owner = true +layout_mode = 2 +theme_override_constants/margin_left = 10 +theme_override_constants/margin_top = 10 +theme_override_constants/margin_right = 10 +theme_override_constants/margin_bottom = 10 +script = ExtResource("2_qn6cd") +metadata/_tab_index = 0 +metadata/_edit_lock_ = true + +[node name="ContainerFrame" type="VBoxContainer" parent="Scroller/DockFrame/Updates"] +unique_name_in_owner = true +layout_mode = 2 +theme_override_constants/separation = 10 +metadata/_edit_lock_ = true + +[node name="HFrame" type="HBoxContainer" parent="Scroller/DockFrame/Updates/ContainerFrame"] +layout_mode = 2 +theme_override_constants/separation = 25 +metadata/_edit_lock_ = true + +[node name="Type" type="Label" parent="Scroller/DockFrame/Updates/ContainerFrame/HFrame"] +custom_minimum_size = Vector2(125, 25) +layout_mode = 2 +text = "GodotSteam" +metadata/_edit_lock_ = true + +[node name="InstalledLabel" type="Label" parent="Scroller/DockFrame/Updates/ContainerFrame/HFrame"] +unique_name_in_owner = true +layout_mode = 2 +text = "Installed version 4.18" +metadata/_edit_lock_ = true + +[node name="UpdateLabel" type="Label" parent="Scroller/DockFrame/Updates/ContainerFrame/HFrame"] +unique_name_in_owner = true +layout_mode = 2 +metadata/_edit_lock_ = true + +[node name="Updating" type="HBoxContainer" parent="Scroller/DockFrame/Updates/ContainerFrame/HFrame"] +layout_mode = 2 +size_flags_horizontal = 10 +theme_override_constants/separation = 25 +metadata/_edit_lock_ = true + +[node name="Downloading" type="ProgressBar" parent="Scroller/DockFrame/Updates/ContainerFrame/HFrame/Updating"] +unique_name_in_owner = true +visible = false +custom_minimum_size = Vector2(200, 30) +layout_mode = 2 +theme = SubResource("Theme_sqmbs") +step = 1.0 +rounded = true +metadata/_edit_lock_ = true + +[node name="InstallButton" type="Button" parent="Scroller/DockFrame/Updates/ContainerFrame/HFrame/Updating"] +unique_name_in_owner = true +visible = false +layout_mode = 2 +text = "Install" +metadata/_edit_lock_ = true + +[node name="UpdateButton" type="Button" parent="Scroller/DockFrame/Updates/ContainerFrame/HFrame/Updating"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 8 +disabled = true +text = "Up-to-date" +metadata/_edit_lock_ = true + +[node name="CancelButton" type="Button" parent="Scroller/DockFrame/Updates/ContainerFrame/HFrame/Updating"] +unique_name_in_owner = true +visible = false +layout_mode = 2 +text = "Cancel" +metadata/_edit_lock_ = true diff --git a/3d_mp_base/addons/godotsteam/editor/ui/steam.svg b/3d_mp_base/addons/godotsteam/editor/ui/steam.svg new file mode 100644 index 0000000..f3daeb9 --- /dev/null +++ b/3d_mp_base/addons/godotsteam/editor/ui/steam.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/3d_mp_base/addons/godotsteam/editor/ui/steam.svg.import b/3d_mp_base/addons/godotsteam/editor/ui/steam.svg.import new file mode 100644 index 0000000..5a52b8c --- /dev/null +++ b/3d_mp_base/addons/godotsteam/editor/ui/steam.svg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dhn3vkdxvetbn" +path="res://.godot/imported/steam.svg-1c1b1c87b286630e8735047e7af015ac.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/godotsteam/editor/ui/steam.svg" +dest_files=["res://.godot/imported/steam.svg-1c1b1c87b286630e8735047e7af015ac.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/3d_mp_base/addons/godotsteam/editor/updates/updates.gd b/3d_mp_base/addons/godotsteam/editor/updates/updates.gd new file mode 100644 index 0000000..c115c31 --- /dev/null +++ b/3d_mp_base/addons/godotsteam/editor/updates/updates.gd @@ -0,0 +1,186 @@ +@tool +extends MarginContainer +### +# Super-huge thanks to Nathan Hoad and Marcus Skov for ideas and inspiration on how to create a +# plug-in updater. +### + +const TEMP_FILE = "user://update.zip" +const VERSION_URL: StringName = "https://godotengine.org/asset-library/api/asset/2445" + +var download_location: String = "" +var downloading_update: bool = false +# This will act as both our version checker and update downloader +var http_request: HTTPRequest = null +var is_actively_downloading: bool = false +var new_version: String = "" + +@onready var cancel_button: Button = %CancelButton +@onready var downloading: ProgressBar = %Downloading +@onready var install_button: Button = %InstallButton +@onready var installed_label: Label = %InstalledLabel +@onready var update_label: Label = %UpdateLabel +@onready var update_button: Button = %UpdateButton + + +func _ready() -> void: + connect_signals() + set_defaults() + check_for_updates() + + +func _process(delta: float) -> void: + if is_actively_downloading: + downloading.value = http_request.get_downloaded_bytes() * 100 / http_request.get_body_size() + + +#region Setup +func set_defaults() -> void: + downloading.value = 0 + installed_label.text = "Installed version %s" % Steam.get_godotsteam_version() + update_button.text = "Up-to-date" + update_button.disabled = true + update_label.text = "" + updating_visibility(false, false, false, true) +#endregion + + +#region Signals +func connect_signals() -> void: + cancel_button.pressed.connect(_on_cancel_pressed) + install_button.pressed.connect(_on_install_pressed) + update_button.pressed.connect(_on_update_pressed) +#endregion + + +#region Checking for updates +func check_for_updates() -> void: + if not ProjectSettings.get_setting("steam/updates/godotsteam/check_for_updates"): + return + + http_request = HTTPRequest.new() + add_child(http_request) + http_request.request_completed.connect(_on_http_request_completed) + if http_request.request(VERSION_URL) != OK: + printerr("Failed to request GodotSteam plug-in remote current version") + + +func _on_http_request_completed(result: int, _response_code: int, _headers: PackedStringArray, body: PackedByteArray) -> void: + http_request.request_completed.disconnect(_on_http_request_completed) + http_request.queue_free() + + if result != HTTPRequest.RESULT_SUCCESS: + return + var response = JSON.parse_string(body.get_string_from_utf8()) + if response == null: + return + + download_location = response.download_url + new_version = response.version_string + + if convert_version(new_version) > convert_version(Steam.get_godotsteam_version()): + print("New GodotSteam version %s available" % new_version) + update_label.text = "New version %s" % new_version + update_button.text = "Download" + update_button.disabled = false +#endregion + + +#region Updating versions +func _on_cancel_pressed() -> void: + updating_visibility(false, false, false, true) + + if is_actively_downloading: + http_request.cancel_request() + http_request.queue_free() + is_actively_downloading = false + update_label.text = "Canceling %s plug-in update download" % new_version + else: + DirAccess.remove_absolute(TEMP_FILE) + update_label.text = "Canceling %s plug-in update and deleting temporary files" % new_version + + update_button.text = "Download" + update_button.disabled = false + update_label.text = "New version %s" % new_version + + +func _on_install_pressed() -> void: + print("Removing older GodotSteam %s plug-in" % Steam.get_godotsteam_version()) + OS.move_to_trash(ProjectSettings.globalize_path("res://addons/godotsteam")) + + update_button.text = "Unpacking" + print("Unpacking new %s plug-in" % new_version) + var zip_reader: ZIPReader = ZIPReader.new() + zip_reader.open(TEMP_FILE) + 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() + restart_post_update() + + +func _on_update_pressed() -> void: + is_actively_downloading = true + update_label.text = "Downloading %s plug-in update, please wait" % new_version + updating_visibility(true, true, false, false) + + http_request = HTTPRequest.new() + add_child(http_request) + http_request.request_completed.connect(_on_download_request_completed) + if http_request.request(download_location) != OK: + printerr("Failed to request %s plug-in update download" % new_version) + is_actively_downloading = false + update_button.text = "Failed" + update_button.disabled = false + return + + +func _on_download_request_completed(result: int, _response_code: int, _headers: PackedStringArray, body: PackedByteArray) -> void: + http_request.request_completed.disconnect(_on_download_request_completed) + http_request.queue_free() + is_actively_downloading = false + updating_visibility(true, false, true, false) + + if result != HTTPRequest.RESULT_SUCCESS: + printerr("Failed to download new GodotSteam version %s" % result) + update_button.disabled = false + return + + update_label.text = "Update downloaded, ready to install %s" % new_version + var zip_file: FileAccess = FileAccess.open(TEMP_FILE, FileAccess.WRITE) + zip_file.store_buffer(body) + zip_file.close() + + +func restart_post_update() -> void: + update_button.text = "Restarting" + update_label.text = "Updated to version %s, restarting the editor" % new_version + DirAccess.remove_absolute(TEMP_FILE) + EditorInterface.restart_editor(true) +#endregion + + +#region Helpers +func convert_version(version_string: String) -> int: + return int(version_string.replace(".", "").rpad(4, "0")) + + +func updating_visibility(cancel: bool, download: bool, install: bool, update: bool) -> void: + cancel_button.visible = cancel + downloading.visible = download + install_button.visible = install + update_button.visible = update +#endregion diff --git a/3d_mp_base/addons/godotsteam/editor/updates/updates.gd.uid b/3d_mp_base/addons/godotsteam/editor/updates/updates.gd.uid new file mode 100644 index 0000000..75d0d30 --- /dev/null +++ b/3d_mp_base/addons/godotsteam/editor/updates/updates.gd.uid @@ -0,0 +1 @@ +uid://b4nvgu7h84u53 diff --git a/3d_mp_base/addons/godotsteam/godotsteam.gdextension b/3d_mp_base/addons/godotsteam/godotsteam.gdextension new file mode 100644 index 0000000..0a2e48b --- /dev/null +++ b/3d_mp_base/addons/godotsteam/godotsteam.gdextension @@ -0,0 +1,29 @@ +[configuration] +entry_symbol = "godotsteam_init" +compatibility_minimum = "4.4" + +[libraries] +android.debug.arm64 = "res://addons/godotsteam/androidarm64/libgodotsteam.android.template_debug.arm64.so" +android.release.arm64 = "res://addons/godotsteam/androidarm64/libgodotsteam.android.template_release.arm64.so" +linux.debug.arm64 = "res://addons/godotsteam/linuxarm64/libgodotsteam.linux.template_debug.arm64.so" +linux.debug.x86_64 = "res://addons/godotsteam/linux64/libgodotsteam.linux.template_debug.x86_64.so" +linux.debug.x86_32 = "res://addons/godotsteam/linux32/libgodotsteam.linux.template_debug.x86_32.so" +linux.release.arm64 = "res://addons/godotsteam/linuxarm64/libgodotsteam.linux.template_release.arm64.so" +linux.release.x86_64 = "res://addons/godotsteam/linux64/libgodotsteam.linux.template_release.x86_64.so" +linux.release.x86_32 = "res://addons/godotsteam/linux32/libgodotsteam.linux.template_release.x86_32.so" +macos.debug = "res://addons/godotsteam/osx/libgodotsteam.macos.template_debug.dylib" +macos.release = "res://addons/godotsteam/osx/libgodotsteam.macos.template_release.dylib" +windows.debug.x86_64 = "res://addons/godotsteam/win64/libgodotsteam.windows.template_debug.x86_64.dll" +windows.debug.x86_32 = "res://addons/godotsteam/win32/libgodotsteam.windows.template_debug.x86_32.dll" +windows.release.x86_64 = "res://addons/godotsteam/win64/libgodotsteam.windows.template_release.x86_64.dll" +windows.release.x86_32 = "res://addons/godotsteam/win32/libgodotsteam.windows.template_release.x86_32.dll" + +[dependencies] +android.arm64 = { "res://addons/godotsteam/androidarm64/libsteam_api.so": "" } +linux.arm64 = { "res://addons/godotsteam/linuxarm64/libsteam_api.so": "" } +linux.x86_64 = { "res://addons/godotsteam/linux64/libsteam_api.so": "" } +linux.x86_32 = { "res://addons/godotsteam/linux32/libsteam_api.so": "" } +macos.universal = { "res://addons/godotsteam/osx/libsteam_api.dylib": "" } +windows.x86_64 = { "res://addons/godotsteam/win64/steam_api64.dll": "" } +windows.x86_32 = { "res://addons/godotsteam/win32/steam_api.dll": "" } + diff --git a/3d_mp_base/addons/godotsteam/godotsteam.gdextension.uid b/3d_mp_base/addons/godotsteam/godotsteam.gdextension.uid new file mode 100644 index 0000000..1ef736c --- /dev/null +++ b/3d_mp_base/addons/godotsteam/godotsteam.gdextension.uid @@ -0,0 +1 @@ +uid://ymub7ogpej12 diff --git a/3d_mp_base/addons/godotsteam/godotsteam_plugin.gd b/3d_mp_base/addons/godotsteam/godotsteam_plugin.gd new file mode 100644 index 0000000..097ca12 --- /dev/null +++ b/3d_mp_base/addons/godotsteam/godotsteam_plugin.gd @@ -0,0 +1,85 @@ +@tool +class_name GodotSteamPlugin +extends EditorPlugin + +const EDITOR_PANEL = preload("uid://cyniebd6yahu5") + +static var dock_frame + +var link_changelog: String = "[url=https://godotsteam.com/changelog/gdextension/]changelog[/url]" +var link_website: String = "[url=https://godotsteam.com]website[/url]" +var steamworks_dock: Control + + +## Used specifically to add/remove additional dock content +static func get_dock_frame() -> Control: + return dock_frame + + +func _enable_plugin() -> void: + print("GodotSteam GDExtension updater functionality enabled") + + +func _disable_plugin() -> void: + print("GodotSteam GDEXtension updater functionality disabled") + + +func _enter_tree() -> void: + print_rich("GodotSteam v%s | %s | %s" % [Steam.get_godotsteam_version(), link_website, link_changelog]) + add_project_settings() + add_steamworks_dock() + + +func _exit_tree() -> void: + remove_steamworks_dock() + + +func _make_visible(visible) -> void: + if steamworks_dock: + steamworks_dock.set_visible(visible) + + +#region Add and remove things +func add_project_settings() -> void: + # Used for the Updater looking for redist files and SteamCMD + if not ProjectSettings.has_setting("steam/updates/godotsteam/check_for_updates"): + ProjectSettings.set_setting("steam/updates/godotsteam/check_for_updates", true) + ProjectSettings.add_property_info({ + "name": "steam/updates/godotsteam/check_for_updates", + "type": TYPE_BOOL + }) + ProjectSettings.set_initial_value("steam/updates/godotsteam/check_for_updates", true) + ProjectSettings.set_as_basic("steam/updates/godotsteam/check_for_updates", true) + # Which channel of updates to pull from + # Sponsors repo should require the user to have access to that repository already + # In theory, they can connect via SSH? + if not ProjectSettings.has_setting("steam/updates/godotsteam/update_channel"): + ProjectSettings.set_setting("steam/updates/godotsteam/update_channel", 0) + ProjectSettings.add_property_info({ + "name": "steam/updates/godotsteam/update_channel", + "type": TYPE_INT, + "hint": PROPERTY_HINT_ENUM, + "hint_string": "Community, Sponsors" + }) + ProjectSettings.set_initial_value("steam/updates/godotsteam/update_channel", 0) + ProjectSettings.set_as_basic("steam/updates/godotsteam/update_channel", true) + + +func add_steamworks_dock() -> void: + steamworks_dock = EDITOR_PANEL.instantiate() + # This will be used when 4.4.x is deprecated + #add_control_to_dock(DockSlot.DOCK_SLOT_BOTTOM, steamworks_dock) + # This is deprecated as of 4.6; when it is removed then 4.4.x will be deprecated for GodotSteam + add_control_to_bottom_panel(steamworks_dock, "Steamworks") + dock_frame = steamworks_dock + + +func remove_steamworks_dock() -> void: + # This will be used when 4.4.x is deprecated + #remove_control_from_docks(steamworks_dock) + # This is deprecated as of 4.6; when it is removed then 4.4.x will be deprecated for GodotSteam + remove_control_from_bottom_panel(steamworks_dock) + steamworks_dock.queue_free() + steamworks_dock = null + dock_frame = null +#endregion diff --git a/3d_mp_base/addons/godotsteam/godotsteam_plugin.gd.uid b/3d_mp_base/addons/godotsteam/godotsteam_plugin.gd.uid new file mode 100644 index 0000000..e46d46d --- /dev/null +++ b/3d_mp_base/addons/godotsteam/godotsteam_plugin.gd.uid @@ -0,0 +1 @@ +uid://btts11rgropcp diff --git a/3d_mp_base/addons/godotsteam/license.md b/3d_mp_base/addons/godotsteam/license.md new file mode 100644 index 0000000..ecadf79 --- /dev/null +++ b/3d_mp_base/addons/godotsteam/license.md @@ -0,0 +1,23 @@ +MIT License + +Copyright (c) 2015-Current | GP Garcia, Chris Ridenour, and Contributors + +View all contributors at https://godotsteam.com/contribute/contributors/ + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/3d_mp_base/addons/godotsteam/linux32/libgodotsteam.linux.template_debug.x86_32.so b/3d_mp_base/addons/godotsteam/linux32/libgodotsteam.linux.template_debug.x86_32.so new file mode 100644 index 0000000..0a672c2 Binary files /dev/null and b/3d_mp_base/addons/godotsteam/linux32/libgodotsteam.linux.template_debug.x86_32.so differ diff --git a/3d_mp_base/addons/godotsteam/linux32/libgodotsteam.linux.template_release.x86_32.so b/3d_mp_base/addons/godotsteam/linux32/libgodotsteam.linux.template_release.x86_32.so new file mode 100644 index 0000000..00eb551 Binary files /dev/null and b/3d_mp_base/addons/godotsteam/linux32/libgodotsteam.linux.template_release.x86_32.so differ diff --git a/3d_mp_base/addons/godotsteam/linux32/libsteam_api.so b/3d_mp_base/addons/godotsteam/linux32/libsteam_api.so new file mode 100644 index 0000000..cd2df7a Binary files /dev/null and b/3d_mp_base/addons/godotsteam/linux32/libsteam_api.so differ diff --git a/3d_mp_base/addons/godotsteam/linux64/libgodotsteam.linux.template_debug.x86_64.so b/3d_mp_base/addons/godotsteam/linux64/libgodotsteam.linux.template_debug.x86_64.so new file mode 100644 index 0000000..650e154 Binary files /dev/null and b/3d_mp_base/addons/godotsteam/linux64/libgodotsteam.linux.template_debug.x86_64.so differ diff --git a/3d_mp_base/addons/godotsteam/linux64/libgodotsteam.linux.template_release.x86_64.so b/3d_mp_base/addons/godotsteam/linux64/libgodotsteam.linux.template_release.x86_64.so new file mode 100644 index 0000000..1f7b5b4 Binary files /dev/null and b/3d_mp_base/addons/godotsteam/linux64/libgodotsteam.linux.template_release.x86_64.so differ diff --git a/3d_mp_base/addons/godotsteam/linux64/libsteam_api.so b/3d_mp_base/addons/godotsteam/linux64/libsteam_api.so new file mode 100644 index 0000000..9a16ad9 Binary files /dev/null and b/3d_mp_base/addons/godotsteam/linux64/libsteam_api.so differ diff --git a/3d_mp_base/addons/godotsteam/linuxarm64/libgodotsteam.linux.template_debug.arm64.so b/3d_mp_base/addons/godotsteam/linuxarm64/libgodotsteam.linux.template_debug.arm64.so new file mode 100644 index 0000000..feb5a68 Binary files /dev/null and b/3d_mp_base/addons/godotsteam/linuxarm64/libgodotsteam.linux.template_debug.arm64.so differ diff --git a/3d_mp_base/addons/godotsteam/linuxarm64/libgodotsteam.linux.template_release.arm64.so b/3d_mp_base/addons/godotsteam/linuxarm64/libgodotsteam.linux.template_release.arm64.so new file mode 100644 index 0000000..524c05c Binary files /dev/null and b/3d_mp_base/addons/godotsteam/linuxarm64/libgodotsteam.linux.template_release.arm64.so differ diff --git a/3d_mp_base/addons/godotsteam/linuxarm64/libsteam_api.so b/3d_mp_base/addons/godotsteam/linuxarm64/libsteam_api.so new file mode 100644 index 0000000..da30b41 Binary files /dev/null and b/3d_mp_base/addons/godotsteam/linuxarm64/libsteam_api.so differ diff --git a/3d_mp_base/addons/godotsteam/osx/libgodotsteam.macos.template_debug.dylib b/3d_mp_base/addons/godotsteam/osx/libgodotsteam.macos.template_debug.dylib new file mode 100644 index 0000000..f9be1f8 Binary files /dev/null and b/3d_mp_base/addons/godotsteam/osx/libgodotsteam.macos.template_debug.dylib differ diff --git a/3d_mp_base/addons/godotsteam/osx/libgodotsteam.macos.template_release.dylib b/3d_mp_base/addons/godotsteam/osx/libgodotsteam.macos.template_release.dylib new file mode 100644 index 0000000..4f91989 Binary files /dev/null and b/3d_mp_base/addons/godotsteam/osx/libgodotsteam.macos.template_release.dylib differ diff --git a/3d_mp_base/addons/godotsteam/osx/libsteam_api.dylib b/3d_mp_base/addons/godotsteam/osx/libsteam_api.dylib new file mode 100644 index 0000000..3e1a940 Binary files /dev/null and b/3d_mp_base/addons/godotsteam/osx/libsteam_api.dylib differ diff --git a/3d_mp_base/addons/godotsteam/plugin.cfg b/3d_mp_base/addons/godotsteam/plugin.cfg new file mode 100644 index 0000000..e1e00c1 --- /dev/null +++ b/3d_mp_base/addons/godotsteam/plugin.cfg @@ -0,0 +1,7 @@ +[plugin] + +name="GodotSteam GDExtension Updater" +description="An updater for GodotSteam GDExtension. This is not required to use Steamworks functionality, just updating the plug-in." +author="Gramps Garcia, GodotSteam" +version="4.18.1" +script="godotsteam_plugin.gd" diff --git a/3d_mp_base/addons/godotsteam/readme.md b/3d_mp_base/addons/godotsteam/readme.md new file mode 100644 index 0000000..5c32d08 --- /dev/null +++ b/3d_mp_base/addons/godotsteam/readme.md @@ -0,0 +1,93 @@ +# GodotSteam for GDExtension | Community Edition +An ecosystem of tools for [Godot Engine](https://godotengine.org) and [Valve's Steam](https://store.steampowered.com). For the Windows, Linux, and Mac platforms. + + +Additional Flavors +--- +Standard Module | Standard Plug-ins | Server Module | Server Plug-ins | Examples +--- | --- | --- | --- | --- +[Godot 2.x](https://codeberg.org/godotsteam/godotsteam/src/branch/godot2) | [GDNative](https://codeberg.org/godotsteam/godotsteam/src/branch/gdnative) | [Server 3.x](https://codeberg.org/godotsteam/godotsteam-server/src/branch/godot3) | [GDNative](https://codeberg.org/godotsteam/godotsteam-server/src/branch/gdnative) | [Skillet](https://codeberg.org/godotsteam/skillet) +[Godot 3.x](https://codeberg.org/godotsteam/godotsteam/src/branch/godot3) | [GDExtension](https://codeberg.org/godotsteam/godotsteam/src/branch/gdextension) | [Server 4.x](https://codeberg.org/godotsteam/godotsteam-server/src/branch/godot4) | [GDExtension](https://codeberg.org/godotsteam/godotsteam-server/src/branch/gdextension) | [Skillet UGC Editor](https://codeberg.org/godotsteam/skillet/src/branch/ugc_editor) +[Godot 4.x](https://codeberg.org/godotsteam/godotsteam/src/branch/godot4) | --- | --- | --- | --- +[MultiplayerPeer](https://codeberg.org/godotsteam/multiplayerpeer)| --- | --- | --- | --- + + +Documentation +--- +[Documentation is available here](https://godotsteam.com/). You can also check out the Search Help section inside Godot Engine. [To start, try checking out our tutorial on initializing Steam.](https://godotsteam.com/tutorials/initializing/) There are additional tutorials, with more in the works. You can also [check out additional Godot and Steam related videos, text, additional tools, plug-ins, etc. here.](https://godotsteam.com/resources/external/) + +Feel free to chat with us about GodotSteam or ask for assistance on the [Stoat server](https://stt.gg/9DxQ3Dcd) or [IRC on Libera Chat](irc://irc.libera.chat/#godotsteam). + + +Donate +--- +Pull-requests are the best way to help the project out but you can also donate through [Github Sponsors](https://github.com/sponsors/Gramps) or [LiberaPay](https://liberapay.com/godotsteam/donate)! [You can read more about donor perks here.](https://godotsteam.com/contribute/donations/) [You can also view all our awesome donors here.](https://godotsteam.com/contribute/donors/) + + +Current Build +--- +You can [download pre-compiled versions of this repo here](https://codeberg.org/godotsteam/godotsteam/releases). + +**Version 4.18.1 Changes** + +- Fixed: dock scripts for Godot 4.4.x - 4.5.x + +[You can read more change-logs here](https://godotsteam.com/changelog/gdextension/). + + +Compatibility +--- +While rare, sometimes Steamworks SDK updates will break compatilibity with older GodotSteam versions. Any compatability breaks are noted below. Newer API files (dll, so, dylib) _should_ still work for older versions. + +Steamworks SDK Version | GodotSteam Version +---|--- +1.63 or newer | 4.17 +1.62 | 4.14 or 4.16.2 +1.61 | 4.12 to 4.13 +1.60 | 4.6 to 4.11 +1.59 | 4.6 to 4.8 +1.58a or older | 4.5.4 or older + +Versions of GodotSteam that have compatibility breaks introduced. + +GodotSteam Version | Broken Compatibility +---|--- +4.8 | Networking identity system removed, replaced with Steam IDs +4.9 | sendMessages returns an Array +4.11 | setLeaderboardDetailsMax removed +4.13 | getItemDefinitionProperty return a dictionary, html_needs_paint key 'bgra' changed to 'rbga' +4.14 | Removed first argument for stat request in steamInit and steamInitEx, steamInit returns intended bool value +4.16 | Variety of small break points, refer to [4.16 changelog for details](https://godotsteam.com/changelog/godot4/) +4.17 | Windows projects using Steam SDK 1.63 are meant to work with Proton 11 or Experimental on Linux / Steam Deck. + + +Known Issues +--- +- GDExtension for 4.4 is **not** compatible with 4.3.x or lower. Please check the versions you are using. +- Overlay will not work in the editor but will work in export projects when uploaded to Steam. This seems to a limitation with Vulkan currently. + + +Quick How-To +--- +For complete instructions on how to build the GDExtension version of GodotSteam, [please refer to our documentation's 'How-To GDExtension' section.](https://godotsteam.com/howto/gdextension/) It will have the most up-to-date information. + +Alternatively, you can just [download the pre-compiled versions in our Releases section](https://codeberg.org/godotsteam/godotsteam/releases) or [from the Godot Asset Library](https://godotengine.org/asset-library/asset/2445) and skip compiling it yourself! + + +Usage +--- +Once the plug-in is added to your project, the Steam class should be available and ready to go. Enabling the plug-in in the ProjectSettings only affects the Steamworks dock and not the actual functionality. + +Do not use the GDExtension version of GodotSteam with any of the module versions whether it be our pre-compiled versions or ones you compile. They are not compatible with each other. + +When exporting with the GDExtension version, please use the normal Godot Engine templates instead of our GodotSteam templates or you will have a lot of issues. + + +No LLM Policy / No "AI" Policy +--- +No LLMs are allowed to be used for issues, patches, or pull-requests. They will be closed or rejected and the submitter may be blocked from future submissions. + + +License +--- +MIT license diff --git a/3d_mp_base/addons/godotsteam/win32/libgodotsteam.windows.template_debug.x86_32.dll b/3d_mp_base/addons/godotsteam/win32/libgodotsteam.windows.template_debug.x86_32.dll new file mode 100644 index 0000000..718907e Binary files /dev/null and b/3d_mp_base/addons/godotsteam/win32/libgodotsteam.windows.template_debug.x86_32.dll differ diff --git a/3d_mp_base/addons/godotsteam/win32/libgodotsteam.windows.template_release.x86_32.dll b/3d_mp_base/addons/godotsteam/win32/libgodotsteam.windows.template_release.x86_32.dll new file mode 100644 index 0000000..739f257 Binary files /dev/null and b/3d_mp_base/addons/godotsteam/win32/libgodotsteam.windows.template_release.x86_32.dll differ diff --git a/3d_mp_base/addons/godotsteam/win32/steam_api.dll b/3d_mp_base/addons/godotsteam/win32/steam_api.dll new file mode 100644 index 0000000..5869b19 Binary files /dev/null and b/3d_mp_base/addons/godotsteam/win32/steam_api.dll differ diff --git a/3d_mp_base/addons/godotsteam/win64/libgodotsteam.windows.template_debug.x86_64.dll b/3d_mp_base/addons/godotsteam/win64/libgodotsteam.windows.template_debug.x86_64.dll new file mode 100644 index 0000000..1e8bc23 Binary files /dev/null and b/3d_mp_base/addons/godotsteam/win64/libgodotsteam.windows.template_debug.x86_64.dll differ diff --git a/3d_mp_base/addons/godotsteam/win64/libgodotsteam.windows.template_release.x86_64.dll b/3d_mp_base/addons/godotsteam/win64/libgodotsteam.windows.template_release.x86_64.dll new file mode 100644 index 0000000..6855333 Binary files /dev/null and b/3d_mp_base/addons/godotsteam/win64/libgodotsteam.windows.template_release.x86_64.dll differ diff --git a/3d_mp_base/addons/godotsteam/win64/steam_api64.dll b/3d_mp_base/addons/godotsteam/win64/steam_api64.dll new file mode 100644 index 0000000..43e7291 Binary files /dev/null and b/3d_mp_base/addons/godotsteam/win64/steam_api64.dll differ diff --git a/3d_mp_base/addons/godotsteam/win64/~libgodotsteam.windows.template_debug.x86_64.dll b/3d_mp_base/addons/godotsteam/win64/~libgodotsteam.windows.template_debug.x86_64.dll new file mode 100644 index 0000000..1e8bc23 Binary files /dev/null and b/3d_mp_base/addons/godotsteam/win64/~libgodotsteam.windows.template_debug.x86_64.dll differ diff --git a/3d_mp_base/addons/godotsteam/win64/~libgodotsteam.windows.template_debug.x86_64.dll~RF1122cb8.TMP b/3d_mp_base/addons/godotsteam/win64/~libgodotsteam.windows.template_debug.x86_64.dll~RF1122cb8.TMP new file mode 100644 index 0000000..1e8bc23 Binary files /dev/null and b/3d_mp_base/addons/godotsteam/win64/~libgodotsteam.windows.template_debug.x86_64.dll~RF1122cb8.TMP differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/LICENSE.txt b/3d_mp_base/addons/kenney_prototype_textures/LICENSE.txt new file mode 100644 index 0000000..839f104 --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/LICENSE.txt @@ -0,0 +1,23 @@ + + + Prototype Textures 1.0 + + Created/distributed by Kenney (www.kenney.nl) + Creation date: 08-04-2020 + + ------------------------------ + + License: (Creative Commons Zero, CC0) + http://creativecommons.org/publicdomain/zero/1.0/ + + This content is free to use in personal, educational and commercial projects. + Support us by crediting Kenney or www.kenney.nl (this is not mandatory) + + ------------------------------ + + Donate: http://support.kenney.nl + Request: http://request.kenney.nl + Patreon: http://patreon.com/kenney/ + + Follow on Twitter for updates: + http://twitter.com/KenneyNL diff --git a/3d_mp_base/addons/kenney_prototype_textures/dark/texture_01.png b/3d_mp_base/addons/kenney_prototype_textures/dark/texture_01.png new file mode 100644 index 0000000..14a9811 Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/dark/texture_01.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/dark/texture_01.png.import b/3d_mp_base/addons/kenney_prototype_textures/dark/texture_01.png.import new file mode 100644 index 0000000..ddabe7b --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/dark/texture_01.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ksjjn5wwyodr" +path.s3tc="res://.godot/imported/texture_01.png-60e3b3d3143b179c069dbcbff77ff160.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/dark/texture_01.png" +dest_files=["res://.godot/imported/texture_01.png-60e3b3d3143b179c069dbcbff77ff160.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/3d_mp_base/addons/kenney_prototype_textures/dark/texture_02.png b/3d_mp_base/addons/kenney_prototype_textures/dark/texture_02.png new file mode 100644 index 0000000..d6a2a21 Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/dark/texture_02.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/dark/texture_02.png.import b/3d_mp_base/addons/kenney_prototype_textures/dark/texture_02.png.import new file mode 100644 index 0000000..d3968ef --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/dark/texture_02.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://sgu4lekykn41" +path="res://.godot/imported/texture_02.png-814d4f515892bb8274d285748f4a73a0.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/dark/texture_02.png" +dest_files=["res://.godot/imported/texture_02.png-814d4f515892bb8274d285748f4a73a0.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/3d_mp_base/addons/kenney_prototype_textures/dark/texture_03.png b/3d_mp_base/addons/kenney_prototype_textures/dark/texture_03.png new file mode 100644 index 0000000..4aa482d Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/dark/texture_03.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/dark/texture_03.png.import b/3d_mp_base/addons/kenney_prototype_textures/dark/texture_03.png.import new file mode 100644 index 0000000..4857881 --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/dark/texture_03.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://kc0yv70aokkv" +path="res://.godot/imported/texture_03.png-eef45c22e5a84c5df22e7f80e41112c6.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/dark/texture_03.png" +dest_files=["res://.godot/imported/texture_03.png-eef45c22e5a84c5df22e7f80e41112c6.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/3d_mp_base/addons/kenney_prototype_textures/dark/texture_04.png b/3d_mp_base/addons/kenney_prototype_textures/dark/texture_04.png new file mode 100644 index 0000000..1e0a8f9 Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/dark/texture_04.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/dark/texture_04.png.import b/3d_mp_base/addons/kenney_prototype_textures/dark/texture_04.png.import new file mode 100644 index 0000000..32ed395 --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/dark/texture_04.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://csljnn1ulbh7i" +path="res://.godot/imported/texture_04.png-af505c12b2a7903458bb29299e718506.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/dark/texture_04.png" +dest_files=["res://.godot/imported/texture_04.png-af505c12b2a7903458bb29299e718506.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/3d_mp_base/addons/kenney_prototype_textures/dark/texture_05.png b/3d_mp_base/addons/kenney_prototype_textures/dark/texture_05.png new file mode 100644 index 0000000..cd01f8c Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/dark/texture_05.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/dark/texture_05.png.import b/3d_mp_base/addons/kenney_prototype_textures/dark/texture_05.png.import new file mode 100644 index 0000000..35a06e8 --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/dark/texture_05.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bpfurh0kpumep" +path.s3tc="res://.godot/imported/texture_05.png-ed8122ecdc41ff5aeccab84e8db1e4f0.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/dark/texture_05.png" +dest_files=["res://.godot/imported/texture_05.png-ed8122ecdc41ff5aeccab84e8db1e4f0.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/3d_mp_base/addons/kenney_prototype_textures/dark/texture_06.png b/3d_mp_base/addons/kenney_prototype_textures/dark/texture_06.png new file mode 100644 index 0000000..4e8f53c Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/dark/texture_06.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/dark/texture_06.png.import b/3d_mp_base/addons/kenney_prototype_textures/dark/texture_06.png.import new file mode 100644 index 0000000..4771d56 --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/dark/texture_06.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://di4utnjj4asne" +path="res://.godot/imported/texture_06.png-004ed3d5b88361cdfb83a20714e917e7.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/dark/texture_06.png" +dest_files=["res://.godot/imported/texture_06.png-004ed3d5b88361cdfb83a20714e917e7.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/3d_mp_base/addons/kenney_prototype_textures/dark/texture_07.png b/3d_mp_base/addons/kenney_prototype_textures/dark/texture_07.png new file mode 100644 index 0000000..d00973e Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/dark/texture_07.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/dark/texture_07.png.import b/3d_mp_base/addons/kenney_prototype_textures/dark/texture_07.png.import new file mode 100644 index 0000000..68615cd --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/dark/texture_07.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://o60urqpvjr38" +path="res://.godot/imported/texture_07.png-7c77ff22e41b4a54319073cb71530d81.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/dark/texture_07.png" +dest_files=["res://.godot/imported/texture_07.png-7c77ff22e41b4a54319073cb71530d81.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/3d_mp_base/addons/kenney_prototype_textures/dark/texture_08.png b/3d_mp_base/addons/kenney_prototype_textures/dark/texture_08.png new file mode 100644 index 0000000..72dd6c0 Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/dark/texture_08.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/dark/texture_08.png.import b/3d_mp_base/addons/kenney_prototype_textures/dark/texture_08.png.import new file mode 100644 index 0000000..c1ece3b --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/dark/texture_08.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://jy1ub24sclc" +path.s3tc="res://.godot/imported/texture_08.png-5883ddd047173c8b118ead887054e6fc.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/dark/texture_08.png" +dest_files=["res://.godot/imported/texture_08.png-5883ddd047173c8b118ead887054e6fc.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/3d_mp_base/addons/kenney_prototype_textures/dark/texture_09.png b/3d_mp_base/addons/kenney_prototype_textures/dark/texture_09.png new file mode 100644 index 0000000..e81fa1a Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/dark/texture_09.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/dark/texture_09.png.import b/3d_mp_base/addons/kenney_prototype_textures/dark/texture_09.png.import new file mode 100644 index 0000000..4f6e46f --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/dark/texture_09.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://mxbbkfyn3lbi" +path="res://.godot/imported/texture_09.png-8e25cd5657e2d326068eb27bfa1aacec.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/dark/texture_09.png" +dest_files=["res://.godot/imported/texture_09.png-8e25cd5657e2d326068eb27bfa1aacec.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/3d_mp_base/addons/kenney_prototype_textures/dark/texture_10.png b/3d_mp_base/addons/kenney_prototype_textures/dark/texture_10.png new file mode 100644 index 0000000..682088c Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/dark/texture_10.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/dark/texture_10.png.import b/3d_mp_base/addons/kenney_prototype_textures/dark/texture_10.png.import new file mode 100644 index 0000000..ec34aaa --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/dark/texture_10.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dro6kh42rdsm0" +path="res://.godot/imported/texture_10.png-1e788999a192eabd201c3b3435475799.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/dark/texture_10.png" +dest_files=["res://.godot/imported/texture_10.png-1e788999a192eabd201c3b3435475799.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/3d_mp_base/addons/kenney_prototype_textures/dark/texture_11.png b/3d_mp_base/addons/kenney_prototype_textures/dark/texture_11.png new file mode 100644 index 0000000..f0571a1 Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/dark/texture_11.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/dark/texture_11.png.import b/3d_mp_base/addons/kenney_prototype_textures/dark/texture_11.png.import new file mode 100644 index 0000000..b73f9ec --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/dark/texture_11.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://72auojriev8j" +path="res://.godot/imported/texture_11.png-f61ad46caf1a41d85454e490ec43c8ec.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/dark/texture_11.png" +dest_files=["res://.godot/imported/texture_11.png-f61ad46caf1a41d85454e490ec43c8ec.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/3d_mp_base/addons/kenney_prototype_textures/dark/texture_12.png b/3d_mp_base/addons/kenney_prototype_textures/dark/texture_12.png new file mode 100644 index 0000000..b797dbe Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/dark/texture_12.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/dark/texture_12.png.import b/3d_mp_base/addons/kenney_prototype_textures/dark/texture_12.png.import new file mode 100644 index 0000000..5402425 --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/dark/texture_12.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dycx5ogps8xyl" +path="res://.godot/imported/texture_12.png-aa893b2c5354267551e55ec14bb1999b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/dark/texture_12.png" +dest_files=["res://.godot/imported/texture_12.png-aa893b2c5354267551e55ec14bb1999b.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/3d_mp_base/addons/kenney_prototype_textures/dark/texture_13.png b/3d_mp_base/addons/kenney_prototype_textures/dark/texture_13.png new file mode 100644 index 0000000..6e8aff4 Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/dark/texture_13.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/dark/texture_13.png.import b/3d_mp_base/addons/kenney_prototype_textures/dark/texture_13.png.import new file mode 100644 index 0000000..23a3a7a --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/dark/texture_13.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b4c38n5051fc6" +path="res://.godot/imported/texture_13.png-51cb3f38ea774c85cb3ad561d20c5b53.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/dark/texture_13.png" +dest_files=["res://.godot/imported/texture_13.png-51cb3f38ea774c85cb3ad561d20c5b53.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/3d_mp_base/addons/kenney_prototype_textures/green/texture_01.png b/3d_mp_base/addons/kenney_prototype_textures/green/texture_01.png new file mode 100644 index 0000000..7d53fe7 Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/green/texture_01.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/green/texture_01.png.import b/3d_mp_base/addons/kenney_prototype_textures/green/texture_01.png.import new file mode 100644 index 0000000..39d0ba4 --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/green/texture_01.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d1yt4o5veco2r" +path="res://.godot/imported/texture_01.png-94ebd82494c839e91a05b9e1cc2750ca.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/green/texture_01.png" +dest_files=["res://.godot/imported/texture_01.png-94ebd82494c839e91a05b9e1cc2750ca.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/3d_mp_base/addons/kenney_prototype_textures/green/texture_02.png b/3d_mp_base/addons/kenney_prototype_textures/green/texture_02.png new file mode 100644 index 0000000..15ceaa8 Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/green/texture_02.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/green/texture_02.png.import b/3d_mp_base/addons/kenney_prototype_textures/green/texture_02.png.import new file mode 100644 index 0000000..a9b9961 --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/green/texture_02.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b5bmcbphgtrj5" +path="res://.godot/imported/texture_02.png-aa1bb055b55bdc7c20e196b7286eebdf.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/green/texture_02.png" +dest_files=["res://.godot/imported/texture_02.png-aa1bb055b55bdc7c20e196b7286eebdf.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/3d_mp_base/addons/kenney_prototype_textures/green/texture_03.png b/3d_mp_base/addons/kenney_prototype_textures/green/texture_03.png new file mode 100644 index 0000000..90eedc6 Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/green/texture_03.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/green/texture_03.png.import b/3d_mp_base/addons/kenney_prototype_textures/green/texture_03.png.import new file mode 100644 index 0000000..7b7e095 --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/green/texture_03.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c2w3dsfqiieab" +path="res://.godot/imported/texture_03.png-3fec31a20982e9bd2e5e1aa731ea99cf.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/green/texture_03.png" +dest_files=["res://.godot/imported/texture_03.png-3fec31a20982e9bd2e5e1aa731ea99cf.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/3d_mp_base/addons/kenney_prototype_textures/green/texture_04.png b/3d_mp_base/addons/kenney_prototype_textures/green/texture_04.png new file mode 100644 index 0000000..aed20f4 Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/green/texture_04.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/green/texture_04.png.import b/3d_mp_base/addons/kenney_prototype_textures/green/texture_04.png.import new file mode 100644 index 0000000..f75513d --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/green/texture_04.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://oxlx7snn3cxn" +path="res://.godot/imported/texture_04.png-4678cc1dfb831f775bdc30cfd7f78769.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/green/texture_04.png" +dest_files=["res://.godot/imported/texture_04.png-4678cc1dfb831f775bdc30cfd7f78769.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/3d_mp_base/addons/kenney_prototype_textures/green/texture_05.png b/3d_mp_base/addons/kenney_prototype_textures/green/texture_05.png new file mode 100644 index 0000000..c89df69 Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/green/texture_05.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/green/texture_05.png.import b/3d_mp_base/addons/kenney_prototype_textures/green/texture_05.png.import new file mode 100644 index 0000000..366dc97 --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/green/texture_05.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://mr0c1hosidms" +path="res://.godot/imported/texture_05.png-8448519b39c1d98d64cf807b48969765.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/green/texture_05.png" +dest_files=["res://.godot/imported/texture_05.png-8448519b39c1d98d64cf807b48969765.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/3d_mp_base/addons/kenney_prototype_textures/green/texture_06.png b/3d_mp_base/addons/kenney_prototype_textures/green/texture_06.png new file mode 100644 index 0000000..59e0df0 Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/green/texture_06.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/green/texture_06.png.import b/3d_mp_base/addons/kenney_prototype_textures/green/texture_06.png.import new file mode 100644 index 0000000..9149729 --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/green/texture_06.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://x11wwdvvrknp" +path="res://.godot/imported/texture_06.png-01c48f82ab8bc613ec4efc2c2c669b12.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/green/texture_06.png" +dest_files=["res://.godot/imported/texture_06.png-01c48f82ab8bc613ec4efc2c2c669b12.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/3d_mp_base/addons/kenney_prototype_textures/green/texture_07.png b/3d_mp_base/addons/kenney_prototype_textures/green/texture_07.png new file mode 100644 index 0000000..7a4bdaf Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/green/texture_07.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/green/texture_07.png.import b/3d_mp_base/addons/kenney_prototype_textures/green/texture_07.png.import new file mode 100644 index 0000000..2d76aae --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/green/texture_07.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ds2e3i3sd4bra" +path="res://.godot/imported/texture_07.png-eec10b758cacbb71a02166a7f8cee6c0.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/green/texture_07.png" +dest_files=["res://.godot/imported/texture_07.png-eec10b758cacbb71a02166a7f8cee6c0.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/3d_mp_base/addons/kenney_prototype_textures/green/texture_08.png b/3d_mp_base/addons/kenney_prototype_textures/green/texture_08.png new file mode 100644 index 0000000..8e4f320 Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/green/texture_08.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/green/texture_08.png.import b/3d_mp_base/addons/kenney_prototype_textures/green/texture_08.png.import new file mode 100644 index 0000000..3b9184b --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/green/texture_08.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bq7c4k0fs8dl7" +path="res://.godot/imported/texture_08.png-d1888869b0d1d3a0ab2d517cbac7820a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/green/texture_08.png" +dest_files=["res://.godot/imported/texture_08.png-d1888869b0d1d3a0ab2d517cbac7820a.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/3d_mp_base/addons/kenney_prototype_textures/green/texture_09.png b/3d_mp_base/addons/kenney_prototype_textures/green/texture_09.png new file mode 100644 index 0000000..0a7eddb Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/green/texture_09.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/green/texture_09.png.import b/3d_mp_base/addons/kenney_prototype_textures/green/texture_09.png.import new file mode 100644 index 0000000..b8fbbb7 --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/green/texture_09.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c4j2xxxpvx2e5" +path="res://.godot/imported/texture_09.png-a21adfe1a090b0dd8f0d376d9ee5f68e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/green/texture_09.png" +dest_files=["res://.godot/imported/texture_09.png-a21adfe1a090b0dd8f0d376d9ee5f68e.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/3d_mp_base/addons/kenney_prototype_textures/green/texture_10.png b/3d_mp_base/addons/kenney_prototype_textures/green/texture_10.png new file mode 100644 index 0000000..559a7c1 Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/green/texture_10.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/green/texture_10.png.import b/3d_mp_base/addons/kenney_prototype_textures/green/texture_10.png.import new file mode 100644 index 0000000..f73027a --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/green/texture_10.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://1sxxrch7he6t" +path="res://.godot/imported/texture_10.png-3f72abba172432380bd86a508e997833.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/green/texture_10.png" +dest_files=["res://.godot/imported/texture_10.png-3f72abba172432380bd86a508e997833.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/3d_mp_base/addons/kenney_prototype_textures/green/texture_11.png b/3d_mp_base/addons/kenney_prototype_textures/green/texture_11.png new file mode 100644 index 0000000..119294d Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/green/texture_11.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/green/texture_11.png.import b/3d_mp_base/addons/kenney_prototype_textures/green/texture_11.png.import new file mode 100644 index 0000000..07d9a43 --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/green/texture_11.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://2puy2ow8odco" +path="res://.godot/imported/texture_11.png-ad76ef70f9eb459fb1e8d9ba9cc092c4.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/green/texture_11.png" +dest_files=["res://.godot/imported/texture_11.png-ad76ef70f9eb459fb1e8d9ba9cc092c4.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/3d_mp_base/addons/kenney_prototype_textures/green/texture_12.png b/3d_mp_base/addons/kenney_prototype_textures/green/texture_12.png new file mode 100644 index 0000000..5991228 Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/green/texture_12.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/green/texture_12.png.import b/3d_mp_base/addons/kenney_prototype_textures/green/texture_12.png.import new file mode 100644 index 0000000..e79ca77 --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/green/texture_12.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d0h6n6r8yruw5" +path="res://.godot/imported/texture_12.png-d4577347200436d9060aa21fce76cd93.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/green/texture_12.png" +dest_files=["res://.godot/imported/texture_12.png-d4577347200436d9060aa21fce76cd93.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/3d_mp_base/addons/kenney_prototype_textures/green/texture_13.png b/3d_mp_base/addons/kenney_prototype_textures/green/texture_13.png new file mode 100644 index 0000000..9c57c6e Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/green/texture_13.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/green/texture_13.png.import b/3d_mp_base/addons/kenney_prototype_textures/green/texture_13.png.import new file mode 100644 index 0000000..c72fce5 --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/green/texture_13.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b61en7bchso0o" +path="res://.godot/imported/texture_13.png-f5b9867fd39cd83793f3a92217d9eac6.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/green/texture_13.png" +dest_files=["res://.godot/imported/texture_13.png-f5b9867fd39cd83793f3a92217d9eac6.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/3d_mp_base/addons/kenney_prototype_textures/light/texture_01.png b/3d_mp_base/addons/kenney_prototype_textures/light/texture_01.png new file mode 100644 index 0000000..9e93d3e Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/light/texture_01.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/light/texture_01.png.import b/3d_mp_base/addons/kenney_prototype_textures/light/texture_01.png.import new file mode 100644 index 0000000..29d8754 --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/light/texture_01.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bhytiwtxnkd3f" +path="res://.godot/imported/texture_01.png-e10423e44834e1b4a90c3134e446b32d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/light/texture_01.png" +dest_files=["res://.godot/imported/texture_01.png-e10423e44834e1b4a90c3134e446b32d.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/3d_mp_base/addons/kenney_prototype_textures/light/texture_02.png b/3d_mp_base/addons/kenney_prototype_textures/light/texture_02.png new file mode 100644 index 0000000..c52d0d2 Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/light/texture_02.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/light/texture_02.png.import b/3d_mp_base/addons/kenney_prototype_textures/light/texture_02.png.import new file mode 100644 index 0000000..2232739 --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/light/texture_02.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bwye6yfyfpi7n" +path="res://.godot/imported/texture_02.png-ffde4d38b35463525c3815b255790206.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/light/texture_02.png" +dest_files=["res://.godot/imported/texture_02.png-ffde4d38b35463525c3815b255790206.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/3d_mp_base/addons/kenney_prototype_textures/light/texture_03.png b/3d_mp_base/addons/kenney_prototype_textures/light/texture_03.png new file mode 100644 index 0000000..5960eca Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/light/texture_03.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/light/texture_03.png.import b/3d_mp_base/addons/kenney_prototype_textures/light/texture_03.png.import new file mode 100644 index 0000000..3de5628 --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/light/texture_03.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dgso28egy4e60" +path="res://.godot/imported/texture_03.png-6e55012c4e1c3f4d809747f3852d75ad.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/light/texture_03.png" +dest_files=["res://.godot/imported/texture_03.png-6e55012c4e1c3f4d809747f3852d75ad.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/3d_mp_base/addons/kenney_prototype_textures/light/texture_04.png b/3d_mp_base/addons/kenney_prototype_textures/light/texture_04.png new file mode 100644 index 0000000..0b9a1d5 Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/light/texture_04.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/light/texture_04.png.import b/3d_mp_base/addons/kenney_prototype_textures/light/texture_04.png.import new file mode 100644 index 0000000..fe4610c --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/light/texture_04.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dnp6qkgfedcfj" +path="res://.godot/imported/texture_04.png-201edfe05d5c4f7f54049864048cfaf1.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/light/texture_04.png" +dest_files=["res://.godot/imported/texture_04.png-201edfe05d5c4f7f54049864048cfaf1.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/3d_mp_base/addons/kenney_prototype_textures/light/texture_05.png b/3d_mp_base/addons/kenney_prototype_textures/light/texture_05.png new file mode 100644 index 0000000..88f2e5c Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/light/texture_05.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/light/texture_05.png.import b/3d_mp_base/addons/kenney_prototype_textures/light/texture_05.png.import new file mode 100644 index 0000000..36e3c14 --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/light/texture_05.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cox0q0nadcw2g" +path="res://.godot/imported/texture_05.png-07ce2eafef84a176bcf77bc59cb1f6ec.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/light/texture_05.png" +dest_files=["res://.godot/imported/texture_05.png-07ce2eafef84a176bcf77bc59cb1f6ec.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/3d_mp_base/addons/kenney_prototype_textures/light/texture_06.png b/3d_mp_base/addons/kenney_prototype_textures/light/texture_06.png new file mode 100644 index 0000000..374a5d0 Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/light/texture_06.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/light/texture_06.png.import b/3d_mp_base/addons/kenney_prototype_textures/light/texture_06.png.import new file mode 100644 index 0000000..52b21e2 --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/light/texture_06.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://7t6tspd4oq1x" +path="res://.godot/imported/texture_06.png-88331a9f246e47943dc01d0128a4ca4e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/light/texture_06.png" +dest_files=["res://.godot/imported/texture_06.png-88331a9f246e47943dc01d0128a4ca4e.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/3d_mp_base/addons/kenney_prototype_textures/light/texture_07.png b/3d_mp_base/addons/kenney_prototype_textures/light/texture_07.png new file mode 100644 index 0000000..34400e3 Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/light/texture_07.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/light/texture_07.png.import b/3d_mp_base/addons/kenney_prototype_textures/light/texture_07.png.import new file mode 100644 index 0000000..8b41521 --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/light/texture_07.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b4mew0nedf2lu" +path="res://.godot/imported/texture_07.png-ab5f4a6ad655d06104ea7939a06ec496.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/light/texture_07.png" +dest_files=["res://.godot/imported/texture_07.png-ab5f4a6ad655d06104ea7939a06ec496.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/3d_mp_base/addons/kenney_prototype_textures/light/texture_08.png b/3d_mp_base/addons/kenney_prototype_textures/light/texture_08.png new file mode 100644 index 0000000..c5bbc74 Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/light/texture_08.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/light/texture_08.png.import b/3d_mp_base/addons/kenney_prototype_textures/light/texture_08.png.import new file mode 100644 index 0000000..bd72aca --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/light/texture_08.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b8140ultj7um8" +path="res://.godot/imported/texture_08.png-7b5c5c16cd076d2bbc9eeb33a454861b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/light/texture_08.png" +dest_files=["res://.godot/imported/texture_08.png-7b5c5c16cd076d2bbc9eeb33a454861b.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/3d_mp_base/addons/kenney_prototype_textures/light/texture_09.png b/3d_mp_base/addons/kenney_prototype_textures/light/texture_09.png new file mode 100644 index 0000000..435e19e Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/light/texture_09.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/light/texture_09.png.import b/3d_mp_base/addons/kenney_prototype_textures/light/texture_09.png.import new file mode 100644 index 0000000..53981ea --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/light/texture_09.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dil1ji7u57a7u" +path="res://.godot/imported/texture_09.png-53f655f3d7e1722128f99e8aff9071f9.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/light/texture_09.png" +dest_files=["res://.godot/imported/texture_09.png-53f655f3d7e1722128f99e8aff9071f9.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/3d_mp_base/addons/kenney_prototype_textures/light/texture_10.png b/3d_mp_base/addons/kenney_prototype_textures/light/texture_10.png new file mode 100644 index 0000000..25ac8ae Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/light/texture_10.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/light/texture_10.png.import b/3d_mp_base/addons/kenney_prototype_textures/light/texture_10.png.import new file mode 100644 index 0000000..f7b13e2 --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/light/texture_10.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://vsqppley8g3l" +path="res://.godot/imported/texture_10.png-499479b9aaf089d55adf67874bc0ff66.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/light/texture_10.png" +dest_files=["res://.godot/imported/texture_10.png-499479b9aaf089d55adf67874bc0ff66.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/3d_mp_base/addons/kenney_prototype_textures/light/texture_11.png b/3d_mp_base/addons/kenney_prototype_textures/light/texture_11.png new file mode 100644 index 0000000..7d4aebb Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/light/texture_11.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/light/texture_11.png.import b/3d_mp_base/addons/kenney_prototype_textures/light/texture_11.png.import new file mode 100644 index 0000000..7f52ffb --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/light/texture_11.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://qhxypfrhsd8g" +path="res://.godot/imported/texture_11.png-4e4ade9ab136614b6cf0b0e879f1d510.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/light/texture_11.png" +dest_files=["res://.godot/imported/texture_11.png-4e4ade9ab136614b6cf0b0e879f1d510.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/3d_mp_base/addons/kenney_prototype_textures/light/texture_12.png b/3d_mp_base/addons/kenney_prototype_textures/light/texture_12.png new file mode 100644 index 0000000..6bd3926 Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/light/texture_12.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/light/texture_12.png.import b/3d_mp_base/addons/kenney_prototype_textures/light/texture_12.png.import new file mode 100644 index 0000000..de781eb --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/light/texture_12.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://md548afpujsl" +path="res://.godot/imported/texture_12.png-8fe800bbb69d01cae0c0d84c062244bf.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/light/texture_12.png" +dest_files=["res://.godot/imported/texture_12.png-8fe800bbb69d01cae0c0d84c062244bf.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/3d_mp_base/addons/kenney_prototype_textures/light/texture_13.png b/3d_mp_base/addons/kenney_prototype_textures/light/texture_13.png new file mode 100644 index 0000000..74515a7 Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/light/texture_13.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/light/texture_13.png.import b/3d_mp_base/addons/kenney_prototype_textures/light/texture_13.png.import new file mode 100644 index 0000000..f746438 --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/light/texture_13.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d37q4idxqar5h" +path="res://.godot/imported/texture_13.png-a43b6ac63b0fe1c4a3f66335474e59b6.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/light/texture_13.png" +dest_files=["res://.godot/imported/texture_13.png-a43b6ac63b0fe1c4a3f66335474e59b6.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/3d_mp_base/addons/kenney_prototype_textures/orange/texture_01.png b/3d_mp_base/addons/kenney_prototype_textures/orange/texture_01.png new file mode 100644 index 0000000..3eda5cd Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/orange/texture_01.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/orange/texture_01.png.import b/3d_mp_base/addons/kenney_prototype_textures/orange/texture_01.png.import new file mode 100644 index 0000000..2c53e32 --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/orange/texture_01.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://jwpoqkahqp3t" +path="res://.godot/imported/texture_01.png-2bf7db98e09b5b5073e8e8ca66419718.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/orange/texture_01.png" +dest_files=["res://.godot/imported/texture_01.png-2bf7db98e09b5b5073e8e8ca66419718.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/3d_mp_base/addons/kenney_prototype_textures/orange/texture_02.png b/3d_mp_base/addons/kenney_prototype_textures/orange/texture_02.png new file mode 100644 index 0000000..1460f2b Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/orange/texture_02.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/orange/texture_02.png.import b/3d_mp_base/addons/kenney_prototype_textures/orange/texture_02.png.import new file mode 100644 index 0000000..f6f11b1 --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/orange/texture_02.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b3lan1628qnn4" +path="res://.godot/imported/texture_02.png-4eab4e19c2171e5b0668b65373b74c6d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/orange/texture_02.png" +dest_files=["res://.godot/imported/texture_02.png-4eab4e19c2171e5b0668b65373b74c6d.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/3d_mp_base/addons/kenney_prototype_textures/orange/texture_03.png b/3d_mp_base/addons/kenney_prototype_textures/orange/texture_03.png new file mode 100644 index 0000000..09975cc Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/orange/texture_03.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/orange/texture_03.png.import b/3d_mp_base/addons/kenney_prototype_textures/orange/texture_03.png.import new file mode 100644 index 0000000..4a5ee01 --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/orange/texture_03.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c8mlp3cbfw5v8" +path="res://.godot/imported/texture_03.png-129b8387293b325752961580c78873e2.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/orange/texture_03.png" +dest_files=["res://.godot/imported/texture_03.png-129b8387293b325752961580c78873e2.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/3d_mp_base/addons/kenney_prototype_textures/orange/texture_04.png b/3d_mp_base/addons/kenney_prototype_textures/orange/texture_04.png new file mode 100644 index 0000000..8ac9527 Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/orange/texture_04.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/orange/texture_04.png.import b/3d_mp_base/addons/kenney_prototype_textures/orange/texture_04.png.import new file mode 100644 index 0000000..62d7d5b --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/orange/texture_04.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://h1rfbxaup65t" +path="res://.godot/imported/texture_04.png-e978f0e00463b6cfc60da06ec0abdb7a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/orange/texture_04.png" +dest_files=["res://.godot/imported/texture_04.png-e978f0e00463b6cfc60da06ec0abdb7a.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/3d_mp_base/addons/kenney_prototype_textures/orange/texture_05.png b/3d_mp_base/addons/kenney_prototype_textures/orange/texture_05.png new file mode 100644 index 0000000..e7bb6d9 Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/orange/texture_05.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/orange/texture_05.png.import b/3d_mp_base/addons/kenney_prototype_textures/orange/texture_05.png.import new file mode 100644 index 0000000..9e4fc3d --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/orange/texture_05.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c2mde7a3g1o21" +path="res://.godot/imported/texture_05.png-57f4196ea276097368d03084372aa101.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/orange/texture_05.png" +dest_files=["res://.godot/imported/texture_05.png-57f4196ea276097368d03084372aa101.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/3d_mp_base/addons/kenney_prototype_textures/orange/texture_06.png b/3d_mp_base/addons/kenney_prototype_textures/orange/texture_06.png new file mode 100644 index 0000000..2a18cf7 Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/orange/texture_06.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/orange/texture_06.png.import b/3d_mp_base/addons/kenney_prototype_textures/orange/texture_06.png.import new file mode 100644 index 0000000..3ecb534 --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/orange/texture_06.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://calsyy8bhx2fu" +path="res://.godot/imported/texture_06.png-96fbf63c84855b5763ca7a9239b4162f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/orange/texture_06.png" +dest_files=["res://.godot/imported/texture_06.png-96fbf63c84855b5763ca7a9239b4162f.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/3d_mp_base/addons/kenney_prototype_textures/orange/texture_07.png b/3d_mp_base/addons/kenney_prototype_textures/orange/texture_07.png new file mode 100644 index 0000000..0d1f229 Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/orange/texture_07.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/orange/texture_07.png.import b/3d_mp_base/addons/kenney_prototype_textures/orange/texture_07.png.import new file mode 100644 index 0000000..c7a66fa --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/orange/texture_07.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c6w4r1jfa73y7" +path="res://.godot/imported/texture_07.png-3fa938673385861e205adbc05b5cb69f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/orange/texture_07.png" +dest_files=["res://.godot/imported/texture_07.png-3fa938673385861e205adbc05b5cb69f.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/3d_mp_base/addons/kenney_prototype_textures/orange/texture_08.png b/3d_mp_base/addons/kenney_prototype_textures/orange/texture_08.png new file mode 100644 index 0000000..b53b56d Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/orange/texture_08.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/orange/texture_08.png.import b/3d_mp_base/addons/kenney_prototype_textures/orange/texture_08.png.import new file mode 100644 index 0000000..3c9c323 --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/orange/texture_08.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://di337vmopjxma" +path="res://.godot/imported/texture_08.png-9f039f47cba295ef5881d7b94c369b5d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/orange/texture_08.png" +dest_files=["res://.godot/imported/texture_08.png-9f039f47cba295ef5881d7b94c369b5d.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/3d_mp_base/addons/kenney_prototype_textures/orange/texture_09.png b/3d_mp_base/addons/kenney_prototype_textures/orange/texture_09.png new file mode 100644 index 0000000..a7f8b0b Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/orange/texture_09.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/orange/texture_09.png.import b/3d_mp_base/addons/kenney_prototype_textures/orange/texture_09.png.import new file mode 100644 index 0000000..264d07c --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/orange/texture_09.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ce0jkcqe5wxf5" +path="res://.godot/imported/texture_09.png-d3e0d0da868b68102c983480f9cde71d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/orange/texture_09.png" +dest_files=["res://.godot/imported/texture_09.png-d3e0d0da868b68102c983480f9cde71d.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/3d_mp_base/addons/kenney_prototype_textures/orange/texture_10.png b/3d_mp_base/addons/kenney_prototype_textures/orange/texture_10.png new file mode 100644 index 0000000..979733a Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/orange/texture_10.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/orange/texture_10.png.import b/3d_mp_base/addons/kenney_prototype_textures/orange/texture_10.png.import new file mode 100644 index 0000000..3a0f593 --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/orange/texture_10.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c3x0ypwysruo" +path="res://.godot/imported/texture_10.png-6f0f09db66c0562f01b2d2954722e3af.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/orange/texture_10.png" +dest_files=["res://.godot/imported/texture_10.png-6f0f09db66c0562f01b2d2954722e3af.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/3d_mp_base/addons/kenney_prototype_textures/orange/texture_11.png b/3d_mp_base/addons/kenney_prototype_textures/orange/texture_11.png new file mode 100644 index 0000000..d52081b Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/orange/texture_11.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/orange/texture_11.png.import b/3d_mp_base/addons/kenney_prototype_textures/orange/texture_11.png.import new file mode 100644 index 0000000..33c47b3 --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/orange/texture_11.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dwchubabobkj0" +path="res://.godot/imported/texture_11.png-ebf2797e5f22648b239ddd9dce347372.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/orange/texture_11.png" +dest_files=["res://.godot/imported/texture_11.png-ebf2797e5f22648b239ddd9dce347372.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/3d_mp_base/addons/kenney_prototype_textures/orange/texture_12.png b/3d_mp_base/addons/kenney_prototype_textures/orange/texture_12.png new file mode 100644 index 0000000..b7e5781 Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/orange/texture_12.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/orange/texture_12.png.import b/3d_mp_base/addons/kenney_prototype_textures/orange/texture_12.png.import new file mode 100644 index 0000000..341e8a3 --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/orange/texture_12.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cgse0sv0eam8i" +path="res://.godot/imported/texture_12.png-079a27ce3f0ee0e1854090577bd0ba2a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/orange/texture_12.png" +dest_files=["res://.godot/imported/texture_12.png-079a27ce3f0ee0e1854090577bd0ba2a.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/3d_mp_base/addons/kenney_prototype_textures/orange/texture_13.png b/3d_mp_base/addons/kenney_prototype_textures/orange/texture_13.png new file mode 100644 index 0000000..57dba8c Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/orange/texture_13.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/orange/texture_13.png.import b/3d_mp_base/addons/kenney_prototype_textures/orange/texture_13.png.import new file mode 100644 index 0000000..f3ce5c6 --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/orange/texture_13.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bywoonxvnyoh3" +path="res://.godot/imported/texture_13.png-a11a0cfe132bc07bf4c480fd4334a284.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/orange/texture_13.png" +dest_files=["res://.godot/imported/texture_13.png-a11a0cfe132bc07bf4c480fd4334a284.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/3d_mp_base/addons/kenney_prototype_textures/purple/texture_01.png b/3d_mp_base/addons/kenney_prototype_textures/purple/texture_01.png new file mode 100644 index 0000000..7c56da6 Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/purple/texture_01.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/purple/texture_01.png.import b/3d_mp_base/addons/kenney_prototype_textures/purple/texture_01.png.import new file mode 100644 index 0000000..fe1e77c --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/purple/texture_01.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d0x8llxd670sv" +path.s3tc="res://.godot/imported/texture_01.png-38f28acdb9a95ea2efd835531b47e519.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/purple/texture_01.png" +dest_files=["res://.godot/imported/texture_01.png-38f28acdb9a95ea2efd835531b47e519.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/3d_mp_base/addons/kenney_prototype_textures/purple/texture_02.png b/3d_mp_base/addons/kenney_prototype_textures/purple/texture_02.png new file mode 100644 index 0000000..e6e092e Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/purple/texture_02.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/purple/texture_02.png.import b/3d_mp_base/addons/kenney_prototype_textures/purple/texture_02.png.import new file mode 100644 index 0000000..326566e --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/purple/texture_02.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bd7webytsslb0" +path="res://.godot/imported/texture_02.png-fcb52d424cd62d43221e4153fa3176f8.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/purple/texture_02.png" +dest_files=["res://.godot/imported/texture_02.png-fcb52d424cd62d43221e4153fa3176f8.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/3d_mp_base/addons/kenney_prototype_textures/purple/texture_03.png b/3d_mp_base/addons/kenney_prototype_textures/purple/texture_03.png new file mode 100644 index 0000000..3874868 Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/purple/texture_03.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/purple/texture_03.png.import b/3d_mp_base/addons/kenney_prototype_textures/purple/texture_03.png.import new file mode 100644 index 0000000..881b8cd --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/purple/texture_03.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://1gw8u4lfyvmj" +path="res://.godot/imported/texture_03.png-10a2d13d96fe9dba00c822080243f048.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/purple/texture_03.png" +dest_files=["res://.godot/imported/texture_03.png-10a2d13d96fe9dba00c822080243f048.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/3d_mp_base/addons/kenney_prototype_textures/purple/texture_04.png b/3d_mp_base/addons/kenney_prototype_textures/purple/texture_04.png new file mode 100644 index 0000000..6177824 Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/purple/texture_04.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/purple/texture_04.png.import b/3d_mp_base/addons/kenney_prototype_textures/purple/texture_04.png.import new file mode 100644 index 0000000..6b5aaa5 --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/purple/texture_04.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cv0n5hkm1vnl3" +path="res://.godot/imported/texture_04.png-6783bd4aa338a51e03fa71a2a0ba6c73.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/purple/texture_04.png" +dest_files=["res://.godot/imported/texture_04.png-6783bd4aa338a51e03fa71a2a0ba6c73.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/3d_mp_base/addons/kenney_prototype_textures/purple/texture_05.png b/3d_mp_base/addons/kenney_prototype_textures/purple/texture_05.png new file mode 100644 index 0000000..5b82830 Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/purple/texture_05.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/purple/texture_05.png.import b/3d_mp_base/addons/kenney_prototype_textures/purple/texture_05.png.import new file mode 100644 index 0000000..e293f63 --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/purple/texture_05.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c157mmowbi7oa" +path="res://.godot/imported/texture_05.png-888b467a21712cbc594106138f9173b8.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/purple/texture_05.png" +dest_files=["res://.godot/imported/texture_05.png-888b467a21712cbc594106138f9173b8.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/3d_mp_base/addons/kenney_prototype_textures/purple/texture_06.png b/3d_mp_base/addons/kenney_prototype_textures/purple/texture_06.png new file mode 100644 index 0000000..befbe88 Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/purple/texture_06.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/purple/texture_06.png.import b/3d_mp_base/addons/kenney_prototype_textures/purple/texture_06.png.import new file mode 100644 index 0000000..6b477a6 --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/purple/texture_06.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bpcmd1ah7jgo4" +path="res://.godot/imported/texture_06.png-352782bc60b4b3fe4a632b0a6af5553d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/purple/texture_06.png" +dest_files=["res://.godot/imported/texture_06.png-352782bc60b4b3fe4a632b0a6af5553d.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/3d_mp_base/addons/kenney_prototype_textures/purple/texture_07.png b/3d_mp_base/addons/kenney_prototype_textures/purple/texture_07.png new file mode 100644 index 0000000..a0c9df1 Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/purple/texture_07.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/purple/texture_07.png.import b/3d_mp_base/addons/kenney_prototype_textures/purple/texture_07.png.import new file mode 100644 index 0000000..1ceb98f --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/purple/texture_07.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://qxnw0xgg5s6q" +path="res://.godot/imported/texture_07.png-042b529a59b56931d5b854290aa24a7f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/purple/texture_07.png" +dest_files=["res://.godot/imported/texture_07.png-042b529a59b56931d5b854290aa24a7f.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/3d_mp_base/addons/kenney_prototype_textures/purple/texture_08.png b/3d_mp_base/addons/kenney_prototype_textures/purple/texture_08.png new file mode 100644 index 0000000..eb556d6 Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/purple/texture_08.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/purple/texture_08.png.import b/3d_mp_base/addons/kenney_prototype_textures/purple/texture_08.png.import new file mode 100644 index 0000000..e9d82d9 --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/purple/texture_08.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cqqquogfeyvup" +path="res://.godot/imported/texture_08.png-ae3e54cc23ad438ea83a8932fe526f9f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/purple/texture_08.png" +dest_files=["res://.godot/imported/texture_08.png-ae3e54cc23ad438ea83a8932fe526f9f.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/3d_mp_base/addons/kenney_prototype_textures/purple/texture_09.png b/3d_mp_base/addons/kenney_prototype_textures/purple/texture_09.png new file mode 100644 index 0000000..c831a43 Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/purple/texture_09.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/purple/texture_09.png.import b/3d_mp_base/addons/kenney_prototype_textures/purple/texture_09.png.import new file mode 100644 index 0000000..b842c3c --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/purple/texture_09.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://blokb1k2i4sgh" +path="res://.godot/imported/texture_09.png-bfc57ad7b0bd0aecb6d4584eb0197660.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/purple/texture_09.png" +dest_files=["res://.godot/imported/texture_09.png-bfc57ad7b0bd0aecb6d4584eb0197660.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/3d_mp_base/addons/kenney_prototype_textures/purple/texture_10.png b/3d_mp_base/addons/kenney_prototype_textures/purple/texture_10.png new file mode 100644 index 0000000..95be188 Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/purple/texture_10.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/purple/texture_10.png.import b/3d_mp_base/addons/kenney_prototype_textures/purple/texture_10.png.import new file mode 100644 index 0000000..8042515 --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/purple/texture_10.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dii8yvl0wsxqu" +path="res://.godot/imported/texture_10.png-6ebba9cac53386550299b9fc7ba436fd.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/purple/texture_10.png" +dest_files=["res://.godot/imported/texture_10.png-6ebba9cac53386550299b9fc7ba436fd.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/3d_mp_base/addons/kenney_prototype_textures/purple/texture_11.png b/3d_mp_base/addons/kenney_prototype_textures/purple/texture_11.png new file mode 100644 index 0000000..b1c3704 Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/purple/texture_11.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/purple/texture_11.png.import b/3d_mp_base/addons/kenney_prototype_textures/purple/texture_11.png.import new file mode 100644 index 0000000..52e0843 --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/purple/texture_11.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bqc5jh5j86sk3" +path="res://.godot/imported/texture_11.png-0fd2ee750e7568773caf6d873885f437.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/purple/texture_11.png" +dest_files=["res://.godot/imported/texture_11.png-0fd2ee750e7568773caf6d873885f437.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/3d_mp_base/addons/kenney_prototype_textures/purple/texture_12.png b/3d_mp_base/addons/kenney_prototype_textures/purple/texture_12.png new file mode 100644 index 0000000..0269e59 Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/purple/texture_12.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/purple/texture_12.png.import b/3d_mp_base/addons/kenney_prototype_textures/purple/texture_12.png.import new file mode 100644 index 0000000..ae3cc3f --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/purple/texture_12.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dam8q0wsh6yc" +path="res://.godot/imported/texture_12.png-8a7cfbfe5b83f5813249f6314841357c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/purple/texture_12.png" +dest_files=["res://.godot/imported/texture_12.png-8a7cfbfe5b83f5813249f6314841357c.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/3d_mp_base/addons/kenney_prototype_textures/purple/texture_13.png b/3d_mp_base/addons/kenney_prototype_textures/purple/texture_13.png new file mode 100644 index 0000000..3b944cb Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/purple/texture_13.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/purple/texture_13.png.import b/3d_mp_base/addons/kenney_prototype_textures/purple/texture_13.png.import new file mode 100644 index 0000000..21164d2 --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/purple/texture_13.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://qwwrl0p2ijno" +path="res://.godot/imported/texture_13.png-ae54826bbb20288cf5ae03de2f2de21d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/purple/texture_13.png" +dest_files=["res://.godot/imported/texture_13.png-ae54826bbb20288cf5ae03de2f2de21d.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/3d_mp_base/addons/kenney_prototype_textures/red/texture_01.png b/3d_mp_base/addons/kenney_prototype_textures/red/texture_01.png new file mode 100644 index 0000000..1f9c506 Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/red/texture_01.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/red/texture_01.png.import b/3d_mp_base/addons/kenney_prototype_textures/red/texture_01.png.import new file mode 100644 index 0000000..0bd0f2c --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/red/texture_01.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cvopdw2yahdp8" +path.s3tc="res://.godot/imported/texture_01.png-44f9331a67ce6f062549bc436289d3c9.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/red/texture_01.png" +dest_files=["res://.godot/imported/texture_01.png-44f9331a67ce6f062549bc436289d3c9.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/3d_mp_base/addons/kenney_prototype_textures/red/texture_02.png b/3d_mp_base/addons/kenney_prototype_textures/red/texture_02.png new file mode 100644 index 0000000..12e67bc Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/red/texture_02.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/red/texture_02.png.import b/3d_mp_base/addons/kenney_prototype_textures/red/texture_02.png.import new file mode 100644 index 0000000..fea9187 --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/red/texture_02.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ccrg252ix5iqm" +path="res://.godot/imported/texture_02.png-bb6eefc15212ba5b8098e9e672c21f12.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/red/texture_02.png" +dest_files=["res://.godot/imported/texture_02.png-bb6eefc15212ba5b8098e9e672c21f12.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/3d_mp_base/addons/kenney_prototype_textures/red/texture_03.png b/3d_mp_base/addons/kenney_prototype_textures/red/texture_03.png new file mode 100644 index 0000000..11a9f85 Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/red/texture_03.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/red/texture_03.png.import b/3d_mp_base/addons/kenney_prototype_textures/red/texture_03.png.import new file mode 100644 index 0000000..616ff1d --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/red/texture_03.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://n5ar5gjakg0j" +path="res://.godot/imported/texture_03.png-dcaf463e914c7896b38a95f49416e75a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/red/texture_03.png" +dest_files=["res://.godot/imported/texture_03.png-dcaf463e914c7896b38a95f49416e75a.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/3d_mp_base/addons/kenney_prototype_textures/red/texture_04.png b/3d_mp_base/addons/kenney_prototype_textures/red/texture_04.png new file mode 100644 index 0000000..0ebe2fb Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/red/texture_04.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/red/texture_04.png.import b/3d_mp_base/addons/kenney_prototype_textures/red/texture_04.png.import new file mode 100644 index 0000000..09c0320 --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/red/texture_04.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cf3xowndc0vo2" +path="res://.godot/imported/texture_04.png-1d63b32ccdbf1561b92a917dfb5f84ea.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/red/texture_04.png" +dest_files=["res://.godot/imported/texture_04.png-1d63b32ccdbf1561b92a917dfb5f84ea.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/3d_mp_base/addons/kenney_prototype_textures/red/texture_05.png b/3d_mp_base/addons/kenney_prototype_textures/red/texture_05.png new file mode 100644 index 0000000..038af13 Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/red/texture_05.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/red/texture_05.png.import b/3d_mp_base/addons/kenney_prototype_textures/red/texture_05.png.import new file mode 100644 index 0000000..4c230b9 --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/red/texture_05.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d3bmxdoku46yn" +path="res://.godot/imported/texture_05.png-a44b3d75bc02c9b33606b6fe46e8c886.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/red/texture_05.png" +dest_files=["res://.godot/imported/texture_05.png-a44b3d75bc02c9b33606b6fe46e8c886.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/3d_mp_base/addons/kenney_prototype_textures/red/texture_06.png b/3d_mp_base/addons/kenney_prototype_textures/red/texture_06.png new file mode 100644 index 0000000..4239985 Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/red/texture_06.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/red/texture_06.png.import b/3d_mp_base/addons/kenney_prototype_textures/red/texture_06.png.import new file mode 100644 index 0000000..756c183 --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/red/texture_06.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ccgab1tdpp6xf" +path="res://.godot/imported/texture_06.png-566b521660a0c01cabf8778c12eb1f51.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/red/texture_06.png" +dest_files=["res://.godot/imported/texture_06.png-566b521660a0c01cabf8778c12eb1f51.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/3d_mp_base/addons/kenney_prototype_textures/red/texture_07.png b/3d_mp_base/addons/kenney_prototype_textures/red/texture_07.png new file mode 100644 index 0000000..99dcffd Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/red/texture_07.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/red/texture_07.png.import b/3d_mp_base/addons/kenney_prototype_textures/red/texture_07.png.import new file mode 100644 index 0000000..e5f4aa4 --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/red/texture_07.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bjce7ll4ftssq" +path="res://.godot/imported/texture_07.png-ba1d32ad61ab49ac0edaf4930e4d081f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/red/texture_07.png" +dest_files=["res://.godot/imported/texture_07.png-ba1d32ad61ab49ac0edaf4930e4d081f.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/3d_mp_base/addons/kenney_prototype_textures/red/texture_08.png b/3d_mp_base/addons/kenney_prototype_textures/red/texture_08.png new file mode 100644 index 0000000..45ebb31 Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/red/texture_08.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/red/texture_08.png.import b/3d_mp_base/addons/kenney_prototype_textures/red/texture_08.png.import new file mode 100644 index 0000000..5faf5a3 --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/red/texture_08.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://tkp03umn2aya" +path="res://.godot/imported/texture_08.png-add0c08e78cde6ad4eaac64e7b9a9204.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/red/texture_08.png" +dest_files=["res://.godot/imported/texture_08.png-add0c08e78cde6ad4eaac64e7b9a9204.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/3d_mp_base/addons/kenney_prototype_textures/red/texture_09.png b/3d_mp_base/addons/kenney_prototype_textures/red/texture_09.png new file mode 100644 index 0000000..347aad7 Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/red/texture_09.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/red/texture_09.png.import b/3d_mp_base/addons/kenney_prototype_textures/red/texture_09.png.import new file mode 100644 index 0000000..56c3062 --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/red/texture_09.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cwqy0e0bojjg" +path="res://.godot/imported/texture_09.png-4fe3f0e3bd94fb29789b41c9100c3ac9.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/red/texture_09.png" +dest_files=["res://.godot/imported/texture_09.png-4fe3f0e3bd94fb29789b41c9100c3ac9.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/3d_mp_base/addons/kenney_prototype_textures/red/texture_10.png b/3d_mp_base/addons/kenney_prototype_textures/red/texture_10.png new file mode 100644 index 0000000..3448667 Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/red/texture_10.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/red/texture_10.png.import b/3d_mp_base/addons/kenney_prototype_textures/red/texture_10.png.import new file mode 100644 index 0000000..ab77c85 --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/red/texture_10.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://5bwk75cxeaab" +path="res://.godot/imported/texture_10.png-6fd251723c4fc19b26785b571c62b6ac.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/red/texture_10.png" +dest_files=["res://.godot/imported/texture_10.png-6fd251723c4fc19b26785b571c62b6ac.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/3d_mp_base/addons/kenney_prototype_textures/red/texture_11.png b/3d_mp_base/addons/kenney_prototype_textures/red/texture_11.png new file mode 100644 index 0000000..3cfb7f6 Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/red/texture_11.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/red/texture_11.png.import b/3d_mp_base/addons/kenney_prototype_textures/red/texture_11.png.import new file mode 100644 index 0000000..9e2115f --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/red/texture_11.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b3ej15xkc538i" +path="res://.godot/imported/texture_11.png-44ab559d4c1ab996ce064426a9e01b38.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/red/texture_11.png" +dest_files=["res://.godot/imported/texture_11.png-44ab559d4c1ab996ce064426a9e01b38.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/3d_mp_base/addons/kenney_prototype_textures/red/texture_12.png b/3d_mp_base/addons/kenney_prototype_textures/red/texture_12.png new file mode 100644 index 0000000..d247946 Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/red/texture_12.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/red/texture_12.png.import b/3d_mp_base/addons/kenney_prototype_textures/red/texture_12.png.import new file mode 100644 index 0000000..4cbf601 --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/red/texture_12.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://2hhqs77vtnxf" +path="res://.godot/imported/texture_12.png-6af19821abb02cb29bb6ed24ee4670e0.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/red/texture_12.png" +dest_files=["res://.godot/imported/texture_12.png-6af19821abb02cb29bb6ed24ee4670e0.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/3d_mp_base/addons/kenney_prototype_textures/red/texture_13.png b/3d_mp_base/addons/kenney_prototype_textures/red/texture_13.png new file mode 100644 index 0000000..9154c3b Binary files /dev/null and b/3d_mp_base/addons/kenney_prototype_textures/red/texture_13.png differ diff --git a/3d_mp_base/addons/kenney_prototype_textures/red/texture_13.png.import b/3d_mp_base/addons/kenney_prototype_textures/red/texture_13.png.import new file mode 100644 index 0000000..42b9674 --- /dev/null +++ b/3d_mp_base/addons/kenney_prototype_textures/red/texture_13.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dmmjn5vb7vntd" +path="res://.godot/imported/texture_13.png-891332ffbf32d9b94212aaf3a11a15a9.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/kenney_prototype_textures/red/texture_13.png" +dest_files=["res://.godot/imported/texture_13.png-891332ffbf32d9b94212aaf3a11a15a9.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/3d_mp_base/default_bus_layout.tres b/3d_mp_base/default_bus_layout.tres new file mode 100644 index 0000000..09cfa05 --- /dev/null +++ b/3d_mp_base/default_bus_layout.tres @@ -0,0 +1,47 @@ +[gd_resource type="AudioBusLayout" format=3 uid="uid://c0s3iu6aklhlo"] + +[sub_resource type="AudioEffectStereoEnhance" id="AudioEffectStereoEnhance_j3pel"] +resource_name = "StereoEnhance" + +[sub_resource type="AudioEffectLimiter" id="AudioEffectLimiter_j3pel"] +resource_name = "Limiter" +ceiling_db = -0.2 + +[sub_resource type="AudioEffectReverb" id="AudioEffectReverb_j3pel"] +resource_name = "Reverb" + +[sub_resource type="AudioEffectLimiter" id="AudioEffectLimiter_g28q7"] +resource_name = "Limiter" +ceiling_db = -0.2 + +[resource] +bus/1/name = &"VoiceChatBus" +bus/1/solo = false +bus/1/mute = false +bus/1/bypass_fx = false +bus/1/volume_db = 0.0 +bus/1/send = &"Master" +bus/1/effect/0/effect = SubResource("AudioEffectStereoEnhance_j3pel") +bus/1/effect/0/enabled = true +bus/1/effect/1/effect = SubResource("AudioEffectLimiter_j3pel") +bus/1/effect/1/enabled = true +bus/2/name = &"VoiceChatEchoBus" +bus/2/solo = false +bus/2/mute = false +bus/2/bypass_fx = false +bus/2/volume_db = -4.002995 +bus/2/send = &"Master" +bus/2/effect/0/effect = SubResource("AudioEffectStereoEnhance_j3pel") +bus/2/effect/0/enabled = true +bus/2/effect/1/effect = SubResource("AudioEffectLimiter_j3pel") +bus/2/effect/1/enabled = true +bus/2/effect/2/effect = SubResource("AudioEffectReverb_j3pel") +bus/2/effect/2/enabled = true +bus/3/name = &"VoiceChatLoopbackBus" +bus/3/solo = false +bus/3/mute = false +bus/3/bypass_fx = false +bus/3/volume_db = -11.951987 +bus/3/send = &"Master" +bus/3/effect/0/effect = SubResource("AudioEffectLimiter_g28q7") +bus/3/effect/0/enabled = true diff --git a/3d_mp_base/export_presets.cfg b/3d_mp_base/export_presets.cfg new file mode 100644 index 0000000..7c6bbf5 --- /dev/null +++ b/3d_mp_base/export_presets.cfg @@ -0,0 +1,118 @@ +[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="C:/Users/wisen/Downloads/MultiplayerBase.zip" +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="" +application/product_name="" +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="../../mp_base_exports/linux/MultiplayerBase.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=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" +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 +pkill -x -f \"{temp_dir}/{exe_name} {cmd_args}\" +rm -rf \"{temp_dir}\"" diff --git a/3d_mp_base/icon.svg b/3d_mp_base/icon.svg new file mode 100644 index 0000000..c6bbb7d --- /dev/null +++ b/3d_mp_base/icon.svg @@ -0,0 +1 @@ + diff --git a/3d_mp_base/icon.svg.import b/3d_mp_base/icon.svg.import new file mode 100644 index 0000000..f0f1291 --- /dev/null +++ b/3d_mp_base/icon.svg.import @@ -0,0 +1,44 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://blpnie21uplx7" +path.s3tc="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://icon.svg" +dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/3d_mp_base/project.godot b/3d_mp_base/project.godot new file mode 100644 index 0000000..dfb063b --- /dev/null +++ b/3d_mp_base/project.godot @@ -0,0 +1,115 @@ +; 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 + +[application] + +config/name="3D_MP_Base" +run/main_scene="uid://ibtqgabhcw6p" +config/features=PackedStringArray("4.6", "Forward Plus") +config/icon="res://icon.svg" + +[audio] + +buses/default_bus_layout="uid://c0s3iu6aklhlo" + +[autoload] + +Steamworks="*uid://6im158hn15uv" +NetworkManager="*uid://ff235q5xbiie" +GameManager="*uid://qvw0khflh6bq" + +[file_customization] + +folder_colors={ +"res://assets/": "yellow", +"res://scenes/": "blue", +"res://scripts/": "purple" +} + +[global] + +push_to_talk=false + +[global_group] + +goal="" + +[input] + +left={ +"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":65,"key_label":0,"unicode":97,"location":0,"echo":false,"script":null) +] +} +right={ +"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":68,"key_label":0,"unicode":100,"location":0,"echo":false,"script":null) +] +} +forward={ +"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":87,"key_label":0,"unicode":119,"location":0,"echo":false,"script":null) +] +} +backwards={ +"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":83,"key_label":0,"unicode":115,"location":0,"echo":false,"script":null) +] +} +jump={ +"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":32,"key_label":0,"unicode":32,"location":0,"echo":false,"script":null) +] +} +menu={ +"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) +] +} +fire={ +"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":1,"position":Vector2(227, 9),"global_position":Vector2(236, 57),"factor":1.0,"button_index":1,"canceled":false,"pressed":true,"double_click":true,"script":null) +] +} +interact={ +"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":69,"key_label":0,"unicode":101,"location":0,"echo":false,"script":null) +] +} +toggle_chat={ +"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":84,"key_label":0,"unicode":116,"location":0,"echo":false,"script":null) +] +} +push_to_talk={ +"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":86,"key_label":0,"unicode":118,"location":0,"echo":false,"script":null) +] +} +voice_toggle={ +"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":78,"key_label":0,"unicode":110,"location":0,"echo":false,"script":null) +] +} + +[physics] + +3d/physics_engine="Jolt Physics" + +[rendering] + +rendering_device/driver.windows="d3d12" + +[steam] + +initialization/app_id=480 +initialization/initialize_on_startup=false +initialization/embed_callbacks=true +multiplayer_peer/max_channels=4 diff --git a/3d_mp_base/scenes/entities/ball.gd b/3d_mp_base/scenes/entities/ball.gd new file mode 100644 index 0000000..a02c0c9 --- /dev/null +++ b/3d_mp_base/scenes/entities/ball.gd @@ -0,0 +1,13 @@ +extends RigidBody3D + +@onready var area_3d: Area3D = %Area3D + + +func _ready() -> void: + area_3d.body_entered.connect(_on_area_3d_body_entered) + get_tree().create_timer(60).timeout.connect(func(): queue_free()) + + +func _on_area_3d_body_entered(body: Node3D) -> void: + if body.is_in_group("goal"): + queue_free() diff --git a/3d_mp_base/scenes/entities/ball.gd.uid b/3d_mp_base/scenes/entities/ball.gd.uid new file mode 100644 index 0000000..7bacf97 --- /dev/null +++ b/3d_mp_base/scenes/entities/ball.gd.uid @@ -0,0 +1 @@ +uid://crvfs5rlkh3qt diff --git a/3d_mp_base/scenes/entities/ball.tscn b/3d_mp_base/scenes/entities/ball.tscn new file mode 100644 index 0000000..d6c3b9b --- /dev/null +++ b/3d_mp_base/scenes/entities/ball.tscn @@ -0,0 +1,48 @@ +[gd_scene format=3 uid="uid://dpcnrigmslqkt"] + +[ext_resource type="Script" uid="uid://crvfs5rlkh3qt" path="res://scenes/entities/ball.gd" id="1_1pamd"] +[ext_resource type="Texture2D" uid="uid://cvopdw2yahdp8" path="res://addons/kenney_prototype_textures/red/texture_01.png" id="1_u0o5v"] + +[sub_resource type="PhysicsMaterial" id="PhysicsMaterial_u0o5v"] +bounce = 5.0 + +[sub_resource type="SphereShape3D" id="SphereShape3D_1pamd"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_rlpj1"] +albedo_texture = ExtResource("1_u0o5v") +uv1_triplanar = true + +[sub_resource type="SphereMesh" id="SphereMesh_wha2l"] +material = SubResource("StandardMaterial3D_rlpj1") + +[sub_resource type="SceneReplicationConfig" id="SceneReplicationConfig_u0o5v"] +properties/0/path = NodePath(".:rotation") +properties/0/spawn = true +properties/0/replication_mode = 1 +properties/1/path = NodePath(".:position") +properties/1/spawn = true +properties/1/replication_mode = 1 + +[sub_resource type="SphereShape3D" id="SphereShape3D_u0o5v"] +radius = 0.6 + +[node name="Ball" type="RigidBody3D" unique_id=799966824] +collision_layer = 2 +collision_mask = 3 +physics_material_override = SubResource("PhysicsMaterial_u0o5v") +script = ExtResource("1_1pamd") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="." unique_id=1633801294] +shape = SubResource("SphereShape3D_1pamd") + +[node name="MeshInstance3D" type="MeshInstance3D" parent="." unique_id=1029757699] +mesh = SubResource("SphereMesh_wha2l") + +[node name="MultiplayerSynchronizer" type="MultiplayerSynchronizer" parent="." unique_id=223233635] +replication_config = SubResource("SceneReplicationConfig_u0o5v") + +[node name="Area3D" type="Area3D" parent="." unique_id=1926680041] +unique_name_in_owner = true + +[node name="CollisionShape3D" type="CollisionShape3D" parent="Area3D" unique_id=1533869654] +shape = SubResource("SphereShape3D_u0o5v") diff --git a/3d_mp_base/scenes/keybinds.txt b/3d_mp_base/scenes/keybinds.txt new file mode 100644 index 0000000..d38b032 --- /dev/null +++ b/3d_mp_base/scenes/keybinds.txt @@ -0,0 +1,5 @@ +esc - (cancel/return) +e - spawn ball +v - push to talk +n - toggle open mic +t - open chat diff --git a/3d_mp_base/scenes/main.tscn b/3d_mp_base/scenes/main.tscn new file mode 100644 index 0000000..c82c457 --- /dev/null +++ b/3d_mp_base/scenes/main.tscn @@ -0,0 +1,11 @@ +[gd_scene format=3 uid="uid://ibtqgabhcw6p"] + +[ext_resource type="PackedScene" uid="uid://vrgbtswm2ko5" path="res://scenes/ui/main_menu.tscn" id="1_o5qli"] +[ext_resource type="PackedScene" uid="uid://bg2q2emiroavd" path="res://scenes/ui/chat.tscn" id="2_0wfyh"] + +[node name="Main" type="Node" unique_id=829705955] + +[node name="MainMenu" parent="." unique_id=1371882812 instance=ExtResource("1_o5qli")] + +[node name="Chat" parent="." unique_id=1028379683 instance=ExtResource("2_0wfyh")] +visible = false diff --git a/3d_mp_base/scenes/player/player.gd b/3d_mp_base/scenes/player/player.gd new file mode 100644 index 0000000..29688eb --- /dev/null +++ b/3d_mp_base/scenes/player/player.gd @@ -0,0 +1,124 @@ +class_name Player +extends CharacterBody3D + +@onready var camera: Camera3D = %Camera +@onready var head: Node3D = %Head +@onready var player_menu: CanvasLayer = %PlayerMenu +@onready var username_label: Label3D = %UsernameLabel +@onready var avatar_image: Sprite3D = %AvatarImage +@onready var spawn_point: Marker3D = %SpawnPoint +@onready var voice_chat = %VoiceChat + +@export var sensitivity: float = 0.002 +@export var SPEED := 5.0 +@export var JUMP_VELOCITY := 4.5 + +var player_info := PlayerInfoResource.new() +var menu_open: bool = false +var chat: Chat + +func _enter_tree() -> void: + set_multiplayer_authority(int(name)) + + +func _ready() -> void: + add_to_group("Players") + player_menu.hide() + + if is_multiplayer_authority(): + camera.current = true + Input.mouse_mode = Input.MOUSE_MODE_CAPTURED + chat = GameManager.chat_node + chat.chat_input.text_submitted.connect(_on_text_submitted) + else: + set_process(false) + set_physics_process(false) + voice_chat.set_multiplayer_authority(name.to_int()) + + +func set_player_info_enet(): + username_label.text = player_info.username + + +func set_player_info_steam(steam_id: int): + player_info.init_steam(name.to_int(), Steam.getFriendPersonaName(steam_id), await Steamworks.get_player_avatar(steam_id), steam_id) + + username_label.text = player_info.username + avatar_image.texture = player_info.avatar + + +func set_player_info_ip(username: String, avatar_bytes: PackedByteArray): + player_info.init_enet(name.to_int(), username, avatar_bytes) + + username_label.text = player_info.username + avatar_image.texture = player_info.avatar + + +func _physics_process(delta: float) -> void: + if not is_on_floor(): + velocity += get_gravity() * delta + + var input_dir + var direction + + if !menu_open: + if Input.is_action_just_pressed("jump") and is_on_floor(): + velocity.y = JUMP_VELOCITY + + input_dir = Input.get_vector("left", "right", "forward", "backwards") + direction = (head.transform.basis * Vector3(input_dir.x, 0, input_dir.y)).normalized() + if direction: + velocity.x = direction.x * SPEED + velocity.z = direction.z * SPEED + else: + velocity.x = move_toward(velocity.x, 0, SPEED) + velocity.z = move_toward(velocity.z, 0, SPEED) + + move_and_slide() + + +func _process(delta: float) -> void: + if Input.is_action_just_pressed("menu") and !player_menu.visible and !chat.visible: + Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE) + player_menu.show() + menu_open = true + elif Input.is_action_just_pressed("menu") and player_menu.visible: + Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED) + player_menu.hide() + menu_open = false + + if Input.is_action_just_released("interact") and !menu_open: + if multiplayer.is_server(): + GameManager._spawn_ball(spawn_point.global_position, 1) + else: + GameManager.request_spawn_ball.rpc(spawn_point.global_position) + + + if is_multiplayer_authority(): + if Input.is_action_just_pressed("toggle_chat") and !chat.visible and !player_menu.visible: + Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE) + menu_open = true + chat.update_visiblity(true, menu_open) + elif Input.is_action_just_pressed("menu") and chat.visible: + Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED) + menu_open = false + chat.update_visiblity(false, menu_open) + elif Input.is_action_just_pressed("toggle_chat") and chat.visible and chat.new_message_timer.time_left > 0: + chat.new_message_timer.stop() + Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE) + chat.chat_input.grab_focus() + menu_open = true + + +func _unhandled_input(event: InputEvent) -> void: + if !is_multiplayer_authority(): return + + if event is InputEventMouseMotion: + head.rotate_y(-event.relative.x * sensitivity) + camera.rotate_x(-event.relative.y * sensitivity) + camera.rotation.x = clamp(camera.rotation.x, deg_to_rad(-90), deg_to_rad(90)) + + +func _on_text_submitted(text: String): + if is_multiplayer_authority(): + chat.send_message(player_info.username, player_info.avatar_modulated_color) diff --git a/3d_mp_base/scenes/player/player.gd.uid b/3d_mp_base/scenes/player/player.gd.uid new file mode 100644 index 0000000..163e661 --- /dev/null +++ b/3d_mp_base/scenes/player/player.gd.uid @@ -0,0 +1 @@ +uid://01x0fo4llt5v diff --git a/3d_mp_base/scenes/player/player.tscn b/3d_mp_base/scenes/player/player.tscn new file mode 100644 index 0000000..366ee2d --- /dev/null +++ b/3d_mp_base/scenes/player/player.tscn @@ -0,0 +1,68 @@ +[gd_scene format=3 uid="uid://cq6ovfsdvnt40"] + +[ext_resource type="Script" uid="uid://01x0fo4llt5v" path="res://scenes/player/player.gd" id="1_8afob"] +[ext_resource type="PackedScene" uid="uid://dg55eimlsqgp7" path="res://scenes/ui/player_menu.tscn" id="2_dovo2"] +[ext_resource type="Texture2D" uid="uid://blpnie21uplx7" path="res://icon.svg" id="3_gmlin"] +[ext_resource type="PackedScene" uid="uid://brnbhj2m3shio" path="res://scenes/voice_chat/voice_chat.tscn" id="4_lvxji"] + +[sub_resource type="CapsuleMesh" id="CapsuleMesh_dovo2"] + +[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_8afob"] + +[sub_resource type="BoxMesh" id="BoxMesh_8afob"] + +[sub_resource type="SceneReplicationConfig" id="SceneReplicationConfig_dovo2"] +properties/0/path = NodePath(".:position") +properties/0/spawn = true +properties/0/replication_mode = 1 +properties/1/path = NodePath("Head:rotation") +properties/1/spawn = true +properties/1/replication_mode = 1 + +[node name="Player" type="CharacterBody3D" unique_id=2050060387] +script = ExtResource("1_8afob") + +[node name="MeshInstance3D" type="MeshInstance3D" parent="." unique_id=768435836] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0) +mesh = SubResource("CapsuleMesh_dovo2") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="." unique_id=587703821] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0) +shape = SubResource("CapsuleShape3D_8afob") + +[node name="Head" type="Node3D" parent="." unique_id=719581770] +unique_name_in_owner = true + +[node name="MeshInstance3D" type="MeshInstance3D" parent="Head" unique_id=943825045] +transform = Transform3D(0.5631333, 0, 0, 0, 0.17207867, 0, 0, 0, 0.6267885, 0, 1.5652028, -0.2335369) +mesh = SubResource("BoxMesh_8afob") + +[node name="Camera" type="Camera3D" parent="Head" unique_id=1626643721] +unique_name_in_owner = true +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.5604866, -0.2544498) + +[node name="SpawnPoint" type="Marker3D" parent="Head" unique_id=102541278] +unique_name_in_owner = true +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.354382, -1.436083) + +[node name="PlayerMenu" parent="." unique_id=1711189995 instance=ExtResource("2_dovo2")] +unique_name_in_owner = true + +[node name="MultiplayerSynchronizer" type="MultiplayerSynchronizer" parent="." unique_id=1968705201] +replication_config = SubResource("SceneReplicationConfig_dovo2") + +[node name="UsernameLabel" type="Label3D" parent="." unique_id=1985946962] +unique_name_in_owner = true +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.226443, 0) +billboard = 2 +text = "Player ID" + +[node name="AvatarImage" type="Sprite3D" parent="." unique_id=1019124351] +unique_name_in_owner = true +transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 2.5678127, 0) +billboard = 2 +texture = ExtResource("3_gmlin") + +[node name="VoiceChat" parent="." unique_id=2044163417 instance=ExtResource("4_lvxji")] +unique_name_in_owner = true +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.5744768, 0) diff --git a/3d_mp_base/scenes/ui/chat.gd b/3d_mp_base/scenes/ui/chat.gd new file mode 100644 index 0000000..4df7f1c --- /dev/null +++ b/3d_mp_base/scenes/ui/chat.gd @@ -0,0 +1,58 @@ +class_name Chat +extends CanvasLayer + + +@onready var chat_output: RichTextLabel = %ChatOutput +@onready var chat_input: LineEdit = %ChatInput +@onready var scroll_container: ScrollContainer = %ScrollContainer +@onready var new_message_timer: Timer = %NewMessageTimer + +var menu_open: bool = false + + +func _ready(): + GameManager.chat_node = self + new_message_timer.timeout.connect(_on_new_message_timer_timeout) + + +func send_message(username: String, avatar_color: Color = Color.WEB_GRAY): + if chat_input.text.is_empty(): return + + if multiplayer.is_server(): + add_chat_message(username, chat_input.text, avatar_color) + else: + add_chat_message.rpc_id(1, username, chat_input.text, avatar_color) + + chat_input.clear() + + +@rpc("any_peer", "call_remote") +func add_chat_message(username: String, text: String, avatar_color: Color = Color.WEB_GRAY): + receive_chat_message.rpc(username, text, avatar_color) + + +@rpc("authority", "call_local") +func receive_chat_message(username: String, text: String, avatar_color: Color = Color.WEB_GRAY): + var os_time = Time.get_time_dict_from_system() + var formatted_os_time = str("%02d:%02d:%02d" % [os_time.hour, os_time.minute, os_time.second]) + var new_message = "[%s]: [color=%s]%s[/color]: %s\n" % [formatted_os_time, avatar_color.to_html(false), username, text] + chat_output.append_text(new_message) + new_message_timer.start() + show() + print("DEBUG: receive called on peer: ", multiplayer.get_unique_id(), " | frame: ", Engine.get_process_frames()) + + +func update_visiblity(set_chat_visible: bool, menu_open_init: bool): + if set_chat_visible: + show() + chat_input.grab_focus() + menu_open = menu_open_init + elif !set_chat_visible: + chat_input.release_focus() + hide() + menu_open = menu_open_init + + +func _on_new_message_timer_timeout(): + if !menu_open: + hide() diff --git a/3d_mp_base/scenes/ui/chat.gd.uid b/3d_mp_base/scenes/ui/chat.gd.uid new file mode 100644 index 0000000..54bc476 --- /dev/null +++ b/3d_mp_base/scenes/ui/chat.gd.uid @@ -0,0 +1 @@ +uid://m4rcvxjd31mr diff --git a/3d_mp_base/scenes/ui/chat.tscn b/3d_mp_base/scenes/ui/chat.tscn new file mode 100644 index 0000000..6c1574d --- /dev/null +++ b/3d_mp_base/scenes/ui/chat.tscn @@ -0,0 +1,67 @@ +[gd_scene format=3 uid="uid://bg2q2emiroavd"] + +[ext_resource type="Script" uid="uid://m4rcvxjd31mr" path="res://scenes/ui/chat.gd" id="1_6bdm3"] + +[node name="Chat" type="CanvasLayer" unique_id=1028379683] +script = ExtResource("1_6bdm3") + +[node name="Control" type="Control" parent="." unique_id=524383998] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 1 + +[node name="Panel" type="Panel" parent="Control" unique_id=284178139] +custom_minimum_size = Vector2(300, 400) +layout_mode = 1 +anchors_preset = 2 +anchor_top = 1.0 +anchor_bottom = 1.0 +offset_top = -400.0 +offset_right = 300.0 +grow_vertical = 0 + +[node name="VBoxContainer" type="VBoxContainer" parent="Control/Panel" unique_id=446822655] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +alignment = 2 + +[node name="ScrollContainer" type="ScrollContainer" parent="Control/Panel/VBoxContainer" unique_id=1582116754] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 3 + +[node name="ChatOutput" type="RichTextLabel" parent="Control/Panel/VBoxContainer/ScrollContainer" unique_id=587198232] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme_override_constants/outline_size = 8 +theme_override_font_sizes/normal_font_size = 13 +theme_override_font_sizes/bold_font_size = 13 +theme_override_font_sizes/bold_italics_font_size = 13 +theme_override_font_sizes/italics_font_size = 13 +theme_override_font_sizes/mono_font_size = 13 +bbcode_enabled = true +scroll_following = true + +[node name="ChatInput" type="LineEdit" parent="Control/Panel/VBoxContainer" unique_id=1416488657] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 8 +placeholder_text = "Send message" +max_length = 100 +keep_editing_on_text_submit = true +caret_blink = true + +[node name="NewMessageTimer" type="Timer" parent="." unique_id=1779987389] +unique_name_in_owner = true +wait_time = 5.0 +one_shot = true diff --git a/3d_mp_base/scenes/ui/loading_screen.gd b/3d_mp_base/scenes/ui/loading_screen.gd new file mode 100644 index 0000000..ee276cb --- /dev/null +++ b/3d_mp_base/scenes/ui/loading_screen.gd @@ -0,0 +1,18 @@ +class_name LoadingScreen +extends CanvasLayer + +@export var loading_icon: TextureRect +@export var loading_label: Label +@export var cancel_button: Button + +signal cancel_pressed + +func _ready() -> void: + var offset := loading_icon.size / 2 + loading_icon.pivot_offset = offset + + cancel_button.pressed.connect(func(): cancel_pressed.emit()) + + +func _process(_delta: float) -> void: + loading_icon.rotation_degrees += 2 diff --git a/3d_mp_base/scenes/ui/loading_screen.gd.uid b/3d_mp_base/scenes/ui/loading_screen.gd.uid new file mode 100644 index 0000000..fdd6ab4 --- /dev/null +++ b/3d_mp_base/scenes/ui/loading_screen.gd.uid @@ -0,0 +1 @@ +uid://ddkeq7kl674rl diff --git a/3d_mp_base/scenes/ui/loading_screen.tscn b/3d_mp_base/scenes/ui/loading_screen.tscn new file mode 100644 index 0000000..25dab8c --- /dev/null +++ b/3d_mp_base/scenes/ui/loading_screen.tscn @@ -0,0 +1,54 @@ +[gd_scene format=3 uid="uid://38t27mxycd35"] + +[ext_resource type="Script" uid="uid://ddkeq7kl674rl" path="res://scenes/ui/loading_screen.gd" id="1_q4fso"] +[ext_resource type="Texture2D" uid="uid://blpnie21uplx7" path="res://icon.svg" id="1_rqdcv"] + +[node name="LoadingScreen" type="CanvasLayer" unique_id=1615444093 node_paths=PackedStringArray("loading_icon", "loading_label", "cancel_button")] +script = ExtResource("1_q4fso") +loading_icon = NodePath("Control/MarginContainer/LoadingIcon") +loading_label = NodePath("Control/MarginContainer/LoadingLabel") +cancel_button = NodePath("Control/MarginContainer/CancelButton") + +[node name="Control" type="Control" parent="." unique_id=1464738685] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="MarginContainer" type="MarginContainer" parent="Control" unique_id=874650830] +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 = 50 +theme_override_constants/margin_top = 50 +theme_override_constants/margin_right = 50 +theme_override_constants/margin_bottom = 50 + +[node name="LoadingIcon" type="TextureRect" parent="Control/MarginContainer" unique_id=6862137] +unique_name_in_owner = true +custom_minimum_size = Vector2(50, 50) +layout_mode = 2 +size_flags_horizontal = 8 +size_flags_vertical = 8 +texture = ExtResource("1_rqdcv") +expand_mode = 1 + +[node name="LoadingLabel" type="Label" parent="Control/MarginContainer" unique_id=1340572936] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 4 +size_flags_vertical = 8 +text = "Joining..." +horizontal_alignment = 1 + +[node name="CancelButton" type="Button" parent="Control/MarginContainer" unique_id=1414424067] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 8 +size_flags_vertical = 0 +text = "Cancel" diff --git a/3d_mp_base/scenes/ui/main_menu.gd b/3d_mp_base/scenes/ui/main_menu.gd new file mode 100644 index 0000000..ca86d27 --- /dev/null +++ b/3d_mp_base/scenes/ui/main_menu.gd @@ -0,0 +1,151 @@ +extends CanvasLayer + +@onready var use_steam_check: CheckButton = %UseSteamCheck +@onready var ip_edit: LineEdit = %IPEdit +@onready var join_ip_button: Button = %JoinIPButton +@onready var steam_host_button: Button = %SteamHostButton +@onready var steam_lobby_id_edit: LineEdit = %SteamLobbyIDEdit +@onready var join_steam_button: Button = %JoinSteamButton +@onready var quit_button: Button = %QuitButton +@onready var ip_host_button: Button = %IPHostButton +@onready var steam_controls: VBoxContainer = %SteamControls +@onready var e_net_controls: VBoxContainer = %ENetControls +@onready var steam_avatar: TextureRect = %SteamAvatar +@onready var steam_username_label: Label = %SteamUsernameLabel +@onready var username_input: LineEdit = %UsernameInput +@onready var ip_avatar_image: TextureButton = %IPAvatarImage + +const TEST_LEVEL = preload("uid://tnw1q8a7ndio") +const PLAYER = preload("uid://cq6ovfsdvnt40") + +func _ready() -> void: + Input.mouse_mode = Input.MOUSE_MODE_VISIBLE + + #if OS.has_feature("server"): + #add_world() + #NetworkManager.start_server() + #hide() + + use_steam_check.toggled.connect(_on_use_steam_toggled) + + join_ip_button.pressed.connect(_on_ip_join_pressed) + quit_button.pressed.connect(func(): get_tree().quit()) + ip_host_button.pressed.connect(_on_host_ip_pressed) + username_input.text_changed.connect(_on_username_input_text_changed) + ip_avatar_image.pressed.connect(_on_ip_avatar_clicked) + + join_steam_button.pressed.connect(_on_join_steam_pressed) + steam_host_button.pressed.connect(_on_host_steam_pressed) + steam_lobby_id_edit.text_changed.connect(_on_lobby_text_changed) + + Steam.join_requested.connect(_on_lobby_join_requested) + + check_command_line() + +func _on_use_steam_toggled(toggled_on: bool): + if toggled_on: + if !Steamworks.is_initalized: + push_error("Steam not initalized, reverting to IP") + steam_controls.hide() + use_steam_check.button_pressed = false + else: + steam_controls.show() + e_net_controls.hide() + steam_username_label.text = Steamworks.steam_username + steam_avatar.texture = Steamworks.steam_avatar + else: + e_net_controls.show() + steam_controls.hide() + + +func _on_ip_join_pressed(): + var avatar: ImageTexture = ImageTexture.create_from_image(ip_avatar_image.texture_normal.get_image()) + NetworkManager.join_server(ip_edit.text, username_input.text, avatar) + add_world() + hide() + + +func _on_host_ip_pressed(): + var avatar: ImageTexture = ImageTexture.create_from_image(ip_avatar_image.texture_normal.get_image()) + NetworkManager.start_server(username_input.text, avatar) + add_world() + hide() + + +func _on_host_steam_pressed(): + NetworkManager.start_steam_lobby() + add_world() + hide() + + +func _on_join_steam_pressed(): + NetworkManager.join_steam_lobby(steam_lobby_id_edit.text.to_int()) + add_world() + hide() + + +func _on_lobby_join_requested(this_lobby_id: int, friend_id: int) -> void: + NetworkManager.join_steam_lobby(this_lobby_id) + add_world() + hide() + + +func add_world(): + var new_scene := TEST_LEVEL.instantiate() + get_tree().current_scene.add_child.call_deferred(new_scene) + + +func _on_lobby_text_changed(new_text: String): + if new_text == "": + join_steam_button.disabled = true + else: + join_steam_button.disabled = false + + +func check_command_line() -> void: + var these_arguments: Array = OS.get_cmdline_args() + if these_arguments.size() > 0: + if these_arguments[0] == "+connect_lobby": + if int(these_arguments[1]) > 0: + print("Command line lobby ID: %s" % these_arguments[1]) + NetworkManager.join_steam_lobby(these_arguments[1]) + add_world() + hide() + + +func _on_username_input_text_changed(new_text: String) -> void: + if new_text == "": + ip_host_button.hide() + join_ip_button.hide() + else: + ip_host_button.show() + join_ip_button.show() + + +func _on_ip_avatar_clicked(): + var file_dialog := FileDialog.new() + file_dialog.file_mode = FileDialog.FILE_MODE_OPEN_FILE + file_dialog.access = FileDialog.ACCESS_FILESYSTEM + file_dialog.filters = PackedStringArray([ + "*.png ; PNG Images", + "*.jpg, *.jpeg ; JPEG Images", + "*.bmp ; BMP Images" + ]) + + file_dialog.file_selected.connect(func(path: String): + var img := Image.new() + var err := img.load(path) + + if err != OK: + push_error("Failed to load image from file") + return + + img.resize(100, 100, Image.INTERPOLATE_LANCZOS) + var texture := ImageTexture.create_from_image(img) + ip_avatar_image.texture_normal = texture + + file_dialog.queue_free() + ) + + add_child(file_dialog) + file_dialog.popup_centered() diff --git a/3d_mp_base/scenes/ui/main_menu.gd.uid b/3d_mp_base/scenes/ui/main_menu.gd.uid new file mode 100644 index 0000000..b8a6bf8 --- /dev/null +++ b/3d_mp_base/scenes/ui/main_menu.gd.uid @@ -0,0 +1 @@ +uid://crq0b0ygnfbjl diff --git a/3d_mp_base/scenes/ui/main_menu.tscn b/3d_mp_base/scenes/ui/main_menu.tscn new file mode 100644 index 0000000..1a674b9 --- /dev/null +++ b/3d_mp_base/scenes/ui/main_menu.tscn @@ -0,0 +1,165 @@ +[gd_scene format=3 uid="uid://vrgbtswm2ko5"] + +[ext_resource type="Script" uid="uid://crq0b0ygnfbjl" path="res://scenes/ui/main_menu.gd" id="1_sl1te"] +[ext_resource type="Texture2D" uid="uid://blpnie21uplx7" path="res://icon.svg" id="2_fe2o3"] +[ext_resource type="Texture2D" uid="uid://csljnn1ulbh7i" path="res://addons/kenney_prototype_textures/dark/texture_04.png" id="3_1g8jr"] + +[node name="MainMenu" type="CanvasLayer" unique_id=1371882812] +script = ExtResource("1_sl1te") + +[node name="Control" type="Control" parent="." unique_id=1988941314] +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 + +[node name="PanelContainer" type="PanelContainer" parent="Control" unique_id=1538311932] +custom_minimum_size = Vector2(600, 300) +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 + +[node name="MarginContainer" type="MarginContainer" parent="Control/PanelContainer" unique_id=1446206489] +layout_mode = 2 +theme_override_constants/margin_left = 20 +theme_override_constants/margin_top = 20 +theme_override_constants/margin_right = 20 +theme_override_constants/margin_bottom = 20 + +[node name="VBoxContainer" type="VBoxContainer" parent="Control/PanelContainer/MarginContainer" unique_id=600731185] +custom_minimum_size = Vector2(300, 0) +layout_mode = 2 + +[node name="HBoxContainer2" type="HBoxContainer" parent="Control/PanelContainer/MarginContainer/VBoxContainer" unique_id=1127605886] +layout_mode = 2 + +[node name="Label" type="Label" parent="Control/PanelContainer/MarginContainer/VBoxContainer/HBoxContainer2" unique_id=1776570352] +layout_mode = 2 +size_flags_horizontal = 6 +text = "Multiplayer Template Game" + +[node name="UseSteamCheck" type="CheckButton" parent="Control/PanelContainer/MarginContainer/VBoxContainer/HBoxContainer2" unique_id=2050719522] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +text = "Use Steam" + +[node name="HBoxContainer" type="HBoxContainer" parent="Control/PanelContainer/MarginContainer/VBoxContainer" unique_id=1028494634] +layout_mode = 2 +size_flags_vertical = 3 + +[node name="SteamControls" type="VBoxContainer" parent="Control/PanelContainer/MarginContainer/VBoxContainer/HBoxContainer" unique_id=614477215] +unique_name_in_owner = true +visible = false +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 4 + +[node name="HBoxContainer" type="HBoxContainer" parent="Control/PanelContainer/MarginContainer/VBoxContainer/HBoxContainer/SteamControls" unique_id=619438998] +layout_mode = 2 + +[node name="SteamAvatar" type="TextureRect" parent="Control/PanelContainer/MarginContainer/VBoxContainer/HBoxContainer/SteamControls/HBoxContainer" unique_id=1524328989] +unique_name_in_owner = true +custom_minimum_size = Vector2(100, 100) +layout_mode = 2 +size_flags_horizontal = 6 +texture = ExtResource("2_fe2o3") +expand_mode = 1 + +[node name="SteamUsernameLabel" type="Label" parent="Control/PanelContainer/MarginContainer/VBoxContainer/HBoxContainer/SteamControls/HBoxContainer" unique_id=1636629417] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 6 +text = "Username" + +[node name="SteamJoinHbox" type="HBoxContainer" parent="Control/PanelContainer/MarginContainer/VBoxContainer/HBoxContainer/SteamControls" unique_id=747576334] +visible = false +layout_mode = 2 +size_flags_vertical = 3 + +[node name="SteamLobbyIDEdit" type="LineEdit" parent="Control/PanelContainer/MarginContainer/VBoxContainer/HBoxContainer/SteamControls/SteamJoinHbox" unique_id=1021124488] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +placeholder_text = "Lobby ID" +alignment = 1 + +[node name="JoinSteamButton" type="Button" parent="Control/PanelContainer/MarginContainer/VBoxContainer/HBoxContainer/SteamControls/SteamJoinHbox" unique_id=1137964974] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +disabled = true +text = "Join" + +[node name="SteamHostButton" type="Button" parent="Control/PanelContainer/MarginContainer/VBoxContainer/HBoxContainer/SteamControls" unique_id=574367772] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +text = "Host" + +[node name="ENetControls" type="VBoxContainer" parent="Control/PanelContainer/MarginContainer/VBoxContainer/HBoxContainer" unique_id=1909532057] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 4 +theme_override_constants/separation = 10 + +[node name="HBoxContainer" type="HBoxContainer" parent="Control/PanelContainer/MarginContainer/VBoxContainer/HBoxContainer/ENetControls" unique_id=374121199] +layout_mode = 2 +theme_override_constants/separation = 20 + +[node name="IPAvatarImage" type="TextureButton" parent="Control/PanelContainer/MarginContainer/VBoxContainer/HBoxContainer/ENetControls/HBoxContainer" unique_id=966792766] +unique_name_in_owner = true +custom_minimum_size = Vector2(100, 100) +layout_mode = 2 +texture_normal = ExtResource("3_1g8jr") +ignore_texture_size = true +stretch_mode = 0 + +[node name="UsernameInput" type="LineEdit" parent="Control/PanelContainer/MarginContainer/VBoxContainer/HBoxContainer/ENetControls/HBoxContainer" unique_id=53008613] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 4 +text = "Username" +placeholder_text = "Username" + +[node name="IPHostButton" type="Button" parent="Control/PanelContainer/MarginContainer/VBoxContainer/HBoxContainer/ENetControls" unique_id=388231535] +unique_name_in_owner = true +layout_mode = 2 +text = "Host" + +[node name="IPJoinHBox" type="HBoxContainer" parent="Control/PanelContainer/MarginContainer/VBoxContainer/HBoxContainer/ENetControls" unique_id=1248428381] +layout_mode = 2 + +[node name="IPEdit" type="LineEdit" parent="Control/PanelContainer/MarginContainer/VBoxContainer/HBoxContainer/ENetControls/IPJoinHBox" unique_id=1604669433] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +text = "127.0.0.1" +placeholder_text = "IP Address" +alignment = 1 + +[node name="JoinIPButton" type="Button" parent="Control/PanelContainer/MarginContainer/VBoxContainer/HBoxContainer/ENetControls/IPJoinHBox" unique_id=1995375905] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +text = "Join" + +[node name="QuitButton" type="Button" parent="Control/PanelContainer/MarginContainer/VBoxContainer" unique_id=1924907920] +unique_name_in_owner = true +layout_mode = 2 +text = "Quit" diff --git a/3d_mp_base/scenes/ui/player_list_item.gd b/3d_mp_base/scenes/ui/player_list_item.gd new file mode 100644 index 0000000..317e546 --- /dev/null +++ b/3d_mp_base/scenes/ui/player_list_item.gd @@ -0,0 +1,5 @@ +class_name PlayerListItem +extends HBoxContainer + +@export var avatar: TextureRect +@export var username: Label diff --git a/3d_mp_base/scenes/ui/player_list_item.gd.uid b/3d_mp_base/scenes/ui/player_list_item.gd.uid new file mode 100644 index 0000000..1514eac --- /dev/null +++ b/3d_mp_base/scenes/ui/player_list_item.gd.uid @@ -0,0 +1 @@ +uid://dh3xwj2voqo15 diff --git a/3d_mp_base/scenes/ui/player_list_item.tscn b/3d_mp_base/scenes/ui/player_list_item.tscn new file mode 100644 index 0000000..8ba525f --- /dev/null +++ b/3d_mp_base/scenes/ui/player_list_item.tscn @@ -0,0 +1,22 @@ +[gd_scene format=3 uid="uid://bv670qe133heb"] + +[ext_resource type="Script" uid="uid://dh3xwj2voqo15" path="res://scenes/ui/player_list_item.gd" id="1_lm242"] +[ext_resource type="Texture2D" uid="uid://blpnie21uplx7" path="res://icon.svg" id="1_scu6w"] + +[node name="PlayerListItem" type="HBoxContainer" unique_id=775069241 node_paths=PackedStringArray("avatar", "username")] +theme_override_constants/separation = 15 +script = ExtResource("1_lm242") +avatar = NodePath("Avatar") +username = NodePath("Username") + +[node name="Avatar" type="TextureRect" parent="." unique_id=648912719] +unique_name_in_owner = true +custom_minimum_size = Vector2(60, 60) +layout_mode = 2 +texture = ExtResource("1_scu6w") +expand_mode = 1 + +[node name="Username" type="Label" parent="." unique_id=332583236] +unique_name_in_owner = true +layout_mode = 2 +text = "Username" diff --git a/3d_mp_base/scenes/ui/player_menu.gd b/3d_mp_base/scenes/ui/player_menu.gd new file mode 100644 index 0000000..9b92cdd --- /dev/null +++ b/3d_mp_base/scenes/ui/player_menu.gd @@ -0,0 +1,36 @@ +extends CanvasLayer + +const PLAYER_LIST_ITEM = preload("uid://bv670qe133heb") +@onready var leave_button: Button = %LeaveButton +@onready var player_list: VBoxContainer = %PlayerList + + +func _ready() -> void: + leave_button.pressed.connect(_on_leave_pressed) + visibility_changed.connect(_on_visibility_changed) + + +func _on_leave_pressed(): + NetworkManager.leave_server() + + +func _on_visibility_changed(): + if visible: + refresh_player_list() + + +func refresh_player_list(): + for child in player_list.get_children(): + child.queue_free() + + if NetworkManager.is_steam_lobby: + for p in NetworkManager.player_list.values(): + var item: PlayerListItem = PLAYER_LIST_ITEM.instantiate() + var player := p as Player + + item.username.text = player.player_info.username + + if player.player_info.avatar != null: + item.avatar.texture = player.player_info.avatar + + player_list.add_child(item) diff --git a/3d_mp_base/scenes/ui/player_menu.gd.uid b/3d_mp_base/scenes/ui/player_menu.gd.uid new file mode 100644 index 0000000..22d1c02 --- /dev/null +++ b/3d_mp_base/scenes/ui/player_menu.gd.uid @@ -0,0 +1 @@ +uid://cnn532uwkyl2y diff --git a/3d_mp_base/scenes/ui/player_menu.tscn b/3d_mp_base/scenes/ui/player_menu.tscn new file mode 100644 index 0000000..ae8d2a2 --- /dev/null +++ b/3d_mp_base/scenes/ui/player_menu.tscn @@ -0,0 +1,50 @@ +[gd_scene format=3 uid="uid://dg55eimlsqgp7"] + +[ext_resource type="Script" uid="uid://cnn532uwkyl2y" path="res://scenes/ui/player_menu.gd" id="1_2rx5c"] + +[node name="PlayerMenu" type="CanvasLayer" unique_id=1711189995] +script = ExtResource("1_2rx5c") + +[node name="Control" type="Control" parent="." unique_id=1118512792] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="PanelContainer" type="PanelContainer" parent="Control" unique_id=1851737141] +layout_mode = 1 +anchors_preset = 9 +anchor_bottom = 1.0 +offset_right = 540.0 +grow_vertical = 2 + +[node name="MarginContainer" type="MarginContainer" parent="Control/PanelContainer" unique_id=1940417879] +layout_mode = 2 +theme_override_constants/margin_left = 20 +theme_override_constants/margin_top = 20 +theme_override_constants/margin_right = 20 +theme_override_constants/margin_bottom = 20 + +[node name="VBoxContainer" type="VBoxContainer" parent="Control/PanelContainer/MarginContainer" unique_id=1499285095] +custom_minimum_size = Vector2(500, 0) +layout_mode = 2 +theme_override_constants/separation = 50 +alignment = 1 + +[node name="ScrollContainer" type="ScrollContainer" parent="Control/PanelContainer/MarginContainer/VBoxContainer" unique_id=670435526] +layout_mode = 2 +size_flags_vertical = 3 + +[node name="PlayerList" type="VBoxContainer" parent="Control/PanelContainer/MarginContainer/VBoxContainer/ScrollContainer" unique_id=1713092068] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="LeaveButton" type="Button" parent="Control/PanelContainer/MarginContainer/VBoxContainer" unique_id=1877596038] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 8 +text = "Leave" diff --git a/3d_mp_base/scenes/voice_chat/voice_chat.gd b/3d_mp_base/scenes/voice_chat/voice_chat.gd new file mode 100644 index 0000000..b90f5a2 --- /dev/null +++ b/3d_mp_base/scenes/voice_chat/voice_chat.gd @@ -0,0 +1,156 @@ +class_name VoiceChat +extends Node3D + +@onready var open_mic_status_label: Label = %OpenMicStatusLabel +@onready var canvas_layer: CanvasLayer = %CanvasLayer + +const SAMPLE_RATE: int = 48000 + +var current_sample_rate: int = SAMPLE_RATE +var voice_playback: AudioStreamGeneratorPlayback = null +var voice_loopback: AudioStreamGeneratorPlayback = null +var is_open_mic: bool = false +var is_prox: bool = true +var is_in_echo_chamber: bool = false +var is_looping_back: bool = false + +var voice_stream_player #can be 3d or non spatial +var loopback_voice_stream_player #can be 3d or non spatial + + +func _ready(): + if !is_multiplayer_authority(): + canvas_layer.hide() + setup_stream() + + +func _process(delta): + check_for_voice() + + +func setup_stream() -> void: + # Optionally we can get the sample rate from Steam + current_sample_rate = Steam.getVoiceOptimalSampleRate() + + if is_prox: #if you want to switch between prox and not prox + # Normal prox chat + voice_stream_player = AudioStreamPlayer3D.new() + voice_stream_player.unit_size = 3.0 + voice_stream_player.bus = "VoiceChatBus" + voice_stream_player.attenuation_model = AudioStreamPlayer3D.ATTENUATION_LOGARITHMIC + add_child(voice_stream_player) + # Loopback for echo aslf-hearing + loopback_voice_stream_player = AudioStreamPlayer3D.new() + loopback_voice_stream_player.unit_size = 3.0 + loopback_voice_stream_player.bus = "VoiceChatLoopbackBus" + add_child(loopback_voice_stream_player) + else: + # Normal voice chat (NON-PROXIMITY) + voice_stream_player = AudioStreamPlayer.new() + voice_stream_player.bus = "VoiceChatBus" + add_child(voice_stream_player) + + # Normal prox chat + voice_stream_player.stream = AudioStreamGenerator.new() + voice_stream_player.stream.mix_rate = current_sample_rate + voice_stream_player.play() + voice_playback = voice_stream_player.get_stream_playback() + + # Loopback for echo aslf-hearing + loopback_voice_stream_player.stream = AudioStreamGenerator.new() + loopback_voice_stream_player.stream.mix_rate = current_sample_rate + loopback_voice_stream_player.play() + voice_loopback = loopback_voice_stream_player.get_stream_playback() + + +func _input(event: InputEvent) -> void: + if !is_multiplayer_authority(): return + if event.is_action_pressed("voice_toggle") and !get_parent().menu_open: + is_open_mic = not is_open_mic + record_voice(is_open_mic) + if is_open_mic: + open_mic_status_label.text = "open mic: true" + elif !is_open_mic: + open_mic_status_label.text = "open mic: false" + if event.is_action_pressed("push_to_talk") and !get_parent().menu_open: + record_voice(true) + + if event.is_action_released("push_to_talk") and !get_parent().menu_open: + record_voice(false) + + +func record_voice(is_recording: bool) -> void: + Steam.setInGameVoiceSpeaking(Steam.getSteamID(), is_recording) + + if is_recording: + Steam.startVoiceRecording() + else: + Steam.stopVoiceRecording() + + +func check_for_voice() -> void: + if !Steamworks.is_initalized: return + if !is_multiplayer_authority(): return + var voice_data: Dictionary = Steam.getVoice() + + if voice_data['result'] == Steam.VoiceResult.VOICE_RESULT_OK and voice_data['written']: + # Pass the voice data along + process_voice_data.rpc(voice_data['buffer']) + if is_looping_back: + process_loopback_voice_data(voice_data['buffer']) + + +# If using MultiplayerPeer, we will add this line +@rpc("any_peer", "call_remote", "unreliable") +func process_voice_data(voice_data: PackedByteArray) -> void: + var decompressed_voice: Dictionary = Steam.decompressVoice(voice_data, current_sample_rate) + + if decompressed_voice['result'] == Steam.VoiceResult.VOICE_RESULT_OK and decompressed_voice['size'] > 0: + var frames_to_push: PackedVector2Array = PackedVector2Array() + frames_to_push.resize(decompressed_voice['size'] / 2) + + for i in range(0, decompressed_voice['size'], 2): + var sample_int: int = decompressed_voice['uncompressed'].decode_s16(i) + var amplitude: float = float(sample_int) / 32768.0 + frames_to_push[i / 2] = Vector2(amplitude, amplitude) + + if voice_playback.get_frames_available() >= frames_to_push.size(): + voice_playback.push_buffer(frames_to_push) + elif voice_playback.get_frames_available() > 0: + voice_playback.push_buffer(frames_to_push.slice(0, voice_playback.get_frames_available())) + + +func update_echo_chamber_status(is_in_echo_chamber: bool): + if is_in_echo_chamber and is_prox: + is_looping_back = true + if is_multiplayer_authority(): + var new_reverb = AudioEffectReverb.new() + new_reverb.dry = 0.0 + new_reverb.wet = 0.25 + AudioServer.add_bus_effect(3, new_reverb, 0) # Add reverb with only wet-reverb for loopback to hear your own echo + voice_stream_player.bus = "VoiceChatEchoBus" + else: + is_looping_back = false + if is_multiplayer_authority(): + AudioServer.remove_bus_effect(3, 0) # Set loopback back to normal by removing echo effect + voice_stream_player.bus = "VoiceChatBus" + + + +func process_loopback_voice_data(voice_data: PackedByteArray) -> void: + var decompressed_voice: Dictionary = Steam.decompressVoice(voice_data, current_sample_rate) + + if decompressed_voice['result'] == Steam.VoiceResult.VOICE_RESULT_OK and decompressed_voice['size'] > 0: + var frames_to_push: PackedVector2Array = PackedVector2Array() + frames_to_push.resize(decompressed_voice['size'] / 2) + + for i in range(0, decompressed_voice['size'], 2): + var sample_int: int = decompressed_voice['uncompressed'].decode_s16(i) + var amplitude: float = float(sample_int) / 32768.0 + frames_to_push[i / 2] = Vector2(amplitude, amplitude) + + if voice_loopback.get_frames_available() >= frames_to_push.size(): + voice_loopback.push_buffer(frames_to_push) + elif voice_loopback.get_frames_available() > 0: + voice_loopback.push_buffer(frames_to_push.slice(0, voice_loopback.get_frames_available())) + diff --git a/3d_mp_base/scenes/voice_chat/voice_chat.gd.uid b/3d_mp_base/scenes/voice_chat/voice_chat.gd.uid new file mode 100644 index 0000000..61c071f --- /dev/null +++ b/3d_mp_base/scenes/voice_chat/voice_chat.gd.uid @@ -0,0 +1 @@ +uid://xw1ylfth7mdn diff --git a/3d_mp_base/scenes/voice_chat/voice_chat.tscn b/3d_mp_base/scenes/voice_chat/voice_chat.tscn new file mode 100644 index 0000000..9d6ac1b --- /dev/null +++ b/3d_mp_base/scenes/voice_chat/voice_chat.tscn @@ -0,0 +1,15 @@ +[gd_scene format=3 uid="uid://brnbhj2m3shio"] + +[ext_resource type="Script" uid="uid://xw1ylfth7mdn" path="res://scenes/voice_chat/voice_chat.gd" id="1_tj6ls"] + +[node name="VoiceChat" type="Node3D" unique_id=2044163417] +script = ExtResource("1_tj6ls") + +[node name="CanvasLayer" type="CanvasLayer" parent="." unique_id=684198300] +unique_name_in_owner = true + +[node name="OpenMicStatusLabel" type="Label" parent="CanvasLayer" unique_id=1018064567] +unique_name_in_owner = true +offset_right = 40.0 +offset_bottom = 23.0 +text = "open mic: false" diff --git a/3d_mp_base/scenes/world/test_level.gd b/3d_mp_base/scenes/world/test_level.gd new file mode 100644 index 0000000..f8f512d --- /dev/null +++ b/3d_mp_base/scenes/world/test_level.gd @@ -0,0 +1,21 @@ +extends Node3D + +@onready var echo_area_3d = %EchoArea3D + +func _enter_tree() -> void: + GameManager.current_level = self + + +func _ready(): + echo_area_3d.body_entered.connect(_on_body_entered) + echo_area_3d.body_exited.connect(_on_body_exited) + + +func _on_body_entered(body: Node3D): + if body is Player: + body.voice_chat.update_echo_chamber_status(true) + + +func _on_body_exited(body: Node3D): + if body is Player: + body.voice_chat.update_echo_chamber_status(false) diff --git a/3d_mp_base/scenes/world/test_level.gd.uid b/3d_mp_base/scenes/world/test_level.gd.uid new file mode 100644 index 0000000..be4833a --- /dev/null +++ b/3d_mp_base/scenes/world/test_level.gd.uid @@ -0,0 +1 @@ +uid://dn4ibees5bt5j diff --git a/3d_mp_base/scenes/world/test_level.tscn b/3d_mp_base/scenes/world/test_level.tscn new file mode 100644 index 0000000..fb7ab21 --- /dev/null +++ b/3d_mp_base/scenes/world/test_level.tscn @@ -0,0 +1,178 @@ +[gd_scene format=3 uid="uid://tnw1q8a7ndio"] + +[ext_resource type="Texture2D" uid="uid://ksjjn5wwyodr" path="res://addons/kenney_prototype_textures/dark/texture_01.png" id="1_2x7fr"] +[ext_resource type="Script" uid="uid://dn4ibees5bt5j" path="res://scenes/world/test_level.gd" id="1_7gmxp"] +[ext_resource type="Texture2D" uid="uid://d0x8llxd670sv" path="res://addons/kenney_prototype_textures/purple/texture_01.png" id="2_swvrr"] + +[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_2x7fr"] +sky_horizon_color = Color(0.66224277, 0.6717428, 0.6867428, 1) +ground_bottom_color = Color(0, 0, 0, 1) +ground_horizon_color = Color(0.18410549, 0.036081314, 0.34570548, 1) + +[sub_resource type="Sky" id="Sky_swvrr"] +sky_material = SubResource("ProceduralSkyMaterial_2x7fr") + +[sub_resource type="Environment" id="Environment_7lndr"] +background_mode = 2 +sky = SubResource("Sky_swvrr") +tonemap_mode = 2 +glow_enabled = true + +[sub_resource type="WorldBoundaryShape3D" id="WorldBoundaryShape3D_mdrfg"] + +[sub_resource type="PlaneMesh" id="PlaneMesh_2x7fr"] +size = Vector2(100, 100) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_swvrr"] +albedo_texture = ExtResource("1_2x7fr") +uv1_triplanar = true +uv1_world_triplanar = true + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_7lndr"] +albedo_texture = ExtResource("2_swvrr") +uv1_triplanar = true + +[sub_resource type="CylinderMesh" id="CylinderMesh_2x7fr"] +material = SubResource("StandardMaterial3D_7lndr") +height = 4.0 + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_swvrr"] +height = 4.0 + +[sub_resource type="BoxShape3D" id="BoxShape3D_7lndr"] +size = Vector3(100, 20, 0.25878906) + +[sub_resource type="BoxMesh" id="BoxMesh_7lndr"] +size = Vector3(0.5, 5, 5) + +[sub_resource type="ConvexPolygonShape3D" id="ConvexPolygonShape3D_7lndr"] +points = PackedVector3Array(0.25, 2.5, 2.5, -0.25, 2.5, 2.5, 0.25, -2.5, 2.5, 0.25, 2.5, -2.5, -0.25, 2.5, -2.5, -0.25, -2.5, 2.5, 0.25, -2.5, -2.5, -0.25, -2.5, -2.5) + +[sub_resource type="ConvexPolygonShape3D" id="ConvexPolygonShape3D_7gmxp"] +points = PackedVector3Array(0.25, 2.5, 2.5, -0.25, 2.5, 2.5, 0.25, -2.5, 2.5, 0.25, 2.5, -2.5, -0.25, 2.5, -2.5, -0.25, -2.5, 2.5, 0.25, -2.5, -2.5, -0.25, -2.5, -2.5) + +[sub_resource type="ConvexPolygonShape3D" id="ConvexPolygonShape3D_3soa3"] +points = PackedVector3Array(0.25, 2.5, 2.5, -0.25, 2.5, 2.5, 0.25, -2.5, 2.5, 0.25, 2.5, -2.5, -0.25, 2.5, -2.5, -0.25, -2.5, 2.5, 0.25, -2.5, -2.5, -0.25, -2.5, -2.5) + +[sub_resource type="BoxShape3D" id="BoxShape3D_32mv2"] +size = Vector3(4.8, 4.926178, 4.4814453) + +[node name="TestLevel" type="Node3D" unique_id=196268006] +script = ExtResource("1_7gmxp") + +[node name="WorldEnvironment" type="WorldEnvironment" parent="." unique_id=829791786] +environment = SubResource("Environment_7lndr") + +[node name="DirectionalLight3D" type="DirectionalLight3D" parent="." unique_id=800450023] +transform = Transform3D(-0.8660254, -0.43301278, 0.25, 0, 0.49999997, 0.86602545, -0.50000006, 0.75, -0.43301266, 0, 0, 0) +shadow_enabled = true + +[node name="Camera3D" type="Camera3D" parent="." unique_id=1064079434] +transform = Transform3D(0.7071068, -0.35355338, 0.61237246, 0, 0.8660254, 0.5, -0.7071068, -0.35355338, 0.61237246, 4.6606436, 4.750062, 2.8106136) + +[node name="MultiplayerSpawner" type="MultiplayerSpawner" parent="." unique_id=639554418] +_spawnable_scenes = PackedStringArray("uid://dpcnrigmslqkt") +spawn_path = NodePath("..") + +[node name="StaticBody3D" type="StaticBody3D" parent="." unique_id=1186260132] + +[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D" unique_id=2055751647] +shape = SubResource("WorldBoundaryShape3D_mdrfg") + +[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D" unique_id=47604539] +mesh = SubResource("PlaneMesh_2x7fr") +surface_material_override/0 = SubResource("StandardMaterial3D_swvrr") + +[node name="StaticBody3D2" type="StaticBody3D" parent="." unique_id=1520600822 groups=["goal"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.4108834, 9.536743e-07, -1.2906597) + +[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D2" unique_id=1159683456] +mesh = SubResource("CylinderMesh_2x7fr") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D2" unique_id=1391557602] +shape = SubResource("CylinderShape3D_swvrr") + +[node name="StaticBody3D3" type="StaticBody3D" parent="." unique_id=290931779 groups=["goal"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.176176, -0.9479208, -0.94028664) + +[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D3" unique_id=1447471713] +mesh = SubResource("CylinderMesh_2x7fr") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D3" unique_id=1798687076] +shape = SubResource("CylinderShape3D_swvrr") + +[node name="StaticBody3D4" type="StaticBody3D" parent="." unique_id=163538835 groups=["goal"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.8935657, 1.62342, -3.0411158) + +[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D4" unique_id=1029490741] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.6905794, 0) +mesh = SubResource("CylinderMesh_2x7fr") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D4" unique_id=1458757496] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.6905794, 0) +shape = SubResource("CylinderShape3D_swvrr") + +[node name="StaticBody3D5" type="StaticBody3D" parent="." unique_id=355953735] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -37) + +[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D5" unique_id=63747778] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.5, 9.5, -12.708469) +shape = SubResource("BoxShape3D_7lndr") + +[node name="StaticBody3D6" type="StaticBody3D" parent="." unique_id=644460602] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 62.50641) + +[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D6" unique_id=500155799] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.5, 9.5, -12.708469) +shape = SubResource("BoxShape3D_7lndr") + +[node name="StaticBody3D7" type="StaticBody3D" parent="." unique_id=1867921512] +transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -36.676903, 1.9073486e-06, 0.7191582) + +[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D7" unique_id=200079656] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.5, 9.5, -12.708469) +shape = SubResource("BoxShape3D_7lndr") + +[node name="StaticBody3D8" type="StaticBody3D" parent="." unique_id=256816272] +transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 37.323097, 1.9073486e-06, -0.35115814) + +[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D8" unique_id=31312910] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.5, 9.5, -12.708469) +shape = SubResource("BoxShape3D_7lndr") + +[node name="EchoChamber" type="Node3D" parent="." unique_id=1336132105] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7.353159, 0, 9.207022) + +[node name="StaticBody3D" type="StaticBody3D" parent="EchoChamber" unique_id=457540061] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.3000002, 2.5, 0) + +[node name="MeshInstance3D" type="MeshInstance3D" parent="EchoChamber/StaticBody3D" unique_id=446628111] +mesh = SubResource("BoxMesh_7lndr") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="EchoChamber/StaticBody3D" unique_id=1806946331] +shape = SubResource("ConvexPolygonShape3D_7lndr") + +[node name="StaticBody3D2" type="StaticBody3D" parent="EchoChamber" unique_id=1319869867] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.6999998, 2.5, 0) + +[node name="MeshInstance3D" type="MeshInstance3D" parent="EchoChamber/StaticBody3D2" unique_id=1024269247] +mesh = SubResource("BoxMesh_7lndr") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="EchoChamber/StaticBody3D2" unique_id=2028901953] +shape = SubResource("ConvexPolygonShape3D_7gmxp") + +[node name="StaticBody3D3" type="StaticBody3D" parent="EchoChamber" unique_id=1227565400] +transform = Transform3D(-4.371139e-08, 1, 0, -1, -4.371139e-08, 0, 0, 0, 1, 0.3000002, 5.2, 0) + +[node name="MeshInstance3D" type="MeshInstance3D" parent="EchoChamber/StaticBody3D3" unique_id=1869523150] +mesh = SubResource("BoxMesh_7lndr") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="EchoChamber/StaticBody3D3" unique_id=274619902] +shape = SubResource("ConvexPolygonShape3D_3soa3") + +[node name="EchoArea3D" type="Area3D" parent="EchoChamber" unique_id=958250901] +unique_name_in_owner = true + +[node name="CollisionShape3D" type="CollisionShape3D" parent="EchoChamber/EchoArea3D" unique_id=1378357733] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.099999905, 2.4636383, 0) +shape = SubResource("BoxShape3D_32mv2") diff --git a/3d_mp_base/scripts/GameManager.gd b/3d_mp_base/scripts/GameManager.gd new file mode 100644 index 0000000..8a485f6 --- /dev/null +++ b/3d_mp_base/scripts/GameManager.gd @@ -0,0 +1,17 @@ +extends Node + +const BALL = preload("uid://dpcnrigmslqkt") +var current_level: Node +var chat_node: Chat + +@rpc("any_peer", "call_remote", "reliable") +func request_spawn_ball(pos: Vector3): + if is_multiplayer_authority(): + _spawn_ball(pos, multiplayer.get_remote_sender_id()) + + +func _spawn_ball(pos: Vector3, sender_id: int): + var new_ball: Node3D = BALL.instantiate() + new_ball.name = "Ball_%d_%d" % [sender_id, randi()] + current_level.add_child(new_ball, true) + new_ball.global_position = pos diff --git a/3d_mp_base/scripts/GameManager.gd.uid b/3d_mp_base/scripts/GameManager.gd.uid new file mode 100644 index 0000000..db23b60 --- /dev/null +++ b/3d_mp_base/scripts/GameManager.gd.uid @@ -0,0 +1 @@ +uid://qvw0khflh6bq diff --git a/3d_mp_base/scripts/NetworkManager.gd b/3d_mp_base/scripts/NetworkManager.gd new file mode 100644 index 0000000..58dba8d --- /dev/null +++ b/3d_mp_base/scripts/NetworkManager.gd @@ -0,0 +1,175 @@ +extends Node + +const PLAYER = preload("uid://cq6ovfsdvnt40") +const LOADING_SCREEN = preload("uid://38t27mxycd35") + +var enet_peer := ENetMultiplayerPeer.new() +var port = 9999 + +var is_steam_lobby: bool = false +var steam_lobby_id: int = 0 +var steam_peer := SteamMultiplayerPeer.new() +var is_host_steam: bool = false +var is_joining_steam: bool = false + +var loading_screen: LoadingScreen +var player_list: Dictionary[int, Player] + +var ip_username: String = "Username" +var ip_avatar: ImageTexture + + +func create_loading_screen(label_text: String = "Joining server..."): + loading_screen = LOADING_SCREEN.instantiate() + get_tree().current_scene.add_child.call_deferred(loading_screen, true) + loading_screen.cancel_pressed.connect(func(): leave_server()) + loading_screen.loading_label.text = label_text + loading_screen.show() + + +func _connect_multiplayer_signals(is_server: bool): + multiplayer.peer_connected.connect(add_player) + multiplayer.peer_disconnected.connect(remove_player) + if not is_server: + multiplayer.connected_to_server.connect(_on_connected_to_server) + + +func start_server(username: String, avatar: ImageTexture): + is_steam_lobby = false + ip_username = username + ip_avatar = avatar + enet_peer.create_server(port) + multiplayer.multiplayer_peer = enet_peer + _connect_multiplayer_signals(true) + add_player(1) + + +func start_steam_lobby(): + Steam.lobby_created.connect(_on_steam_lobby_created) + Steam.createLobby(Steam.LOBBY_TYPE_PUBLIC, 10) + is_host_steam = true + + +func _on_steam_lobby_created(result: int, lobby_id: int) -> void: + if result != Steam.Result.RESULT_OK: + push_error("Could not create lobby: " + str(result)) + return + + steam_lobby_id = lobby_id + steam_peer.server_relay = true + steam_peer.create_host() + multiplayer.multiplayer_peer = steam_peer + _connect_multiplayer_signals(true) + is_steam_lobby = true + add_player(1) + print("Lobby created. ID: " + str(lobby_id)) + print("Steam ID for host: " + str(steam_peer.get_steam_id_for_peer_id(1))) + print("Steam ID for host (from autoload): " + str(Steamworks.steam_id)) + + +func join_server(ip: String, username: String, avatar: ImageTexture): + is_steam_lobby = false + ip_username = username + ip_avatar = avatar + enet_peer.create_client(ip, port) + multiplayer.multiplayer_peer = enet_peer + _connect_multiplayer_signals(false) + create_loading_screen() + + +func join_steam_lobby(lobby_id: int): + Steam.lobby_joined.connect(_on_join_steam_lobby) + is_joining_steam = true + Steam.joinLobby(lobby_id) + create_loading_screen("Joining steam lobby...") + + +func _on_join_steam_lobby(lobby_id: int, permission: int, locked: bool, response: int) -> void: + if not is_joining_steam: + return + + steam_lobby_id = lobby_id + steam_peer.server_relay = true + var result := steam_peer.create_client(Steam.getLobbyOwner(lobby_id)) + if result != 0: + push_error("Could not join lobby: " + str(result)) + return + + multiplayer.multiplayer_peer = steam_peer + _connect_multiplayer_signals(false) + is_joining_steam = false + is_steam_lobby = true + + +func _on_connected_to_server(): + add_player(multiplayer.get_unique_id()) + + if is_steam_lobby: + set_player_details_steam.rpc(multiplayer.get_unique_id(), Steamworks.steam_id) + else: + set_player_details_ip.rpc(multiplayer.get_unique_id(), ip_username, ip_avatar.get_image().save_png_to_buffer()) + + loading_screen.queue_free() + + +@rpc("any_peer", "call_local") +func set_player_details_steam(peer_id: int, steam_id: int): + if player_list.has(peer_id): + await player_list[peer_id].set_player_info_steam(steam_id) + + +@rpc("any_peer", "call_local") +func set_player_details_ip(peer_id: int, username: String, avatar_bytes: PackedByteArray): + if player_list.has(peer_id): + await player_list[peer_id].set_player_info_ip(username, avatar_bytes) + + +func add_player(peer_id: int): + var new_player: Player = PLAYER.instantiate() + new_player.name = str(peer_id) + get_tree().current_scene.add_child(new_player, true) + player_list[peer_id] = new_player + + if is_steam_lobby and player_list.has(multiplayer.get_unique_id()): + set_player_details_steam.rpc(multiplayer.get_unique_id(), Steamworks.steam_id) + elif !is_steam_lobby and player_list.has(multiplayer.get_unique_id()): + set_player_details_ip.rpc(multiplayer.get_unique_id(), ip_username, ip_avatar.get_image().save_png_to_buffer()) + + +func remove_player(peer_id: int): + if peer_id == 1: + leave_server() + return + + if player_list.has(peer_id): + player_list[peer_id].queue_free() + player_list.erase(peer_id) + + +func leave_server(): + if is_steam_lobby: + _cleanup_steam_signals() + + _cleanup_multiplayer_signals() + + multiplayer.multiplayer_peer.close() + multiplayer.multiplayer_peer = null + Input.mouse_mode = Input.MOUSE_MODE_VISIBLE + player_list.clear() + get_tree().reload_current_scene() + + +func _cleanup_multiplayer_signals(): + if multiplayer.peer_connected.is_connected(add_player): + multiplayer.peer_connected.disconnect(add_player) + if multiplayer.peer_disconnected.is_connected(remove_player): + multiplayer.peer_disconnected.disconnect(remove_player) + if multiplayer.connected_to_server.is_connected(_on_connected_to_server): + multiplayer.connected_to_server.disconnect(_on_connected_to_server) + + +func _cleanup_steam_signals(): + if Steam.lobby_created.is_connected(_on_steam_lobby_created): + Steam.lobby_created.disconnect(_on_steam_lobby_created) + if Steam.lobby_joined.is_connected(_on_join_steam_lobby): + Steam.lobby_joined.disconnect(_on_join_steam_lobby) diff --git a/3d_mp_base/scripts/NetworkManager.gd.uid b/3d_mp_base/scripts/NetworkManager.gd.uid new file mode 100644 index 0000000..e54f48a --- /dev/null +++ b/3d_mp_base/scripts/NetworkManager.gd.uid @@ -0,0 +1 @@ +uid://ff235q5xbiie diff --git a/3d_mp_base/scripts/Steamworks.gd b/3d_mp_base/scripts/Steamworks.gd new file mode 100644 index 0000000..013320e --- /dev/null +++ b/3d_mp_base/scripts/Steamworks.gd @@ -0,0 +1,39 @@ +extends Node + +var is_initalized: bool = false + +var steam_id: int +var steam_username: String +var steam_avatar: ImageTexture + +var tmp_avatar_image_texture: ImageTexture + +func _ready() -> void: + if is_initalized: return + + var response := Steam.steamInitEx() + if response["status"] != 0: + push_warning("Steam failed to initalize: " + str(response)) + return + + steam_id = Steam.getSteamID() + steam_username = Steam.getPersonaName() + steam_avatar = await get_player_avatar(steam_id) + + print("Steam initalized successfully") + is_initalized = true + + +func get_player_avatar(steam_id: int) -> ImageTexture: + Steam.getPlayerAvatar(Steam.AVATAR_LARGE, steam_id) + var result = await Steam.avatar_loaded # returns (avatar_id, width, avatar_data) + + while result[0] != steam_id: + result = await Steam.avatar_loaded + + var width: int = result[1] + var avatar_data: PackedByteArray = result[2] + var image := Image.create_from_data(width, width, false, Image.FORMAT_RGBA8, avatar_data) + if width > 128: + image.resize(128, 128, Image.INTERPOLATE_LANCZOS) + return ImageTexture.create_from_image(image) diff --git a/3d_mp_base/scripts/Steamworks.gd.uid b/3d_mp_base/scripts/Steamworks.gd.uid new file mode 100644 index 0000000..edf361a --- /dev/null +++ b/3d_mp_base/scripts/Steamworks.gd.uid @@ -0,0 +1 @@ +uid://6im158hn15uv diff --git a/3d_mp_base/scripts/player_info.gd b/3d_mp_base/scripts/player_info.gd new file mode 100644 index 0000000..cb77041 --- /dev/null +++ b/3d_mp_base/scripts/player_info.gd @@ -0,0 +1,58 @@ +class_name PlayerInfoResource +extends Resource + +var peer_id: int = 0 +var username: String = "None" +var avatar: ImageTexture +var avatar_modulated_color: Color + +var is_steam: bool = false +var steam_id: int = 0 + + +func init_enet(peer_id: int, username: String, avatar_bytes: PackedByteArray): + is_steam = false + self.peer_id = peer_id + self.username = username + var avatar_image := Image.new() + var err := avatar_image.load_png_from_buffer(avatar_bytes) + if err != 0: + push_error("Could not load avatar image for peer: %s, Error: %s" % [peer_id, err]) + return + avatar_image.resize(100, 100, Image.INTERPOLATE_LANCZOS) + self.avatar = ImageTexture.create_from_image(avatar_image) + self.avatar_modulated_color = get_modulated_avatar_color(avatar) + + +func init_steam(peer_id: int, username: String, avatar: ImageTexture, steam_id: int): + is_steam = true + self.peer_id = peer_id + self.username = username + self.avatar = avatar + self.avatar_modulated_color = get_modulated_avatar_color(avatar) + self.steam_id = steam_id + + +func to_str() -> String: + var fmt_string := "Peer ID: %s\nUsername: %s\nIs Steam?: %s\nSteam ID: %s" + var final_string := fmt_string % [peer_id, username, is_steam, steam_id] + return final_string + + +func get_modulated_avatar_color(avatar: ImageTexture) -> Color: + var avatar_image: Image = avatar.get_image() + if avatar_image.get_width() > 128: + avatar_image.resize(128, 128, Image.INTERPOLATE_LANCZOS) + var new_avatar_texture = ImageTexture.create_from_image(avatar_image) + + # modulate steam profile picture to use for username color in chat + var avatar_modulated_color := Vector3.ZERO + var texture_size := avatar.get_size() + var image := avatar.get_image() + for y in range(0, texture_size.y): + for x in range(0, texture_size.x): + var pixel := image.get_pixel(x, y) + avatar_modulated_color += Vector3(pixel.r, pixel.g, pixel.b) + avatar_modulated_color /= texture_size.x * texture_size.y + print(Color(avatar_modulated_color.x, avatar_modulated_color.y, avatar_modulated_color.z)) + return Color(avatar_modulated_color.x, avatar_modulated_color.y, avatar_modulated_color.z) diff --git a/3d_mp_base/scripts/player_info.gd.uid b/3d_mp_base/scripts/player_info.gd.uid new file mode 100644 index 0000000..118a2b8 --- /dev/null +++ b/3d_mp_base/scripts/player_info.gd.uid @@ -0,0 +1 @@ +uid://dmix4x4jyc4xt diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..0b0400a --- /dev/null +++ b/flake.lock @@ -0,0 +1,27 @@ +{ + "nodes": { + "nixpkgs": { + "locked": { + "lastModified": 1778443072, + "narHash": "sha256-zi7/fsqM/kFdNuED//4WOCUtezGtKKqRNORjMvfwjnA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "da5ad661ba4e5ef59ba743f0d112cbc30e474f32", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..39d2b64 --- /dev/null +++ b/flake.nix @@ -0,0 +1,36 @@ +{ + description = "Godot development environment"; + + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + }; + + outputs = { self, nixpkgs }: + let + supportedSystems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; + forAllSystems = f: nixpkgs.lib.genAttrs supportedSystems (system: f { + pkgs = import nixpkgs { inherit system; }; + }); + in + { + devShells = forAllSystems ({ pkgs }: { + default = pkgs.mkShell { + nativeBuildInputs = with pkgs; [ + godot + ]; + + buildInputs = with pkgs; [ + + ]; + + shellHook = '' + echo "// GODOT DEV SHELL //" + export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${with pkgs; lib.makeLibraryPath [ + + ]}" + ''; + }; + }); + }; +} +