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="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="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="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://dagh38vap4t1d" path="res://src/props/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://cjubxs7peir5k" path="res://src/props/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://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.tscn" id="13_6jtao"] | [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"] | [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"] | [sub_resource type="FastNoiseLite" id="FastNoiseLite_rpgb7"] | ||||||
| @ -41,6 +41,7 @@ _shader_parameters = { | |||||||
| "vertex_normals_distance": 128.0 | "vertex_normals_distance": 128.0 | ||||||
| } | } | ||||||
| texture_filtering = 1 | texture_filtering = 1 | ||||||
|  | show_navigation = true | ||||||
| 
 | 
 | ||||||
| [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ly4sm"] | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ly4sm"] | ||||||
| cull_mode = 2 | 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") | shape = SubResource("BoxShape3D_x3wvm") | ||||||
| 
 | 
 | ||||||
| [node name="ShotSetup" parent="." instance=ExtResource("8_h44v5")] | [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="."] | [node name="Buildings" type="Node3D" parent="."] | ||||||
| transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 129.404, -9.53674e-07, 309.4) | 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"] | [node name="CollisionShape3D" type="CollisionShape3D" parent="DebugTable/StaticBody3D"] | ||||||
| shape = SubResource("BoxShape3D_g31tw") | 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] | [physics] | ||||||
| 
 | 
 | ||||||
| 3d/default_angular_damp=2.0 | 3d/physics_engine="JoltPhysics3D" | ||||||
| 3d/sleep_threshold_angular=0.3 | 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] | [rendering] | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -169,7 +169,7 @@ bones/23/scale = Vector3(1, 1, 1) | |||||||
| visible = false | visible = false | ||||||
| 
 | 
 | ||||||
