generated from krampus/template-godot4
Compare commits
6 Commits
1be3617c74
...
cd9a58a660
Author | SHA1 | Date | |
---|---|---|---|
cd9a58a660 | |||
5b56f9cd58 | |||
ed23981b19 | |||
cd1111d514 | |||
361e51d714 | |||
ec9b7e6f83 |
18
addons/godot-jolt/LICENSE.txt
Normal file
18
addons/godot-jolt/LICENSE.txt
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.
|
91
addons/godot-jolt/THIRDPARTY.txt
Normal file
91
addons/godot-jolt/THIRDPARTY.txt
Normal file
@ -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.
|
BIN
addons/godot-jolt/android/libgodot-jolt_android-arm32.so
Normal file
BIN
addons/godot-jolt/android/libgodot-jolt_android-arm32.so
Normal file
Binary file not shown.
BIN
addons/godot-jolt/android/libgodot-jolt_android-arm32_editor.so
Normal file
BIN
addons/godot-jolt/android/libgodot-jolt_android-arm32_editor.so
Normal file
Binary file not shown.
BIN
addons/godot-jolt/android/libgodot-jolt_android-arm64.so
Normal file
BIN
addons/godot-jolt/android/libgodot-jolt_android-arm64.so
Normal file
Binary file not shown.
BIN
addons/godot-jolt/android/libgodot-jolt_android-arm64_editor.so
Normal file
BIN
addons/godot-jolt/android/libgodot-jolt_android-arm64_editor.so
Normal file
Binary file not shown.
BIN
addons/godot-jolt/android/libgodot-jolt_android-x64.so
Normal file
BIN
addons/godot-jolt/android/libgodot-jolt_android-x64.so
Normal file
Binary file not shown.
BIN
addons/godot-jolt/android/libgodot-jolt_android-x64_editor.so
Normal file
BIN
addons/godot-jolt/android/libgodot-jolt_android-x64_editor.so
Normal file
Binary file not shown.
BIN
addons/godot-jolt/android/libgodot-jolt_android-x86.so
Normal file
BIN
addons/godot-jolt/android/libgodot-jolt_android-x86.so
Normal file
Binary file not shown.
BIN
addons/godot-jolt/android/libgodot-jolt_android-x86_editor.so
Normal file
BIN
addons/godot-jolt/android/libgodot-jolt_android-x86_editor.so
Normal file
Binary file not shown.
41
addons/godot-jolt/godot-jolt.gdextension
Normal file
41
addons/godot-jolt/godot-jolt.gdextension
Normal file
@ -0,0 +1,41 @@
|
||||
[godot-jolt]
|
||||
version = "0.14.0-stable"
|
||||
build = "3392156fab"
|
||||
|
||||
[configuration]
|
||||
|
||||
entry_symbol = "godot_jolt_main"
|
||||
compatibility_minimum = "4.3"
|
||||
compatibility_maximum = "4.3"
|
||||
|
||||
[libraries]
|
||||
|
||||
windows.release.single.x86_64 = "windows/godot-jolt_windows-x64.dll"
|
||||
windows.debug.single.x86_64 = "windows/godot-jolt_windows-x64_editor.dll"
|
||||
|
||||
windows.release.single.x86_32 = "windows/godot-jolt_windows-x86.dll"
|
||||
windows.debug.single.x86_32 = "windows/godot-jolt_windows-x86_editor.dll"
|
||||
|
||||
linux.release.single.x86_64 = "linux/godot-jolt_linux-x64.so"
|
||||
linux.debug.single.x86_64 = "linux/godot-jolt_linux-x64_editor.so"
|
||||
|
||||
linux.release.single.x86_32 = "linux/godot-jolt_linux-x86.so"
|
||||
linux.debug.single.x86_32 = "linux/godot-jolt_linux-x86_editor.so"
|
||||
|
||||
macos.release.single = "macos/godot-jolt_macos.framework"
|
||||
macos.debug.single = "macos/godot-jolt_macos_editor.framework"
|
||||
|
||||
ios.release.single = "ios/godot-jolt_ios.framework"
|
||||
ios.debug.single = "ios/godot-jolt_ios_editor.framework"
|
||||
|
||||
android.release.single.arm64 = "android/libgodot-jolt_android-arm64.so"
|
||||
android.debug.single.arm64 = "android/libgodot-jolt_android-arm64_editor.so"
|
||||
|
||||
android.release.single.arm32 = "android/libgodot-jolt_android-arm32.so"
|
||||
android.debug.single.arm32 = "android/libgodot-jolt_android-arm32_editor.so"
|
||||
|
||||
android.release.single.x86_64 = "android/libgodot-jolt_android-x64.so"
|
||||
android.debug.single.x86_64 = "android/libgodot-jolt_android-x64_editor.so"
|
||||
|
||||
android.release.single.x86_32 = "android/libgodot-jolt_android-x86.so"
|
||||
android.debug.single.x86_32 = "android/libgodot-jolt_android-x86_editor.so"
|
51
addons/godot-jolt/ios/godot-jolt_ios.framework/Info.plist
Normal file
51
addons/godot-jolt/ios/godot-jolt_ios.framework/Info.plist
Normal file
@ -0,0 +1,51 @@
|
||||
<?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.14.0</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>0.14.0</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleSupportedPlatforms</key>
|
||||
<array>
|
||||
<string>iPhoneOS</string>
|
||||
</array>
|
||||
<key>CSResourcesFileMapped</key>
|
||||
<true/>
|
||||
<key>DTPlatformName</key>
|
||||
<string>iphoneos</string>
|
||||
<key>MinimumOSVersion</key>
|
||||
<string>12.0</string>
|
||||
|
||||
<!--
|
||||
HACK(mihe): This is to work around a bug in Godot 4.3-beta1, where it treats Framework
|
||||
bundles the same as XCFramework bundles, and expects there to be an `AvailableLibraries`
|
||||
entry, which is really only a thing in XCFramework bundles. Note that we also lie about the
|
||||
binary path having a `.dylib` extension in order for Godot to correctly identify this as a
|
||||
dynamically linked bundle.
|
||||
-->
|
||||
<key>AvailableLibraries</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>BinaryPath</key>
|
||||
<string>godot-jolt_ios.dylib</string>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
BIN
addons/godot-jolt/ios/godot-jolt_ios.framework/godot-jolt_ios
Normal file
BIN
addons/godot-jolt/ios/godot-jolt_ios.framework/godot-jolt_ios
Normal file
Binary file not shown.
@ -0,0 +1,51 @@
|
||||
<?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.14.0</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>0.14.0</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleSupportedPlatforms</key>
|
||||
<array>
|
||||
<string>iPhoneOS</string>
|
||||
</array>
|
||||
<key>CSResourcesFileMapped</key>
|
||||
<true/>
|
||||
<key>DTPlatformName</key>
|
||||
<string>iphoneos</string>
|
||||
<key>MinimumOSVersion</key>
|
||||
<string>12.0</string>
|
||||
|
||||
<!--
|
||||
HACK(mihe): This is to work around a bug in Godot 4.3-beta1, where it treats Framework
|
||||
bundles the same as XCFramework bundles, and expects there to be an `AvailableLibraries`
|
||||
entry, which is really only a thing in XCFramework bundles. Note that we also lie about the
|
||||
binary path having a `.dylib` extension in order for Godot to correctly identify this as a
|
||||
dynamically linked bundle.
|
||||
-->
|
||||
<key>AvailableLibraries</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>BinaryPath</key>
|
||||
<string>godot-jolt_ios_editor.dylib</string>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
Binary file not shown.
BIN
addons/godot-jolt/linux/godot-jolt_linux-x64.so
Normal file
BIN
addons/godot-jolt/linux/godot-jolt_linux-x64.so
Normal file
Binary file not shown.
BIN
addons/godot-jolt/linux/godot-jolt_linux-x64_editor.so
Normal file
BIN
addons/godot-jolt/linux/godot-jolt_linux-x64_editor.so
Normal file
Binary file not shown.
BIN
addons/godot-jolt/linux/godot-jolt_linux-x86.so
Normal file
BIN
addons/godot-jolt/linux/godot-jolt_linux-x86.so
Normal file
Binary file not shown.
BIN
addons/godot-jolt/linux/godot-jolt_linux-x86_editor.so
Normal file
BIN
addons/godot-jolt/linux/godot-jolt_linux-x86_editor.so
Normal file
Binary file not shown.
@ -0,0 +1,36 @@
|
||||
<?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.14.0</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>0.14.0</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleSupportedPlatforms</key>
|
||||
<array>
|
||||
<string>MacOSX</string>
|
||||
</array>
|
||||
<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>
|
||||
et0C7sxAlu4eIDcq2ihFQ2BhDSk=
|
||||
</data>
|
||||
</dict>
|
||||
<key>files2</key>
|
||||
<dict>
|
||||
<key>Resources/Info.plist</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
ZnG0hD4DciikOVWrf1Ai1Qedz9hESuIFvUujZAebHRY=
|
||||
</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.
@ -0,0 +1,36 @@
|
||||
<?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.14.0</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>0.14.0</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleSupportedPlatforms</key>
|
||||
<array>
|
||||
<string>MacOSX</string>
|
||||
</array>
|
||||
<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>
|
||||
oIAzxlQz4Hun6JnLVOu9jafYxGE=
|
||||
</data>
|
||||
</dict>
|
||||
<key>files2</key>
|
||||
<dict>
|
||||
<key>Resources/Info.plist</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
FA6I/u5+Ww0DzXAvawYXs792eum+8Bim8uHBbg98jqY=
|
||||
</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.
BIN
addons/godot-jolt/windows/godot-jolt_windows-x64.dll
Normal file
BIN
addons/godot-jolt/windows/godot-jolt_windows-x64.dll
Normal file
Binary file not shown.
BIN
addons/godot-jolt/windows/godot-jolt_windows-x64_editor.dll
Normal file
BIN
addons/godot-jolt/windows/godot-jolt_windows-x64_editor.dll
Normal file
Binary file not shown.
BIN
addons/godot-jolt/windows/godot-jolt_windows-x86.dll
Normal file
BIN
addons/godot-jolt/windows/godot-jolt_windows-x86.dll
Normal file
Binary file not shown.
BIN
addons/godot-jolt/windows/godot-jolt_windows-x86_editor.dll
Normal file
BIN
addons/godot-jolt/windows/godot-jolt_windows-x86_editor.dll
Normal file
Binary file not shown.
BIN
assets/fonts/Dokdo/Dokdo-Regular.ttf
Normal file
BIN
assets/fonts/Dokdo/Dokdo-Regular.ttf
Normal file
Binary file not shown.
34
assets/fonts/Dokdo/Dokdo-Regular.ttf.import
Normal file
34
assets/fonts/Dokdo/Dokdo-Regular.ttf.import
Normal file
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="font_data_dynamic"
|
||||
type="FontFile"
|
||||
uid="uid://comihs66wounx"
|
||||
path="res://.godot/imported/Dokdo-Regular.ttf-35686d8eb3881af645d50e9f0910bc9c.fontdata"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/fonts/Dokdo/Dokdo-Regular.ttf"
|
||||
dest_files=["res://.godot/imported/Dokdo-Regular.ttf-35686d8eb3881af645d50e9f0910bc9c.fontdata"]
|
||||
|
||||
[params]
|
||||
|
||||
Rendering=null
|
||||
antialiasing=1
|
||||
generate_mipmaps=true
|
||||
disable_embedded_bitmaps=true
|
||||
multichannel_signed_distance_field=false
|
||||
msdf_pixel_range=8
|
||||
msdf_size=48
|
||||
allow_system_fallback=true
|
||||
force_autohinter=false
|
||||
hinting=1
|
||||
subpixel_positioning=1
|
||||
oversampling=0.0
|
||||
Fallbacks=null
|
||||
fallbacks=[]
|
||||
Compress=null
|
||||
compress=true
|
||||
preload=[]
|
||||
language_support={}
|
||||
script_support={}
|
||||
opentype_features={}
|
93
assets/fonts/Dokdo/OFL.txt
Normal file
93
assets/fonts/Dokdo/OFL.txt
Normal file
@ -0,0 +1,93 @@
|
||||
Copyright (c) 2005-2017 FONTRIX. All Rights Reserved.
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
https://openfontlicense.org
|
||||
|
||||
|
||||
-----------------------------------------------------------
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
-----------------------------------------------------------
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
BIN
assets/fonts/Geo/Geo-Italic.ttf
Normal file
BIN
assets/fonts/Geo/Geo-Italic.ttf
Normal file
Binary file not shown.
34
assets/fonts/Geo/Geo-Italic.ttf.import
Normal file
34
assets/fonts/Geo/Geo-Italic.ttf.import
Normal file
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="font_data_dynamic"
|
||||
type="FontFile"
|
||||
uid="uid://b6gxwgomstkgu"
|
||||
path="res://.godot/imported/Geo-Italic.ttf-fff5102e64e08d3e98dbbd3b01b471cc.fontdata"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/fonts/Geo/Geo-Italic.ttf"
|
||||
dest_files=["res://.godot/imported/Geo-Italic.ttf-fff5102e64e08d3e98dbbd3b01b471cc.fontdata"]
|
||||
|
||||
[params]
|
||||
|
||||
Rendering=null
|
||||
antialiasing=1
|
||||
generate_mipmaps=true
|
||||
disable_embedded_bitmaps=true
|
||||
multichannel_signed_distance_field=false
|
||||
msdf_pixel_range=8
|
||||
msdf_size=48
|
||||
allow_system_fallback=true
|
||||
force_autohinter=false
|
||||
hinting=1
|
||||
subpixel_positioning=1
|
||||
oversampling=0.0
|
||||
Fallbacks=null
|
||||
fallbacks=[]
|
||||
Compress=null
|
||||
compress=true
|
||||
preload=[]
|
||||
language_support={}
|
||||
script_support={}
|
||||
opentype_features={}
|
BIN
assets/fonts/Geo/Geo-Regular.ttf
Normal file
BIN
assets/fonts/Geo/Geo-Regular.ttf
Normal file
Binary file not shown.
34
assets/fonts/Geo/Geo-Regular.ttf.import
Normal file
34
assets/fonts/Geo/Geo-Regular.ttf.import
Normal file
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="font_data_dynamic"
|
||||
type="FontFile"
|
||||
uid="uid://s4c1kf0rk2mb"
|
||||
path="res://.godot/imported/Geo-Regular.ttf-ea6aa4330b08d367c3a4134ebd69f7c6.fontdata"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/fonts/Geo/Geo-Regular.ttf"
|
||||
dest_files=["res://.godot/imported/Geo-Regular.ttf-ea6aa4330b08d367c3a4134ebd69f7c6.fontdata"]
|
||||
|
||||
[params]
|
||||
|
||||
Rendering=null
|
||||
antialiasing=1
|
||||
generate_mipmaps=true
|
||||
disable_embedded_bitmaps=true
|
||||
multichannel_signed_distance_field=false
|
||||
msdf_pixel_range=8
|
||||
msdf_size=48
|
||||
allow_system_fallback=true
|
||||
force_autohinter=false
|
||||
hinting=1
|
||||
subpixel_positioning=1
|
||||
oversampling=0.0
|
||||
Fallbacks=null
|
||||
fallbacks=[]
|
||||
Compress=null
|
||||
compress=true
|
||||
preload=[]
|
||||
language_support={}
|
||||
script_support={}
|
||||
opentype_features={}
|
94
assets/fonts/Geo/OFL.txt
Normal file
94
assets/fonts/Geo/OFL.txt
Normal file
@ -0,0 +1,94 @@
|
||||
Copyright (c) 2000-2010, Ben Weiner (ben@readingtype.org.uk),
|
||||
with Reserved Font Name Geo.
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
https://openfontlicense.org
|
||||
|
||||
|
||||
-----------------------------------------------------------
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
-----------------------------------------------------------
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
94
assets/fonts/Racing_Sans_One/OFL.txt
Normal file
94
assets/fonts/Racing_Sans_One/OFL.txt
Normal file
@ -0,0 +1,94 @@
|
||||
Copyright (c) 2012, Pablo Impallari (www.impallari.com|impallari@gmail.com),Rodrigo Fuenzalida (www.rfuenzalida.com|hello@rfuenzalida.com), with Reserved Font Name Racing Sans.
|
||||
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
https://openfontlicense.org
|
||||
|
||||
|
||||
-----------------------------------------------------------
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
-----------------------------------------------------------
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
BIN
assets/fonts/Racing_Sans_One/RacingSansOne-Regular.ttf
Normal file
BIN
assets/fonts/Racing_Sans_One/RacingSansOne-Regular.ttf
Normal file
Binary file not shown.
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="font_data_dynamic"
|
||||
type="FontFile"
|
||||
uid="uid://dsa0oh7c0h4pu"
|
||||
path="res://.godot/imported/RacingSansOne-Regular.ttf-88441b5e68f4114d3d33323daa87ff86.fontdata"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/fonts/Racing_Sans_One/RacingSansOne-Regular.ttf"
|
||||
dest_files=["res://.godot/imported/RacingSansOne-Regular.ttf-88441b5e68f4114d3d33323daa87ff86.fontdata"]
|
||||
|
||||
[params]
|
||||
|
||||
Rendering=null
|
||||
antialiasing=1
|
||||
generate_mipmaps=true
|
||||
disable_embedded_bitmaps=true
|
||||
multichannel_signed_distance_field=false
|
||||
msdf_pixel_range=8
|
||||
msdf_size=48
|
||||
allow_system_fallback=true
|
||||
force_autohinter=false
|
||||
hinting=1
|
||||
subpixel_positioning=1
|
||||
oversampling=0.0
|
||||
Fallbacks=null
|
||||
fallbacks=[]
|
||||
Compress=null
|
||||
compress=true
|
||||
preload=[]
|
||||
language_support={}
|
||||
script_support={}
|
||||
opentype_features={}
|
@ -10,10 +10,10 @@
|
||||
[ext_resource type="Texture2D" uid="uid://con5a36t6n6sq" path="res://assets/textures/clear_sea_water_2048x2048.png" id="7_t86h2"]
|
||||
[ext_resource type="PackedScene" uid="uid://cy7t2tc4y3b4" path="res://src/player/shot_setup/shot_setup.tscn" id="8_h44v5"]
|
||||
[ext_resource type="Script" path="res://src/world/ball_zone/ball_zone.gd" id="9_jwlau"]
|
||||
[ext_resource type="PackedScene" uid="uid://dagh38vap4t1d" path="res://src/scenery/city/concrete_building_1.tscn" id="10_lf15j"]
|
||||
[ext_resource type="PackedScene" uid="uid://cjubxs7peir5k" path="res://src/scenery/city/kana_signboard.tscn" id="11_evxup"]
|
||||
[ext_resource type="PackedScene" uid="uid://di7aql54lksn7" path="res://src/scenery/trees/palm_tree/palm_tree.tscn" id="12_sswxf"]
|
||||
[ext_resource type="PackedScene" uid="uid://c7l58wuuahn7w" path="res://src/props/flag.tscn" id="13_6jtao"]
|
||||
[ext_resource type="PackedScene" uid="uid://dagh38vap4t1d" path="res://src/props/scenery/city/concrete_building_1.tscn" id="10_lf15j"]
|
||||
[ext_resource type="PackedScene" uid="uid://cjubxs7peir5k" path="res://src/props/scenery/city/kana_signboard.tscn" id="11_evxup"]
|
||||
[ext_resource type="PackedScene" uid="uid://di7aql54lksn7" path="res://src/props/scenery/trees/palm_tree/palm_tree.tscn" id="12_sswxf"]
|
||||
[ext_resource type="PackedScene" uid="uid://c7l58wuuahn7w" path="res://src/props/flag/flag.tscn" id="13_6jtao"]
|
||||
[ext_resource type="Texture2D" uid="uid://dj60e8ri2fco" path="res://assets/models/scenery/city/concrete_building_1/concrete_building_1.png" id="14_y7s2h"]
|
||||
|
||||
[sub_resource type="FastNoiseLite" id="FastNoiseLite_rpgb7"]
|
||||
@ -41,6 +41,7 @@ _shader_parameters = {
|
||||
"vertex_normals_distance": 128.0
|
||||
}
|
||||
texture_filtering = 1
|
||||
show_navigation = true
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ly4sm"]
|
||||
cull_mode = 2
|
||||
@ -168,7 +169,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1.2, 0)
|
||||
shape = SubResource("BoxShape3D_x3wvm")
|
||||
|
||||
[node name="ShotSetup" parent="." instance=ExtResource("8_h44v5")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 218.499, 4, 294.341)
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 212.717, 4, 294.073)
|
||||
|
||||
[node name="Buildings" type="Node3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 129.404, -9.53674e-07, 309.4)
|
||||
@ -199,3 +200,12 @@ mesh = SubResource("BoxMesh_20p1k")
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="DebugTable/StaticBody3D"]
|
||||
shape = SubResource("BoxShape3D_g31tw")
|
||||
|
||||
[node name="Fairway" type="Area3D" parent="."]
|
||||
script = ExtResource("9_jwlau")
|
||||
terrain_angular_damping = 2.0
|
||||
|
||||
[node name="CollisionPolygon3D" type="CollisionPolygon3D" parent="Fairway"]
|
||||
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 209.788, 6.20358, 256.527)
|
||||
depth = 10.0
|
||||
polygon = PackedVector2Array(-1.47594, 8.77969, -12.788, 19.9447, -17.7778, 31.2864, -19.2001, 41.1398, -19.2001, 55.4081, -16.3465, 66.9813, -15.7123, 75.8594, -14.9196, 82.6765, -12.383, 89.9692, -5.6736, 102.186, 2.88742, 115.027, 9.22891, 125.332, 14.7777, 133.893, 23.4973, 146.417, 35.7046, 159.893, 44.1071, 167.661, 55.8437, 178.18, 64.5632, 185.314, 69.7949, 189.753, 73.7584, 193.082, 80.734, 200.85, 94.5267, 212.899, 106.576, 221.46, 127.915, 233.827, 139.647, 240.802, 170.403, 256.181, 183.721, 262.839, 204.489, 271.717, 216.062, 274.571, 224.465, 279.485, 235.727, 283.429, 246.983, 289.929, 253.958, 290.88, 265.373, 296.27, 275.044, 298.965, 288.995, 299.282, 302.154, 299.599, 330.056, 297.063, 356.532, 289.612, 370.483, 282.636, 382.057, 270.112, 388.081, 259.648, 392.679, 245.221, 395.849, 226.989, 395.863, 185.922, 391.266, 164.52, 381.913, 148.636, 362.889, 133.417, 344.657, 121.051, 327.059, 111.063, 306.291, 103.136, 292.974, 102.66, 277.913, 102.66, 264.913, 105.99, 241.347, 117.315, 222.323, 125.558, 203.457, 127.144, 182.371, 123.973, 157.322, 119.534, 132.908, 107.644, 108.651, 86.0827, 88.8301, 59.386, 82.6471, 48.764, 75.6715, 25.7761, 65.063, 10.562, 56.819, 3.7449, 48.5751, -0.852661, 35.2579, -3.07219, 20.8311, -3.38925, 7.35541, 1.36685)
|
||||
|
BIN
levels/debug_level/terrain_3d_storage.res
(Stored with Git LFS)
BIN
levels/debug_level/terrain_3d_storage.res
(Stored with Git LFS)
Binary file not shown.
@ -150,8 +150,12 @@ select_putter={
|
||||
|
||||
[physics]
|
||||
|
||||
3d/default_angular_damp=2.0
|
||||
3d/sleep_threshold_angular=0.3
|
||||
3d/physics_engine="JoltPhysics3D"
|
||||
3d/sleep_threshold_linear=0.1
|
||||
3d/sleep_threshold_angular=2.0
|
||||
jolt_3d/sleep/velocity_threshold=0.1
|
||||
jolt_3d/sleep/time_threshold=1.0
|
||||
jolt_3d/limits/max_temporary_memory=64
|
||||
|
||||
[rendering]
|
||||
|
||||
|
@ -169,7 +169,7 @@ bones/23/scale = Vector3(1, 1, 1)
|
||||
visible = false
|
||||
|
||||
[node name="BoneAttachment3D" type="BoneAttachment3D" parent="Armature/Skeleton3D" index="6"]
|
||||
transform = Transform3D(-0.944824, 0.316851, -0.0831417, -0.325345, -0.937238, 0.12544, -0.0381779, 0.145568, 0.988612, -0.1687, 3.1755, 0.839478)
|
||||
transform = Transform3D(-0.944824, 0.316851, -0.0831417, -0.325647, -0.936013, 0.133541, -0.0355091, 0.153247, 0.98755, -0.1687, 3.15793, 0.845315)
|
||||
bone_name = "Hand.R"
|
||||
bone_idx = 11
|
||||
|
||||
|
@ -5,6 +5,7 @@
|
||||
[sub_resource type="SphereShape3D" id="SphereShape3D_wmusx"]
|
||||
|
||||
[node name="FreeCamera" type="CharacterBody3D"]
|
||||
process_mode = 3
|
||||
collision_layer = 0
|
||||
script = ExtResource("1_3gm3q")
|
||||
|
||||
|
@ -2,3 +2,62 @@ class_name GameBall extends RigidBody3D
|
||||
## Base class for all gfolf balls
|
||||
|
||||
signal entered_water
|
||||
|
||||
const TERRAIN_DAMPING_EPSILON := 1e-6
|
||||
const IRON_DAMPING := 9999.0
|
||||
|
||||
## Angular damping while in air
|
||||
@export var air_damping := 0.0
|
||||
## Angular damping while in collision with rough terrain
|
||||
@export var rough_damping := 8.0
|
||||
## Angular damping for iron balls
|
||||
@export var iron_damping := 9999.0
|
||||
|
||||
## Causes the ball to act more like a brick
|
||||
@export var iron_ball := false:
|
||||
set(value):
|
||||
if value:
|
||||
physics_material_override = iron_physics
|
||||
else:
|
||||
physics_material_override = normal_physics
|
||||
iron_ball = value
|
||||
|
||||
var _zones: Array[BallZone] = []
|
||||
|
||||
@onready
|
||||
var normal_physics: PhysicsMaterial = preload("res://src/player/physics_ball/normal_physics.tres")
|
||||
@onready
|
||||
var iron_physics: PhysicsMaterial = preload("res://src/player/physics_ball/iron_physics.tres")
|
||||
|
||||
|
||||
## Called by a water area when this ball enters it
|
||||
func enter_water() -> void:
|
||||
entered_water.emit()
|
||||
|
||||
|
||||
func _total_terrain_angular_damping() -> float:
|
||||
return _zones.reduce(
|
||||
func(a: float, b: BallZone) -> float: return a + b.terrain_angular_damping, 0.0
|
||||
)
|
||||
|
||||
|
||||
func _integrate_forces(state: PhysicsDirectBodyState3D) -> void:
|
||||
var damping := air_damping
|
||||
if iron_ball:
|
||||
damping = iron_damping
|
||||
elif state.get_contact_count():
|
||||
damping = _total_terrain_angular_damping()
|
||||
if damping <= TERRAIN_DAMPING_EPSILON:
|
||||
damping = rough_damping
|
||||
angular_damp = damping
|
||||
|
||||
|
||||
func enter_zone(zone: BallZone) -> void:
|
||||
_zones.push_back(zone)
|
||||
|
||||
if zone.water_hazard:
|
||||
entered_water.emit()
|
||||
|
||||
|
||||
func exit_zone(zone: BallZone) -> void:
|
||||
_zones.erase(zone)
|
||||
|
7
src/player/physics_ball/iron_physics.tres
Normal file
7
src/player/physics_ball/iron_physics.tres
Normal file
@ -0,0 +1,7 @@
|
||||
[gd_resource type="PhysicsMaterial" format=3 uid="uid://cfd56nhaods5a"]
|
||||
|
||||
[resource]
|
||||
friction = 0.8
|
||||
rough = true
|
||||
bounce = 1.0
|
||||
absorbent = true
|
5
src/player/physics_ball/normal_physics.tres
Normal file
5
src/player/physics_ball/normal_physics.tres
Normal file
@ -0,0 +1,5 @@
|
||||
[gd_resource type="PhysicsMaterial" format=3 uid="uid://3bih72l068ic"]
|
||||
|
||||
[resource]
|
||||
friction = 0.8
|
||||
bounce = 0.5
|
@ -1,13 +1,10 @@
|
||||
[gd_scene load_steps=8 format=3 uid="uid://dfttci386ohip"]
|
||||
|
||||
[ext_resource type="Script" path="res://src/player/physics_ball/game_ball.gd" id="1_iwh2u"]
|
||||
[ext_resource type="PhysicsMaterial" uid="uid://3bih72l068ic" path="res://src/player/physics_ball/normal_physics.tres" id="1_l23pw"]
|
||||
[ext_resource type="Texture2D" uid="uid://ckhiq6rfjv63u" path="res://assets/textures/gfolfball/gfolfball.png" id="1_y3q5j"]
|
||||
[ext_resource type="Texture2D" uid="uid://btntjs7mbdigu" path="res://assets/textures/gfolfball/gfolfball_normal.png" id="2_mx7l6"]
|
||||
|
||||
[sub_resource type="PhysicsMaterial" id="PhysicsMaterial_2gatw"]
|
||||
friction = 0.2
|
||||
bounce = 0.5
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_xqofq"]
|
||||
albedo_texture = ExtResource("1_y3q5j")
|
||||
albedo_texture_force_srgb = true
|
||||
@ -32,10 +29,15 @@ radius = 0.05
|
||||
|
||||
[node name="PhysicsBall" type="RigidBody3D"]
|
||||
mass = 0.05
|
||||
physics_material_override = SubResource("PhysicsMaterial_2gatw")
|
||||
physics_material_override = ExtResource("1_l23pw")
|
||||
continuous_cd = true
|
||||
contact_monitor = true
|
||||
max_contacts_reported = 1
|
||||
linear_damp_mode = 1
|
||||
angular_damp_mode = 1
|
||||
angular_damp = 8.0
|
||||
script = ExtResource("1_iwh2u")
|
||||
iron_damping = 1e+07
|
||||
|
||||
[node name="BallMesh" type="MeshInstance3D" parent="."]
|
||||
mesh = SubResource("SphereMesh_y0d13")
|
||||
|
@ -34,6 +34,12 @@ const CAMERA_SNAP_TIME := 0.3
|
||||
@export var base_power := 2.5
|
||||
@export var base_curve := 0.0
|
||||
|
||||
@export_category("Debug")
|
||||
## When enabled, the game will pause and enter free cam mode when the ball has a collision.
|
||||
@export var debug_ball_impact := false
|
||||
## When enabled, ignore curve meter and hit a perfect shot every time.
|
||||
@export var perfect_aim := false
|
||||
|
||||
var base_speed: float = ProjectSettings.get_setting("game/config/controls/camera/free_camera_speed")
|
||||
|
||||
var x_sensitivity: float = ProjectSettings.get_setting(
|
||||
@ -85,7 +91,9 @@ var _tracking_camera: OrbitalCamera
|
||||
@onready var shot_animation: AnimationPlayer = %ShotAnimation
|
||||
|
||||
@onready var arrow: Node3D = %Arrow
|
||||
@onready var arrow_pivot: Node3D = %ArrowPivot
|
||||
@onready var arrow_animation: AnimationPlayer = %ArrowAnimation
|
||||
@onready var shot_projection: ProjectileArc = %ShotProjection
|
||||
|
||||
@onready var power_bar: ProgressBar = %PowerBar
|
||||
@onready var power_animation: AnimationPlayer = %PowerAnimation
|
||||
@ -94,13 +102,16 @@ var _tracking_camera: OrbitalCamera
|
||||
@onready var curve_animation: AnimationPlayer = %CurveAnimation
|
||||
|
||||
@onready var ball_point: Node3D = %BallPoint
|
||||
@onready var physics_ball: RigidBody3D = %PhysicsBall
|
||||
@onready var physics_ball: GameBall = %PhysicsBall
|
||||
|
||||
@onready var drive_ref: RayCast3D = %DriveRef
|
||||
@onready var drive_arrow: Node3D = %DriveArrow
|
||||
@onready var wedge_ref: RayCast3D = %WedgeRef
|
||||
@onready var wedge_arrow: Node3D = %WedgeArrow
|
||||
@onready var iron_ref: RayCast3D = %IronRef
|
||||
@onready var iron_arrow: Node3D = %IronArrow
|
||||
@onready var putt_ref: RayCast3D = %PuttRef
|
||||
@onready var putt_arrow: Node3D = %PuttArrow
|
||||
@onready var wedge_ref: RayCast3D = %WedgeRef
|
||||
|
||||
@onready var club_selector: ClubSelector = %ClubSelector
|
||||
|
||||
@ -160,13 +171,15 @@ func finish_downswing() -> void:
|
||||
phase = Phase.SHOT
|
||||
|
||||
|
||||
func take_shot() -> void:
|
||||
print("WHACK!")
|
||||
print("Power: ", power_bar.value)
|
||||
print("Curve: ", curve_bar.value)
|
||||
func get_shot_impulse(meter_pct: float) -> Vector3:
|
||||
return -shot_ref.global_basis.z * base_power * meter_pct
|
||||
|
||||
var impulse := shot_ref.global_basis.z * base_power * power_bar.value
|
||||
print("Shot impulse: ", impulse)
|
||||
|
||||
func take_shot() -> void:
|
||||
print_debug("WHACK!\nPower: ", power_bar.value, "\nCurve: ", curve_bar.value)
|
||||
|
||||
var impulse := get_shot_impulse(power_bar.value)
|
||||
print_debug("Shot impulse: ", impulse, "; ", impulse.length(), " N*s")
|
||||
|
||||
ball_impulse_debug.transform = (
|
||||
Transform3D.IDENTITY.scaled(Vector3.ONE * impulse.length()).looking_at(impulse)
|
||||
@ -176,8 +189,21 @@ func take_shot() -> void:
|
||||
physics_ball.apply_central_impulse(impulse)
|
||||
|
||||
|
||||
## Make the shot projection widget visible, with animated transition
|
||||
func _show_shot_projection() -> void:
|
||||
shot_projection.initial_speed = 1
|
||||
shot_projection.basis = shot_ref.basis.orthonormalized()
|
||||
var shot_speed := get_shot_impulse(1.0).length() / physics_ball.mass
|
||||
var tween := get_tree().create_tween()
|
||||
tween.tween_property(shot_projection, "initial_speed", shot_speed, CAMERA_SNAP_TIME).set_trans(
|
||||
Tween.TRANS_QUAD
|
||||
)
|
||||
shot_projection.show()
|
||||
|
||||
|
||||
func insert_free_cam() -> void:
|
||||
arrow_animation.play("hide")
|
||||
_show_shot_projection()
|
||||
hud_state.travel("hidden")
|
||||
_free_camera = FreeCamera.create(camera)
|
||||
add_sibling(_free_camera)
|
||||
@ -188,6 +214,7 @@ func insert_free_cam() -> void:
|
||||
func return_free_cam() -> void:
|
||||
# TODO alter shot aim based on free camera selection
|
||||
arrow_animation.play("show")
|
||||
#shot_projection.hide()
|
||||
hud_state.travel("visible")
|
||||
_free_camera.queue_free()
|
||||
_free_camera = null
|
||||
@ -239,13 +266,15 @@ func _on_club_change(new_club: Club.Type) -> void:
|
||||
# Hide all arrows
|
||||
# TODO animate?
|
||||
drive_arrow.hide()
|
||||
wedge_arrow.hide()
|
||||
iron_arrow.hide()
|
||||
putt_arrow.hide()
|
||||
physics_ball.iron_ball = false
|
||||
club_selector.value = new_club
|
||||
match new_club:
|
||||
Club.Type.DRIVER:
|
||||
shot_ref = drive_ref
|
||||
drive_arrow.show()
|
||||
|
||||
# TODO get this from player loadout
|
||||
# TODO club change animation
|
||||
character.hold_right(Club.catalog.debug_driver.get_model())
|
||||
@ -256,12 +285,13 @@ func _on_club_change(new_club: Club.Type) -> void:
|
||||
Club.Type.WEDGE:
|
||||
# TODO
|
||||
shot_ref = wedge_ref
|
||||
drive_arrow.show()
|
||||
wedge_arrow.show()
|
||||
character.hold_right(Club.catalog.debug_wedge.get_model())
|
||||
Club.Type.IRON:
|
||||
# TODO
|
||||
shot_ref = drive_ref
|
||||
drive_arrow.show()
|
||||
shot_ref = iron_ref
|
||||
iron_arrow.show()
|
||||
physics_ball.iron_ball = true
|
||||
character.hold_right(Club.catalog.debug_iron.get_model())
|
||||
Club.Type.SPECIAL:
|
||||
# TODO
|
||||
@ -322,7 +352,9 @@ func _process(delta: float) -> void:
|
||||
pitch.rotation.x = lerp_angle(pitch.rotation.x, _target_rotation.x, delta * y_acceleration)
|
||||
|
||||
# Arrow lags behind camera control
|
||||
arrow.rotation.y = lerp_angle(arrow.rotation.y, _target_rotation.y, delta * ARROW_ACCELERATION)
|
||||
arrow_pivot.rotation.y = lerp_angle(
|
||||
arrow_pivot.rotation.y, _target_rotation.y, delta * ARROW_ACCELERATION
|
||||
)
|
||||
# Player lags further behind
|
||||
player_pivot.rotation.y = lerp_angle(
|
||||
player_pivot.rotation.y, _target_rotation.y, delta * PLAYER_ACCELERATION
|
||||
@ -414,6 +446,18 @@ func _on_physics_ball_sleeping_state_changed() -> void:
|
||||
func _on_ball_entered_water() -> void:
|
||||
# Should only be possible during SHOT phase, but let's check just to be sure...
|
||||
if phase == Phase.SHOT:
|
||||
print("INTO THE DRINK!!")
|
||||
physics_ball.freeze = true
|
||||
wasted_animation.play("display")
|
||||
|
||||
|
||||
func _on_physics_ball_body_entered(_body: Node) -> void:
|
||||
print_debug("BONK!")
|
||||
if debug_ball_impact:
|
||||
get_tree().paused = true
|
||||
var snap_point: Node3D = camera
|
||||
if _tracking_camera:
|
||||
snap_point = _tracking_camera
|
||||
_free_camera = FreeCamera.create(snap_point)
|
||||
add_sibling(_free_camera)
|
||||
control_disabled = true
|
||||
camera.current = false
|
||||
|
@ -1,10 +1,12 @@
|
||||
[gd_scene load_steps=38 format=3 uid="uid://cy7t2tc4y3b4"]
|
||||
[gd_scene load_steps=40 format=3 uid="uid://cy7t2tc4y3b4"]
|
||||
|
||||
[ext_resource type="Script" path="res://src/player/shot_setup/shot_setup.gd" id="1_r6ei4"]
|
||||
[ext_resource type="PackedScene" uid="uid://dfttci386ohip" path="res://src/player/physics_ball/physics_ball.tscn" id="2_1i5j5"]
|
||||
[ext_resource type="PackedScene" uid="uid://c2k88ns0h5ie1" path="res://src/ui/arrow.tscn" id="2_s70wl"]
|
||||
[ext_resource type="PackedScene" uid="uid://c2k88ns0h5ie1" path="res://src/ui/arrow/arrow.tscn" id="2_s70wl"]
|
||||
[ext_resource type="PackedScene" uid="uid://1s3gywmoi20e" path="res://src/characters/gfolf_girl/gfolf_girl.tscn" id="3_e4aur"]
|
||||
[ext_resource type="PackedScene" uid="uid://445qd7m4qe2j" path="res://src/player/shot_setup/club_selector/club_selector.tscn" id="4_56ape"]
|
||||
[ext_resource type="PackedScene" uid="uid://fht6j87o8ecr" path="res://src/ui/projectile_arc/projectile_arc.tscn" id="4_ry2ho"]
|
||||
[ext_resource type="PackedScene" uid="uid://dbdul15c4oblg" path="res://src/ui/projected_target.tscn" id="6_mynqj"]
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_lnol1"]
|
||||
albedo_color = Color(0, 0.537255, 1, 1)
|
||||
@ -660,27 +662,36 @@ unique_name_in_owner = true
|
||||
|
||||
[node name="DriveRef" type="RayCast3D" parent="Direction"]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(-1, 6.18172e-08, -6.18172e-08, 0, 0.707107, 0.707107, 8.74228e-08, 0.707107, -0.707107, 0, 0.08, 0)
|
||||
transform = Transform3D(1, 0, 0, 0, 0.707107, -0.707107, 0, 0.707107, 0.707107, 0, 0.08, 0)
|
||||
enabled = false
|
||||
target_position = Vector3(0, 0, 1)
|
||||
target_position = Vector3(0, 0, -1)
|
||||
collision_mask = 0
|
||||
collide_with_bodies = false
|
||||
debug_shape_thickness = 4
|
||||
|
||||
[node name="WedgeRef" type="RayCast3D" parent="Direction"]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(-0.7, -5.29972e-08, 3.0598e-08, 0, 0.35, 0.606218, -6.11959e-08, 0.606218, -0.35, 0, 0.08, 0)
|
||||
transform = Transform3D(0.7, 0, 0, 0, 0.181173, -0.676148, 0, 0.676148, 0.181173, 0, 0.08, 0)
|
||||
enabled = false
|
||||
target_position = Vector3(0, 0, 1)
|
||||
target_position = Vector3(0, 0, -1)
|
||||
collision_mask = 0
|
||||
collide_with_bodies = false
|
||||
debug_shape_thickness = 4
|
||||
|
||||
[node name="IronRef" type="RayCast3D" parent="Direction"]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(0.7, 0, 0, 0, 0.449952, -0.536231, 0, 0.536231, 0.449952, 0, 0.08, 0)
|
||||
enabled = false
|
||||
target_position = Vector3(0, 0, -1)
|
||||
collision_mask = 0
|
||||
collide_with_bodies = false
|
||||
debug_shape_thickness = 4
|
||||
|
||||
[node name="PuttRef" type="RayCast3D" parent="Direction"]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(-1, 0, -1.50996e-07, 0, 1, 0, 1.50996e-07, 0, -1, 0, 0.08, 0)
|
||||
transform = Transform3D(0.8, 0, 0, 0, 0.8, 0, 0, 0, 0.8, 0, 0.08, 0)
|
||||
enabled = false
|
||||
target_position = Vector3(0, 0, 1)
|
||||
target_position = Vector3(0, 0, -1)
|
||||
collision_mask = 0
|
||||
collide_with_bodies = false
|
||||
debug_shape_thickness = 4
|
||||
@ -702,35 +713,68 @@ unique_name_in_owner = true
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 2.98023e-08, 0, -2.98023e-08, 1, 0, 0, 0)
|
||||
current = true
|
||||
|
||||
[node name="Arrow" type="Node3D" parent="."]
|
||||
[node name="ArrowPivot" type="Node3D" parent="."]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(0.001, 0, 0, 0, 0.001, 0, 0, 0, 0.001, 0, 0.1, 0)
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.1, 0)
|
||||
|
||||
[node name="ArrowAnimation" type="AnimationPlayer" parent="Arrow"]
|
||||
[node name="Arrow" type="Node3D" parent="ArrowPivot"]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(0.001, 0, 0, 0, 0.001, 0, 0, 0, 0.001, 0, 0, 0)
|
||||
|
||||
[node name="ArrowAnimation" type="AnimationPlayer" parent="ArrowPivot/Arrow"]
|
||||
unique_name_in_owner = true
|
||||
libraries = {
|
||||
"": SubResource("AnimationLibrary_rw0cf")
|
||||
}
|
||||
autoplay = "show"
|
||||
|
||||
[node name="DriveArrow" type="Node3D" parent="Arrow"]
|
||||
[node name="DriveArrow" type="Node3D" parent="ArrowPivot/Arrow"]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, 0, 0, 0)
|
||||
transform = Transform3D(1, 0, 0, 0, 0.707107, -0.707107, 0, 0.707107, 0.707107, 0, 0, 0)
|
||||
visible = false
|
||||
|
||||
[node name="ArrowMesh" parent="Arrow/DriveArrow" instance=ExtResource("2_s70wl")]
|
||||
transform = Transform3D(0.2, 0, 0, 0, 0.4, 0, 0, 0, 0.2, 0, 1, 0)
|
||||
[node name="ArrowMesh" parent="ArrowPivot/Arrow/DriveArrow" instance=ExtResource("2_s70wl")]
|
||||
transform = Transform3D(0.2, 0, 0, 0, -1.74846e-08, 0.2, 0, -0.4, -8.74228e-09, 0, 0, -1)
|
||||
loop_animation = 1
|
||||
|
||||
[node name="PuttArrow" type="Node3D" parent="Arrow"]
|
||||
[node name="WedgeArrow" type="Node3D" parent="ArrowPivot/Arrow"]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 0, 0)
|
||||
transform = Transform3D(0.7, 0, 0, 0, 0.181173, -0.676148, 0, 0.676148, 0.181173, 0, 0, 0)
|
||||
visible = false
|
||||
|
||||
[node name="ArrowMesh" parent="Arrow/PuttArrow" instance=ExtResource("2_s70wl")]
|
||||
transform = Transform3D(0.2, 0, 0, 0, 0.4, 0, 0, 0, 0.2, 0, 1, 0)
|
||||
[node name="ArrowMesh" parent="ArrowPivot/Arrow/WedgeArrow" instance=ExtResource("2_s70wl")]
|
||||
transform = Transform3D(0.2, 0, 0, 0, -1.74846e-08, 0.2, 0, -0.4, -8.74228e-09, 0, 0, -1)
|
||||
loop_animation = 1
|
||||
|
||||
[node name="IronArrow" type="Node3D" parent="ArrowPivot/Arrow"]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(0.7, 0, 0, 0, 0.449952, -0.536231, 0, 0.536231, 0.449952, 0, 0, 0)
|
||||
visible = false
|
||||
|
||||
[node name="ArrowMesh" parent="ArrowPivot/Arrow/IronArrow" instance=ExtResource("2_s70wl")]
|
||||
transform = Transform3D(0.2, 0, 0, 0, -1.74846e-08, 0.2, 0, -0.4, -8.74228e-09, 0, 0, -1)
|
||||
loop_animation = 1
|
||||
|
||||
[node name="PuttArrow" type="Node3D" parent="ArrowPivot/Arrow"]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(0.8, 0, 0, 0, 0.8, 0, 0, 0, 0.8, 0, 0, 0)
|
||||
visible = false
|
||||
|
||||
[node name="ArrowMesh" parent="ArrowPivot/Arrow/PuttArrow" instance=ExtResource("2_s70wl")]
|
||||
transform = Transform3D(0.2, 0, 0, 0, -1.74846e-08, 0.2, 0, -0.4, -8.74228e-09, 0, 0, -1)
|
||||
loop_animation = 1
|
||||
|
||||
[node name="ShotProjection" parent="ArrowPivot" node_paths=PackedStringArray("excluded_bodies") instance=ExtResource("4_ry2ho")]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(1, 0, 0, 0, 0.707107, -0.707107, 0, 0.707107, 0.707107, 0, -0.02, 0)
|
||||
visible = false
|
||||
initial_speed = 50.0
|
||||
time_step = 0.01
|
||||
max_steps = 800
|
||||
excluded_bodies = [NodePath("../../BallPoint/PhysicsBall")]
|
||||
|
||||
[node name="ProjectedTarget" parent="ArrowPivot/ShotProjection" instance=ExtResource("6_mynqj")]
|
||||
|
||||
[node name="ShotAnimation" type="AnimationPlayer" parent="."]
|
||||
unique_name_in_owner = true
|
||||
root_node = NodePath("../Direction/Elevation/Pitch/Zoom/Camera")
|
||||
@ -764,12 +808,9 @@ offset_bottom = 66.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
mouse_filter = 2
|
||||
theme_override_colors/font_shadow_color = Color(0, 0, 0, 1)
|
||||
theme_override_constants/shadow_offset_y = 4
|
||||
theme_override_constants/shadow_offset_x = 6
|
||||
theme_override_font_sizes/bold_italics_font_size = 168
|
||||
theme_type_variation = &"ShotFeedback"
|
||||
bbcode_enabled = true
|
||||
text = "[center][wave][rainbow][i][b]WOAH NICE[/b][/i][/rainbow][/wave][/center]"
|
||||
text = "[center][wave amp=64][rainbow]woah nice[/rainbow][/wave][/center]"
|
||||
fit_content = true
|
||||
autowrap_mode = 0
|
||||
visible_characters_behavior = 1
|
||||
@ -797,12 +838,9 @@ grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
pivot_offset = Vector2(100, 115)
|
||||
mouse_filter = 2
|
||||
theme_override_colors/font_shadow_color = Color(0, 0, 0, 1)
|
||||
theme_override_constants/shadow_offset_y = 4
|
||||
theme_override_constants/shadow_offset_x = 6
|
||||
theme_override_font_sizes/bold_italics_font_size = 168
|
||||
theme_type_variation = &"ShotFeedback"
|
||||
bbcode_enabled = true
|
||||
text = "[center][tornado radius=20][color=powder_blue][i][b]WASTED[/b][/i][/color][/tornado][/center]"
|
||||
text = "[center][tornado radius=16][color=powder_blue]wasted[/color][/tornado][/center]"
|
||||
fit_content = true
|
||||
autowrap_mode = 0
|
||||
visible_characters_behavior = 1
|
||||
@ -914,5 +952,6 @@ root_node = NodePath("%HUDStateMachine/..")
|
||||
tree_root = SubResource("AnimationNodeStateMachine_osrbp")
|
||||
anim_player = NodePath("../HUDAnimation")
|
||||
|
||||
[connection signal="body_entered" from="BallPoint/PhysicsBall" to="." method="_on_physics_ball_body_entered"]
|
||||
[connection signal="entered_water" from="BallPoint/PhysicsBall" to="." method="_on_ball_entered_water"]
|
||||
[connection signal="sleeping_state_changed" from="BallPoint/PhysicsBall" to="." method="_on_physics_ball_sleeping_state_changed"]
|
||||
|
20
src/props/flag/flag.gd
Normal file
20
src/props/flag/flag.gd
Normal file
@ -0,0 +1,20 @@
|
||||
@tool
|
||||
extends Node3D
|
||||
|
||||
@export var show_distance: bool:
|
||||
set(value):
|
||||
if distance_label:
|
||||
distance_label.visible = value
|
||||
get:
|
||||
return distance_label.visible
|
||||
@onready var distance_label: Label3D = %DistanceLabel
|
||||
|
||||
|
||||
func _process(_delta: float) -> void:
|
||||
if show_distance:
|
||||
var viewport := get_viewport()
|
||||
if viewport:
|
||||
var camera := viewport.get_camera_3d()
|
||||
if camera:
|
||||
var distance := int(global_position.distance_to(camera.global_position))
|
||||
distance_label.text = "Goal!\n%d m" % distance
|
@ -1,11 +1,35 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://c7l58wuuahn7w"]
|
||||
[gd_scene load_steps=5 format=3 uid="uid://c7l58wuuahn7w"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://dqj60gh364mn5" path="res://assets/models/course/flag/flag.gltf" id="1_ona6u"]
|
||||
[ext_resource type="FontFile" uid="uid://dsa0oh7c0h4pu" path="res://assets/fonts/Racing_Sans_One/RacingSansOne-Regular.ttf" id="2_tmki0"]
|
||||
[ext_resource type="Script" path="res://src/props/flag/flag.gd" id="2_wv8rd"]
|
||||
|
||||
[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_8ynho"]
|
||||
data = PackedVector3Array(0, 0, -0.025, 0.0217, 4, -0.0125, 0, 4, -0.025, 0, 0, -0.025, 0.0217, 0, -0.0125, 0.0217, 4, -0.0125, 0.0217, 0, -0.0125, 0.0217, 4, 0.0125, 0.0217, 4, -0.0125, 0.0217, 0, -0.0125, 0.0217, 0, 0.0125, 0.0217, 4, 0.0125, 0.0217, 0, 0.0125, 0, 4, 0.025, 0.0217, 4, 0.0125, 0.0217, 0, 0.0125, 0, 0, 0.025, 0, 4, 0.025, 0, 0, 0.025, -0.0217, 4, 0.0125, 0, 4, 0.025, 0, 0, 0.025, -0.0217, 0, 0.0125, -0.0217, 4, 0.0125, 0.0217, 4, 0.0125, 0, 4, -0.025, 0.0217, 4, -0.0125, 0, 4, -0.025, -0.0217, 4, 0.0125, -0.0217, 4, -0.0125, -0.0217, 4, 0.0125, 0.0217, 4, 0.0125, 0, 4, 0.025, 0, 4, -0.025, 0.0217, 4, 0.0125, -0.0217, 4, 0.0125, -0.0217, 0, 0.0125, -0.0217, 4, -0.0125, -0.0217, 4, 0.0125, -0.0217, 0, 0.0125, -0.0217, 0, -0.0125, -0.0217, 4, -0.0125, -0.0217, 0, -0.0125, 0, 4, -0.025, -0.0217, 4, -0.0125, -0.0217, 0, -0.0125, 0, 0, -0.025, 0, 4, -0.025, -0.0217, 0, -0.0125, 0.0217, 0, -0.0125, 0, 0, -0.025, 0.0217, 0, -0.0125, 0, 0, 0.025, 0.0217, 0, 0.0125, 0, 0, 0.025, -0.0217, 0, -0.0125, -0.0217, 0, 0.0125, 0.0217, 0, -0.0125, -0.0217, 0, -0.0125, 0, 0, 0.025)
|
||||
|
||||
[node name="Flag" instance=ExtResource("1_ona6u")]
|
||||
script = ExtResource("2_wv8rd")
|
||||
show_distance = true
|
||||
|
||||
[node name="DistanceLabel" type="Label3D" parent="Pole" index="0"]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 5, 0)
|
||||
visibility_range_begin = 20.0
|
||||
visibility_range_begin_margin = 2.0
|
||||
visibility_range_fade_mode = 1
|
||||
pixel_size = 0.001
|
||||
billboard = 1
|
||||
no_depth_test = true
|
||||
fixed_size = true
|
||||
texture_filter = 5
|
||||
render_priority = 3
|
||||
outline_render_priority = 2
|
||||
outline_modulate = Color(1, 0, 0.133333, 1)
|
||||
text = "Goal!
|
||||
0000 m"
|
||||
font = ExtResource("2_tmki0")
|
||||
outline_size = 8
|
||||
line_spacing = -16.0
|
||||
|
||||
[node name="Skeleton3D" parent="Armature" index="0"]
|
||||
bones/0/rotation = Quaternion(-0.0471389, 2.3332e-10, 0.0444053, 0.997901)
|
47
src/shaders/hologram.gdshader
Normal file
47
src/shaders/hologram.gdshader
Normal file
@ -0,0 +1,47 @@
|
||||
// Hologram shader
|
||||
// Adapted from https://godotshaders.com/shader/scifi-hologram/
|
||||
|
||||
shader_type spatial;
|
||||
render_mode unshaded;
|
||||
|
||||
uniform sampler2D texture_image;
|
||||
|
||||
uniform mediump vec4 line_color : source_color = vec4(0.0, 1.0, 0.0, 1.0);
|
||||
uniform mediump float line_width : hint_range(0, 1) = 0.005;
|
||||
uniform mediump float line_blur : hint_range(0, 1) = 0.2;
|
||||
uniform mediump float line_speed : hint_range(-1, 1) = 0.02;
|
||||
uniform bool straight_lines = true;
|
||||
|
||||
uniform mediump float interrupt_width : hint_range(0, 1) = 0.5;
|
||||
uniform mediump float interrupt_blur : hint_range(0, 1) = 0.25;
|
||||
uniform mediump float interrupt_speed : hint_range(-1, 1) = 0.2;
|
||||
|
||||
uniform mediump vec4 glow_color : source_color = vec4(0.5, 0.75, 1.0, 1.0);
|
||||
uniform lowp float glow_itensity : hint_range(0, 20) = 4.5;
|
||||
uniform lowp float glow_amount : hint_range(0, 20) = 4.5;
|
||||
uniform lowp float flickering : hint_range(0, 1) = 0.55;
|
||||
|
||||
vec3 fresnel_glow(float amount, float intensity, vec3 color, vec3 normal, vec3 view) {
|
||||
return pow((1.0 - dot(normalize(normal), normalize(view))), amount) * color * intensity;
|
||||
}
|
||||
|
||||
void fragment () {
|
||||
vec2 canvas;
|
||||
if (straight_lines) {
|
||||
canvas = SCREEN_UV;
|
||||
} else {
|
||||
canvas = vec2(VIEW.x, VIEW.y);
|
||||
}
|
||||
vec2 lines = vec2(clamp(sin((TIME * line_speed + canvas.y) / line_width), line_blur, 1.0 - line_blur), canvas.x);
|
||||
vec2 interupts = vec2(clamp(sin((TIME * interrupt_speed + canvas.y) / interrupt_width * 3.0), interrupt_blur, 1.0 - interrupt_blur), canvas.x);
|
||||
|
||||
float flicker = clamp(fract(cos(TIME) * 43758.5453123), flickering, 1.0);
|
||||
vec4 imgtex = flicker * line_color * texture(texture_image, lines * interupts);
|
||||
vec3 imgtex_color = vec3(imgtex.r, imgtex.g, imgtex.b);
|
||||
vec3 fresnel_color = vec3(glow_color.r, glow_color.g, glow_color.b);
|
||||
vec3 fresnel = fresnel_glow(glow_amount, glow_itensity, fresnel_color, NORMAL, VIEW);
|
||||
ALBEDO = imgtex_color + fresnel;
|
||||
|
||||
EMISSION = glow_amount * vec3(glow_color.r, glow_color.g, glow_color.b);
|
||||
ALPHA = lines.x * interupts.x;
|
||||
}
|
41
src/shaders/plasma.gdshader
Normal file
41
src/shaders/plasma.gdshader
Normal file
@ -0,0 +1,41 @@
|
||||
// Plasma Pulse shader
|
||||
// Adapted from https://godotshaders.com/shader/scifi-hologram/
|
||||
|
||||
shader_type spatial;
|
||||
render_mode unshaded, cull_back;
|
||||
|
||||
uniform mediump vec3 albedo: source_color = vec3(0.9, 0.0, 0.7);
|
||||
|
||||
uniform bool transpose_axis = false;
|
||||
|
||||
uniform mediump sampler2D wave_gradient;
|
||||
uniform mediump float wave_width: hint_range(0, 10) = 1;
|
||||
uniform mediump float wave_speed: hint_range(-1, 1) = 0.4;
|
||||
|
||||
uniform mediump vec4 glow_color: source_color = vec4(0.5, 0.75, 1.0, 1.0);
|
||||
uniform lowp float glow_intensity: hint_range(0, 20) = 0.618;
|
||||
uniform lowp float glow_amount: hint_range(0, 20) = 4.5;
|
||||
|
||||
uniform mediump sampler2D pulse_gradient;
|
||||
uniform mediump float pulse_speed: hint_range(0, 10) = 0.3;
|
||||
|
||||
vec3 fresnel_glow(float amount, float intensity, vec3 color, vec3 normal, vec3 view) {
|
||||
return pow((1.0 - dot(normalize(normal), normalize(view))), amount) * color * intensity;
|
||||
}
|
||||
|
||||
void fragment () {
|
||||
float canvas = -UV.x;
|
||||
if(transpose_axis) {
|
||||
canvas = -UV.y;
|
||||
}
|
||||
float wave_value = texture(wave_gradient, vec2((canvas + TIME * wave_speed) / wave_width, 0)).r;
|
||||
|
||||
vec3 fresnel_color = vec3(glow_color.r, glow_color.g, glow_color.b);
|
||||
vec3 fresnel = fresnel_glow(glow_amount, glow_intensity, fresnel_color, NORMAL, VIEW);
|
||||
|
||||
float pulse_value = texture(pulse_gradient, vec2(TIME * pulse_speed, 0)).r;
|
||||
|
||||
ALBEDO = albedo + fresnel;
|
||||
EMISSION = glow_amount * vec3(glow_color.r, glow_color.g, glow_color.b);
|
||||
ALPHA = wave_value * pulse_value;
|
||||
}
|
@ -1,7 +1,7 @@
|
||||
[gd_scene load_steps=9 format=3 uid="uid://c2k88ns0h5ie1"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://bw54bi35myvpg" path="res://assets/models/ui/arrow/arrow.glb" id="1_xifl6"]
|
||||
[ext_resource type="Script" path="res://src/ui/arrow.gd" id="2_0viam"]
|
||||
[ext_resource type="Script" path="res://src/ui/arrow/arrow.gd" id="2_0viam"]
|
||||
[ext_resource type="Material" uid="uid://d3ka0yjhxu5ks" path="res://assets/materials/gummy_material.tres" id="3_g7vwe"]
|
||||
|
||||
[sub_resource type="Animation" id="Animation_hsqkd"]
|
@ -1,15 +1,7 @@
|
||||
[gd_resource type="Theme" load_steps=3 format=3 uid="uid://diodjft5u2cck"]
|
||||
|
||||
[sub_resource type="SystemFont" id="SystemFont_dpm3o"]
|
||||
font_names = PackedStringArray("Sans-Serif")
|
||||
font_italic = true
|
||||
font_weight = 800
|
||||
generate_mipmaps = true
|
||||
|
||||
[sub_resource type="SystemFont" id="SystemFont_2dr7l"]
|
||||
font_names = PackedStringArray("Sans-Serif")
|
||||
font_italic = true
|
||||
font_weight = 800
|
||||
[ext_resource type="FontFile" uid="uid://dsa0oh7c0h4pu" path="res://assets/fonts/Racing_Sans_One/RacingSansOne-Regular.ttf" id="1_3rv2b"]
|
||||
[ext_resource type="FontFile" uid="uid://comihs66wounx" path="res://assets/fonts/Dokdo/Dokdo-Regular.ttf" id="1_eha6a"]
|
||||
|
||||
[resource]
|
||||
ClubSelectLabel/base_type = &"Label"
|
||||
@ -20,11 +12,10 @@ ClubSelectLabel/constants/outline_size = 6
|
||||
ClubSelectLabel/constants/shadow_offset_x = 6
|
||||
ClubSelectLabel/constants/shadow_offset_y = 0
|
||||
ClubSelectLabel/font_sizes/font_size = 84
|
||||
ClubSelectLabel/fonts/font = SubResource("SystemFont_dpm3o")
|
||||
ShotFeedback/base_type = &"Label"
|
||||
ShotFeedback/colors/font_color = Color(0.807843, 1, 1, 1)
|
||||
ClubSelectLabel/fonts/font = ExtResource("1_3rv2b")
|
||||
ShotFeedback/base_type = &"RichTextLabel"
|
||||
ShotFeedback/colors/font_shadow_color = Color(0, 0, 0, 1)
|
||||
ShotFeedback/constants/shadow_offset_x = 3
|
||||
ShotFeedback/constants/shadow_offset_y = 2
|
||||
ShotFeedback/font_sizes/font_size = 96
|
||||
ShotFeedback/fonts/font = SubResource("SystemFont_2dr7l")
|
||||
ShotFeedback/constants/shadow_offset_x = 6
|
||||
ShotFeedback/constants/shadow_offset_y = 4
|
||||
ShotFeedback/font_sizes/normal_font_size = 272
|
||||
ShotFeedback/fonts/normal_font = ExtResource("1_eha6a")
|
||||
|
116
src/ui/projected_target.tscn
Normal file
116
src/ui/projected_target.tscn
Normal file
@ -0,0 +1,116 @@
|
||||
[gd_scene load_steps=10 format=3 uid="uid://dbdul15c4oblg"]
|
||||
|
||||
[ext_resource type="Shader" path="res://src/shaders/plasma.gdshader" id="1_nf38g"]
|
||||
[ext_resource type="FontFile" uid="uid://b6gxwgomstkgu" path="res://assets/fonts/Geo/Geo-Italic.ttf" id="2_ckdn3"]
|
||||
|
||||
[sub_resource type="Gradient" id="Gradient_3oor7"]
|
||||
interpolation_mode = 2
|
||||
offsets = PackedFloat32Array(0, 0.5, 1)
|
||||
colors = PackedColorArray(1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1)
|
||||
|
||||
[sub_resource type="GradientTexture1D" id="GradientTexture1D_ic835"]
|
||||
gradient = SubResource("Gradient_3oor7")
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_msl6u"]
|
||||
render_priority = 0
|
||||
shader = ExtResource("1_nf38g")
|
||||
shader_parameter/albedo = Color(1, 0.19, 0.2035, 1)
|
||||
shader_parameter/transpose_axis = true
|
||||
shader_parameter/wave_width = 0.4
|
||||
shader_parameter/wave_speed = -0.3
|
||||
shader_parameter/glow_color = Color(0.5, 0.75, 1, 1)
|
||||
shader_parameter/glow_intensity = 0.618
|
||||
shader_parameter/glow_amount = 4.5
|
||||
shader_parameter/pulse_speed = 0.3
|
||||
shader_parameter/wave_gradient = SubResource("GradientTexture1D_ic835")
|
||||
|
||||
[sub_resource type="SphereMesh" id="SphereMesh_dbo5p"]
|
||||
material = SubResource("ShaderMaterial_msl6u")
|
||||
radial_segments = 16
|
||||
rings = 16
|
||||
|
||||
[sub_resource type="Animation" id="Animation_yu68k"]
|
||||
length = 0.001
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath(".:rotation")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector3(0, 0, 0)]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_npp1f"]
|
||||
resource_name = "rotate"
|
||||
length = 3.236
|
||||
loop_mode = 1
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath(".:rotation")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 3.236),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector3(0, 0, 0), Vector3(0, -3.14159, 0)]
|
||||
}
|
||||
|
||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_vm52d"]
|
||||
_data = {
|
||||
"RESET": SubResource("Animation_yu68k"),
|
||||
"rotate": SubResource("Animation_npp1f")
|
||||
}
|
||||
|
||||
[node name="ProjectedTarget" type="MeshInstance3D"]
|
||||
mesh = SubResource("SphereMesh_dbo5p")
|
||||
|
||||
[node name="Pivot" type="Node3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.02, 0)
|
||||
|
||||
[node name="Label3D" type="Label3D" parent="Pivot"]
|
||||
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 0, 0.55)
|
||||
pixel_size = 0.001
|
||||
texture_filter = 5
|
||||
modulate = Color(1, 0.188235, 0.203922, 1)
|
||||
text = "DANGER"
|
||||
font = ExtResource("2_ckdn3")
|
||||
font_size = 64
|
||||
|
||||
[node name="Label3D2" type="Label3D" parent="Pivot"]
|
||||
transform = Transform3D(-1, 8.74228e-08, 3.82137e-15, 0, -4.37114e-08, 1, 8.74228e-08, 1, 4.37114e-08, 0, 0, -0.55)
|
||||
pixel_size = 0.001
|
||||
texture_filter = 5
|
||||
modulate = Color(1, 0.188235, 0.203922, 1)
|
||||
text = "DANGER"
|
||||
font = ExtResource("2_ckdn3")
|
||||
font_size = 64
|
||||
|
||||
[node name="Label3D3" type="Label3D" parent="Pivot"]
|
||||
transform = Transform3D(-4.37114e-08, -1, -4.37114e-08, 0, -4.37114e-08, 1, -1, 4.37114e-08, 1.91069e-15, 0.55, 0, 0)
|
||||
pixel_size = 0.001
|
||||
texture_filter = 5
|
||||
modulate = Color(1, 0.188235, 0.203922, 1)
|
||||
text = "DANGER"
|
||||
font = ExtResource("2_ckdn3")
|
||||
font_size = 64
|
||||
|
||||
[node name="Label3D4" type="Label3D" parent="Pivot"]
|
||||
transform = Transform3D(-4.37114e-08, 1, 4.37114e-08, 0, -4.37114e-08, 1, 1, 4.37114e-08, 1.91069e-15, -0.55, 0, 0)
|
||||
pixel_size = 0.001
|
||||
texture_filter = 5
|
||||
modulate = Color(1, 0.188235, 0.203922, 1)
|
||||
text = "DANGER"
|
||||
font = ExtResource("2_ckdn3")
|
||||
font_size = 64
|
||||
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="Pivot"]
|
||||
libraries = {
|
||||
"": SubResource("AnimationLibrary_vm52d")
|
||||
}
|
||||
autoplay = "rotate"
|
95
src/ui/projectile_arc/projectile_arc.gd
Normal file
95
src/ui/projectile_arc/projectile_arc.gd
Normal file
@ -0,0 +1,95 @@
|
||||
class_name ProjectileArc extends Node3D
|
||||
## Visually project the arc of a projectile through space.
|
||||
##
|
||||
## If this node has any children, they will be positioned wherever the projection ends.
|
||||
|
||||
## Initial speed of the projectile, in m/s.
|
||||
## The projectile's initial direction vector is the negative Z direction relative to this node.
|
||||
@export var initial_speed := 1.0
|
||||
|
||||
@export_category("Projection")
|
||||
## Time between projection steps, in seconds.
|
||||
@export var time_step := 0.2
|
||||
## Maximum number of steps to predict before stopping.
|
||||
@export var max_steps := 50
|
||||
## Ticks between each projection update. 0 means update every tick.
|
||||
@export var ticks_per_update := 0
|
||||
|
||||
@export_category("Collision")
|
||||
## Enables collision checking. Projection will end at the point where a collision is detected.
|
||||
## Uses continuous collision detection.
|
||||
@export var check_collision := true
|
||||
## Mask for collision checking.
|
||||
@export_flags_3d_physics var collision_mask := 1
|
||||
## Bodies excluded from collision checking.
|
||||
## This should probably include the ball!
|
||||
@export var excluded_bodies: Array[CollisionObject3D] = []
|
||||
|
||||
var _tick_counter := 0
|
||||
|
||||
@onready var polygon: CSGPolygon3D = %Polygon
|
||||
@onready var path: Path3D = %Path
|
||||
|
||||
@onready var gravity: float = ProjectSettings.get_setting("physics/3d/default_gravity")
|
||||
@onready var gravity_vec: Vector3 = ProjectSettings.get_setting("physics/3d/default_gravity_vector")
|
||||
|
||||
|
||||
func _process(_delta: float) -> void:
|
||||
if not visible:
|
||||
# Don't bother if we're not visible
|
||||
return
|
||||
|
||||
# Short-circuit if we need to wait more ticks
|
||||
if _tick_counter > 0:
|
||||
_tick_counter -= 1
|
||||
return
|
||||
_tick_counter = ticks_per_update
|
||||
|
||||
# Rebuild path curve
|
||||
path.global_basis = Basis.IDENTITY
|
||||
path.curve.clear_points()
|
||||
|
||||
var space := get_world_3d().direct_space_state
|
||||
var excluded_rid: Array[RID] = []
|
||||
excluded_rid.assign(excluded_bodies.map(func(k: CollisionObject3D) -> RID: return k.get_rid()))
|
||||
|
||||
var pos := global_position
|
||||
var vel := -global_basis.z * initial_speed
|
||||
|
||||
for t in range(0, max_steps):
|
||||
# TODO: smooth curve with bezier handles
|
||||
path.curve.add_point(pos - global_position)
|
||||
|
||||
# Integrate projectile path
|
||||
vel += gravity * gravity_vec * time_step
|
||||
var next_pos := pos + vel * time_step
|
||||
|
||||
# Collision
|
||||
if check_collision:
|
||||
var ray_params := PhysicsRayQueryParameters3D.create(
|
||||
pos, next_pos, collision_mask, excluded_rid
|
||||
)
|
||||
var collision := space.intersect_ray(ray_params)
|
||||
if collision:
|
||||
# Set current position to collision point, so it will be added to the path
|
||||
# TODO: we could project further using the surface normal here...
|
||||
pos = collision["position"]
|
||||
# End projection!
|
||||
break
|
||||
|
||||
pos = next_pos
|
||||
|
||||
# Add terminal point (possibly collision point)
|
||||
path.curve.add_point(pos - global_position)
|
||||
|
||||
# Reposition any children
|
||||
for n: Node in get_children():
|
||||
if n is Node3D and n != path:
|
||||
var node_3d: Node3D = n
|
||||
node_3d.global_position = pos
|
||||
node_3d.global_basis = Basis.IDENTITY
|
||||
|
||||
|
||||
func _on_visibility_changed() -> void:
|
||||
# Force update as soon as visible
|
||||
_tick_counter = 0
|
59
src/ui/projectile_arc/projectile_arc.tscn
Normal file
59
src/ui/projectile_arc/projectile_arc.tscn
Normal file
@ -0,0 +1,59 @@
|
||||
[gd_scene load_steps=9 format=3 uid="uid://fht6j87o8ecr"]
|
||||
|
||||
[ext_resource type="Script" path="res://src/ui/projectile_arc/projectile_arc.gd" id="1_vafqi"]
|
||||
[ext_resource type="Shader" path="res://src/shaders/plasma.gdshader" id="2_pi36v"]
|
||||
|
||||
[sub_resource type="Curve3D" id="Curve3D_rfv3d"]
|
||||
|
||||
[sub_resource type="Gradient" id="Gradient_28hbf"]
|
||||
offsets = PackedFloat32Array(0, 0.37193, 0.838596, 1)
|
||||
colors = PackedColorArray(0.197937, 0.197937, 0.197937, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.197937, 0.197937, 0.197937, 1)
|
||||
|
||||
[sub_resource type="GradientTexture1D" id="GradientTexture1D_8xhfy"]
|
||||
gradient = SubResource("Gradient_28hbf")
|
||||
|
||||
[sub_resource type="Gradient" id="Gradient_yx8sm"]
|
||||
interpolation_mode = 2
|
||||
offsets = PackedFloat32Array(0.0666667, 0.287719, 1)
|
||||
colors = PackedColorArray(1, 1, 1, 1, 0.485904, 0.485904, 0.485904, 1, 0, 0, 0, 1)
|
||||
|
||||
[sub_resource type="GradientTexture1D" id="GradientTexture1D_l8ond"]
|
||||
gradient = SubResource("Gradient_yx8sm")
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_ahf42"]
|
||||
render_priority = 0
|
||||
shader = ExtResource("2_pi36v")
|
||||
shader_parameter/albedo = Color(0.9, 0, 0.7, 1)
|
||||
shader_parameter/transpose_axis = false
|
||||
shader_parameter/wave_width = 2.0
|
||||
shader_parameter/wave_speed = 0.6
|
||||
shader_parameter/glow_color = Color(0.5, 0.75, 1, 1)
|
||||
shader_parameter/glow_intensity = 0.618
|
||||
shader_parameter/glow_amount = 4.5
|
||||
shader_parameter/pulse_speed = 0.3
|
||||
shader_parameter/wave_gradient = SubResource("GradientTexture1D_l8ond")
|
||||
shader_parameter/pulse_gradient = SubResource("GradientTexture1D_8xhfy")
|
||||
|
||||
[node name="ProjectileArc" type="Node3D"]
|
||||
script = ExtResource("1_vafqi")
|
||||
|
||||
[node name="Path" type="Path3D" parent="."]
|
||||
unique_name_in_owner = true
|
||||
curve = SubResource("Curve3D_rfv3d")
|
||||
|
||||
[node name="Polygon" type="CSGPolygon3D" parent="Path"]
|
||||
unique_name_in_owner = true
|
||||
polygon = PackedVector2Array(0, -0.1, -0.2, 0, 0, 0.1, 0.2, 0)
|
||||
mode = 2
|
||||
path_node = NodePath("..")
|
||||
path_interval_type = 0
|
||||
path_interval = 1.0
|
||||
path_simplify_angle = 0.0
|
||||
path_rotation = 2
|
||||
path_local = true
|
||||
path_continuous_u = true
|
||||
path_u_distance = 1.0
|
||||
path_joined = false
|
||||
material = SubResource("ShaderMaterial_ahf42")
|
||||
|
||||
[connection signal="visibility_changed" from="." to="." method="_on_visibility_changed"]
|
@ -1,6 +1,8 @@
|
||||
class_name BallZone extends Area3D
|
||||
## A spatial area that has an effect on balls inside it.
|
||||
|
||||
@export var terrain_angular_damping := 1.0
|
||||
|
||||
@export var water_hazard := false
|
||||
|
||||
|
||||
@ -9,21 +11,11 @@ func _ready() -> void:
|
||||
body_exited.connect(_on_body_exited)
|
||||
|
||||
|
||||
func on_ball_entered(ball: GameBall) -> void:
|
||||
if water_hazard:
|
||||
ball.entered_water.emit()
|
||||
|
||||
|
||||
func on_ball_exited(ball: GameBall) -> void:
|
||||
pass
|
||||
|
||||
|
||||
func _on_body_entered(body: Node3D) -> void:
|
||||
print("BODY ENTERED ZONE: ", body)
|
||||
if body is GameBall:
|
||||
on_ball_entered(body as GameBall)
|
||||
(body as GameBall).enter_zone(self)
|
||||
|
||||
|
||||
func _on_body_exited(body: Node3D) -> void:
|
||||
if body is GameBall:
|
||||
on_ball_exited(body as GameBall)
|
||||
(body as GameBall).exit_zone(self)
|
||||
|
Loading…
x
Reference in New Issue
Block a user