35 Commits
Author SHA1 Message Date
riley bea9044aee Merge pull request 'Added grassy tiles' (#3) from feat-procedural-gen into main
Release / Export Game (push) Successful in 1m47s
Reviewed-on: #3
2026-06-14 15:22:30 +02:00
qwsdcvghyu89 e252a94f46 Added grassy tiles
Release / Export Game (push) Successful in 2m12s
2026-06-14 23:21:39 +10:00
qwsdcvghyu89 62f61acc10 Fixed cancellation logic; added double jump max fall speed property.
Release / Export Game (push) Successful in 2m3s
2026-06-14 21:29:15 +10:00
qwsdcvghyu89 4e344cc02d Fixed run affecting air speed bug; fixed auto zeroing of velocities bug.
Release / Export Game (push) Successful in 2m49s
2026-06-14 20:56:06 +10:00
riley a0c4e305c5 Merge pull request 'merging dynamic lighting features to main' (#2) from feat-procedural-gen into main
Release / Export Game (push) Successful in 1m45s
Reviewed-on: #2
2026-06-14 12:09:55 +02:00
qwsdcvghyu89 3254d821c1 Added normal and specular maps; added point lights to demo scene...
Release / Export Game (push) Successful in 3m53s
...to demonstrate dynamic lighting.
2026-06-14 20:08:32 +10:00
qwsdcvghyu89 1813800db4 Fixed merge commit - discarded demo.tscn
Release / Export Game (push) Successful in 1m42s
2026-06-14 18:37:51 +10:00
qwsdcvghyu89 744c750638 Added new jump mechanics
Release / Export Game (push) Successful in 2m2s
2026-06-14 18:27:29 +10:00
qwsdcvghyu89 d549edbf15 Added a tiny bit of air control and a turnback jump trick.
Release / Export Game (push) Successful in 1m58s
2026-06-11 20:48:48 +10:00
qwsdcvghyu89 a4d73f8697 Final basic ground and jump physics tweaks.
Release / Export Game (push) Successful in 1m57s
2026-06-11 15:25:50 +10:00
qwsdcvghyu89 a0a288eee2 Merge branch 'main' of https://git.main.qwsdcvghyu.com/riley/wrplat-godot
Release / Export Game (push) Successful in 1m58s
Merged animations into main branch
2026-06-11 14:45:07 +10:00
qwsdcvghyu89 6ee79020ef Added new animations 2026-06-11 14:43:51 +10:00
qwsdcvghyu89 3ccf193a7c wip - fixing movement physics 2026-06-11 14:43:13 +10:00
qwsdcvghyu89 be6cad911c Added new animations
Release / Export Game (push) Successful in 1m57s
2026-06-09 22:38:07 +10:00
qwsdcvghyu89 77bc341f9b Changed run/walk to be based more off of momentum. Fixed jump bug.
Release / Export Game (push) Successful in 1m57s
2026-06-09 04:00:33 +10:00
qwsdcvghyu89 b18283ed9d Changed debug information to be hidden by default.
Release / Export Game (push) Successful in 1m59s
2026-06-07 23:19:46 +10:00
qwsdcvghyu89 eca85aa2d0 Changed LangVersion back to avoid export issues and removed experimental language features.
Release / Export Game (push) Successful in 2m0s
2026-06-07 23:15:37 +10:00
qwsdcvghyu89 b55d2d87c8 Fixed export_presets.cfg
Release / Export Game (push) Successful in 1m53s
2026-06-07 23:13:15 +10:00
qwsdcvghyu89 77d850f95e Improved platforming jump physics and added music autoplay feature. Added joystick support. Added dimmed background tiling.
Release / Export Game (push) Successful in 2m22s
2026-06-07 23:02:51 +10:00
qwsdcvghyu89 ba2ce768e4 Changed macOSX build export path to end with .dmg instead of .app
Release / Export Game (push) Failing after 1m21s
2026-06-06 22:30:29 +10:00
qwsdcvghyu89 fb29fead0d Disabled export caching feature (incompatible with gitea)
Release / Export Game (push) Successful in 1m50s
2026-06-06 21:24:49 +10:00
qwsdcvghyu89 82ce008b05 Fixed runs_on
Release / Export Game (push) Canceled after 10m48s
2026-06-06 21:14:32 +10:00
qwsdcvghyu89 08d75b55f0 Added tag-based release labeling
Release / Export Game (push) Failing after 51s
2026-06-06 21:11:23 +10:00
qwsdcvghyu89 4af85ded56 Fixed release action
Nightly Release / Export Game (push) Successful in 2m45s
2026-06-06 20:55:43 +10:00
qwsdcvghyu89 89dfa3f941 Added .NET installation step to action
Nightly Release / Export Game (push) Failing after 1m59s
2026-06-06 20:49:58 +10:00
qwsdcvghyu89 0e2edfddd7 Fixed download urls
Nightly Release / Export Game (push) Failing after 39s
2026-06-06 20:46:25 +10:00
qwsdcvghyu89 584d26c562 Added 7zip installation step
Nightly Release / Export Game (push) Failing after 29s
2026-06-06 20:43:36 +10:00
qwsdcvghyu89 2b4e967110 Fixed versioning mistake for release action
Nightly Release / Export Game (push) Failing after 21s
2026-06-06 20:23:03 +10:00
qwsdcvghyu89 2642e2f63b Fixed spelling mistake in action
Nightly Release / Export Game (push) Failing after 13s
2026-06-06 20:21:54 +10:00
qwsdcvghyu89 764b20e022 Fixed nightly build actioni
Nightly Release / Export Game (push) Failing after 44s
2026-06-06 20:20:03 +10:00
qwsdcvghyu89 fc80c5bc8a Tuned platformer physics
Nightly Release / Build Nightly (linux) (push) Failing after 4s
Nightly Release / Build Nightly (mac) (push) Failing after 4s
Nightly Release / Build Nightly (windows) (push) Failing after 4s
Nightly Release / Publish Nightly Release (push) Skipped
2026-06-06 20:05:38 +10:00
qwsdcvghyu89 57d532a474 Updatec castle tileset with 1x1s
Nightly Release / Build Nightly (linux) (push) Failing after 4s
Nightly Release / Build Nightly (mac) (push) Failing after 4s
Nightly Release / Build Nightly (windows) (push) Failing after 4s
Nightly Release / Publish Nightly Release (push) Skipped
2026-06-06 04:29:00 +10:00
qwsdcvghyu89 5afad3faaa Updated castle tileset
Nightly Release / Build Nightly (linux) (push) Failing after 4s
Nightly Release / Build Nightly (mac) (push) Failing after 4s
Nightly Release / Build Nightly (windows) (push) Failing after 3s
Nightly Release / Publish Nightly Release (push) Skipped
2026-06-06 04:16:25 +10:00
qwsdcvghyu89 ca304ab06e Merge branch 'main' of https://git.main.qwsdcvghyu.com/riley/wrplat-godot
Nightly Release / Build Nightly (linux) (push) Failing after 4s
Nightly Release / Build Nightly (mac) (push) Failing after 4s
Nightly Release / Build Nightly (windows) (push) Failing after 3s
Nightly Release / Publish Nightly Release (push) Skipped
2026-06-06 02:52:36 +10:00
qwsdcvghyu89 3288e37062 Updated pool.png with castle set 2026-06-06 02:52:23 +10:00
66 changed files with 3925 additions and 137 deletions
+39 -63
View File
@@ -1,9 +1,9 @@
name: Nightly Release
name: Release
on:
push:
branches:
- main
branches: ['**'] # every commit on any branch -> nightly
tags: ['**'] # any tag push -> versioned draft
workflow_dispatch:
# The default token is read-only; release/tag operations need write.
@@ -11,71 +11,47 @@ permissions:
contents: write
jobs:
# ---- Build each platform in parallel, upload outputs as artifacts ----
build-nightly:
name: Build Nightly (${{ matrix.platform }})
runs-on: Debian-x86
strategy:
matrix:
platform: [linux, windows, mac]
export_game:
runs_on: Debian-x86
permissions:
contents: write
name: Export Game
steps:
- uses: actions/checkout@v4
- name: Build
id: build
uses: felix-schindler/build-godot-action@v2.0.0
- name: checkout
uses: actions/checkout@v5
- name: install .NET SDK
uses: actions/setup-dotnet@v4
with:
name: wrplat
preset: ${{ matrix.platform }}
debugMode: "true"
- name: Upload build artifact
uses: actions/upload-artifact@v4
dotnet-version: '8.0.x'
- name: install 7zip
run: apt-get update && apt-get install -y p7zip-full
- name: export game
id: export
uses: firebelley/godot-export@v8.0.0
with:
# Unique name per platform so the matrix jobs don't collide
name: build-${{ matrix.platform }}
path: ${{ github.workspace }}/${{ steps.build.outputs.build }}
if-no-files-found: error
godot_executable_download_url: https://godot-releases.nbg1.your-objectstorage.com/4.6.3-stable/Godot_v4.6.3-stable_mono_linux_x86_64.zip
godot_export_templates_download_url: https://godot-releases.nbg1.your-objectstorage.com/4.6.3-stable/Godot_v4.6.3-stable_mono_export_templates.tpz
relative_project_path: ./
archive_output: true
# cache: true # doesn't work on gitea
# ---- Runs once, only after all three builds succeed ----
release-nightly:
name: Publish Nightly Release
needs: build-nightly
runs-on: Debian-x86
steps:
- uses: actions/checkout@v4
- name: Download all build artifacts
uses: actions/download-artifact@v4
with:
# No 'name' → grabs every artifact, each into dist/<artifact-name>/
path: dist
- name: Clean up old release & move tag
run: |
# Find and delete the old Gitea release payload via API
RELEASE_ID=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
"${{ github.api_url }}/repos/${{ github.repository }}/releases/tags/nightly" | jq -r '.id')
if [ "$RELEASE_ID" != "null" ] && [ -n "$RELEASE_ID" ]; then
echo "Deleting old release ID: $RELEASE_ID"
curl -s -X DELETE -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
"${{ github.api_url }}/repos/${{ github.repository }}/releases/$RELEASE_ID"
fi
# Force the 'nightly' tag onto this commit and push it
git tag -f nightly ${{ github.sha }}
git push -f origin nightly
- name: Publish release
uses: softprops/action-gh-release@v2
# --- not tagged: rolling nightly, updates the existing release ---
- name: create nightly release
if: ${{ !startsWith(github.ref, 'refs/tags/') }}
uses: akkuman/gitea-release-action@v1
with:
tag_name: nightly
target_commitish: ${{ github.sha }}
name: "Nightly Development Build"
body: |
Automated rolling nightly build from the latest commit on `main`.
**Commit:** ${{ github.sha }}
name: Latest Nightly Build
prerelease: true
files: dist/**/*
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
files: ${{ steps.export.outputs.archive_directory }}/*
# --- tagged with a version: versioned draft release ---
- name: create versioned release draft
if: ${{ startsWith(github.ref, 'refs/tags/') }}
uses: akkuman/gitea-release-action@v1
with:
tag_name: ${{ github.ref_name }}
name: ${{ github.ref_name }}
draft: true
files: ${{ steps.export.outputs.archive_directory }}/*
+1
View File
@@ -1,3 +1,4 @@
# Godot 4+ specific ignores
.godot/
/android/
builds/
+1
View File
@@ -3,5 +3,6 @@
<TargetFramework>net8.0</TargetFramework>
<TargetFramework Condition=" '$(GodotTargetPlatform)' == 'android' ">net9.0</TargetFramework>
<EnableDynamicLoading>true</EnableDynamicLoading>
<LangVersion>preview</LangVersion>
</PropertyGroup>
</Project>
+21
View File
@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2016-2023 The Godot Engine community
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.
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,10 @@
[configuration]
entry_symbol = "git_plugin_init"
compatibility_minimum = "4.2.0"
[libraries]
linux.editor.x86_64 = "linux/libgit_plugin.linux.editor.x86_64.so"
macos.editor = "macos/libgit_plugin.macos.editor.universal.dylib"
windows.editor.x86_64 = "windows/libgit_plugin.windows.editor.x86_64.dll"
@@ -0,0 +1 @@
uid://cunr88y1kycok
+387
View File
@@ -0,0 +1,387 @@
[preset.0]
name="Win64D"
platform="Windows Desktop"
runnable=true
dedicated_server=false
custom_features=""
export_filter="all_resources"
include_filter=""
exclude_filter=""
export_path="builds/win64d/wrplat_win64d.exe"
patches=PackedStringArray()
patch_delta_encoding=false
patch_delta_compression_level_zstd=19
patch_delta_min_reduction=0.1
patch_delta_include_filters="*"
patch_delta_exclude_filters=""
encryption_include_filters=""
encryption_exclude_filters=""
seed=0
encrypt_pck=false
encrypt_directory=false
script_export_mode=2
[preset.0.options]
custom_template/debug=""
custom_template/release=""
debug/export_console_wrapper=1
binary_format/embed_pck=true
texture_format/s3tc_bptc=true
texture_format/etc2_astc=false
shader_baker/enabled=true
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="Wrplat"
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}'"
dotnet/include_scripts_content=false
dotnet/include_debug_symbols=true
dotnet/embed_build_outputs=false
[preset.1]
name="macOS"
platform="macOS"
runnable=true
dedicated_server=false
custom_features=""
export_filter="all_resources"
include_filter=""
exclude_filter=""
export_path="builds/osx64d/wrplat_osx64d.app"
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]
export/distribution_type=1
binary_format/architecture="universal"
custom_template/debug=""
custom_template/release=""
debug/export_console_wrapper=1
application/liquid_glass_icon=""
application/icon=""
application/icon_interpolation=4
application/bundle_identifier="com.meticulous.wrplat"
application/signature=""
application/app_category="Games"
application/short_version=""
application/version=""
application/copyright=""
application/copyright_localized={}
application/min_macos_version_x86_64="10.12"
application/min_macos_version_arm64="11.00"
application/export_angle=0
display/high_res=true
shader_baker/enabled=true
application/additional_plist_content=""
xcode/platform_build="14C18"
xcode/sdk_version="13.1"
xcode/sdk_build="22C55"
xcode/sdk_name="macosx13.1"
xcode/xcode_version="1420"
xcode/xcode_build="14C18"
codesign/codesign=1
codesign/installer_identity=""
codesign/apple_team_id=""
codesign/identity=""
codesign/entitlements/custom_file=""
codesign/entitlements/allow_jit_code_execution=false
codesign/entitlements/allow_unsigned_executable_memory=false
codesign/entitlements/allow_dyld_environment_variables=false
codesign/entitlements/disable_library_validation=false
codesign/entitlements/audio_input=false
codesign/entitlements/camera=false
codesign/entitlements/location=false
codesign/entitlements/address_book=false
codesign/entitlements/calendars=false
codesign/entitlements/photos_library=false
codesign/entitlements/apple_events=false
codesign/entitlements/debugging=false
codesign/entitlements/app_sandbox/enabled=false
codesign/entitlements/app_sandbox/network_server=false
codesign/entitlements/app_sandbox/network_client=false
codesign/entitlements/app_sandbox/device_usb=false
codesign/entitlements/app_sandbox/device_bluetooth=false
codesign/entitlements/app_sandbox/files_downloads=0
codesign/entitlements/app_sandbox/files_pictures=0
codesign/entitlements/app_sandbox/files_music=0
codesign/entitlements/app_sandbox/files_movies=0
codesign/entitlements/app_sandbox/files_user_selected=0
codesign/entitlements/app_sandbox/helper_executables=[]
codesign/entitlements/additional=""
codesign/custom_options=PackedStringArray()
notarization/notarization=0
privacy/microphone_usage_description=""
privacy/microphone_usage_description_localized={}
privacy/camera_usage_description=""
privacy/camera_usage_description_localized={}
privacy/location_usage_description=""
privacy/location_usage_description_localized={}
privacy/address_book_usage_description=""
privacy/address_book_usage_description_localized={}
privacy/calendar_usage_description=""
privacy/calendar_usage_description_localized={}
privacy/photos_library_usage_description=""
privacy/photos_library_usage_description_localized={}
privacy/desktop_folder_usage_description=""
privacy/desktop_folder_usage_description_localized={}
privacy/documents_folder_usage_description=""
privacy/documents_folder_usage_description_localized={}
privacy/downloads_folder_usage_description=""
privacy/downloads_folder_usage_description_localized={}
privacy/network_volumes_usage_description=""
privacy/network_volumes_usage_description_localized={}
privacy/removable_volumes_usage_description=""
privacy/removable_volumes_usage_description_localized={}
privacy/tracking_enabled=false
privacy/tracking_domains=PackedStringArray()
privacy/collected_data/name/collected=false
privacy/collected_data/name/linked_to_user=false
privacy/collected_data/name/used_for_tracking=false
privacy/collected_data/name/collection_purposes=0
privacy/collected_data/email_address/collected=false
privacy/collected_data/email_address/linked_to_user=false
privacy/collected_data/email_address/used_for_tracking=false
privacy/collected_data/email_address/collection_purposes=0
privacy/collected_data/phone_number/collected=false
privacy/collected_data/phone_number/linked_to_user=false
privacy/collected_data/phone_number/used_for_tracking=false
privacy/collected_data/phone_number/collection_purposes=0
privacy/collected_data/physical_address/collected=false
privacy/collected_data/physical_address/linked_to_user=false
privacy/collected_data/physical_address/used_for_tracking=false
privacy/collected_data/physical_address/collection_purposes=0
privacy/collected_data/other_contact_info/collected=false
privacy/collected_data/other_contact_info/linked_to_user=false
privacy/collected_data/other_contact_info/used_for_tracking=false
privacy/collected_data/other_contact_info/collection_purposes=0
privacy/collected_data/health/collected=false
privacy/collected_data/health/linked_to_user=false
privacy/collected_data/health/used_for_tracking=false
privacy/collected_data/health/collection_purposes=0
privacy/collected_data/fitness/collected=false
privacy/collected_data/fitness/linked_to_user=false
privacy/collected_data/fitness/used_for_tracking=false
privacy/collected_data/fitness/collection_purposes=0
privacy/collected_data/payment_info/collected=false
privacy/collected_data/payment_info/linked_to_user=false
privacy/collected_data/payment_info/used_for_tracking=false
privacy/collected_data/payment_info/collection_purposes=0
privacy/collected_data/credit_info/collected=false
privacy/collected_data/credit_info/linked_to_user=false
privacy/collected_data/credit_info/used_for_tracking=false
privacy/collected_data/credit_info/collection_purposes=0
privacy/collected_data/other_financial_info/collected=false
privacy/collected_data/other_financial_info/linked_to_user=false
privacy/collected_data/other_financial_info/used_for_tracking=false
privacy/collected_data/other_financial_info/collection_purposes=0
privacy/collected_data/precise_location/collected=false
privacy/collected_data/precise_location/linked_to_user=false
privacy/collected_data/precise_location/used_for_tracking=false
privacy/collected_data/precise_location/collection_purposes=0
privacy/collected_data/coarse_location/collected=false
privacy/collected_data/coarse_location/linked_to_user=false
privacy/collected_data/coarse_location/used_for_tracking=false
privacy/collected_data/coarse_location/collection_purposes=0
privacy/collected_data/sensitive_info/collected=false
privacy/collected_data/sensitive_info/linked_to_user=false
privacy/collected_data/sensitive_info/used_for_tracking=false
privacy/collected_data/sensitive_info/collection_purposes=0
privacy/collected_data/contacts/collected=false
privacy/collected_data/contacts/linked_to_user=false
privacy/collected_data/contacts/used_for_tracking=false
privacy/collected_data/contacts/collection_purposes=0
privacy/collected_data/emails_or_text_messages/collected=false
privacy/collected_data/emails_or_text_messages/linked_to_user=false
privacy/collected_data/emails_or_text_messages/used_for_tracking=false
privacy/collected_data/emails_or_text_messages/collection_purposes=0
privacy/collected_data/photos_or_videos/collected=false
privacy/collected_data/photos_or_videos/linked_to_user=false
privacy/collected_data/photos_or_videos/used_for_tracking=false
privacy/collected_data/photos_or_videos/collection_purposes=0
privacy/collected_data/audio_data/collected=false
privacy/collected_data/audio_data/linked_to_user=false
privacy/collected_data/audio_data/used_for_tracking=false
privacy/collected_data/audio_data/collection_purposes=0
privacy/collected_data/gameplay_content/collected=false
privacy/collected_data/gameplay_content/linked_to_user=false
privacy/collected_data/gameplay_content/used_for_tracking=false
privacy/collected_data/gameplay_content/collection_purposes=0
privacy/collected_data/customer_support/collected=false
privacy/collected_data/customer_support/linked_to_user=false
privacy/collected_data/customer_support/used_for_tracking=false
privacy/collected_data/customer_support/collection_purposes=0
privacy/collected_data/other_user_content/collected=false
privacy/collected_data/other_user_content/linked_to_user=false
privacy/collected_data/other_user_content/used_for_tracking=false
privacy/collected_data/other_user_content/collection_purposes=0
privacy/collected_data/browsing_history/collected=false
privacy/collected_data/browsing_history/linked_to_user=false
privacy/collected_data/browsing_history/used_for_tracking=false
privacy/collected_data/browsing_history/collection_purposes=0
privacy/collected_data/search_history/collected=false
privacy/collected_data/search_history/linked_to_user=false
privacy/collected_data/search_history/used_for_tracking=false
privacy/collected_data/search_history/collection_purposes=0
privacy/collected_data/user_id/collected=false
privacy/collected_data/user_id/linked_to_user=false
privacy/collected_data/user_id/used_for_tracking=false
privacy/collected_data/user_id/collection_purposes=0
privacy/collected_data/device_id/collected=false
privacy/collected_data/device_id/linked_to_user=false
privacy/collected_data/device_id/used_for_tracking=false
privacy/collected_data/device_id/collection_purposes=0
privacy/collected_data/purchase_history/collected=false
privacy/collected_data/purchase_history/linked_to_user=false
privacy/collected_data/purchase_history/used_for_tracking=false
privacy/collected_data/purchase_history/collection_purposes=0
privacy/collected_data/product_interaction/collected=false
privacy/collected_data/product_interaction/linked_to_user=false
privacy/collected_data/product_interaction/used_for_tracking=false
privacy/collected_data/product_interaction/collection_purposes=0
privacy/collected_data/advertising_data/collected=false
privacy/collected_data/advertising_data/linked_to_user=false
privacy/collected_data/advertising_data/used_for_tracking=false
privacy/collected_data/advertising_data/collection_purposes=0
privacy/collected_data/other_usage_data/collected=false
privacy/collected_data/other_usage_data/linked_to_user=false
privacy/collected_data/other_usage_data/used_for_tracking=false
privacy/collected_data/other_usage_data/collection_purposes=0
privacy/collected_data/crash_data/collected=false
privacy/collected_data/crash_data/linked_to_user=false
privacy/collected_data/crash_data/used_for_tracking=false
privacy/collected_data/crash_data/collection_purposes=0
privacy/collected_data/performance_data/collected=false
privacy/collected_data/performance_data/linked_to_user=false
privacy/collected_data/performance_data/used_for_tracking=false
privacy/collected_data/performance_data/collection_purposes=0
privacy/collected_data/other_diagnostic_data/collected=false
privacy/collected_data/other_diagnostic_data/linked_to_user=false
privacy/collected_data/other_diagnostic_data/used_for_tracking=false
privacy/collected_data/other_diagnostic_data/collection_purposes=0
privacy/collected_data/environment_scanning/collected=false
privacy/collected_data/environment_scanning/linked_to_user=false
privacy/collected_data/environment_scanning/used_for_tracking=false
privacy/collected_data/environment_scanning/collection_purposes=0
privacy/collected_data/hands/collected=false
privacy/collected_data/hands/linked_to_user=false
privacy/collected_data/hands/used_for_tracking=false
privacy/collected_data/hands/collection_purposes=0
privacy/collected_data/head/collected=false
privacy/collected_data/head/linked_to_user=false
privacy/collected_data/head/used_for_tracking=false
privacy/collected_data/head/collection_purposes=0
privacy/collected_data/other_data_types/collected=false
privacy/collected_data/other_data_types/linked_to_user=false
privacy/collected_data/other_data_types/used_for_tracking=false
privacy/collected_data/other_data_types/collection_purposes=0
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
unzip -o -q \"{temp_dir}/{archive_name}\" -d \"{temp_dir}\"
open \"{temp_dir}/{exe_name}.app\" --args {cmd_args}"
ssh_remote_deploy/cleanup_script="#!/usr/bin/env bash
pkill -x -f \"{temp_dir}/{exe_name}.app/Contents/MacOS/{exe_name} {cmd_args}\"
rm -rf \"{temp_dir}\""
dotnet/include_scripts_content=false
dotnet/include_debug_symbols=true
dotnet/embed_build_outputs=false
[preset.2]
name="Linux"
platform="Linux"
runnable=true
dedicated_server=false
custom_features=""
export_filter="all_resources"
include_filter=""
exclude_filter=""
export_path="builds/linux64d/wrplat_linux64d.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.2.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}\""
dotnet/include_scripts_content=false
dotnet/include_debug_symbols=true
dotnet/embed_build_outputs=false
+7
View File
@@ -0,0 +1,7 @@
{
"sdk": {
"version": "11.0.100-preview.5.26302.115",
"allowPrerelease": true,
"rollForward": "latestPatch"
}
}
+9
View File
@@ -0,0 +1,9 @@
[gd_resource type="CanvasTexture" format=3 uid="uid://b78uwnnyovqci"]
[ext_resource type="Texture2D" uid="uid://n6b4udvjt2pt" path="res://sprites/atlas/diffuse/pool.diffuse.png" id="1_v3cld"]
[ext_resource type="Texture2D" uid="uid://cs2jr54egxwey" path="res://sprites/atlas/normal/pool.normal.png" id="2_srhaa"]
[resource]
diffuse_texture = ExtResource("1_v3cld")
normal_texture = ExtResource("2_srhaa")
specular_shininess = 0.35
+46
View File
@@ -0,0 +1,46 @@
[gd_resource type="SpriteFrames" format=3 uid="uid://trcnb1ubmx5e"]
[ext_resource type="Texture2D" uid="uid://wli5w6t8y6se" path="res://sprites/atlas/jump_point_radiates.png" id="1_3yoq3"]
[sub_resource type="AtlasTexture" id="AtlasTexture_aokl3"]
atlas = ExtResource("1_3yoq3")
region = Rect2(0, 32, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_xd81c"]
atlas = ExtResource("1_3yoq3")
region = Rect2(0, 64, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_u618n"]
atlas = ExtResource("1_3yoq3")
region = Rect2(0, 96, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_twrqh"]
atlas = ExtResource("1_3yoq3")
region = Rect2(32, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_vrk17"]
atlas = ExtResource("1_3yoq3")
region = Rect2(0, 0, 32, 32)
[resource]
animations = [{
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_aokl3")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_xd81c")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_u618n")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_twrqh")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_vrk17")
}],
"loop": true,
"name": &"default",
"speed": 16.0
}]
+50 -8
View File
@@ -1,35 +1,77 @@
[gd_resource type="SpriteFrames" format=3 uid="uid://doxc4pl5hvs6k"]
[ext_resource type="Texture2D" uid="uid://bv4gsgya7wp4d" path="res://sprites/atlas/demoman_walking.png" id="1_1t22f"]
[ext_resource type="Texture2D" uid="uid://cl3uy4d6lgspe" path="res://sprites/man_falls.png" id="1_kdeld"]
[ext_resource type="Texture2D" uid="uid://dy7fh0eg6qulr" path="res://sprites/atlas/flats/demoman_idles.png" id="2_kdeld"]
[ext_resource type="Texture2D" uid="uid://cr5bdv3hgmd4q" path="res://sprites/man_jumps.png" id="3_a1t44"]
[ext_resource type="Texture2D" uid="uid://bv4gsgya7wp4d" path="res://sprites/atlas/flats/demoman_walking.png" id="4_a1t44"]
[sub_resource type="AtlasTexture" id="AtlasTexture_w1sc6"]
atlas = ExtResource("2_kdeld")
region = Rect2(0, 0, 32, 64)
[sub_resource type="AtlasTexture" id="AtlasTexture_mcxxx"]
atlas = ExtResource("2_kdeld")
region = Rect2(0, 64, 32, 64)
[sub_resource type="AtlasTexture" id="AtlasTexture_nf227"]
atlas = ExtResource("2_kdeld")
region = Rect2(32, 0, 32, 64)
[sub_resource type="AtlasTexture" id="AtlasTexture_sbabb"]
atlas = ExtResource("2_kdeld")
region = Rect2(32, 64, 32, 64)
[sub_resource type="AtlasTexture" id="AtlasTexture_c2ath"]
atlas = ExtResource("1_1t22f")
atlas = ExtResource("4_a1t44")
region = Rect2(0, 0, 32, 64)
[sub_resource type="AtlasTexture" id="AtlasTexture_gwfnt"]
atlas = ExtResource("1_1t22f")
atlas = ExtResource("4_a1t44")
region = Rect2(0, 64, 32, 64)
[sub_resource type="AtlasTexture" id="AtlasTexture_kdeld"]
atlas = ExtResource("1_1t22f")
atlas = ExtResource("4_a1t44")
region = Rect2(32, 0, 32, 64)
[sub_resource type="AtlasTexture" id="AtlasTexture_a1t44"]
atlas = ExtResource("1_1t22f")
atlas = ExtResource("4_a1t44")
region = Rect2(32, 64, 32, 64)
[sub_resource type="AtlasTexture" id="AtlasTexture_k551e"]
atlas = ExtResource("1_1t22f")
atlas = ExtResource("4_a1t44")
region = Rect2(64, 0, 32, 64)
[resource]
animations = [{
"frames": [],
"frames": [{
"duration": 1.0,
"texture": ExtResource("1_kdeld")
}],
"loop": true,
"name": &"fall",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_w1sc6")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_mcxxx")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_nf227")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_sbabb")
}],
"loop": true,
"name": &"idle",
"speed": 5.0
}, {
"frames": [],
"frames": [{
"duration": 1.0,
"texture": ExtResource("3_a1t44")
}],
"loop": true,
"name": &"jump",
"speed": 5.0
@@ -0,0 +1,4 @@
[gd_resource type="CircleShape2D" format=3 uid="uid://duhxyfwoh6ndb"]
[resource]
radius = 3.0
+6
View File
@@ -0,0 +1,6 @@
[gd_resource type="ShaderMaterial" format=3 uid="uid://b4epp5w0awoov"]
[ext_resource type="Shader" uid="uid://dwgy05x43arpb" path="res://src/shaders/dimming_shader.tres" id="1_jm73v"]
[resource]
shader = ExtResource("1_jm73v")
+42
View File
@@ -0,0 +1,42 @@
[gd_scene format=3 uid="uid://xanv3qbl1n2u"]
[sub_resource type="Gradient" id="Gradient_nxkc6"]
colors = PackedColorArray(1, 1, 1, 1, 0, 0, 0, 1)
[sub_resource type="GradientTexture2D" id="GradientTexture2D_kfvst"]
gradient = SubResource("Gradient_nxkc6")
fill = 1
fill_from = Vector2(0.5, 0.5)
fill_to = Vector2(0.725, 0)
[node name="Light" type="Node2D" unique_id=658403720]
scale = Vector2(3.105, 3.105)
[node name="BackgroundLight" type="PointLight2D" parent="." unique_id=1870867099]
scale = Vector2(3, 3)
color = Color(1, 0.73333335, 0, 1)
energy = 1.5
shadow_enabled = true
shadow_filter = 1
texture = SubResource("GradientTexture2D_kfvst")
height = 15.0
[node name="ForegroundLight" type="PointLight2D" parent="." unique_id=574997062]
scale = Vector2(5, 5)
color = Color(0.93, 0.837, 0, 0.8)
energy = 0.7
shadow_enabled = true
shadow_filter = 1
shadow_item_cull_mask = 2
texture = SubResource("GradientTexture2D_kfvst")
height = 15.0
[node name="ForegroundNOCLight" type="PointLight2D" parent="." unique_id=2045804818]
scale = Vector2(5, 5)
color = Color(0.93, 0.837, 0, 0.8)
energy = 0.7
range_item_cull_mask = 4
shadow_filter = 1
shadow_item_cull_mask = 4
texture = SubResource("GradientTexture2D_kfvst")
height = 15.0
File diff suppressed because one or more lines are too long
+64 -4
View File
@@ -11,6 +11,7 @@ config_version=5
[application]
config/name="WrplatGodot"
config/version="0.1.38"
run/main_scene="uid://r2lb1ommvj6u"
config/features=PackedStringArray("4.6", "C#", "Forward Plus")
config/icon="res://icon.svg"
@@ -19,37 +20,95 @@ config/icon="res://icon.svg"
project/assembly_name="WrplatGodot"
[editor]
version_control/plugin_name="GitPlugin"
version_control/autoload_on_startup=true
[input]
move_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":4194321,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
, 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)
, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":0,"axis_value":1.0,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":14,"pressure":0.0,"pressed":true,"script":null)
]
}
move_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":4194319,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
, 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)
, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":0,"axis_value":-1.0,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":13,"pressure":0.0,"pressed":true,"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)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":0,"pressure":0.0,"pressed":false,"script":null)
]
}
look_up={
"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":4194320,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
, 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)
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":true,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194320,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":true,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":87,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":3,"axis_value":-1.0,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":11,"pressure":0.0,"pressed":true,"script":null)
]
}
look_down={
"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":4194322,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
, 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":82,"key_label":0,"unicode":114,"location":0,"echo":false,"script":null)
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":true,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194322,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":true,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":82,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":3,"axis_value":1.0,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":12,"pressure":0.0,"pressed":true,"script":null)
]
}
run={
"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":4194325,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":9,"pressure":0.0,"pressed":true,"script":null)
]
}
skip_music={
"deadzone": 0.2,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":true,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":78,"key_label":0,"unicode":78,"location":0,"echo":false,"script":null)
]
}
toggle_debug={
"deadzone": 0.2,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":true,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":75,"key_label":0,"unicode":75,"location":0,"echo":false,"script":null)
]
}
move_up={
"deadzone": 0.2,
"events": [Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":1,"axis_value":-1.0,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":11,"pressure":0.0,"pressed":true,"script":null)
, 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":4194320,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
, 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)
]
}
move_down={
"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":4194322,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
, 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":82,"key_label":0,"unicode":114,"location":0,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":12,"pressure":0.0,"pressed":true,"script":null)
, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":1,"axis_value":1.0,"script":null)
]
}
turn_back={
"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)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":10,"pressure":0.0,"pressed":true,"script":null)
]
}
[layer_names]
2d_render/layer_1="Backgrounds"
2d_render/layer_2="Foregrounds"
2d_render/layer_3="Foregrounds NOC"
[physics]
@@ -58,3 +117,4 @@ look_down={
[rendering]
rendering_device/driver.windows="d3d12"
textures/vram_compression/import_etc2_astc=true
Binary file not shown.
+24
View File
@@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://fhfma3rrxyfi"
path="res://.godot/imported/Asphodel.wav-f87ecbeaa99b324bd8f5df8f9b0d72e4.sample"
[deps]
source_file="res://sounds/ost/Asphodel.wav"
dest_files=["res://.godot/imported/Asphodel.wav-f87ecbeaa99b324bd8f5df8f9b0d72e4.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2
Binary file not shown.
+24
View File
@@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://5gnpemu56ac0"
path="res://.godot/imported/Azalea.wav-cbe1be7340fbe8dc3e31528edc546255.sample"
[deps]
source_file="res://sounds/ost/Azalea.wav"
dest_files=["res://.godot/imported/Azalea.wav-cbe1be7340fbe8dc3e31528edc546255.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2
Binary file not shown.
+24
View File
@@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://0tturucf5gxf"
path="res://.godot/imported/Datura.wav-78725853df39d0ef155db6eea1881728.sample"
[deps]
source_file="res://sounds/ost/Datura.wav"
dest_files=["res://.godot/imported/Datura.wav-78725853df39d0ef155db6eea1881728.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2
Binary file not shown.
+24
View File
@@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://b5cvbx3ypbbho"
path="res://.godot/imported/Hyacinth.wav-32c97df5a6b61df7f68aa21d2c6edfae.sample"
[deps]
source_file="res://sounds/ost/Hyacinth.wav"
dest_files=["res://.godot/imported/Hyacinth.wav-32c97df5a6b61df7f68aa21d2c6edfae.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2
Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://n6b4udvjt2pt"
path="res://.godot/imported/pool.diffuse.png-f15c5d02eff23304ecfbdd590cdc3504.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://sprites/atlas/diffuse/pool.diffuse.png"
dest_files=["res://.godot/imported/pool.diffuse.png-f15c5d02eff23304ecfbdd590cdc3504.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
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dy7fh0eg6qulr"
path="res://.godot/imported/demoman_idles.png-add2b3af5478c463b97d1483e4e33e47.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://sprites/atlas/flats/demoman_idles.png"
dest_files=["res://.godot/imported/demoman_idles.png-add2b3af5478c463b97d1483e4e33e47.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

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

@@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://bv4gsgya7wp4d"
path="res://.godot/imported/demoman_walking.png-9be9634caac03406a9e7d7741131c5f4.ctex"
path="res://.godot/imported/demoman_walking.png-3b471b54b0862aac29ec2aa6d7d5d5d6.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://sprites/atlas/demoman_walking.png"
dest_files=["res://.godot/imported/demoman_walking.png-9be9634caac03406a9e7d7741131c5f4.ctex"]
source_file="res://sprites/atlas/flats/demoman_walking.png"
dest_files=["res://.godot/imported/demoman_walking.png-3b471b54b0862aac29ec2aa6d7d5d5d6.ctex"]
[params]
Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

@@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://cgr7fx5emk037"
path="res://.godot/imported/pool.png-b13073abd16d5b4aa7f02817fa2d5dca.ctex"
path="res://.godot/imported/pool.png-9044908d89edc8b0017e06046d331edd.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://sprites/atlas/pool.png"
dest_files=["res://.godot/imported/pool.png-b13073abd16d5b4aa7f02817fa2d5dca.ctex"]
source_file="res://sprites/atlas/flats/pool.png"
dest_files=["res://.godot/imported/pool.png-9044908d89edc8b0017e06046d331edd.ctex"]
[params]
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://wli5w6t8y6se"
path="res://.godot/imported/jump_point_radiates.png-1a97dab1296f185bfc3d06015e15ec05.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://sprites/atlas/jump_point_radiates.png"
dest_files=["res://.godot/imported/jump_point_radiates.png-1a97dab1296f185bfc3d06015e15ec05.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
Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cs2jr54egxwey"
path="res://.godot/imported/pool.normal.png-d715ee8c1699b86312f19adc110615ea.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://sprites/atlas/normal/pool.normal.png"
dest_files=["res://.godot/imported/pool.normal.png-d715ee8c1699b86312f19adc110615ea.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
Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://p4hfrsl8bbpg"
path="res://.godot/imported/pool.specular.png-11a7497f1c1ddae08e066a0e33eb2e9b.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://sprites/atlas/specular/pool.specular.png"
dest_files=["res://.godot/imported/pool.specular.png-11a7497f1c1ddae08e066a0e33eb2e9b.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
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

+40
View File
@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cl3uy4d6lgspe"
path="res://.godot/imported/man_falls.png-61beb99173ba0b99454c416e7ba44020.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://sprites/man_falls.png"
dest_files=["res://.godot/imported/man_falls.png-61beb99173ba0b99454c416e7ba44020.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
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

+40
View File
@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cr5bdv3hgmd4q"
path="res://.godot/imported/man_jumps.png-70ad3c36f80f10d1a96a8706ccbc76b6.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://sprites/man_jumps.png"
dest_files=["res://.godot/imported/man_jumps.png-70ad3c36f80f10d1a96a8706ccbc76b6.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
+234 -2
View File
@@ -1,9 +1,10 @@
[gd_resource type="TileSet" format=3 uid="uid://bk7cbdppa3j6a"]
[ext_resource type="Texture2D" uid="uid://cgr7fx5emk037" path="res://sprites/atlas/pool.png" id="1_otsg2"]
[sub_resource type="CompressedTexture2D" id="CompressedTexture2D_5h5kb"]
load_path = "res://.godot/imported/pool.png-b13073abd16d5b4aa7f02817fa2d5dca.ctex"
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_blkrv"]
texture = ExtResource("1_otsg2")
texture = SubResource("CompressedTexture2D_5h5kb")
texture_region_size = Vector2i(32, 32)
0:0/0 = 0
0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 16, 16, 16, 16, -16, -16, -16)
@@ -39,34 +40,265 @@ texture_region_size = Vector2i(32, 32)
11:1/0 = 0
0:2/0 = 0
1:2/0 = 0
1:2/0/terrain_set = 0
1:2/0/terrain = 0
1:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 16, 16, 16, 16, -16)
1:2/0/terrains_peering_bit/right_side = 0
1:2/0/terrains_peering_bit/bottom_right_corner = 0
1:2/0/terrains_peering_bit/bottom_side = 0
2:2/next_alternative_id = 3
2:2/0 = 0
2:2/0/terrain_set = 0
2:2/0/terrain = 0
2:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 16, 16, 16, 16, -16)
2:2/0/terrains_peering_bit/right_side = 0
2:2/0/terrains_peering_bit/bottom_right_corner = 0
2:2/0/terrains_peering_bit/bottom_side = 0
2:2/0/terrains_peering_bit/bottom_left_corner = 0
2:2/0/terrains_peering_bit/left_side = 0
2:2/1 = 1
2:2/1/flip_h = true
2:2/1/terrain_set = 0
2:2/1/terrain = 0
2:2/1/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 16, 16, 16, 16, -16, -16, -16)
2:2/1/terrains_peering_bit/right_side = 0
2:2/1/terrains_peering_bit/bottom_right_corner = 0
2:2/1/terrains_peering_bit/bottom_side = 0
2:2/1/terrains_peering_bit/bottom_left_corner = 0
2:2/1/terrains_peering_bit/left_side = 0
3:2/0 = 0
3:2/0/terrain_set = 0
3:2/0/terrain = 0
3:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 16, 16, 16, 16, -16)
3:2/0/terrains_peering_bit/bottom_side = 0
3:2/0/terrains_peering_bit/bottom_left_corner = 0
3:2/0/terrains_peering_bit/left_side = 0
4:2/0 = 0
4:2/0/terrain_set = 0
4:2/0/terrain = 0
4:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 16, 16, 16, 16, -16)
4:2/0/terrains_peering_bit/right_side = 0
5:2/0 = 0
5:2/0/terrain_set = 0
5:2/0/terrain = 0
5:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 16, 16, 16, 16, -16)
5:2/0/terrains_peering_bit/right_side = 0
5:2/0/terrains_peering_bit/left_side = 0
6:2/0 = 0
6:2/0/terrain_set = 0
6:2/0/terrain = 0
6:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 16, 16, 16, 16, -16)
6:2/0/terrains_peering_bit/left_side = 0
7:2/0 = 0
8:2/0 = 0
9:2/0 = 0
10:2/0 = 0
11:2/0 = 0
0:3/0 = 0
1:3/next_alternative_id = 2
1:3/0 = 0
1:3/0/terrain_set = 0
1:3/0/terrain = 0
1:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 16, 16, 16, 16, -16)
1:3/0/terrains_peering_bit/right_side = 0
1:3/0/terrains_peering_bit/bottom_right_corner = 0
1:3/0/terrains_peering_bit/bottom_side = 0
1:3/0/terrains_peering_bit/top_side = 0
1:3/0/terrains_peering_bit/top_right_corner = 0
1:3/1 = 1
1:3/1/flip_v = true
1:3/1/terrain_set = 0
1:3/1/terrain = 0
1:3/1/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
1:3/1/terrains_peering_bit/right_side = 0
1:3/1/terrains_peering_bit/bottom_right_corner = 0
1:3/1/terrains_peering_bit/bottom_side = 0
1:3/1/terrains_peering_bit/top_side = 0
1:3/1/terrains_peering_bit/top_right_corner = 0
2:3/next_alternative_id = 6
2:3/0 = 0
2:3/0/terrain_set = 0
2:3/0/terrain = 0
2:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 16, 16, 16, 16, -16)
2:3/0/terrains_peering_bit/right_side = 0
2:3/0/terrains_peering_bit/bottom_right_corner = 0
2:3/0/terrains_peering_bit/bottom_side = 0
2:3/0/terrains_peering_bit/bottom_left_corner = 0
2:3/0/terrains_peering_bit/left_side = 0
2:3/0/terrains_peering_bit/top_left_corner = 0
2:3/0/terrains_peering_bit/top_side = 0
2:3/0/terrains_peering_bit/top_right_corner = 0
2:3/1 = 1
2:3/1/flip_h = true
2:3/1/terrain_set = 0
2:3/1/terrain = 0
2:3/1/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
2:3/1/terrains_peering_bit/right_side = 0
2:3/1/terrains_peering_bit/bottom_right_corner = 0
2:3/1/terrains_peering_bit/bottom_side = 0
2:3/1/terrains_peering_bit/bottom_left_corner = 0
2:3/1/terrains_peering_bit/left_side = 0
2:3/1/terrains_peering_bit/top_left_corner = 0
2:3/1/terrains_peering_bit/top_side = 0
2:3/1/terrains_peering_bit/top_right_corner = 0
2:3/2 = 2
2:3/2/flip_v = true
2:3/2/terrain_set = 0
2:3/2/terrain = 0
2:3/2/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
2:3/2/terrains_peering_bit/right_side = 0
2:3/2/terrains_peering_bit/bottom_right_corner = 0
2:3/2/terrains_peering_bit/bottom_side = 0
2:3/2/terrains_peering_bit/bottom_left_corner = 0
2:3/2/terrains_peering_bit/left_side = 0
2:3/2/terrains_peering_bit/top_left_corner = 0
2:3/2/terrains_peering_bit/top_side = 0
2:3/2/terrains_peering_bit/top_right_corner = 0
2:3/4 = 4
2:3/4/transpose = true
2:3/4/terrain_set = 0
2:3/4/terrain = 0
2:3/4/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
2:3/4/terrains_peering_bit/right_side = 0
2:3/4/terrains_peering_bit/bottom_right_corner = 0
2:3/4/terrains_peering_bit/bottom_side = 0
2:3/4/terrains_peering_bit/bottom_left_corner = 0
2:3/4/terrains_peering_bit/left_side = 0
2:3/4/terrains_peering_bit/top_left_corner = 0
2:3/4/terrains_peering_bit/top_side = 0
2:3/4/terrains_peering_bit/top_right_corner = 0
2:3/5 = 5
2:3/5/flip_h = true
2:3/5/transpose = true
2:3/5/terrain_set = 0
2:3/5/terrain = 0
2:3/5/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
2:3/5/terrains_peering_bit/right_side = 0
2:3/5/terrains_peering_bit/bottom_right_corner = 0
2:3/5/terrains_peering_bit/bottom_side = 0
2:3/5/terrains_peering_bit/bottom_left_corner = 0
2:3/5/terrains_peering_bit/left_side = 0
2:3/5/terrains_peering_bit/top_left_corner = 0
2:3/5/terrains_peering_bit/top_side = 0
2:3/5/terrains_peering_bit/top_right_corner = 0
3:3/next_alternative_id = 2
3:3/0 = 0
3:3/0/terrain_set = 0
3:3/0/terrain = 0
3:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 16, 16, 16, 16, -16)
3:3/0/terrains_peering_bit/bottom_side = 0
3:3/0/terrains_peering_bit/bottom_left_corner = 0
3:3/0/terrains_peering_bit/left_side = 0
3:3/0/terrains_peering_bit/top_left_corner = 0
3:3/0/terrains_peering_bit/top_side = 0
3:3/1 = 1
3:3/1/flip_v = true
3:3/1/terrain_set = 0
3:3/1/terrain = 0
3:3/1/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
3:3/1/terrains_peering_bit/bottom_side = 0
3:3/1/terrains_peering_bit/bottom_left_corner = 0
3:3/1/terrains_peering_bit/left_side = 0
3:3/1/terrains_peering_bit/top_left_corner = 0
3:3/1/terrains_peering_bit/top_side = 0
4:3/0 = 0
4:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 16, 16, 16, 16, -16)
5:3/0 = 0
5:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 16, 16, 16, 16, -16)
6:3/0 = 0
6:3/0/terrain_set = 0
6:3/0/terrain = 0
6:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 16, 16, 16, 16, -16)
6:3/0/terrains_peering_bit/right_side = 0
6:3/0/terrains_peering_bit/bottom_side = 0
6:3/0/terrains_peering_bit/bottom_left_corner = 0
6:3/0/terrains_peering_bit/left_side = 0
6:3/0/terrains_peering_bit/top_left_corner = 0
6:3/0/terrains_peering_bit/top_side = 0
6:3/0/terrains_peering_bit/top_right_corner = 0
7:3/0 = 0
7:3/0/terrain_set = 0
7:3/0/terrain = 0
7:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 16, 16, 16, 16, -16)
7:3/0/terrains_peering_bit/right_side = 0
7:3/0/terrains_peering_bit/bottom_right_corner = 0
7:3/0/terrains_peering_bit/bottom_side = 0
7:3/0/terrains_peering_bit/left_side = 0
7:3/0/terrains_peering_bit/top_left_corner = 0
7:3/0/terrains_peering_bit/top_side = 0
7:3/0/terrains_peering_bit/top_right_corner = 0
8:3/0 = 0
9:3/0 = 0
10:3/0 = 0
11:3/0 = 0
0:4/0 = 0
1:4/0 = 0
1:4/0/terrain_set = 0
1:4/0/terrain = 0
1:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 16, 16, 16, 16, -16)
1:4/0/terrains_peering_bit/right_side = 0
1:4/0/terrains_peering_bit/top_side = 0
1:4/0/terrains_peering_bit/top_right_corner = 0
0:5/0 = 0
1:5/0 = 0
2:4/next_alternative_id = 2
2:4/0 = 0
2:4/0/terrain_set = 0
2:4/0/terrain = 0
2:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 16, 16, 16, 16, -16)
2:4/0/terrains_peering_bit/right_side = 0
2:4/0/terrains_peering_bit/left_side = 0
2:4/0/terrains_peering_bit/top_left_corner = 0
2:4/0/terrains_peering_bit/top_side = 0
2:4/0/terrains_peering_bit/top_right_corner = 0
2:4/1 = 1
2:4/1/flip_h = true
2:4/1/terrain_set = 0
2:4/1/terrain = 0
2:4/1/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
2:4/1/terrains_peering_bit/right_side = 0
2:4/1/terrains_peering_bit/left_side = 0
2:4/1/terrains_peering_bit/top_left_corner = 0
2:4/1/terrains_peering_bit/top_side = 0
2:4/1/terrains_peering_bit/top_right_corner = 0
3:4/0 = 0
3:4/0/terrain_set = 0
3:4/0/terrain = 0
3:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 16, 16, 16, 16, -16)
3:4/0/terrains_peering_bit/left_side = 0
3:4/0/terrains_peering_bit/top_left_corner = 0
3:4/0/terrains_peering_bit/top_side = 0
6:4/0 = 0
6:4/0/terrain_set = 0
6:4/0/terrain = 0
6:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 16, 16, 16, 16, -16)
6:4/0/terrains_peering_bit/right_side = 0
6:4/0/terrains_peering_bit/bottom_right_corner = 0
6:4/0/terrains_peering_bit/bottom_side = 0
6:4/0/terrains_peering_bit/bottom_left_corner = 0
6:4/0/terrains_peering_bit/left_side = 0
6:4/0/terrains_peering_bit/top_left_corner = 0
6:4/0/terrains_peering_bit/top_side = 0
7:4/0 = 0
7:4/0/terrain_set = 0
7:4/0/terrain = 0
7:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 16, 16, 16, 16, -16)
7:4/0/terrains_peering_bit/right_side = 0
7:4/0/terrains_peering_bit/bottom_right_corner = 0
7:4/0/terrains_peering_bit/bottom_side = 0
7:4/0/terrains_peering_bit/bottom_left_corner = 0
7:4/0/terrains_peering_bit/left_side = 0
7:4/0/terrains_peering_bit/top_side = 0
7:4/0/terrains_peering_bit/top_right_corner = 0
4:4/0 = 0
4:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 16, 16, 16, 16, -16)
5:4/0 = 0
5:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 16, 16, 16, 16, -16)
[resource]
tile_size = Vector2i(32, 32)
physics_layer_0/collision_layer = 1
terrain_set_0/mode = 0
terrain_set_0/terrain_0/name = "Brick"
terrain_set_0/terrain_0/color = Color(0.5, 0.34375, 0.25, 1)
sources/0 = SubResource("TileSetAtlasSource_blkrv")
+528
View File
@@ -0,0 +1,528 @@
[gd_resource type="TileSet" format=3 uid="uid://cb1bigfqp1l7t"]
[ext_resource type="Texture2D" uid="uid://n6b4udvjt2pt" path="res://sprites/atlas/diffuse/pool.diffuse.png" id="1_by4n8"]
[ext_resource type="Texture2D" uid="uid://cs2jr54egxwey" path="res://sprites/atlas/normal/pool.normal.png" id="2_1bmlt"]
[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_l670f"]
polygon = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_5tlu2"]
polygon = PackedVector2Array(-6.8571424, -2.2857132, 16, -2.2857132, 16, 16, -6.8571424, 16)
[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_by4n8"]
polygon = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_0ou5r"]
polygon = PackedVector2Array(-6.8571424, -16, -6.8571424, 16, 16, 16, 16, -16)
[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_1bmlt"]
polygon = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_g011h"]
polygon = PackedVector2Array(-6.8571424, -16, -6.8571424, 2.285715, 16, 2.285715, 16, -16)
[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_x4gly"]
polygon = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_uesvo"]
polygon = PackedVector2Array(-16, -2.2857132, 16, -2.2857132, 16, 16, -16, 16)
[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_h32fx"]
polygon = PackedVector2Array(-16, -2.2857132, 16, -2.2857132, 16, 16, -16, 16)
[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_f0cx1"]
polygon = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_dghjy"]
polygon = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_dc0ws"]
polygon = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_6l2xn"]
polygon = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_blamv"]
polygon = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_f77ak"]
polygon = PackedVector2Array(-16, 2.285715, 16, 2.285715, 16, -16, -16, -16)
[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_kj7tv"]
polygon = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_ro6yg"]
polygon = PackedVector2Array(-16, -16, 16, -16, 16, 2.285715, -16, 2.285715)
[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_ebmht"]
polygon = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_xuple"]
polygon = PackedVector2Array(-16, -2.2857132, 6.8571434, -2.2857132, 6.8571434, 16, -16, 16)
[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_ru1yo"]
polygon = PackedVector2Array(6.8571434, -16, 6.8571434, 16, -16, 16, -16, -16)
[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_vok1k"]
polygon = PackedVector2Array(6.8571434, -16, 6.8571434, 16, -16, 16, -16, -16)
[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_flqmo"]
polygon = PackedVector2Array(-16, 2.285715, 6.8571434, 2.285715, 6.8571434, -16, -16, -16, -16, 2.285715, -16, 2.285715)
[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_8alh0"]
polygon = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_xwwfl"]
polygon = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_njrqr"]
polygon = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_o2foe"]
polygon = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_yfu7p"]
polygon = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
[sub_resource type="CanvasTexture" id="CanvasTexture_by4n8"]
diffuse_texture = ExtResource("1_by4n8")
normal_texture = ExtResource("2_1bmlt")
specular_shininess = 0.35
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_blkrv"]
texture = SubResource("CanvasTexture_by4n8")
texture_region_size = Vector2i(32, 32)
0:0/0 = 0
0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 16, 16, 16, 16, -16, -16, -16)
1:0/0 = 0
1:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 16, 16, 16, 16, -16, -16, -16)
2:0/0 = 0
2:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 16, 16, 16, 16, -16, -16, -16)
3:0/0 = 0
3:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 16, 16, 16, 16, -16, -16, -16)
4:0/0 = 0
5:0/0 = 0
6:0/0 = 0
7:0/0 = 0
8:0/0 = 0
9:0/0 = 0
10:0/0 = 0
11:0/0 = 0
0:1/0 = 0
0:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 16, -16, -16, 16, -16, 16, 16)
1:1/0 = 0
1:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 16, 16, 16, 16, -16, -16, -16)
2:1/0 = 0
2:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 16, 16, 16, 16, -16, -16, -16)
3:1/0 = 0
3:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 16, 16, 16, 16, -16, -16, -16)
4:1/0 = 0
5:1/0 = 0
6:1/0 = 0
7:1/0 = 0
8:1/0 = 0
9:1/0 = 0
10:1/0 = 0
11:1/0 = 0
0:2/0 = 0
1:2/0 = 0
1:2/0/terrain_set = 0
1:2/0/terrain = 0
1:2/0/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_l670f")
1:2/0/occlusion_layer_1/polygon_0/polygon = SubResource("OccluderPolygon2D_5tlu2")
1:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 16, 16, 16, 16, -16)
1:2/0/terrains_peering_bit/right_side = 0
1:2/0/terrains_peering_bit/bottom_right_corner = 0
1:2/0/terrains_peering_bit/bottom_side = 0
2:2/next_alternative_id = 3
2:2/0 = 0
2:2/0/terrain_set = 0
2:2/0/terrain = 0
2:2/0/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_x4gly")
2:2/0/occlusion_layer_1/polygon_0/polygon = SubResource("OccluderPolygon2D_uesvo")
2:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 16, 16, 16, 16, -16)
2:2/0/terrains_peering_bit/right_side = 0
2:2/0/terrains_peering_bit/bottom_right_corner = 0
2:2/0/terrains_peering_bit/bottom_side = 0
2:2/0/terrains_peering_bit/bottom_left_corner = 0
2:2/0/terrains_peering_bit/left_side = 0
2:2/1 = 1
2:2/1/flip_h = true
2:2/1/terrain_set = 0
2:2/1/terrain = 0
2:2/1/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_1bmlt")
2:2/1/occlusion_layer_1/polygon_0/polygon = SubResource("OccluderPolygon2D_h32fx")
2:2/1/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 16, 16, 16, 16, -16, -16, -16)
2:2/1/terrains_peering_bit/right_side = 0
2:2/1/terrains_peering_bit/bottom_right_corner = 0
2:2/1/terrains_peering_bit/bottom_side = 0
2:2/1/terrains_peering_bit/bottom_left_corner = 0
2:2/1/terrains_peering_bit/left_side = 0
3:2/0 = 0
3:2/0/terrain_set = 0
3:2/0/terrain = 0
3:2/0/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_ebmht")
3:2/0/occlusion_layer_1/polygon_0/polygon = SubResource("OccluderPolygon2D_xuple")
3:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 16, 16, 16, 16, -16)
3:2/0/terrains_peering_bit/bottom_side = 0
3:2/0/terrains_peering_bit/bottom_left_corner = 0
3:2/0/terrains_peering_bit/left_side = 0
4:2/0 = 0
4:2/0/terrain_set = 0
4:2/0/terrain = 0
4:2/0/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_8alh0")
4:2/0/occlusion_layer_1/polygon_0/polygon = SubResource("OccluderPolygon2D_xwwfl")
4:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 16, 16, 16, 16, -16)
4:2/0/terrains_peering_bit/right_side = 0
5:2/0 = 0
5:2/0/terrain_set = 0
5:2/0/terrain = 0
5:2/0/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_8alh0")
5:2/0/occlusion_layer_1/polygon_0/polygon = SubResource("OccluderPolygon2D_xwwfl")
5:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 16, 16, 16, 16, -16)
5:2/0/terrains_peering_bit/right_side = 0
5:2/0/terrains_peering_bit/left_side = 0
6:2/0 = 0
6:2/0/terrain_set = 0
6:2/0/terrain = 0
6:2/0/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_8alh0")
6:2/0/occlusion_layer_1/polygon_0/polygon = SubResource("OccluderPolygon2D_xwwfl")
6:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 16, 16, 16, 16, -16)
6:2/0/terrains_peering_bit/left_side = 0
7:2/0 = 0
7:2/0/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_yfu7p")
7:2/0/occlusion_layer_1/polygon_0/polygon = SubResource("OccluderPolygon2D_xwwfl")
8:2/0 = 0
8:2/0/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_yfu7p")
8:2/0/occlusion_layer_1/polygon_0/polygon = SubResource("OccluderPolygon2D_xwwfl")
9:2/0 = 0
10:2/0 = 0
10:2/0/terrain_set = 0
10:2/0/terrain = 1
10:2/0/terrains_peering_bit/right_side = 1
10:2/0/terrains_peering_bit/bottom_right_corner = 1
10:2/0/terrains_peering_bit/bottom_side = 1
11:2/0 = 0
11:2/0/terrain_set = 0
11:2/0/terrain = 1
11:2/0/terrains_peering_bit/right_side = 1
11:2/0/terrains_peering_bit/bottom_right_corner = 1
11:2/0/terrains_peering_bit/bottom_side = 1
11:2/0/terrains_peering_bit/bottom_left_corner = 1
11:2/0/terrains_peering_bit/left_side = 1
0:3/0 = 0
1:3/next_alternative_id = 2
1:3/0 = 0
1:3/0/terrain_set = 0
1:3/0/terrain = 0
1:3/0/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_by4n8")
1:3/0/occlusion_layer_1/polygon_0/polygon = SubResource("OccluderPolygon2D_0ou5r")
1:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 16, 16, 16, 16, -16)
1:3/0/terrains_peering_bit/right_side = 0
1:3/0/terrains_peering_bit/bottom_right_corner = 0
1:3/0/terrains_peering_bit/bottom_side = 0
1:3/0/terrains_peering_bit/top_side = 0
1:3/0/terrains_peering_bit/top_right_corner = 0
1:3/1 = 1
1:3/1/flip_v = true
1:3/1/terrain_set = 0
1:3/1/terrain = 0
1:3/1/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_1bmlt")
1:3/1/occlusion_layer_1/polygon_0/polygon = SubResource("OccluderPolygon2D_0ou5r")
1:3/1/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
1:3/1/terrains_peering_bit/right_side = 0
1:3/1/terrains_peering_bit/bottom_right_corner = 0
1:3/1/terrains_peering_bit/bottom_side = 0
1:3/1/terrains_peering_bit/top_side = 0
1:3/1/terrains_peering_bit/top_right_corner = 0
2:3/next_alternative_id = 6
2:3/0 = 0
2:3/0/terrain_set = 0
2:3/0/terrain = 0
2:3/0/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_by4n8")
2:3/0/occlusion_layer_1/polygon_0/polygon = SubResource("OccluderPolygon2D_f0cx1")
2:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 16, 16, 16, 16, -16)
2:3/0/terrains_peering_bit/right_side = 0
2:3/0/terrains_peering_bit/bottom_right_corner = 0
2:3/0/terrains_peering_bit/bottom_side = 0
2:3/0/terrains_peering_bit/bottom_left_corner = 0
2:3/0/terrains_peering_bit/left_side = 0
2:3/0/terrains_peering_bit/top_left_corner = 0
2:3/0/terrains_peering_bit/top_side = 0
2:3/0/terrains_peering_bit/top_right_corner = 0
2:3/1 = 1
2:3/1/flip_h = true
2:3/1/terrain_set = 0
2:3/1/terrain = 0
2:3/1/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_1bmlt")
2:3/1/occlusion_layer_1/polygon_0/polygon = SubResource("OccluderPolygon2D_dghjy")
2:3/1/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
2:3/1/terrains_peering_bit/right_side = 0
2:3/1/terrains_peering_bit/bottom_right_corner = 0
2:3/1/terrains_peering_bit/bottom_side = 0
2:3/1/terrains_peering_bit/bottom_left_corner = 0
2:3/1/terrains_peering_bit/left_side = 0
2:3/1/terrains_peering_bit/top_left_corner = 0
2:3/1/terrains_peering_bit/top_side = 0
2:3/1/terrains_peering_bit/top_right_corner = 0
2:3/2 = 2
2:3/2/flip_v = true
2:3/2/terrain_set = 0
2:3/2/terrain = 0
2:3/2/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_1bmlt")
2:3/2/occlusion_layer_1/polygon_0/polygon = SubResource("OccluderPolygon2D_dc0ws")
2:3/2/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
2:3/2/terrains_peering_bit/right_side = 0
2:3/2/terrains_peering_bit/bottom_right_corner = 0
2:3/2/terrains_peering_bit/bottom_side = 0
2:3/2/terrains_peering_bit/bottom_left_corner = 0
2:3/2/terrains_peering_bit/left_side = 0
2:3/2/terrains_peering_bit/top_left_corner = 0
2:3/2/terrains_peering_bit/top_side = 0
2:3/2/terrains_peering_bit/top_right_corner = 0
2:3/4 = 4
2:3/4/transpose = true
2:3/4/terrain_set = 0
2:3/4/terrain = 0
2:3/4/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_1bmlt")
2:3/4/occlusion_layer_1/polygon_0/polygon = SubResource("OccluderPolygon2D_6l2xn")
2:3/4/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
2:3/4/terrains_peering_bit/right_side = 0
2:3/4/terrains_peering_bit/bottom_right_corner = 0
2:3/4/terrains_peering_bit/bottom_side = 0
2:3/4/terrains_peering_bit/bottom_left_corner = 0
2:3/4/terrains_peering_bit/left_side = 0
2:3/4/terrains_peering_bit/top_left_corner = 0
2:3/4/terrains_peering_bit/top_side = 0
2:3/4/terrains_peering_bit/top_right_corner = 0
2:3/5 = 5
2:3/5/flip_h = true
2:3/5/transpose = true
2:3/5/terrain_set = 0
2:3/5/terrain = 0
2:3/5/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_1bmlt")
2:3/5/occlusion_layer_1/polygon_0/polygon = SubResource("OccluderPolygon2D_blamv")
2:3/5/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
2:3/5/terrains_peering_bit/right_side = 0
2:3/5/terrains_peering_bit/bottom_right_corner = 0
2:3/5/terrains_peering_bit/bottom_side = 0
2:3/5/terrains_peering_bit/bottom_left_corner = 0
2:3/5/terrains_peering_bit/left_side = 0
2:3/5/terrains_peering_bit/top_left_corner = 0
2:3/5/terrains_peering_bit/top_side = 0
2:3/5/terrains_peering_bit/top_right_corner = 0
3:3/next_alternative_id = 2
3:3/0 = 0
3:3/0/terrain_set = 0
3:3/0/terrain = 0
3:3/0/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_by4n8")
3:3/0/occlusion_layer_1/polygon_0/polygon = SubResource("OccluderPolygon2D_ru1yo")
3:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 16, 16, 16, 16, -16)
3:3/0/terrains_peering_bit/bottom_side = 0
3:3/0/terrains_peering_bit/bottom_left_corner = 0
3:3/0/terrains_peering_bit/left_side = 0
3:3/0/terrains_peering_bit/top_left_corner = 0
3:3/0/terrains_peering_bit/top_side = 0
3:3/1 = 1
3:3/1/flip_v = true
3:3/1/terrain_set = 0
3:3/1/terrain = 0
3:3/1/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_kj7tv")
3:3/1/occlusion_layer_1/polygon_0/polygon = SubResource("OccluderPolygon2D_vok1k")
3:3/1/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
3:3/1/terrains_peering_bit/bottom_side = 0
3:3/1/terrains_peering_bit/bottom_left_corner = 0
3:3/1/terrains_peering_bit/left_side = 0
3:3/1/terrains_peering_bit/top_left_corner = 0
3:3/1/terrains_peering_bit/top_side = 0
4:3/0 = 0
4:3/0/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_njrqr")
4:3/0/occlusion_layer_1/polygon_0/polygon = SubResource("OccluderPolygon2D_o2foe")
4:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 16, 16, 16, 16, -16)
5:3/0 = 0
5:3/0/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_njrqr")
5:3/0/occlusion_layer_1/polygon_0/polygon = SubResource("OccluderPolygon2D_o2foe")
5:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 16, 16, 16, 16, -16)
6:3/0 = 0
6:3/0/terrain_set = 0
6:3/0/terrain = 0
6:3/0/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_njrqr")
6:3/0/occlusion_layer_1/polygon_0/polygon = SubResource("OccluderPolygon2D_o2foe")
6:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 16, 16, 16, 16, -16)
6:3/0/terrains_peering_bit/right_side = 0
6:3/0/terrains_peering_bit/bottom_side = 0
6:3/0/terrains_peering_bit/bottom_left_corner = 0
6:3/0/terrains_peering_bit/left_side = 0
6:3/0/terrains_peering_bit/top_left_corner = 0
6:3/0/terrains_peering_bit/top_side = 0
6:3/0/terrains_peering_bit/top_right_corner = 0
7:3/0 = 0
7:3/0/terrain_set = 0
7:3/0/terrain = 0
7:3/0/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_njrqr")
7:3/0/occlusion_layer_1/polygon_0/polygon = SubResource("OccluderPolygon2D_o2foe")
7:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 16, 16, 16, 16, -16)
7:3/0/terrains_peering_bit/right_side = 0
7:3/0/terrains_peering_bit/bottom_right_corner = 0
7:3/0/terrains_peering_bit/bottom_side = 0
7:3/0/terrains_peering_bit/left_side = 0
7:3/0/terrains_peering_bit/top_left_corner = 0
7:3/0/terrains_peering_bit/top_side = 0
7:3/0/terrains_peering_bit/top_right_corner = 0
8:3/0 = 0
9:3/0 = 0
10:3/0 = 0
10:3/0/terrain_set = 0
10:3/0/terrain = 1
10:3/0/terrains_peering_bit/right_side = 1
10:3/0/terrains_peering_bit/bottom_right_corner = 1
10:3/0/terrains_peering_bit/bottom_side = 1
10:3/0/terrains_peering_bit/top_side = 1
10:3/0/terrains_peering_bit/top_right_corner = 1
11:3/0 = 0
11:3/0/terrain_set = 0
11:3/0/terrain = 1
11:3/0/terrains_peering_bit/right_side = 1
11:3/0/terrains_peering_bit/bottom_right_corner = 1
11:3/0/terrains_peering_bit/bottom_side = 1
11:3/0/terrains_peering_bit/bottom_left_corner = 1
11:3/0/terrains_peering_bit/left_side = 1
11:3/0/terrains_peering_bit/top_left_corner = 1
11:3/0/terrains_peering_bit/top_side = 1
11:3/0/terrains_peering_bit/top_right_corner = 1
0:4/0 = 0
1:4/0 = 0
1:4/0/terrain_set = 0
1:4/0/terrain = 0
1:4/0/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_by4n8")
1:4/0/occlusion_layer_1/polygon_0/polygon = SubResource("OccluderPolygon2D_g011h")
1:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 16, 16, 16, 16, -16)
1:4/0/terrains_peering_bit/right_side = 0
1:4/0/terrains_peering_bit/top_side = 0
1:4/0/terrains_peering_bit/top_right_corner = 0
0:5/0 = 0
1:5/0 = 0
2:4/next_alternative_id = 2
2:4/0 = 0
2:4/0/terrain_set = 0
2:4/0/terrain = 0
2:4/0/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_by4n8")
2:4/0/occlusion_layer_1/polygon_0/polygon = SubResource("OccluderPolygon2D_f77ak")
2:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 16, 16, 16, 16, -16)
2:4/0/terrains_peering_bit/right_side = 0
2:4/0/terrains_peering_bit/left_side = 0
2:4/0/terrains_peering_bit/top_left_corner = 0
2:4/0/terrains_peering_bit/top_side = 0
2:4/0/terrains_peering_bit/top_right_corner = 0
2:4/1 = 1
2:4/1/flip_h = true
2:4/1/terrain_set = 0
2:4/1/terrain = 0
2:4/1/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_kj7tv")
2:4/1/occlusion_layer_1/polygon_0/polygon = SubResource("OccluderPolygon2D_ro6yg")
2:4/1/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
2:4/1/terrains_peering_bit/right_side = 0
2:4/1/terrains_peering_bit/left_side = 0
2:4/1/terrains_peering_bit/top_left_corner = 0
2:4/1/terrains_peering_bit/top_side = 0
2:4/1/terrains_peering_bit/top_right_corner = 0
3:4/0 = 0
3:4/0/terrain_set = 0
3:4/0/terrain = 0
3:4/0/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_by4n8")
3:4/0/occlusion_layer_1/polygon_0/polygon = SubResource("OccluderPolygon2D_flqmo")
3:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 16, 16, 16, 16, -16)
3:4/0/terrains_peering_bit/left_side = 0
3:4/0/terrains_peering_bit/top_left_corner = 0
3:4/0/terrains_peering_bit/top_side = 0
6:4/0 = 0
6:4/0/terrain_set = 0
6:4/0/terrain = 0
6:4/0/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_njrqr")
6:4/0/occlusion_layer_1/polygon_0/polygon = SubResource("OccluderPolygon2D_o2foe")
6:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 16, 16, 16, 16, -16)
6:4/0/terrains_peering_bit/right_side = 0
6:4/0/terrains_peering_bit/bottom_right_corner = 0
6:4/0/terrains_peering_bit/bottom_side = 0
6:4/0/terrains_peering_bit/bottom_left_corner = 0
6:4/0/terrains_peering_bit/left_side = 0
6:4/0/terrains_peering_bit/top_left_corner = 0
6:4/0/terrains_peering_bit/top_side = 0
7:4/0 = 0
7:4/0/terrain_set = 0
7:4/0/terrain = 0
7:4/0/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_njrqr")
7:4/0/occlusion_layer_1/polygon_0/polygon = SubResource("OccluderPolygon2D_o2foe")
7:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 16, 16, 16, 16, -16)
7:4/0/terrains_peering_bit/right_side = 0
7:4/0/terrains_peering_bit/bottom_right_corner = 0
7:4/0/terrains_peering_bit/bottom_side = 0
7:4/0/terrains_peering_bit/bottom_left_corner = 0
7:4/0/terrains_peering_bit/left_side = 0
7:4/0/terrains_peering_bit/top_side = 0
7:4/0/terrains_peering_bit/top_right_corner = 0
4:4/0 = 0
4:4/0/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_njrqr")
4:4/0/occlusion_layer_1/polygon_0/polygon = SubResource("OccluderPolygon2D_o2foe")
4:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 16, 16, 16, 16, -16)
5:4/0 = 0
5:4/0/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_njrqr")
5:4/0/occlusion_layer_1/polygon_0/polygon = SubResource("OccluderPolygon2D_o2foe")
5:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, -16, 16, 16, 16, 16, -16)
8:4/0 = 0
9:4/0 = 0
10:4/0 = 0
10:4/0/terrain_set = 0
10:4/0/terrain = 1
10:4/0/terrains_peering_bit/right_side = 1
10:4/0/terrains_peering_bit/top_side = 1
10:4/0/terrains_peering_bit/top_right_corner = 1
12:1/0 = 0
13:1/0 = 0
12:2/0 = 0
12:2/0/terrain_set = 0
12:2/0/terrain = 1
12:2/0/terrains_peering_bit/bottom_side = 1
12:2/0/terrains_peering_bit/bottom_left_corner = 1
12:2/0/terrains_peering_bit/left_side = 1
13:2/0 = 0
12:3/0 = 0
12:3/0/terrain_set = 0
12:3/0/terrain = 1
12:3/0/terrains_peering_bit/bottom_side = 1
12:3/0/terrains_peering_bit/bottom_left_corner = 1
12:3/0/terrains_peering_bit/left_side = 1
12:3/0/terrains_peering_bit/top_left_corner = 1
12:3/0/terrains_peering_bit/top_side = 1
13:3/0 = 0
11:4/0 = 0
11:4/0/terrain_set = 0
11:4/0/terrain = 1
11:4/0/terrains_peering_bit/right_side = 1
11:4/0/terrains_peering_bit/left_side = 1
11:4/0/terrains_peering_bit/top_left_corner = 1
11:4/0/terrains_peering_bit/top_side = 1
11:4/0/terrains_peering_bit/top_right_corner = 1
12:4/0 = 0
12:4/0/terrain_set = 0
12:4/0/terrain = 1
12:4/0/terrains_peering_bit/left_side = 1
12:4/0/terrains_peering_bit/top_left_corner = 1
12:4/0/terrains_peering_bit/top_side = 1
13:4/0 = 0
10:5/0 = 0
11:5/0 = 0
12:5/0 = 0
13:5/0 = 0
[resource]
tile_size = Vector2i(32, 32)
occlusion_layer_0/light_mask = 1
occlusion_layer_1/light_mask = 2
physics_layer_0/collision_layer = 1
terrain_set_0/mode = 0
terrain_set_0/terrain_0/name = "Brick"
terrain_set_0/terrain_0/color = Color(0.5, 0.34375, 0.25, 1)
terrain_set_0/terrain_1/name = "Forested"
terrain_set_0/terrain_1/color = Color(0.39864206, 0.682954, 0.06894464, 1)
sources/0 = SubResource("TileSetAtlasSource_blkrv")
+5
View File
@@ -0,0 +1,5 @@
extends CanvasItem
func _process(_delta: float) -> void:
if Input.is_action_just_pressed("toggle_debug"):
visible = !visible;
+1
View File
@@ -0,0 +1 @@
uid://1mjqnyofaeo8
+18
View File
@@ -0,0 +1,18 @@
extends AudioStreamPlayer
@export var music : Array[AudioStream];
func skip_music():
var piece = music[randi_range(0, music.size() - 1)];
stream = piece;
play()
func _ready() -> void:
skip_music()
func _on_finished() -> void:
skip_music()
func _process(_delta: float) -> void:
if Input.is_action_just_pressed(("skip_music")):
skip_music()
+1
View File
@@ -0,0 +1 @@
uid://b3unn3dqhg2vl
+207 -33
View File
@@ -1,56 +1,230 @@
using Godot;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
public partial class PlayerPhysicsController : CharacterBody2D {
[Export]
public float FloatingMovePenalty { get; set; } = 0.1f;
[Export]
public float FloatingJumpPenalty { get; set; } = 0.1f;
[Export]
public float JumpStrengthDecay { get; set; } = 2;
[Export]
public float MovementDecay { get; set; } = 2;
[Export]
public float MovementScale { get; set; } = 10;
[Export]
public float JumpScale { get; set; } = 12;
// [Export]
// public float RunMultiplier { get; set; } = 1.84f;
[Signal]
public delegate void OnTurnbackJumpEventHandler(bool onJumpPoint, bool isOnWall);
[ExportCategory("Accelerations and Impulses")]
[Export]
public float WalkAcceleration { get; set; } = 3f;
[Export]
public float StoppingDeceleration { get; set; } = 8f;
[Export]
public float CancellationAcceleration { get; set; } = 4f;
[Export]
public float AirAcceleration { get; set; } = 0.5f;
[Export]
public float JumpHeight { get; set; } = 5.5f;
[ExportCategory("Max Speeds")]
[Export]
private float MaxFallSpeed { get; set; } = 8f;
[Export]
private float MaxRiseSpeed { get; set; } = 16f;
[Export]
private float MaxRunSpeed { get; set; } = 16f;
[Export]
private float MaxWalkSpeed { get; set; } = 8f;
[Export]
private float MaxAirSpeed { get; set; } = 16f;
[Export]
private float MaxDoubleJumpFallSpeed { get; set; } = 1f;
[ExportCategory("Objects")]
[Export]
public Label DebugTextLabel { get; set; }
[Export]
public float Gravity { get; set; } = 9.8f;
public AnimatedSprite2D Sprite { get; set; }
private float _timeInFlight = 0;
[Export]
public PredictiveCollisions Predictor { get; set; }
[ExportCategory("Physics Tweaks")]
[Export]
public float Gravity { get; set; } = 30.625f;
private float TilesToMeters => 9.81f / Gravity;
private float PxToMeters => (1 / UnitToPx) * TilesToMeters;
[Export]
public float UnitToPx { get; set; } = 32;
private float _timeOffGround = 0.0f;
[Export]
public float CoyoteTiming { get; set; } = 0.1f;
[Export]
public float Deadzone { get; set; } = 0.1f;
public float GetMinAccel(float delta) => CancellationAcceleration * delta;
private float _lv = 0.0f;
private void RecalculateLv() {
_lv = Mathf.Sqrt(Mathf.Pow(Gravity * 0.1f / 2, 2) + 2 * Gravity * JumpHeight);
}
public override void _Ready() {
RecalculateLv();
base._Ready();
}
public override void _Process(double delta) {
var grounded = this.IsOnFloor();
var absvel = new Vector2(Mathf.Abs(Velocity.X), Mathf.Abs(Velocity.Y));
var xAxis = Input.GetAxis("move_left", "move_right");
Sprite.FlipH = xAxis < 0;
if (grounded && absvel.X > 0.1) {
Sprite.Animation = "walk";
Sprite.SpeedScale = absvel.X switch {
< 10 => 1,
< 150 => 2,
< 600 => 4,
_ => 4
};
if (!Sprite.IsPlaying())
Sprite.Play();
} else {
Sprite.SpeedScale = 1;
}
if (grounded && absvel.X < 0.1) {
Sprite.Animation = "idle";
if (!Sprite.IsPlaying())
Sprite.Play();
}
if (!grounded && Velocity.Y > 0.1) {
Sprite.Animation = "fall";
}
if (!grounded && Velocity.Y < 0.1) {
Sprite.Animation = "jump";
}
}
public override void _PhysicsProcess(double delta) {
var xAxis = Input.GetAxis("move_left", "move_right") * MovementScale;
var yAxis = Input.GetAxis("look_up", "look_down");
var jumpStrength = -Input.GetActionStrength("jump") * JumpScale;
var xAxis = Input.GetAxis("move_left", "move_right");
var yAxis = Input.GetAxis("move_up", "move_down");
var lookAxis = Input.GetAxis("look_up", "look_down");
// var jumpStrength = -Input.GetActionStrength("jump");
RecalculateLv();
float velx = (Velocity.X / UnitToPx);
float vely = (Velocity.Y / UnitToPx) + Gravity * (float)delta;
var grounded = this.IsOnFloor();
if (!grounded) {
xAxis *= FloatingMovePenalty;
jumpStrength *= FloatingJumpPenalty;
var coyoteGrounded = _timeOffGround < CoyoteTiming;
if (grounded || coyoteGrounded) {
if (grounded) _timeOffGround = 0;
else _timeOffGround += (float)delta;
if (Input.IsActionJustPressed("jump")) {
vely = -_lv;
}
if (grounded && jumpStrength < 0)
_timeInFlight = 0;
if (!grounded && coyoteGrounded && Input.IsActionJustReleased("jump") && vely < 0) {
vely *= 1/4f;
}
jumpStrength *= Mathf.Exp(-JumpStrengthDecay * _timeInFlight);
xAxis *= Mathf.Exp(-MovementDecay * Mathf.Abs(Velocity.X));
var accel = WalkAcceleration;
if (xAxis * Velocity.X < 0) accel = StoppingDeceleration;
velx += xAxis * accel * (float)delta;
} else {
if (Input.IsActionJustReleased("jump") && vely < 0) {
vely *= 1/4f;
}
if (Input.IsActionJustPressed("turn_back") && vely > 0 && velx != 0) {
var side = velx > 0 ? PredictiveCollisions.Location.BottomRight : PredictiveCollisions.Location.BottomLeft;
if (Predictor.AnyHit(side) && !this.IsOnWall()) {
EmitSignal(SignalName.OnTurnbackJump, true, this.IsOnWall());
var hits = Predictor.GetLastCastHits(side);
_ = hits.First(x => {
if (x.Obj is null) return false;
var collider = x.AsGodotDictionary()["collider"].AsGodotObject();
if (collider.HasMeta("JumpPointAnimatable")) {
var animPath = collider.GetMeta("JumpPointAnimatable").AsNodePath();
var anim = collider.Call(MethodName.GetNode, animPath).As<AnimatedSprite2D>();
var frame = anim.Frame;
void anf() {
anim.Stop();
anim.Frame = frame;
anim.AnimationLooped -= anf;
};
anim.AnimationLooped += anf;
anim.Play();
}
return true;
});
// has jump point
float theta = Mathf.Atan2(-yAxis, Mathf.Abs(xAxis));
float margin = 20 * (Mathf.Pi / 180f);
if (theta < margin) theta = margin;
if (theta > Mathf.Pi / 2 - margin) theta = Mathf.Pi/2 - margin;
Vector2 turnjump = new Vector2(-Mathf.Sign(velx) * Mathf.Cos(theta), -Mathf.Sin(theta) - 0.2f) * _lv;
GD.Print($"Theta: {theta * (180 / Mathf.Pi)}, turnjump: {turnjump}");
velx = turnjump.X;
vely = turnjump.Y;
} else {
// does not have jump point
// float theta = Mathf.Atan2(-yAxis, Mathf.Abs(xAxis));
// float margin = 20 * (Mathf.Pi / 180f);
// if (theta < margin) theta = margin;
// if (theta > Mathf.Pi / 2 - margin) theta = Mathf.Pi/2 - margin;
// Vector2 turnjump = new Vector2(-Mathf.Sign(Velocity.X) * Mathf.Cos(theta), -Mathf.Sin(theta) - 0.2f) * _lv;
// GD.Print($"Theta: {theta * (180 / Mathf.Pi)}, turnjump: {turnjump}");
// velx = turnjump.X;
// vely = turnjump.Y;
}
}
var moveVector = new Vector2(xAxis, Gravity + jumpStrength);
DebugTextLabel.Text = $"grounded: {grounded}\nmv: {moveVector}\njumpStrength: {jumpStrength}\ntimeInFlight: {_timeInFlight}";
Velocity += moveVector;
if (Input.IsActionJustPressed("jump") && Mathf.Abs(vely) < MaxDoubleJumpFallSpeed) {
vely = -_lv;
}
velx += xAxis * AirAcceleration * (float)delta;
}
if (grounded && Mathf.Abs(xAxis) < Deadzone) {
var autostop = -Mathf.Sign(velx) * StoppingDeceleration * (float)delta;
if (Mathf.Abs(autostop) > Mathf.Abs(velx)) velx = 0f;
else velx += autostop;
}
var maxXSpeed = grounded ? Input.IsActionPressed("run") ? MaxRunSpeed : MaxWalkSpeed : MaxAirSpeed;
var maxYSpeed = vely > 0 ? MaxFallSpeed : MaxRiseSpeed;
var (absvelx, absvely) = (Mathf.Abs(velx), Mathf.Abs(vely));
if (absvelx > maxXSpeed)
velx = Mathf.Sign(velx) * Mathf.Max(absvelx - CancellationAcceleration * (float)delta, maxXSpeed);
if (absvely > maxYSpeed)
vely = Mathf.Sign(vely) * Mathf.Max(absvely - CancellationAcceleration * (float)delta, maxYSpeed);
DebugTextLabel.Text =
$"grounded: {grounded}\n" +
$"vely: {vely}\n" +
$"velx: {velx}\n" +
$"lv : {_lv:F2} or {_lv/(float)delta:F2}\n" +
$"lcrc : {Predictor.AnyHit(PredictiveCollisions.Location.BottomLeft)}/{Predictor.AnyHit(PredictiveCollisions.Location.BottomRight)}";
// Force = new Vector2(0, forcey);
Velocity = new Vector2(velx, vely);
Velocity *= UnitToPx;
MoveAndSlide();
if (!grounded)
_timeInFlight += (float)delta;
base._Process(delta);
}
}
+43
View File
@@ -0,0 +1,43 @@
using Godot;
using System;
using System.Collections.Generic;
public partial class PredictiveCollisions : Node {
[Export]
public ShapeCast2D BottomLeft { get; set; }
[Export]
public ShapeCast2D BottomRight { get; set; }
[Export]
public ShapeCast2D TopLeft { get; set; }
[Export]
public ShapeCast2D TopRight { get; set; }
[Flags]
public enum Location {
BottomRight = 0b01,
TopRight = 0b11,
TopLeft = 0b10,
BottomLeft = 0b00
}
public Godot.Collections.Array Cast(Location location) {
GetShapeCast(location).ForceShapecastUpdate();
return GetShapeCast(location).CollisionResult;
}
public bool AnyHit(Location location)
=> (Cast(location)?.Count ?? -1) > 0;
public Godot.Collections.Array GetLastCastHits(Location location) {
return GetShapeCast(location).CollisionResult;
}
public ShapeCast2D GetShapeCast(Location location) => location switch {
Location.BottomLeft => BottomLeft,
Location.BottomRight => BottomRight,
Location.TopLeft => TopLeft,
Location.TopRight => TopRight,
_ => throw new Exception("Invalid location")
};
}
@@ -0,0 +1 @@
uid://de3b068om3gsq
+21
View File
@@ -0,0 +1,21 @@
using Godot;
using System;
public partial class ResetPlayer : Area2D {
[Export]
public Node2D Player { get; set; }
[Export]
public Vector2 ResetPosition { get; set; }
public override void _Ready() {
this.BodyShapeEntered += OnBodyShapeEntered;
base._Ready();
}
private void OnBodyShapeEntered(Rid bodyRid, Node2D body, long bodyShapeIndex, long localShapeIndex) {
if (Player == body) {
Player.Position = ResetPosition;
}
}
}
+1
View File
@@ -0,0 +1 @@
uid://d0qoxtv6ld1ef
+106
View File
@@ -0,0 +1,106 @@
using Godot;
using System;
using System.Collections.Generic;
#nullable enable
public class LevelPattern {
public TileMapPattern Level { get; }
public TileSet Solid1 { get; }
public TileSet? Solid2 { get; init; }
public TileSet Background1 { get; }
public TileSet? Background2 { get; init; }
public record Connection(int Length, bool IsHorizontal) { public bool IsVertical => !IsHorizontal; }
public Connection[] Connections { get; }
public Dictionary<Vector2I, Template.Tile> TranslationMap { get; }
public class Template {
public readonly record struct Solid(int Id);
public readonly record struct Background(int Id);
public readonly record struct Enemy(int Id);
public readonly record struct Item(int Id);
public readonly record struct Decoration(int Id);
public readonly record struct MultiTile(Tile NonOverlappable, OverlappableTile[] Overlappable);
public readonly record struct Any;
public readonly union OverlappableTile(Enemy, Item, Decoration);
public readonly union Tile(Solid, Any, Background, Enemy, Item, Decoration, MultiTile) {
public bool IsAir() {
if (this is Any or Background or Enemy or Item or Decoration) return true;
if (this is MultiTile mt) {
do {
if (mt.NonOverlappable is MultiTile _mt)
mt = _mt;
else
return mt.NonOverlappable is Any or Background or Enemy or Item or Decoration;
} while (true);
}
return false;
}
}
}
public LevelPattern(TileMapPattern pattern, TileSet solid1, TileSet background1) {
Level = pattern;
Solid1 = solid1;
Background1 = background1;
// Connections = CalculateConnections(pattern);
}
record struct ScanInfo(int XFrom, int XTo, int YFrom, int YTo);
public static Connection[] CalculateConnections(TileMapPattern pattern, Dictionary<Vector2I, Template.Tile> translations) {
var current = Vector2I.Zero;
var size = pattern.GetSize();
// scan borders
Span<ScanInfo> borders = stackalloc ScanInfo[] {
new ScanInfo(current.X, size.X, current.Y, current.Y), // top-horiz
new ScanInfo(current.X, current.X, current.Y, size.Y), // left-vert
new ScanInfo(current.X, size.X, size.Y, size.Y), // bottom-horiz
new ScanInfo(size.X, size.X, current.Y, size.Y) // right-vert
};
List<Connection> connections = [];
foreach(var border in borders) {
int xrun = 0;
for(int x = border.XFrom; x < border.XTo; x++) {
int yrun = 0;
for(int y = border.YFrom; y < border.YTo; y++) {
var cell = translations[pattern.GetCellAtlasCoords(new Vector2I(x, y))];
if (cell.IsAir())
yrun++;
else if (yrun > 0) {
connections.Add(new Connection(
yrun, IsHorizontal: false
));
yrun = 0;
}
}
if (border.YFrom == border.YTo) {
// horizontal run
var cell = translations[pattern.GetCellAtlasCoords(new Vector2I(x, border.YFrom))];
if (cell.IsAir())
xrun++;
else if (xrun > 0) {
connections.Add(new Connection(
xrun, IsHorizontal: true
));
xrun = 0;
}
}
}
}
return connections.ToArray();
}
}
#nullable restore
+1
View File
@@ -0,0 +1 @@
uid://b4fmcn1xf2rue
+4
View File
@@ -0,0 +1,4 @@
public class SymbolicTileMap {
}
+1
View File
@@ -0,0 +1 @@
uid://ca1802nst4udo
+6
View File
@@ -0,0 +1,6 @@
namespace System.Runtime.CompilerServices {
public interface IUnion { }
[AttributeUsage(AttributeTargets.Class)]
public sealed class UnionAttribute : Attribute { }
}
+1
View File
@@ -0,0 +1 @@
uid://cgpdhgigu3oo4
+33
View File
@@ -0,0 +1,33 @@
[gd_resource type="VisualShader" format=3 uid="uid://dwgy05x43arpb"]
[sub_resource type="VisualShaderNodeInput" id="VisualShaderNodeInput_46mxo"]
input_name = "color"
[sub_resource type="VisualShaderNodeFloatParameter" id="VisualShaderNodeFloatParameter_paeta"]
parameter_name = "FloatParameter"
qualifier = 2
hint = 1
default_value_enabled = true
default_value = 0.5
[sub_resource type="VisualShaderNodeVectorCompose" id="VisualShaderNodeVectorCompose_282el"]
default_input_values = [0, 0.0, 1, 0.0, 2, 0.0, 3, 0.0]
op_type = 2
[sub_resource type="VisualShaderNodeVectorOp" id="VisualShaderNodeVectorOp_ivc0m"]
default_input_values = [0, Quaternion(0, 0, 0, 0), 1, Quaternion(0, 0, 0, 0)]
op_type = 2
operator = 2
[resource]
mode = 1
flags/light_only = false
nodes/vertex/3/node = SubResource("VisualShaderNodeInput_46mxo")
nodes/vertex/3/position = Vector2(-280, 160)
nodes/vertex/7/node = SubResource("VisualShaderNodeFloatParameter_paeta")
nodes/vertex/7/position = Vector2(-460, 340)
nodes/vertex/8/node = SubResource("VisualShaderNodeVectorCompose_282el")
nodes/vertex/8/position = Vector2(-140, 300)
nodes/vertex/9/node = SubResource("VisualShaderNodeVectorOp_ivc0m")
nodes/vertex/9/position = Vector2(80, 160)
nodes/vertex/connections = PackedInt32Array(3, 0, 9, 0, 8, 0, 9, 1, 7, 0, 8, 0, 7, 0, 8, 1, 7, 0, 8, 2, 7, 0, 8, 3, 9, 0, 0, 2)