Player w gravity, rooms, physics, graphics

This commit is contained in:
cow 2024-06-18 14:25:56 -04:00
commit 47a1d8ee59
73 changed files with 1748 additions and 0 deletions

2
.gitattributes vendored Normal file

@ -0,0 +1,2 @@
# Normalize EOL for all files that Git considers text files.
* text=auto eol=lf

2
.gitignore vendored Normal file

@ -0,0 +1,2 @@
# Godot 4+ specific ignores
.godot/

0
README.md Normal file

@ -0,0 +1,18 @@
Copyright (c) Mikael Hermansson and Godot Jolt contributors.
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

@ -0,0 +1,91 @@
Godot Jolt incorporates third-party material from the projects listed below.
Godot Engine (https://github.com/godotengine/godot)
Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md).
Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur.
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.
godot-cpp (https://github.com/godot-jolt/godot-cpp)
Copyright (c) 2017-present Godot Engine contributors.
Copyright (c) 2022-present Mikael Hermansson.
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.
Jolt Physics (https://github.com/godot-jolt/jolt)
Copyright (c) 2021 Jorrit Rouwe.
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.
mimalloc (https://github.com/godot-jolt/mimalloc)
Copyright (c) 2018-2021 Microsoft Corporation, Daan Leijen.
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.

Binary file not shown.

Binary file not shown.

@ -0,0 +1,36 @@
[configuration]
entry_symbol = "godot_jolt_main"
compatibility_minimum = "4.2"
[libraries]
windows.release.x86_64 = "windows/godot-jolt_windows-x64.dll"
windows.debug.x86_64 = "windows/godot-jolt_windows-x64_editor.dll"
windows.release.x86_32 = "windows/godot-jolt_windows-x86.dll"
windows.debug.x86_32 = "windows/godot-jolt_windows-x86_editor.dll"
linux.release.x86_64 = "linux/godot-jolt_linux-x64.so"
linux.debug.x86_64 = "linux/godot-jolt_linux-x64_editor.so"
linux.release.x86_32 = "linux/godot-jolt_linux-x86.so"
linux.debug.x86_32 = "linux/godot-jolt_linux-x86_editor.so"
macos.release = "macos/godot-jolt_macos.framework"
macos.debug = "macos/godot-jolt_macos_editor.framework"
ios.release = "ios/godot-jolt_ios.framework"
ios.debug = "ios/godot-jolt_ios_editor.framework"
android.release.arm64 = "android/libgodot-jolt_android-arm64.so"
android.debug.arm64 = "android/libgodot-jolt_android-arm64_editor.so"
android.release.arm32 = "android/libgodot-jolt_android-arm32.so"
android.debug.arm32 = "android/libgodot-jolt_android-arm32_editor.so"
android.release.x86_64 = "android/libgodot-jolt_android-x64.so"
android.debug.x86_64 = "android/libgodot-jolt_android-x64_editor.so"
android.release.x86_32 = "android/libgodot-jolt_android-x86.so"
android.debug.x86_32 = "android/libgodot-jolt_android-x86_editor.so"

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>godot-jolt_ios</string>
<key>CFBundleName</key>
<string>Godot Jolt</string>
<key>CFBundleDisplayName</key>
<string>Godot Jolt</string>
<key>CFBundleIdentifier</key>
<string>org.godot-jolt.godot-jolt</string>
<key>NSHumanReadableCopyright</key>
<string>Copyright (c) Mikael Hermansson and Godot Jolt contributors.</string>
<key>CFBundleVersion</key>
<string>0.12.0</string>
<key>CFBundleShortVersionString</key>
<string>0.12.0</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CSResourcesFileMapped</key>
<true/>
<key>DTPlatformName</key>
<string>iphoneos</string>
<key>MinimumOSVersion</key>
<string>12.0</string>
</dict>
</plist>

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>godot-jolt_ios_editor</string>
<key>CFBundleName</key>
<string>Godot Jolt</string>
<key>CFBundleDisplayName</key>
<string>Godot Jolt</string>
<key>CFBundleIdentifier</key>
<string>org.godot-jolt.godot-jolt</string>
<key>NSHumanReadableCopyright</key>
<string>Copyright (c) Mikael Hermansson and Godot Jolt contributors.</string>
<key>CFBundleVersion</key>
<string>0.12.0</string>
<key>CFBundleShortVersionString</key>
<string>0.12.0</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CSResourcesFileMapped</key>
<true/>
<key>DTPlatformName</key>
<string>iphoneos</string>
<key>MinimumOSVersion</key>
<string>12.0</string>
</dict>
</plist>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>godot-jolt_macos</string>
<key>CFBundleName</key>
<string>Godot Jolt</string>
<key>CFBundleDisplayName</key>
<string>Godot Jolt</string>
<key>CFBundleIdentifier</key>
<string>org.godot-jolt.godot-jolt</string>
<key>NSHumanReadableCopyright</key>
<string>Copyright (c) Mikael Hermansson and Godot Jolt contributors.</string>
<key>CFBundleVersion</key>
<string>0.12.0</string>
<key>CFBundleShortVersionString</key>
<string>0.12.0</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CSResourcesFileMapped</key>
<true/>
<key>DTPlatformName</key>
<string>macosx</string>
<key>LSMinimumSystemVersion</key>
<string>10.12</string>
</dict>
</plist>

@ -0,0 +1,128 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>files</key>
<dict>
<key>Resources/Info.plist</key>
<data>
HxpaqrKUN+D+lkF90Phqlb+CZKo=
</data>
</dict>
<key>files2</key>
<dict>
<key>Resources/Info.plist</key>
<dict>
<key>hash2</key>
<data>
ZTtvl19PLRzCoTuDRMZ2FnJXIXsLYRhaBFxjroNsLDw=
</data>
</dict>
</dict>
<key>rules</key>
<dict>
<key>^Resources/</key>
<true/>
<key>^Resources/.*\.lproj/</key>
<dict>
<key>optional</key>
<true/>
<key>weight</key>
<real>1000</real>
</dict>
<key>^Resources/.*\.lproj/locversion.plist$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>1100</real>
</dict>
<key>^Resources/Base\.lproj/</key>
<dict>
<key>weight</key>
<real>1010</real>
</dict>
<key>^version.plist$</key>
<true/>
</dict>
<key>rules2</key>
<dict>
<key>.*\.dSYM($|/)</key>
<dict>
<key>weight</key>
<real>11</real>
</dict>
<key>^(.*/)?\.DS_Store$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>2000</real>
</dict>
<key>^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/</key>
<dict>
<key>nested</key>
<true/>
<key>weight</key>
<real>10</real>
</dict>
<key>^.*</key>
<true/>
<key>^Info\.plist$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>20</real>
</dict>
<key>^PkgInfo$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>20</real>
</dict>
<key>^Resources/</key>
<dict>
<key>weight</key>
<real>20</real>
</dict>
<key>^Resources/.*\.lproj/</key>
<dict>
<key>optional</key>
<true/>
<key>weight</key>
<real>1000</real>
</dict>
<key>^Resources/.*\.lproj/locversion.plist$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>1100</real>
</dict>
<key>^Resources/Base\.lproj/</key>
<dict>
<key>weight</key>
<real>1010</real>
</dict>
<key>^[^/]+$</key>
<dict>
<key>nested</key>
<true/>
<key>weight</key>
<real>10</real>
</dict>
<key>^embedded\.provisionprofile$</key>
<dict>
<key>weight</key>
<real>20</real>
</dict>
<key>^version\.plist$</key>
<dict>
<key>weight</key>
<real>20</real>
</dict>
</dict>
</dict>
</plist>

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>godot-jolt_macos_editor</string>
<key>CFBundleName</key>
<string>Godot Jolt</string>
<key>CFBundleDisplayName</key>
<string>Godot Jolt</string>
<key>CFBundleIdentifier</key>
<string>org.godot-jolt.godot-jolt</string>
<key>NSHumanReadableCopyright</key>
<string>Copyright (c) Mikael Hermansson and Godot Jolt contributors.</string>
<key>CFBundleVersion</key>
<string>0.12.0</string>
<key>CFBundleShortVersionString</key>
<string>0.12.0</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CSResourcesFileMapped</key>
<true/>
<key>DTPlatformName</key>
<string>macosx</string>
<key>LSMinimumSystemVersion</key>
<string>10.12</string>
</dict>
</plist>

@ -0,0 +1,128 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>files</key>
<dict>
<key>Resources/Info.plist</key>
<data>
CpU1kp9qZhdCVqKdSia+981vm40=
</data>
</dict>
<key>files2</key>
<dict>
<key>Resources/Info.plist</key>
<dict>
<key>hash2</key>
<data>
4CTRXI34pj3JIJzQDUUZTlAagKWQeohPQN20M0VCK4o=
</data>
</dict>
</dict>
<key>rules</key>
<dict>
<key>^Resources/</key>
<true/>
<key>^Resources/.*\.lproj/</key>
<dict>
<key>optional</key>
<true/>
<key>weight</key>
<real>1000</real>
</dict>
<key>^Resources/.*\.lproj/locversion.plist$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>1100</real>
</dict>
<key>^Resources/Base\.lproj/</key>
<dict>
<key>weight</key>
<real>1010</real>
</dict>
<key>^version.plist$</key>
<true/>
</dict>
<key>rules2</key>
<dict>
<key>.*\.dSYM($|/)</key>
<dict>
<key>weight</key>
<real>11</real>
</dict>
<key>^(.*/)?\.DS_Store$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>2000</real>
</dict>
<key>^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/</key>
<dict>
<key>nested</key>
<true/>
<key>weight</key>
<real>10</real>
</dict>
<key>^.*</key>
<true/>
<key>^Info\.plist$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>20</real>
</dict>
<key>^PkgInfo$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>20</real>
</dict>
<key>^Resources/</key>
<dict>
<key>weight</key>
<real>20</real>
</dict>
<key>^Resources/.*\.lproj/</key>
<dict>
<key>optional</key>
<true/>
<key>weight</key>
<real>1000</real>
</dict>
<key>^Resources/.*\.lproj/locversion.plist$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>1100</real>
</dict>
<key>^Resources/Base\.lproj/</key>
<dict>
<key>weight</key>
<real>1010</real>
</dict>
<key>^[^/]+$</key>
<dict>
<key>nested</key>
<true/>
<key>weight</key>
<real>10</real>
</dict>
<key>^embedded\.provisionprofile$</key>
<dict>
<key>weight</key>
<real>20</real>
</dict>
<key>^version\.plist$</key>
<dict>
<key>weight</key>
<real>20</real>
</dict>
</dict>
</dict>
</plist>

Binary file not shown.

Binary file not shown.

39
export_presets.cfg Normal file

@ -0,0 +1,39 @@
[preset.0]
name="CAWEZ_Puzzlebox"
platform="Linux/X11"
runnable=true
dedicated_server=false
custom_features=""
export_filter="all_resources"
include_filter=""
exclude_filter=""
export_path="../Desktop/CAWEZ/CAWEZ_Puzzlebox.x86_64"
encryption_include_filters=""
encryption_exclude_filters=""
encrypt_pck=false
encrypt_directory=false
[preset.0.options]
custom_template/debug=""
custom_template/release=""
debug/export_console_wrapper=1
binary_format/embed_pck=false
texture_format/bptc=true
texture_format/s3tc=true
texture_format/etc=false
texture_format/etc2=false
binary_format/architecture="x86_64"
ssh_remote_deploy/enabled=false
ssh_remote_deploy/host="user@host_ip"
ssh_remote_deploy/port="22"
ssh_remote_deploy/extra_args_ssh=""
ssh_remote_deploy/extra_args_scp=""
ssh_remote_deploy/run_script="#!/usr/bin/env bash
export DISPLAY=:0
unzip -o -q \"{temp_dir}/{archive_name}\" -d \"{temp_dir}\"
\"{temp_dir}/{exe_name}\" {cmd_args}"
ssh_remote_deploy/cleanup_script="#!/usr/bin/env bash
kill $(pgrep -x -f \"{temp_dir}/{exe_name} {cmd_args}\")
rm -rf \"{temp_dir}\""

13
globals.gd Normal file

@ -0,0 +1,13 @@
extends Node
var global_down = Vector3(0,0,0)
var sensitivity = 0.004
func _ready():
set_global_down(Vector3(0,-1,0))
func set_global_down(newDown: Vector3):
global_down = newDown.normalized()
if global_down.dot(Vector3.UP) == 1 || global_down.dot(Vector3.DOWN) == 1:
# Applies jitter
global_down += Vector3(0.01,0,0)

1
icon.svg Normal file

@ -0,0 +1 @@
<svg height="128" width="128" xmlns="http://www.w3.org/2000/svg"><rect x="2" y="2" width="124" height="124" rx="14" fill="#363d52" stroke="#212532" stroke-width="4"/><g transform="scale(.101) translate(122 122)"><g fill="#fff"><path d="M105 673v33q407 354 814 0v-33z"/><path d="m105 673 152 14q12 1 15 14l4 67 132 10 8-61q2-11 15-15h162q13 4 15 15l8 61 132-10 4-67q3-13 15-14l152-14V427q30-39 56-81-35-59-83-108-43 20-82 47-40-37-88-64 7-51 8-102-59-28-123-42-26 43-46 89-49-7-98 0-20-46-46-89-64 14-123 42 1 51 8 102-48 27-88 64-39-27-82-47-48 49-83 108 26 42 56 81zm0 33v39c0 276 813 276 814 0v-39l-134 12-5 69q-2 10-14 13l-162 11q-12 0-16-11l-10-65H446l-10 65q-4 11-16 11l-162-11q-12-3-14-13l-5-69z" fill="#478cbf"/><path d="M483 600c0 34 58 34 58 0v-86c0-34-58-34-58 0z"/><circle cx="725" cy="526" r="90"/><circle cx="299" cy="526" r="90"/></g><g fill="#414042"><circle cx="307" cy="532" r="60"/><circle cx="717" cy="532" r="60"/></g></g></svg>

After

Width:  |  Height:  |  Size: 949 B

38
icon.svg.import Normal file

@ -0,0 +1,38 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bamlg2c8avrdx"
path.s3tc="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://icon.svg"
dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

BIN
player/player_model.blend Normal file

Binary file not shown.

@ -0,0 +1,50 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://b63mupr1u2nq0"
path="res://.godot/imported/player_model.blend-e827f74075107e5c935a1df2bc1df101.scn"
[deps]
source_file="res://player/player_model.blend"
dest_files=["res://.godot/imported/player_model.blend-e827f74075107e5c935a1df2bc1df101.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/apply_root_scale=true
nodes/root_scale=1.0
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true
meshes/light_baking=1
meshes/lightmap_texel_size=0.2
meshes/force_disable_compression=false
skins/use_named_skins=true
animation/import=true
animation/fps=30
animation/trimming=false
animation/remove_immutable_tracks=true
import_script/path=""
_subresources={}
gltf/naming_version=1
gltf/embedded_image_handling=1
blender/nodes/visible=0
blender/nodes/punctual_lights=true
blender/nodes/cameras=true
blender/nodes/custom_properties=true
blender/nodes/modifiers=1
blender/meshes/colors=false
blender/meshes/uvs=true
blender/meshes/normals=true
blender/meshes/tangents=true
blender/meshes/skins=2
blender/meshes/export_bones_deforming_mesh_only=false
blender/materials/unpack_enabled=true
blender/materials/export_materials=1
blender/animation/limit_playback=true
blender/animation/always_sample=true
blender/animation/group_tracks=true

BIN
player/player_model.blend1 Normal file

Binary file not shown.

88
player/player_moves.gd Normal file

@ -0,0 +1,88 @@
extends RigidBody3D
var airtime = 0.0
var mouse_input = Vector2(0,0)
var raw_mouse_input = Vector2(0,0)
var alpha = 10
# Called when the node enters the scene tree for the first time.
func _ready():
Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED)
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta):
# Makes sure everything is sane
$grounded.global_position = global_position
$grounded.target_position = Globals.global_down * 1.1
$level.position = global_position
# Gravity!
apply_central_force(Globals.global_down * 9.8 * 100 * delta)
# Sets up the input variables
# Cursor input
raw_mouse_input = Input.get_last_mouse_velocity() * delta * Globals.sensitivity
# Zoom in/out
var scroll_input = 0.5 * int(Input.is_action_just_released("out")) - int(Input.is_action_just_released("in"))
# WASD
var move_input := Vector3.ZERO
# Filters the mouse input using exponential interpolation
mouse_input.x = mouse_input.x * exp(-alpha * delta) + raw_mouse_input.x * (1.0 - exp(-alpha * delta))
mouse_input.y = mouse_input.y * exp(-alpha * delta * 3) + raw_mouse_input.y * (1.0 - exp(-alpha * delta * 3))
# Assigns the controls input
move_input.x = Input.get_axis("forward", "backwards")
move_input.y = -Input.get_axis("right", "left")
# Rotates the camera
$level/gimbal_y.rotate_z(-mouse_input.x)
$level/gimbal_y/gimbal_x.rotate_x(-mouse_input.y)
# Clamps the up/down
$level/gimbal_y/gimbal_x.rotation_degrees.x = clamp ($level/gimbal_y/gimbal_x.rotation_degrees.x, 5, 175)
# Zooms in/out
$level/gimbal_y/gimbal_x/stick/camera.translate(Vector3(0,0,scroll_input))
$level/gimbal_y/gimbal_x/stick/camera.position.z = clamp($level/gimbal_y/gimbal_x/stick/camera.position.z, 0, 50)
# Default size is 0.85 = 1m
$player_model.scale = Vector3(1,1,1) * clamp($level/gimbal_y/gimbal_x/stick/camera.position.z/2, 0, 0.85)
# Is the player on the ground?
if ($grounded.is_colliding()):
# Makes airtime negative (coyote frames)
airtime = -0.3
# Moves via rotation
apply_torque(Quaternion.from_euler($level/gimbal_y.global_rotation) * (move_input * 2000.0 * delta))
else:
#Moves via translation
apply_central_force(Quaternion.from_euler($level/gimbal_y.global_rotation) * (Vector3(move_input.y, -move_input.x, 0) * 300.0 * delta))
# Is the break key pressed?
if Input.get_action_strength("alternate") > 0.0 && move_input == Vector3(0,0,0):
# Velocity becomes up/down
linear_velocity = Globals.global_down * Globals.global_down.dot(linear_velocity)
# Updates the air time
airtime += delta
# Pressed jump and can jump?
if (Input.get_action_strength("up") > 0.0 && airtime < 0.0):
# Plays the animation
$player_model/AnimationPlayer.play("ArmatureAction")
# Find the velocity along the down vector
var velocity_along_normal = Globals.global_down * Globals.global_down.dot(linear_velocity)
var new_velocity = (linear_velocity - velocity_along_normal) + (Globals.global_down * -20)
# Applies the new velocity
set_linear_velocity(new_velocity)

57
player/player_node.tscn Normal file

@ -0,0 +1,57 @@
[gd_scene load_steps=8 format=3 uid="uid://pyhlicd4a0ec"]
[ext_resource type="Script" path="res://player/player_moves.gd" id="1_2ps78"]
[ext_resource type="PackedScene" uid="uid://b63mupr1u2nq0" path="res://player/player_model.blend" id="1_uh731"]
[ext_resource type="Script" path="res://player/seek_level.gd" id="3_yfi6d"]
[sub_resource type="PhysicsMaterial" id="PhysicsMaterial_s88nq"]
friction = 7.0
rough = true
[sub_resource type="SphereShape3D" id="SphereShape3D_qx3du"]
radius = 1.0
[sub_resource type="GDScript" id="GDScript_pbl37"]
script/source = "extends Node3D
"
[sub_resource type="CapsuleMesh" id="CapsuleMesh_1nqfw"]
radius = 0.1
height = 2.787
[node name="player" type="RigidBody3D"]
physics_material_override = SubResource("PhysicsMaterial_s88nq")
gravity_scale = 0.0
angular_damp = 6.0
script = ExtResource("1_2ps78")
[node name="collider" type="CollisionShape3D" parent="."]
shape = SubResource("SphereShape3D_qx3du")
[node name="player_model" parent="." instance=ExtResource("1_uh731")]
transform = Transform3D(0.85, 0, 0, 0, 0.85, 0, 0, 0, 0.85, 0, 0, 0)
[node name="grounded" type="RayCast3D" parent="."]
top_level = true
target_position = Vector3(0, -1.1, 0)
[node name="level" type="Node3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)
top_level = true
script = ExtResource("3_yfi6d")
[node name="gimbal_y" type="Node3D" parent="level"]
script = SubResource("GDScript_pbl37")
[node name="gimbal_x" type="Node3D" parent="level/gimbal_y"]
[node name="stick" type="Node3D" parent="level/gimbal_y/gimbal_x"]
[node name="camera" type="Camera3D" parent="level/gimbal_y/gimbal_x/stick"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 14.3224)
[node name="MeshInstance3D" type="MeshInstance3D" parent="level"]
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, 0)
mesh = SubResource("CapsuleMesh_1nqfw")

12
player/seek_level.gd Normal file

@ -0,0 +1,12 @@
extends Node3D
# Called when the node enters the scene tree for the first time.
func _ready():
pass # Replace with function body.
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(_delta):
#rotation=Globals.global_rotate
look_at(position + Globals.global_down)

BIN
player_model.blend1 Normal file

Binary file not shown.

Binary file not shown.

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://ck6rsckrlm5ql"
path.bptc="res://.godot/imported/background.hdr-4791c4573f4e54899bd21a1b5cb2abad.bptc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://primitives/skybox/background.hdr"
dest_files=["res://.godot/imported/background.hdr-4791c4573f4e54899bd21a1b5cb2abad.bptc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

@ -0,0 +1,57 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://bcsejkg5vcjgl"
path="res://.godot/imported/skybox.blend-282a06ea6d5dae8388eea90bc77c8673.scn"
[deps]
source_file="res://primitives/skybox/skybox.blend"
dest_files=["res://.godot/imported/skybox.blend-282a06ea6d5dae8388eea90bc77c8673.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/apply_root_scale=true
nodes/root_scale=1.0
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true
meshes/light_baking=1
meshes/lightmap_texel_size=0.2
meshes/force_disable_compression=false
skins/use_named_skins=true
animation/import=true
animation/fps=30
animation/trimming=false
animation/remove_immutable_tracks=true
import_script/path=""
_subresources={
"materials": {
"Material.001": {
"use_external/enabled": true,
"use_external/path": "res://primitives/skybox/skybox.tres"
}
}
}
gltf/naming_version=1
gltf/embedded_image_handling=1
blender/nodes/visible=0
blender/nodes/punctual_lights=true
blender/nodes/cameras=true
blender/nodes/custom_properties=true
blender/nodes/modifiers=1
blender/meshes/colors=false
blender/meshes/uvs=true
blender/meshes/normals=true
blender/meshes/tangents=true
blender/meshes/skins=2
blender/meshes/export_bones_deforming_mesh_only=false
blender/materials/unpack_enabled=true
blender/materials/export_materials=1
blender/animation/limit_playback=true
blender/animation/always_sample=true
blender/animation/group_tracks=true

@ -0,0 +1,10 @@
[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://bxe3igfei0cll"]
[ext_resource type="Texture2D" uid="uid://ck6rsckrlm5ql" path="res://primitives/skybox/background.hdr" id="1_fdwr0"]
[resource]
shading_mode = 0
disable_ambient_light = true
disable_fog = true
vertex_color_use_as_albedo = true
albedo_texture = ExtResource("1_fdwr0")

81
project.godot Normal file

@ -0,0 +1,81 @@
; Engine configuration file.
; It's best edited using the editor UI and not directly,
; since the parameters that go here are not all obvious.
;
; Format:
; [section] ; section goes between []
; param=value ; assign values to parameters
config_version=5
[application]
config/name="Cawez Puzzlebox"
run/main_scene="res://testscene.tscn"
config/features=PackedStringArray("4.2", "Forward Plus")
config/icon="res://icon.svg"
[autoload]
Globals="*res://globals.gd"
[input]
left={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":97,"echo":false,"script":null)
]
}
right={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"key_label":0,"unicode":100,"echo":false,"script":null)
]
}
forward={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":87,"key_label":0,"unicode":119,"echo":false,"script":null)
]
}
backwards={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":115,"echo":false,"script":null)
]
}
up={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":32,"key_label":0,"unicode":32,"echo":false,"script":null)
]
}
alternate={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194325,"key_label":0,"unicode":0,"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":4194326,"key_label":0,"unicode":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":4194329,"key_label":0,"unicode":0,"echo":false,"script":null)
]
}
more={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":81,"key_label":0,"unicode":113,"echo":false,"script":null)
, Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":1,"position":Vector2(198, 18),"global_position":Vector2(202, 59),"factor":1.0,"button_index":1,"canceled":false,"pressed":true,"double_click":false,"script":null)
]
}
less={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":69,"key_label":0,"unicode":101,"echo":false,"script":null)
, Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":2,"position":Vector2(229, 18),"global_position":Vector2(233, 59),"factor":1.0,"button_index":2,"canceled":false,"pressed":true,"double_click":false,"script":null)
]
}
in={
"deadzone": 0.5,
"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":8,"position":Vector2(209, 23),"global_position":Vector2(213, 64),"factor":1.0,"button_index":4,"canceled":false,"pressed":true,"double_click":false,"script":null)
]
}
out={
"deadzone": 0.5,
"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":16,"position":Vector2(174, 4),"global_position":Vector2(178, 45),"factor":1.0,"button_index":5,"canceled":false,"pressed":true,"double_click":false,"script":null)
]
}
[physics]
3d/physics_engine="JoltPhysics3D"

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 MiB

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bafeo5g7hr3x2"
path.s3tc="res://.godot/imported/Roughness Map.png-907b4a273711aad630b43db9e5433a80.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://rooms/blue/Roughness Map.png"
dest_files=["res://.godot/imported/Roughness Map.png-907b4a273711aad630b43db9e5433a80.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=1
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=1
roughness/src_normal="res://rooms/blue/Roughness Map.png"
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

BIN
rooms/blue/ceiling.blend Normal file

Binary file not shown.

@ -0,0 +1,66 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://cqr10c1hj3x8r"
path="res://.godot/imported/ceiling.blend-b78e96a9edc0eaab1311f59678234c61.scn"
[deps]
source_file="res://rooms/blue/ceiling.blend"
dest_files=["res://.godot/imported/ceiling.blend-b78e96a9edc0eaab1311f59678234c61.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/apply_root_scale=true
nodes/root_scale=1.0
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true
meshes/light_baking=1
meshes/lightmap_texel_size=0.2
meshes/force_disable_compression=false
skins/use_named_skins=true
animation/import=true
animation/fps=30
animation/trimming=false
animation/remove_immutable_tracks=true
import_script/path=""
_subresources={
"materials": {
"Material": {
"use_external/enabled": true,
"use_external/path": "res://rooms/blue/emissive_lights.tres"
},
"Material.001": {
"use_external/enabled": true,
"use_external/path": "res://rooms/blue/normal_ceiling.tres"
}
},
"nodes": {
"PATH:Cube": {
"mesh_instance/layers": 3
}
}
}
gltf/naming_version=1
gltf/embedded_image_handling=1
blender/nodes/visible=0
blender/nodes/punctual_lights=true
blender/nodes/cameras=true
blender/nodes/custom_properties=true
blender/nodes/modifiers=1
blender/meshes/colors=false
blender/meshes/uvs=true
blender/meshes/normals=true
blender/meshes/tangents=true
blender/meshes/skins=2
blender/meshes/export_bones_deforming_mesh_only=false
blender/materials/unpack_enabled=true
blender/materials/export_materials=1
blender/animation/limit_playback=true
blender/animation/always_sample=true
blender/animation/group_tracks=true

@ -0,0 +1,6 @@
[gd_resource type="StandardMaterial3D" format=3 uid="uid://bk5bvrignm0qk"]
[resource]
emission_enabled = true
emission = Color(1, 1, 1, 1)
emission_energy_multiplier = 1.51

@ -0,0 +1,18 @@
[gd_resource type="StandardMaterial3D" load_steps=3 format=3 uid="uid://bvkooqk1g0amt"]
[ext_resource type="Texture2D" uid="uid://bok3x4q05h4vc" path="res://rooms/blue/floor_emit.png" id="1_1f6yp"]
[ext_resource type="Texture2D" uid="uid://dofcck4vs8lk0" path="res://rooms/blue/floor_normal.png" id="2_iful1"]
[resource]
albedo_color = Color(0.0253638, 0.0253638, 0.0253638, 1)
metallic = 0.75
metallic_specular = 0.25
roughness = 0.3
emission_enabled = true
emission_energy_multiplier = 4.0
emission_texture = ExtResource("1_1f6yp")
normal_enabled = true
normal_texture = ExtResource("2_iful1")
backlight = Color(0.251837, 0.743077, 0.72565, 1)
backlight_texture = ExtResource("1_1f6yp")
grow_amount = -0.985

BIN
rooms/blue/floor_emit.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 420 KiB

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bok3x4q05h4vc"
path.s3tc="res://.godot/imported/floor_emit.png-e614cd3a43b3f23705b3fec951b9f8b3.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://rooms/blue/floor_emit.png"
dest_files=["res://.godot/imported/floor_emit.png-e614cd3a43b3f23705b3fec951b9f8b3.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

BIN
rooms/blue/floor_normal.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 409 KiB

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dofcck4vs8lk0"
path.s3tc="res://.godot/imported/floor_normal.png-829737c0ee7cb4421c50398194c7b955.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://rooms/blue/floor_normal.png"
dest_files=["res://.godot/imported/floor_normal.png-829737c0ee7cb4421c50398194c7b955.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=1
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=1
roughness/src_normal="res://rooms/blue/Normal Map.png"
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

@ -0,0 +1,9 @@
[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://c73gwis8ocxbv"]
[ext_resource type="Texture2D" uid="uid://dxnv3hf0kqrj7" path="res://rooms/blue/wall_normal.png" id="1_1k4hw"]
[resource]
albedo_color = Color(0.396889, 0.396889, 0.396889, 1)
roughness = 0.16
normal_enabled = true
normal_texture = ExtResource("1_1k4hw")

@ -0,0 +1,136 @@
[gd_scene load_steps=9 format=3 uid="uid://ccbxd6724rlfj"]
[ext_resource type="Material" uid="uid://bvkooqk1g0amt" path="res://rooms/blue/floor_blue.tres" id="1_hiyjn"]
[ext_resource type="Material" uid="uid://3sflsgdp35e0" path="res://rooms/blue/wall_blue.tres" id="1_ly5au"]
[ext_resource type="PackedScene" uid="uid://cqr10c1hj3x8r" path="res://rooms/blue/ceiling.blend" id="3_lvnv1"]
[ext_resource type="PackedScene" uid="uid://bcsejkg5vcjgl" path="res://primitives/skybox/skybox.blend" id="4_debn2"]
[sub_resource type="BoxShape3D" id="BoxShape3D_bvvt8"]
size = Vector3(100, 100, 100)
[sub_resource type="QuadMesh" id="QuadMesh_r0d3t"]
material = ExtResource("1_hiyjn")
[sub_resource type="QuadMesh" id="QuadMesh_tk3ui"]
material = ExtResource("1_ly5au")
[sub_resource type="Environment" id="Environment_1t5lf"]
background_mode = 1
ssr_enabled = true
ssr_max_steps = 50
glow_enabled = true
glow_intensity = 0.93
glow_strength = 0.88
glow_bloom = 0.16
glow_blend_mode = 0
fog_light_color = Color(0.182804, 0.289838, 0.349834, 1)
fog_density = 0.0
adjustment_enabled = true
[node name="room_blue_floor" type="StaticBody3D"]
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -100, 0)
shape = SubResource("BoxShape3D_bvvt8")
[node name="CollisionShape3D4" type="CollisionShape3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 100, 0)
shape = SubResource("BoxShape3D_bvvt8")
[node name="CollisionShape3D5" type="CollisionShape3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 100, 0, 0)
shape = SubResource("BoxShape3D_bvvt8")
[node name="CollisionShape3D6" type="CollisionShape3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -100, 0, 0)
shape = SubResource("BoxShape3D_bvvt8")
[node name="CollisionShape3D2" type="CollisionShape3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 100)
shape = SubResource("BoxShape3D_bvvt8")
[node name="CollisionShape3D3" type="CollisionShape3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -100)
shape = SubResource("BoxShape3D_bvvt8")
[node name="mesh" type="Node3D" parent="."]
[node name="MeshInstance3D" type="MeshInstance3D" parent="mesh"]
transform = Transform3D(100, 0, 0, 0, -4.37114e-06, 100, 0, -100, -4.37114e-06, 0, -50, 0)
layers = 3
mesh = SubResource("QuadMesh_r0d3t")
[node name="MeshInstance3D2" type="MeshInstance3D" parent="mesh"]
transform = Transform3D(-4.37114e-06, 100, 0, -100, -4.37114e-06, 0, 0, 0, 100, 0, 0, -50)
layers = 3
mesh = SubResource("QuadMesh_tk3ui")
[node name="MeshInstance3D3" type="MeshInstance3D" parent="mesh"]
transform = Transform3D(1.91069e-13, -4.37114e-06, 100, -100, -4.37114e-06, 0, -4.37114e-06, 100, 4.37114e-06, -50, 0, 0)
layers = 3
mesh = SubResource("QuadMesh_tk3ui")
[node name="MeshInstance3D4" type="MeshInstance3D" parent="mesh"]
transform = Transform3D(4.37114e-06, -100, 8.74228e-06, -100, -4.37114e-06, 0, 3.82137e-13, -8.74228e-06, -100, 0, 0, 50)
layers = 3
mesh = SubResource("QuadMesh_tk3ui")
[node name="MeshInstance3D5" type="MeshInstance3D" parent="mesh"]
transform = Transform3D(-1.91069e-13, -4.37114e-06, -100, -100, 4.37114e-06, 0, -4.37114e-06, -100, 4.37114e-06, 50, 0, 0)
layers = 3
mesh = SubResource("QuadMesh_tk3ui")
[node name="ceiling" parent="mesh" instance=ExtResource("3_lvnv1")]
transform = Transform3D(50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0)
[node name="SpotLight3D" type="SpotLight3D" parent="."]
transform = Transform3D(0.983255, -0.182236, -7.96577e-09, 0, -4.37114e-08, 1, -0.182236, -0.983255, -4.29794e-08, 35, 50, 35)
light_color = Color(0.73881, 0.848951, 1, 1)
light_energy = 50.0
spot_range = 500.0
spot_attenuation = 1.68179
[node name="SpotLight3D2" type="SpotLight3D" parent="."]
transform = Transform3D(0.983255, -0.182236, -7.96577e-09, 0, -4.37114e-08, 1, -0.182236, -0.983255, -4.29794e-08, -35, 50, 35)
light_color = Color(0.73881, 0.848951, 1, 1)
light_energy = 50.0
spot_range = 499.975
spot_attenuation = 1.68179
[node name="SpotLight3D3" type="SpotLight3D" parent="."]
transform = Transform3D(0.983255, -0.182236, -7.96577e-09, 0, -4.37114e-08, 1, -0.182236, -0.983255, -4.29794e-08, 35, 50, -35)
light_color = Color(0.73881, 0.848951, 1, 1)
light_energy = 50.0
spot_range = 500.0
spot_attenuation = 1.68179
[node name="SpotLight3D4" type="SpotLight3D" parent="."]
transform = Transform3D(0.983255, -0.182236, -7.96577e-09, 0, -4.37114e-08, 1, -0.182236, -0.983255, -4.29794e-08, -35, 50, -35)
light_color = Color(0.73881, 0.848951, 1, 1)
light_energy = 45.0
spot_range = 500.0
spot_attenuation = 1.68179
spot_angle = 91.57
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
environment = SubResource("Environment_1t5lf")
[node name="ReflectionProbe" type="ReflectionProbe" parent="."]
layers = 2
update_mode = 1
size = Vector3(101, 101, 101)
box_projection = true
interior = true
enable_shadows = true
cull_mask = 2
mesh_lod_threshold = 0.0
ambient_mode = 0
ambient_color = Color(0.873298, 0.873298, 0.873298, 1)
ambient_color_energy = 11.43
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, 0)
light_energy = 0.01
[node name="skybox" parent="." instance=ExtResource("4_debn2")]
transform = Transform3D(400, 0, 0, 0, 400, 0, 0, 0, 400, 0, 0, 0)

14
rooms/blue/wall_blue.tres Normal file

@ -0,0 +1,14 @@
[gd_resource type="StandardMaterial3D" load_steps=3 format=3 uid="uid://3sflsgdp35e0"]
[ext_resource type="Texture2D" uid="uid://dsm7b746txu5x" path="res://rooms/blue/wall_emit.png" id="1_d0lb7"]
[ext_resource type="Texture2D" uid="uid://dxnv3hf0kqrj7" path="res://rooms/blue/wall_normal.png" id="2_2gvi5"]
[resource]
albedo_color = Color(0.0728426, 0.0728426, 0.0728426, 1)
metallic_specular = 1.0
roughness = 0.16
emission_enabled = true
emission_texture = ExtResource("1_d0lb7")
normal_enabled = true
normal_scale = 0.5
normal_texture = ExtResource("2_2gvi5")

BIN
rooms/blue/wall_emit.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 379 KiB

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dsm7b746txu5x"
path.s3tc="res://.godot/imported/wall_emit.png-c6bde6c0bc5b9c2e0da8198cfc300691.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://rooms/blue/wall_emit.png"
dest_files=["res://.godot/imported/wall_emit.png-c6bde6c0bc5b9c2e0da8198cfc300691.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

BIN
rooms/blue/wall_normal.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 MiB

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dxnv3hf0kqrj7"
path.s3tc="res://.godot/imported/wall_normal.png-1da0514643f5c768fe5633f354f1f620.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://rooms/blue/wall_normal.png"
dest_files=["res://.godot/imported/wall_normal.png-1da0514643f5c768fe5633f354f1f620.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=1
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=1
roughness/src_normal="res://rooms/blue/wall_normal.png"
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

BIN
rooms/yellow/Emission.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 305 KiB

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dijkhjlh01p8k"
path.s3tc="res://.godot/imported/Emission.png-6c11360e514b4e2a045e74cde4b7aabf.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://rooms/yellow/Emission.png"
dest_files=["res://.godot/imported/Emission.png-6c11360e514b4e2a045e74cde4b7aabf.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

BIN
rooms/yellow/Normal.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 MiB

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://pt5h2ai7dfqq"
path.s3tc="res://.godot/imported/Normal.png-04ef4382569ba3fa7ced2d20d2b0deb5.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://rooms/yellow/Normal.png"
dest_files=["res://.godot/imported/Normal.png-04ef4382569ba3fa7ced2d20d2b0deb5.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=1
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=1
roughness/src_normal="res://rooms/yellow/Normal.png"
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

@ -0,0 +1,187 @@
[gd_scene load_steps=9 format=3 uid="uid://bjs6r15h7ge62"]
[ext_resource type="Material" uid="uid://c2bppsuxirk3j" path="res://rooms/yellow/wall_yellow.tres" id="1_r5s2i"]
[ext_resource type="Material" uid="uid://bk5bvrignm0qk" path="res://rooms/blue/emissive_lights.tres" id="3_36idt"]
[ext_resource type="PackedScene" uid="uid://bcsejkg5vcjgl" path="res://primitives/skybox/skybox.blend" id="3_75x0b"]
[sub_resource type="BoxShape3D" id="BoxShape3D_sn4y7"]
size = Vector3(100, 100, 100)
[sub_resource type="QuadMesh" id="QuadMesh_r6p2x"]
material = ExtResource("1_r5s2i")
[sub_resource type="QuadMesh" id="QuadMesh_aifp0"]
material = ExtResource("1_r5s2i")
[sub_resource type="SphereMesh" id="SphereMesh_12bag"]
material = ExtResource("3_36idt")
[sub_resource type="Environment" id="Environment_ixm8g"]
background_mode = 1
ssr_enabled = true
ssr_max_steps = 50
glow_enabled = true
glow_intensity = 0.93
glow_strength = 0.88
glow_bloom = 0.16
glow_blend_mode = 0
fog_light_color = Color(0.182804, 0.289838, 0.349834, 1)
fog_density = 0.0
adjustment_enabled = true
[node name="room_yellow_floor" type="StaticBody3D"]
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -100, 0)
shape = SubResource("BoxShape3D_sn4y7")
[node name="CollisionShape3D4" type="CollisionShape3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 100, 0)
shape = SubResource("BoxShape3D_sn4y7")
[node name="CollisionShape3D5" type="CollisionShape3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 100, 0, 0)
shape = SubResource("BoxShape3D_sn4y7")
[node name="CollisionShape3D6" type="CollisionShape3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -100, 0, 0)
shape = SubResource("BoxShape3D_sn4y7")
[node name="CollisionShape3D2" type="CollisionShape3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 100)
shape = SubResource("BoxShape3D_sn4y7")
[node name="CollisionShape3D3" type="CollisionShape3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -100)
shape = SubResource("BoxShape3D_sn4y7")
[node name="mesh" type="Node3D" parent="."]
[node name="MeshInstance3D" type="MeshInstance3D" parent="mesh"]
transform = Transform3D(100, 0, 0, 0, -4.37114e-06, 100, 0, -100, -4.37114e-06, 0, -50, 0)
layers = 3
mesh = SubResource("QuadMesh_r6p2x")
[node name="MeshInstance3D2" type="MeshInstance3D" parent="mesh"]
transform = Transform3D(-4.37114e-06, 100, 0, -100, -4.37114e-06, 0, 0, 0, 100, 0, 0, -50)
layers = 3
mesh = SubResource("QuadMesh_aifp0")
[node name="MeshInstance3D3" type="MeshInstance3D" parent="mesh"]
transform = Transform3D(1.91069e-13, -4.37114e-06, 100, -100, -4.37114e-06, 0, -4.37114e-06, 100, 4.37114e-06, -50, 0, 0)
layers = 3
mesh = SubResource("QuadMesh_aifp0")
[node name="MeshInstance3D4" type="MeshInstance3D" parent="mesh"]
transform = Transform3D(4.37114e-06, -100, 8.74228e-06, -100, -4.37114e-06, 0, 3.82137e-13, -8.74228e-06, -100, 0, 0, 50)
layers = 3
mesh = SubResource("QuadMesh_aifp0")
[node name="MeshInstance3D5" type="MeshInstance3D" parent="mesh"]
transform = Transform3D(-1.91069e-13, -4.37114e-06, -100, -100, 4.37114e-06, 0, -4.37114e-06, -100, 4.37114e-06, 50, 0, 0)
layers = 3
mesh = SubResource("QuadMesh_aifp0")
[node name="MeshInstance3D6" type="MeshInstance3D" parent="mesh"]
transform = Transform3D(100, 0, 0, 0, -4.37114e-06, -100, 0, 100, -4.37114e-06, 0, 50, 0)
layers = 3
mesh = SubResource("QuadMesh_r6p2x")
skeleton = NodePath("../MeshInstance3D")
[node name="SpotLight3D" type="SpotLight3D" parent="."]
transform = Transform3D(0.887011, -0.461749, -2.01837e-08, 0, -4.37114e-08, 1, -0.461749, -0.887011, -3.87725e-08, 0, 50, 0)
light_color = Color(1, 0.973115, 0.786325, 1)
light_energy = 50.0
spot_range = 500.0
spot_attenuation = 1.68179
[node name="MeshInstance3D" type="MeshInstance3D" parent="SpotLight3D"]
transform = Transform3D(5.94297, -3.09372, 2.01837e-08, -3.09372, -5.94297, 8.24839e-08, -1.35231e-07, -5.52642e-07, -1, 0, 4.37103e-09, -0.0999985)
layers = 3
mesh = SubResource("SphereMesh_12bag")
skeleton = NodePath("../..")
[node name="SpotLight3D3" type="SpotLight3D" parent="."]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 50, 0, 0)
light_color = Color(1, 0.973115, 0.786325, 1)
light_energy = 50.0
spot_range = 500.0
spot_attenuation = 1.68179
[node name="MeshInstance3D" type="MeshInstance3D" parent="SpotLight3D3"]
transform = Transform3D(5.94297, -3.09372, 2.01837e-08, -3.09372, -5.94297, 8.24839e-08, -1.35231e-07, -5.52642e-07, -1, 0, 4.37103e-09, -0.0999985)
layers = 3
mesh = SubResource("SphereMesh_12bag")
skeleton = NodePath("../..")
[node name="SpotLight3D4" type="SpotLight3D" parent="."]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -50, 0, 0)
light_color = Color(1, 0.973115, 0.786325, 1)
light_energy = 50.0
spot_range = 500.0
spot_attenuation = 1.68179
[node name="MeshInstance3D" type="MeshInstance3D" parent="SpotLight3D4"]
transform = Transform3D(5.94297, -3.09372, 2.01837e-08, -3.09372, -5.94297, 8.24839e-08, -1.35231e-07, -5.52642e-07, -1, 0, 4.37103e-09, -0.0999985)
layers = 3
mesh = SubResource("SphereMesh_12bag")
skeleton = NodePath("../..")
[node name="SpotLight3D5" type="SpotLight3D" parent="."]
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, -50)
light_color = Color(1, 0.973115, 0.786325, 1)
light_energy = 50.0
spot_range = 500.0
spot_attenuation = 1.68179
[node name="MeshInstance3D" type="MeshInstance3D" parent="SpotLight3D5"]
transform = Transform3D(5.94297, -3.09372, 2.01837e-08, -3.09372, -5.94297, 8.24839e-08, -1.35231e-07, -5.52642e-07, -1, 0, 4.37103e-09, -0.0999985)
layers = 3
mesh = SubResource("SphereMesh_12bag")
skeleton = NodePath("../..")
[node name="SpotLight3D6" type="SpotLight3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 50)
light_color = Color(1, 0.973115, 0.786325, 1)
light_energy = 50.0
spot_range = 500.0
spot_attenuation = 1.68179
[node name="MeshInstance3D" type="MeshInstance3D" parent="SpotLight3D6"]
transform = Transform3D(5.94297, -3.09372, 2.01837e-08, -3.09372, -5.94297, 8.24839e-08, -1.35231e-07, -5.52642e-07, -1, 0, 4.37103e-09, -0.0999985)
layers = 3
mesh = SubResource("SphereMesh_12bag")
skeleton = NodePath("../..")
[node name="SpotLight3D2" type="SpotLight3D" parent="."]
transform = Transform3D(0.887011, -0.461749, -2.01837e-08, 0, -4.37114e-08, 1, -0.461749, -0.887011, -3.87725e-08, 0, -50, 0)
light_color = Color(1, 0.973115, 0.786325, 1)
light_energy = 50.0
spot_range = 500.0
spot_attenuation = 1.68179
spot_angle = 109.06
[node name="MeshInstance3D" type="MeshInstance3D" parent="SpotLight3D2"]
transform = Transform3D(5.94297, -3.09372, 2.01837e-08, -3.09372, -5.94297, 8.24839e-08, -1.35231e-07, -5.52642e-07, -1, 0, 4.37103e-09, -0.0999985)
layers = 3
mesh = SubResource("SphereMesh_12bag")
skeleton = NodePath("../..")
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
environment = SubResource("Environment_ixm8g")
[node name="ReflectionProbe" type="ReflectionProbe" parent="."]
layers = 2
update_mode = 1
size = Vector3(101, 101, 101)
box_projection = true
interior = true
enable_shadows = true
cull_mask = 2
mesh_lod_threshold = 0.0
ambient_mode = 0
ambient_color = Color(0.873298, 0.873298, 0.873298, 1)
ambient_color_energy = 11.43
[node name="skybox" parent="." instance=ExtResource("3_75x0b")]
transform = Transform3D(400, 0, 0, 0, 400, 0, 0, 0, 400, 0, 0, 0)

@ -0,0 +1,14 @@
[gd_resource type="StandardMaterial3D" load_steps=3 format=3 uid="uid://c2bppsuxirk3j"]
[ext_resource type="Texture2D" uid="uid://dijkhjlh01p8k" path="res://rooms/yellow/Emission.png" id="1_wbw8g"]
[ext_resource type="Texture2D" uid="uid://pt5h2ai7dfqq" path="res://rooms/yellow/Normal.png" id="2_24uyc"]
[resource]
albedo_color = Color(0.0728426, 0.0728426, 0.0728426, 1)
metallic_specular = 1.0
roughness = 0.16
emission_enabled = true
emission_texture = ExtResource("1_wbw8g")
normal_enabled = true
normal_scale = 0.5
normal_texture = ExtResource("2_24uyc")

39
testscene.tscn Normal file

@ -0,0 +1,39 @@
[gd_scene load_steps=7 format=3 uid="uid://dosqj5u034nai"]
[ext_resource type="PackedScene" uid="uid://pyhlicd4a0ec" path="res://player/player_node.tscn" id="1_6ggf4"]
[ext_resource type="PackedScene" uid="uid://bjs6r15h7ge62" path="res://rooms/yellow/room_yellow_floor.tscn" id="3_1isy3"]
[ext_resource type="PackedScene" uid="uid://ccbxd6724rlfj" path="res://rooms/blue/room_blue_floor.tscn" id="3_ql6ir"]
[sub_resource type="PhysicsMaterial" id="PhysicsMaterial_8njux"]
friction = 0.22
rough = true
[sub_resource type="BoxMesh" id="BoxMesh_uqix0"]
[sub_resource type="ConvexPolygonShape3D" id="ConvexPolygonShape3D_3iv3b"]
points = PackedVector3Array(-0.5, -0.5, -0.5, 0.5, -0.5, -0.5, -0.5, 0.5, -0.5, -0.5, -0.5, 0.5, 0.5, 0.5, -0.5, -0.5, 0.5, 0.5, 0.5, -0.5, 0.5, 0.5, 0.5, 0.5)
[node name="Node3D" type="Node3D"]
[node name="player" parent="." instance=ExtResource("1_6ggf4")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3.3796, 0)
[node name="room_blue_floor" parent="." instance=ExtResource("3_ql6ir")]
[node name="s" type="RigidBody3D" parent="."]
mass = 0.25
physics_material_override = SubResource("PhysicsMaterial_8njux")
linear_damp = 1.0
angular_damp = 1.0
[node name="MeshInstance3D" type="MeshInstance3D" parent="s"]
transform = Transform3D(3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0)
mesh = SubResource("BoxMesh_uqix0")
skeleton = NodePath("../..")
[node name="CollisionShape3D" type="CollisionShape3D" parent="s"]
transform = Transform3D(3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0)
shape = SubResource("ConvexPolygonShape3D_3iv3b")
[node name="StaticBody3D" parent="." instance=ExtResource("3_1isy3")]
visible = false