| [node name="BoneAttachment3D" type="BoneAttachment3D" parent="Armature/Skeleton3D" index="6"] | [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_name = "Hand.R" | ||||||
| bone_idx = 11 | bone_idx = 11 | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -5,6 +5,7 @@ | |||||||
| [sub_resource type="SphereShape3D" id="SphereShape3D_wmusx"] | [sub_resource type="SphereShape3D" id="SphereShape3D_wmusx"] | ||||||
| 
 | 
 | ||||||
| [node name="FreeCamera" type="CharacterBody3D"] | [node name="FreeCamera" type="CharacterBody3D"] | ||||||
|  | process_mode = 3 | ||||||
| collision_layer = 0 | collision_layer = 0 | ||||||
| script = ExtResource("1_3gm3q") | script = ExtResource("1_3gm3q") | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -2,3 +2,62 @@ class_name GameBall extends RigidBody3D | |||||||
| ## Base class for all gfolf balls | ## Base class for all gfolf balls | ||||||
| 
 | 
 | ||||||
| signal entered_water | 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"] | [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="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://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"] | [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"] | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_xqofq"] | ||||||
| albedo_texture = ExtResource("1_y3q5j") | albedo_texture = ExtResource("1_y3q5j") | ||||||
| albedo_texture_force_srgb = true | albedo_texture_force_srgb = true | ||||||
| @ -32,10 +29,15 @@ radius = 0.05 | |||||||
| 
 | 
 | ||||||
| [node name="PhysicsBall" type="RigidBody3D"] | [node name="PhysicsBall" type="RigidBody3D"] | ||||||
| mass = 0.05 | mass = 0.05 | ||||||
| physics_material_override = SubResource("PhysicsMaterial_2gatw") | physics_material_override = ExtResource("1_l23pw") | ||||||
| continuous_cd = true | continuous_cd = true | ||||||
|  | contact_monitor = true | ||||||
|  | max_contacts_reported = 1 | ||||||
| linear_damp_mode = 1 | linear_damp_mode = 1 | ||||||
|  | angular_damp_mode = 1 | ||||||
|  | angular_damp = 8.0 | ||||||
| script = ExtResource("1_iwh2u") | script = ExtResource("1_iwh2u") | ||||||
|  | iron_damping = 1e+07 | ||||||
| 
 | 
 | ||||||
| [node name="BallMesh" type="MeshInstance3D" parent="."] | [node name="BallMesh" type="MeshInstance3D" parent="."] | ||||||
| mesh = SubResource("SphereMesh_y0d13") | mesh = SubResource("SphereMesh_y0d13") | ||||||
|  | |||||||
| @ -34,6 +34,12 @@ const CAMERA_SNAP_TIME := 0.3 | |||||||
| @export var base_power := 2.5 | @export var base_power := 2.5 | ||||||
| @export var base_curve := 0.0 | @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 base_speed: float = ProjectSettings.get_setting("game/config/controls/camera/free_camera_speed") | ||||||
| 
 | 
 | ||||||
| var x_sensitivity: float = ProjectSettings.get_setting( | var x_sensitivity: float = ProjectSettings.get_setting( | ||||||
| @ -85,7 +91,9 @@ var _tracking_camera: OrbitalCamera | |||||||
| @onready var shot_animation: AnimationPlayer = %ShotAnimation | @onready var shot_animation: AnimationPlayer = %ShotAnimation | ||||||
| 
 | 
 | ||||||
| @onready var arrow: Node3D = %Arrow | @onready var arrow: Node3D = %Arrow | ||||||
|  | @onready var arrow_pivot: Node3D = %ArrowPivot | ||||||
| @onready var arrow_animation: AnimationPlayer = %ArrowAnimation | @onready var arrow_animation: AnimationPlayer = %ArrowAnimation | ||||||
|  | @onready var shot_projection: ProjectileArc = %ShotProjection | ||||||
| 
 | 
 | ||||||
| @onready var power_bar: ProgressBar = %PowerBar | @onready var power_bar: ProgressBar = %PowerBar | ||||||
| @onready var power_animation: AnimationPlayer = %PowerAnimation | @onready var power_animation: AnimationPlayer = %PowerAnimation | ||||||
| @ -94,13 +102,16 @@ var _tracking_camera: OrbitalCamera | |||||||
| @onready var curve_animation: AnimationPlayer = %CurveAnimation | @onready var curve_animation: AnimationPlayer = %CurveAnimation | ||||||
| 
 | 
 | ||||||
| @onready var ball_point: Node3D = %BallPoint | @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_ref: RayCast3D = %DriveRef | ||||||
| @onready var drive_arrow: Node3D = %DriveArrow | @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_ref: RayCast3D = %PuttRef | ||||||
| @onready var putt_arrow: Node3D = %PuttArrow | @onready var putt_arrow: Node3D = %PuttArrow | ||||||
| @onready var wedge_ref: RayCast3D = %WedgeRef |  | ||||||
| 
 | 
 | ||||||
| @onready var club_selector: ClubSelector = %ClubSelector | @onready var club_selector: ClubSelector = %ClubSelector | ||||||
| 
 | 
 | ||||||
| @ -160,13 +171,15 @@ func finish_downswing() -> void: | |||||||
| 	phase = Phase.SHOT | 	phase = Phase.SHOT | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| func take_shot() -> void: | func get_shot_impulse(meter_pct: float) -> Vector3: | ||||||
| 	print("WHACK!") | 	return -shot_ref.global_basis.z * base_power * meter_pct | ||||||
| 	print("Power: ", power_bar.value) |  | ||||||
| 	print("Curve: ", curve_bar.value) |  | ||||||
| 
 | 
 | ||||||
| 	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 = ( | 	ball_impulse_debug.transform = ( | ||||||
| 		Transform3D.IDENTITY.scaled(Vector3.ONE * impulse.length()).looking_at(impulse) | 		Transform3D.IDENTITY.scaled(Vector3.ONE * impulse.length()).looking_at(impulse) | ||||||
| @ -176,8 +189,21 @@ func take_shot() -> void: | |||||||
| 	physics_ball.apply_central_impulse(impulse) | 	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: | func insert_free_cam() -> void: | ||||||
| 	arrow_animation.play("hide") | 	arrow_animation.play("hide") | ||||||
|  | 	_show_shot_projection() | ||||||
| 	hud_state.travel("hidden") | 	hud_state.travel("hidden") | ||||||
| 	_free_camera = FreeCamera.create(camera) | 	_free_camera = FreeCamera.create(camera) | ||||||
| 	add_sibling(_free_camera) | 	add_sibling(_free_camera) | ||||||
| @ -188,6 +214,7 @@ func insert_free_cam() -> void: | |||||||
| func return_free_cam() -> void: | func return_free_cam() -> void: | ||||||
| 	# TODO alter shot aim based on free camera selection | 	# TODO alter shot aim based on free camera selection | ||||||
| 	arrow_animation.play("show") | 	arrow_animation.play("show") | ||||||
|  | 	#shot_projection.hide() | ||||||
| 	hud_state.travel("visible") | 	hud_state.travel("visible") | ||||||
| 	_free_camera.queue_free() | 	_free_camera.queue_free() | ||||||
| 	_free_camera = null | 	_free_camera = null | ||||||
| @ -239,13 +266,15 @@ func _on_club_change(new_club: Club.Type) -> void: | |||||||
| 	# Hide all arrows | 	# Hide all arrows | ||||||
| 	# TODO animate? | 	# TODO animate? | ||||||
| 	drive_arrow.hide() | 	drive_arrow.hide() | ||||||
|  | 	wedge_arrow.hide() | ||||||
|  | 	iron_arrow.hide() | ||||||
| 	putt_arrow.hide() | 	putt_arrow.hide() | ||||||
|  | 	physics_ball.iron_ball = false | ||||||
| 	club_selector.value = new_club | 	club_selector.value = new_club | ||||||
| 	match new_club: | 	match new_club: | ||||||
| 		Club.Type.DRIVER: | 		Club.Type.DRIVER: | ||||||
| 			shot_ref = drive_ref | 			shot_ref = drive_ref | ||||||
| 			drive_arrow.show() | 			drive_arrow.show() | ||||||
| 
 |  | ||||||
| 			# TODO get this from player loadout | 			# TODO get this from player loadout | ||||||
| 			# TODO club change animation | 			# TODO club change animation | ||||||
| 			character.hold_right(Club.catalog.debug_driver.get_model()) | 			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: | 		Club.Type.WEDGE: | ||||||
| 			# TODO | 			# TODO | ||||||
| 			shot_ref = wedge_ref | 			shot_ref = wedge_ref | ||||||
| 			drive_arrow.show() | 			wedge_arrow.show() | ||||||
| 			character.hold_right(Club.catalog.debug_wedge.get_model()) | 			character.hold_right(Club.catalog.debug_wedge.get_model()) | ||||||
| 		Club.Type.IRON: | 		Club.Type.IRON: | ||||||
| 			# TODO | 			# TODO | ||||||
| 			shot_ref = drive_ref | 			shot_ref = iron_ref | ||||||
| 			drive_arrow.show() | 			iron_arrow.show() | ||||||
|  | 			physics_ball.iron_ball = true | ||||||
| 			character.hold_right(Club.catalog.debug_iron.get_model()) | 			character.hold_right(Club.catalog.debug_iron.get_model()) | ||||||
| 		Club.Type.SPECIAL: | 		Club.Type.SPECIAL: | ||||||
| 			# TODO | 			# TODO | ||||||
| @ -322,7 +352,9 @@ func _process(delta: float) -> void: | |||||||
| 	pitch.rotation.x = lerp_angle(pitch.rotation.x, _target_rotation.x, delta * y_acceleration) | 	pitch.rotation.x = lerp_angle(pitch.rotation.x, _target_rotation.x, delta * y_acceleration) | ||||||
| 
 | 
 | ||||||
| 	# Arrow lags behind camera control | 	# 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 lags further behind | ||||||
| 	player_pivot.rotation.y = lerp_angle( | 	player_pivot.rotation.y = lerp_angle( | ||||||
| 		player_pivot.rotation.y, _target_rotation.y, delta * PLAYER_ACCELERATION | 		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: | func _on_ball_entered_water() -> void: | ||||||
| 	# Should only be possible during SHOT phase, but let's check just to be sure... | 	# Should only be possible during SHOT phase, but let's check just to be sure... | ||||||
| 	if phase == Phase.SHOT: | 	if phase == Phase.SHOT: | ||||||
| 		print("INTO THE DRINK!!") |  | ||||||
| 		physics_ball.freeze = true | 		physics_ball.freeze = true | ||||||
| 		wasted_animation.play("display") | 		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="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://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://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://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"] | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_lnol1"] | ||||||
| albedo_color = Color(0, 0.537255, 1, 1) | albedo_color = Color(0, 0.537255, 1, 1) | ||||||
| @ -660,27 +662,36 @@ unique_name_in_owner = true | |||||||
| 
 | 
 | ||||||
| [node name="DriveRef" type="RayCast3D" parent="Direction"] | [node name="DriveRef" type="RayCast3D" parent="Direction"] | ||||||
| unique_name_in_owner = true | 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 | enabled = false | ||||||
| target_position = Vector3(0, 0, 1) | target_position = Vector3(0, 0, -1) | ||||||
| collision_mask = 0 | collision_mask = 0 | ||||||
| collide_with_bodies = false | collide_with_bodies = false | ||||||
| debug_shape_thickness = 4 | debug_shape_thickness = 4 | ||||||
| 
 | 
 | ||||||
| [node name="WedgeRef" type="RayCast3D" parent="Direction"] | [node name="WedgeRef" type="RayCast3D" parent="Direction"] | ||||||
| unique_name_in_owner = true | 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 | 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 | collision_mask = 0 | ||||||
| collide_with_bodies = false | collide_with_bodies = false | ||||||
| debug_shape_thickness = 4 | debug_shape_thickness = 4 | ||||||
| 
 | 
 | ||||||
| [node name="PuttRef" type="RayCast3D" parent="Direction"] | [node name="PuttRef" type="RayCast3D" parent="Direction"] | ||||||
| unique_name_in_owner = true | 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 | enabled = false | ||||||
| target_position = Vector3(0, 0, 1) | target_position = Vector3(0, 0, -1) | ||||||
| collision_mask = 0 | collision_mask = 0 | ||||||
| collide_with_bodies = false | collide_with_bodies = false | ||||||
| debug_shape_thickness = 4 | 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) | transform = Transform3D(1, 0, 0, 0, 1, 2.98023e-08, 0, -2.98023e-08, 1, 0, 0, 0) | ||||||
| current = true | current = true | ||||||
| 
 | 
 | ||||||
| [node name="Arrow" type="Node3D" parent="."] | [node name="ArrowPivot" type="Node3D" parent="."] | ||||||
| unique_name_in_owner = true | 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 | unique_name_in_owner = true | ||||||
| libraries = { | libraries = { | ||||||
| "": SubResource("AnimationLibrary_rw0cf") | "": SubResource("AnimationLibrary_rw0cf") | ||||||
| } | } | ||||||
| autoplay = "show" | autoplay = "show" | ||||||
| 
 | 
 | ||||||
| [node name="DriveArrow" type="Node3D" parent="Arrow"] | [node name="DriveArrow" type="Node3D" parent="ArrowPivot/Arrow"] | ||||||
| unique_name_in_owner = true | 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 | visible = false | ||||||
| 
 | 
 | ||||||
| [node name="ArrowMesh" parent="Arrow/DriveArrow" instance=ExtResource("2_s70wl")] | [node name="ArrowMesh" parent="ArrowPivot/Arrow/DriveArrow" instance=ExtResource("2_s70wl")] | ||||||
| transform = Transform3D(0.2, 0, 0, 0, 0.4, 0, 0, 0, 0.2, 0, 1, 0) | transform = Transform3D(0.2, 0, 0, 0, -1.74846e-08, 0.2, 0, -0.4, -8.74228e-09, 0, 0, -1) | ||||||
| loop_animation = 1 | loop_animation = 1 | ||||||
| 
 | 
 | ||||||
| [node name="PuttArrow" type="Node3D" parent="Arrow"] | [node name="WedgeArrow" type="Node3D" parent="ArrowPivot/Arrow"] | ||||||
| unique_name_in_owner = true | 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 | visible = false | ||||||
| 
 | 
 | ||||||
| [node name="ArrowMesh" parent="Arrow/PuttArrow" instance=ExtResource("2_s70wl")] | [node name="ArrowMesh" parent="ArrowPivot/Arrow/WedgeArrow" instance=ExtResource("2_s70wl")] | ||||||
| transform = Transform3D(0.2, 0, 0, 0, 0.4, 0, 0, 0, 0.2, 0, 1, 0) | transform = Transform3D(0.2, 0, 0, 0, -1.74846e-08, 0.2, 0, -0.4, -8.74228e-09, 0, 0, -1) | ||||||
| loop_animation = 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="."] | [node name="ShotAnimation" type="AnimationPlayer" parent="."] | ||||||
| unique_name_in_owner = true | unique_name_in_owner = true | ||||||
| root_node = NodePath("../Direction/Elevation/Pitch/Zoom/Camera") | root_node = NodePath("../Direction/Elevation/Pitch/Zoom/Camera") | ||||||
| @ -764,12 +808,9 @@ offset_bottom = 66.0 | |||||||
| grow_horizontal = 2 | grow_horizontal = 2 | ||||||
| grow_vertical = 2 | grow_vertical = 2 | ||||||
| mouse_filter = 2 | mouse_filter = 2 | ||||||
| theme_override_colors/font_shadow_color = Color(0, 0, 0, 1) | theme_type_variation = &"ShotFeedback" | ||||||
| theme_override_constants/shadow_offset_y = 4 |  | ||||||
| theme_override_constants/shadow_offset_x = 6 |  | ||||||
| theme_override_font_sizes/bold_italics_font_size = 168 |  | ||||||
| bbcode_enabled = true | 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 | fit_content = true | ||||||
| autowrap_mode = 0 | autowrap_mode = 0 | ||||||
| visible_characters_behavior = 1 | visible_characters_behavior = 1 | ||||||
| @ -797,12 +838,9 @@ grow_horizontal = 2 | |||||||
| grow_vertical = 2 | grow_vertical = 2 | ||||||
| pivot_offset = Vector2(100, 115) | pivot_offset = Vector2(100, 115) | ||||||
| mouse_filter = 2 | mouse_filter = 2 | ||||||
| theme_override_colors/font_shadow_color = Color(0, 0, 0, 1) | theme_type_variation = &"ShotFeedback" | ||||||
| theme_override_constants/shadow_offset_y = 4 |  | ||||||
| theme_override_constants/shadow_offset_x = 6 |  | ||||||
| theme_override_font_sizes/bold_italics_font_size = 168 |  | ||||||
| bbcode_enabled = true | 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 | fit_content = true | ||||||
| autowrap_mode = 0 | autowrap_mode = 0 | ||||||
| visible_characters_behavior = 1 | visible_characters_behavior = 1 | ||||||
| @ -914,5 +952,6 @@ root_node = NodePath("%HUDStateMachine/..") | |||||||
| tree_root = SubResource("AnimationNodeStateMachine_osrbp") | tree_root = SubResource("AnimationNodeStateMachine_osrbp") | ||||||
| anim_player = NodePath("../HUDAnimation") | 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="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"] | [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="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"] | [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) | 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")] | [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"] | [node name="Skeleton3D" parent="Armature" index="0"] | ||||||
| bones/0/rotation = Quaternion(-0.0471389, 2.3332e-10, 0.0444053, 0.997901) | 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"] | [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="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"] | [ext_resource type="Material" uid="uid://d3ka0yjhxu5ks" path="res://assets/materials/gummy_material.tres" id="3_g7vwe"] | ||||||
| 
 | 
 | ||||||
| [sub_resource type="Animation" id="Animation_hsqkd"] | [sub_resource type="Animation" id="Animation_hsqkd"] | ||||||
| @ -1,15 +1,7 @@ | |||||||
| [gd_resource type="Theme" load_steps=3 format=3 uid="uid://diodjft5u2cck"] | [gd_resource type="Theme" load_steps=3 format=3 uid="uid://diodjft5u2cck"] | ||||||
| 
 | 
 | ||||||
| [sub_resource type="SystemFont" id="SystemFont_dpm3o"] | [ext_resource type="FontFile" uid="uid://dsa0oh7c0h4pu" path="res://assets/fonts/Racing_Sans_One/RacingSansOne-Regular.ttf" id="1_3rv2b"] | ||||||
| font_names = PackedStringArray("Sans-Serif") | [ext_resource type="FontFile" uid="uid://comihs66wounx" path="res://assets/fonts/Dokdo/Dokdo-Regular.ttf" id="1_eha6a"] | ||||||
| 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 |  | ||||||
| 
 | 
 | ||||||
| [resource] | [resource] | ||||||
| ClubSelectLabel/base_type = &"Label" | ClubSelectLabel/base_type = &"Label" | ||||||
| @ -20,11 +12,10 @@ ClubSelectLabel/constants/outline_size = 6 | |||||||
| ClubSelectLabel/constants/shadow_offset_x = 6 | ClubSelectLabel/constants/shadow_offset_x = 6 | ||||||
| ClubSelectLabel/constants/shadow_offset_y = 0 | ClubSelectLabel/constants/shadow_offset_y = 0 | ||||||
| ClubSelectLabel/font_sizes/font_size = 84 | ClubSelectLabel/font_sizes/font_size = 84 | ||||||
| ClubSelectLabel/fonts/font = SubResource("SystemFont_dpm3o") | ClubSelectLabel/fonts/font = ExtResource("1_3rv2b") | ||||||
| ShotFeedback/base_type = &"Label" | ShotFeedback/base_type = &"RichTextLabel" | ||||||
| ShotFeedback/colors/font_color = Color(0.807843, 1, 1, 1) |  | ||||||
| ShotFeedback/colors/font_shadow_color = Color(0, 0, 0, 1) | ShotFeedback/colors/font_shadow_color = Color(0, 0, 0, 1) | ||||||
| ShotFeedback/constants/shadow_offset_x = 3 | ShotFeedback/constants/shadow_offset_x = 6 | ||||||
| ShotFeedback/constants/shadow_offset_y = 2 | ShotFeedback/constants/shadow_offset_y = 4 | ||||||
| ShotFeedback/font_sizes/font_size = 96 | ShotFeedback/font_sizes/normal_font_size = 272 | ||||||
| ShotFeedback/fonts/font = SubResource("SystemFont_2dr7l") | 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 | class_name BallZone extends Area3D | ||||||
| ## A spatial area that has an effect on balls inside it. | ## A spatial area that has an effect on balls inside it. | ||||||
| 
 | 
 | ||||||
|  | @export var terrain_angular_damping := 1.0 | ||||||
|  | 
 | ||||||
| @export var water_hazard := false | @export var water_hazard := false | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @ -9,21 +11,11 @@ func _ready() -> void: | |||||||
| 	body_exited.connect(_on_body_exited) | 	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: | func _on_body_entered(body: Node3D) -> void: | ||||||
| 	print("BODY ENTERED ZONE: ", body) |  | ||||||
| 	if body is GameBall: | 	if body is GameBall: | ||||||
| 		on_ball_entered(body as GameBall) | 		(body as GameBall).enter_zone(self) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| func _on_body_exited(body: Node3D) -> void: | func _on_body_exited(body: Node3D) -> void: | ||||||
| 	if body is GameBall: | 	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