Compare commits
2 Commits
DesignMapy
...
VerticalBi
| Author | SHA1 | Date | |
|---|---|---|---|
| 942a882cdb | |||
| fdc14a4288 |
13
.claude/settings.local.json
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"permissions": {
|
||||||
|
"allow": [
|
||||||
|
"Bash(nul)",
|
||||||
|
"Bash(mkdir:*)",
|
||||||
|
"Bash(dir:*)",
|
||||||
|
"Bash(findstr:*)",
|
||||||
|
"Bash(move \"Assets\\Scripts\\TiltUI.cs\" \"Assets\\Scripts\\TiltUI.cs.DISABLED\")"
|
||||||
|
],
|
||||||
|
"deny": [],
|
||||||
|
"ask": []
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,810 @@
|
|||||||
|
{
|
||||||
|
"inputs" :
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"path" : "CMakeLists.txt"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineSystem.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/build/cmake/android.toolchain.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/build/cmake/android-legacy.toolchain.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/build/cmake/abis.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/build/cmake/platforms.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Determine.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/build/cmake/hooks/pre/Android-Determine.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/CMakeSystem.cmake.in"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isGenerated" : true,
|
||||||
|
"path" : "C:/Users/gravi/Game/.utmp/RelWithDebInfo/f3u1w6u2/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeSystem.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/build/cmake/android.toolchain.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/CMakeSystemSpecificInitialize.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Initialize.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/build/cmake/hooks/pre/Android-Initialize.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Determine-C.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android/Determine-Compiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/build/cmake/hooks/pre/Determine-Compiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompilerId.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCompilerIdDetection.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/ADSP-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/ARMCC-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/ARMClang-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/AppleClang-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-DetermineCompilerInternal.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Borland-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Bruce-C-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-DetermineCompilerInternal.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Compaq-C-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Cray-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Embarcadero-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Fujitsu-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/FujitsuClang-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/GHS-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/GNU-C-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/HP-C-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IAR-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Intel-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IntelLLVM-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/MSVC-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/NVHPC-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/NVIDIA-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/PGI-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/PathScale-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/SCO-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/SDCC-C-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/SunPro-C-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/TI-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/TinyCC-C-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/VisualAge-C-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Watcom-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/XL-C-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/XLClang-C-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/zOS-C-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/CMakeFindBinUtils.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-FindBinUtils.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCCompiler.cmake.in"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isGenerated" : true,
|
||||||
|
"path" : "C:/Users/gravi/Game/.utmp/RelWithDebInfo/f3u1w6u2/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCXXCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Determine-CXX.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android/Determine-Compiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompilerId.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCompilerIdDetection.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/ADSP-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/ARMCC-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/ARMClang-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/AppleClang-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-DetermineCompilerInternal.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Borland-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-DetermineCompilerInternal.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Cray-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Embarcadero-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Fujitsu-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/FujitsuClang-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/GHS-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/HP-CXX-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IAR-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Intel-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IntelLLVM-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/MSVC-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/NVHPC-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/NVIDIA-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/PGI-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/PathScale-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/SCO-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/TI-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Watcom-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/XL-CXX-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/CMakeFindBinUtils.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-FindBinUtils.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCXXCompiler.cmake.in"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isGenerated" : true,
|
||||||
|
"path" : "C:/Users/gravi/Game/.utmp/RelWithDebInfo/f3u1w6u2/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCXXCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/CMakeSystemSpecificInformation.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/CMakeGenericSystem.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/CMakeInitializeConfigs.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/build/cmake/hooks/pre/Android.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Linux.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Platform/UnixPaths.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCInformation.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/CMakeLanguageInformation.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-C.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/CMakeCommonCompilerMacros.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/GNU.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/CMakeCommonCompilerMacros.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Clang-C.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Clang.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/build/cmake/hooks/pre/Android-Clang.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/build/cmake/flags.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCommonLanguageInclude.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/CMakeTestCCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/CMakeTestCompilerCommon.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompilerABI.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/CMakeParseImplicitIncludeInfo.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/CMakeParseImplicitLinkInfo.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/CMakeParseLibraryArchitecture.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/CMakeTestCompilerCommon.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCCompilerABI.c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompileFeatures.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Internal/FeatureTesting.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCCompiler.cmake.in"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isGenerated" : true,
|
||||||
|
"path" : "C:/Users/gravi/Game/.utmp/RelWithDebInfo/f3u1w6u2/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCXXInformation.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/CMakeLanguageInformation.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang-CXX.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Compiler/Clang.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Clang-CXX.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Platform/Android-Clang.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCommonLanguageInclude.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/CMakeTestCXXCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/CMakeTestCompilerCommon.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompilerABI.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/CMakeParseImplicitIncludeInfo.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/CMakeParseImplicitLinkInfo.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/CMakeParseLibraryArchitecture.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/CMakeTestCompilerCommon.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCXXCompilerABI.cpp"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/CMakeDetermineCompileFeatures.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/Internal/FeatureTesting.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isCMake" : true,
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22/Modules/CMakeCXXCompiler.cmake.in"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isGenerated" : true,
|
||||||
|
"path" : "C:/Users/gravi/Game/.utmp/RelWithDebInfo/f3u1w6u2/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeCXXCompiler.cmake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path" : "GameActivity/CMakeLists.txt"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isExternal" : true,
|
||||||
|
"path" : "C:/Users/gravi/Game/.utmp/RelWithDebInfo/f3u1w6u2/prefab/arm64-v8a/prefab/lib/aarch64-linux-android/cmake/game-activity/game-activityConfig.cmake"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"kind" : "cmakeFiles",
|
||||||
|
"paths" :
|
||||||
|
{
|
||||||
|
"build" : "C:/Users/gravi/Game/.utmp/RelWithDebInfo/f3u1w6u2/arm64-v8a",
|
||||||
|
"source" : "C:/Users/gravi/Game/Library/Bee/Android/Prj/IL2CPP/Gradle/unityLibrary/src/main/cpp"
|
||||||
|
},
|
||||||
|
"version" :
|
||||||
|
{
|
||||||
|
"major" : 1,
|
||||||
|
"minor" : 0
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,87 @@
|
|||||||
|
{
|
||||||
|
"configurations" :
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"directories" :
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"build" : ".",
|
||||||
|
"childIndexes" :
|
||||||
|
[
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"jsonFile" : "directory-.-RelWithDebInfo-d0094a50bb2071803777.json",
|
||||||
|
"minimumCMakeVersion" :
|
||||||
|
{
|
||||||
|
"string" : "3.6.0"
|
||||||
|
},
|
||||||
|
"projectIndex" : 0,
|
||||||
|
"source" : "."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"build" : "GameActivity",
|
||||||
|
"jsonFile" : "directory-GameActivity-RelWithDebInfo-3edf2ef9e25ca0503118.json",
|
||||||
|
"minimumCMakeVersion" :
|
||||||
|
{
|
||||||
|
"string" : "3.4.1"
|
||||||
|
},
|
||||||
|
"parentIndex" : 0,
|
||||||
|
"projectIndex" : 1,
|
||||||
|
"source" : "GameActivity",
|
||||||
|
"targetIndexes" :
|
||||||
|
[
|
||||||
|
0
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name" : "RelWithDebInfo",
|
||||||
|
"projects" :
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"childIndexes" :
|
||||||
|
[
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"directoryIndexes" :
|
||||||
|
[
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"name" : "Unity"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"directoryIndexes" :
|
||||||
|
[
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"name" : "game",
|
||||||
|
"parentIndex" : 0,
|
||||||
|
"targetIndexes" :
|
||||||
|
[
|
||||||
|
0
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"targets" :
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"directoryIndex" : 1,
|
||||||
|
"id" : "game::@d02bb112ea9f9c2ed29f",
|
||||||
|
"jsonFile" : "target-game-RelWithDebInfo-5822fa7dfcaed48fa5c5.json",
|
||||||
|
"name" : "game",
|
||||||
|
"projectIndex" : 1
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"kind" : "codemodel",
|
||||||
|
"paths" :
|
||||||
|
{
|
||||||
|
"build" : "C:/Users/gravi/Game/.utmp/RelWithDebInfo/f3u1w6u2/arm64-v8a",
|
||||||
|
"source" : "C:/Users/gravi/Game/Library/Bee/Android/Prj/IL2CPP/Gradle/unityLibrary/src/main/cpp"
|
||||||
|
},
|
||||||
|
"version" :
|
||||||
|
{
|
||||||
|
"major" : 2,
|
||||||
|
"minor" : 3
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"backtraceGraph" :
|
||||||
|
{
|
||||||
|
"commands" : [],
|
||||||
|
"files" : [],
|
||||||
|
"nodes" : []
|
||||||
|
},
|
||||||
|
"installers" : [],
|
||||||
|
"paths" :
|
||||||
|
{
|
||||||
|
"build" : ".",
|
||||||
|
"source" : "."
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"backtraceGraph" :
|
||||||
|
{
|
||||||
|
"commands" : [],
|
||||||
|
"files" : [],
|
||||||
|
"nodes" : []
|
||||||
|
},
|
||||||
|
"installers" : [],
|
||||||
|
"paths" :
|
||||||
|
{
|
||||||
|
"build" : "GameActivity",
|
||||||
|
"source" : "GameActivity"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,92 @@
|
|||||||
|
{
|
||||||
|
"cmake" :
|
||||||
|
{
|
||||||
|
"generator" :
|
||||||
|
{
|
||||||
|
"multiConfig" : false,
|
||||||
|
"name" : "Ninja"
|
||||||
|
},
|
||||||
|
"paths" :
|
||||||
|
{
|
||||||
|
"cmake" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/bin/cmake.exe",
|
||||||
|
"cpack" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/bin/cpack.exe",
|
||||||
|
"ctest" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/bin/ctest.exe",
|
||||||
|
"root" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22"
|
||||||
|
},
|
||||||
|
"version" :
|
||||||
|
{
|
||||||
|
"isDirty" : true,
|
||||||
|
"major" : 3,
|
||||||
|
"minor" : 22,
|
||||||
|
"patch" : 1,
|
||||||
|
"string" : "3.22.1-g37088a8-dirty",
|
||||||
|
"suffix" : "g37088a8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"objects" :
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"jsonFile" : "codemodel-v2-fcb92b0345b59c4ae6ab.json",
|
||||||
|
"kind" : "codemodel",
|
||||||
|
"version" :
|
||||||
|
{
|
||||||
|
"major" : 2,
|
||||||
|
"minor" : 3
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"jsonFile" : "cache-v2-593e40c92ec049dd75d8.json",
|
||||||
|
"kind" : "cache",
|
||||||
|
"version" :
|
||||||
|
{
|
||||||
|
"major" : 2,
|
||||||
|
"minor" : 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"jsonFile" : "cmakeFiles-v1-ff3074f82be3b867f3ca.json",
|
||||||
|
"kind" : "cmakeFiles",
|
||||||
|
"version" :
|
||||||
|
{
|
||||||
|
"major" : 1,
|
||||||
|
"minor" : 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"reply" :
|
||||||
|
{
|
||||||
|
"client-agp" :
|
||||||
|
{
|
||||||
|
"cache-v2" :
|
||||||
|
{
|
||||||
|
"jsonFile" : "cache-v2-593e40c92ec049dd75d8.json",
|
||||||
|
"kind" : "cache",
|
||||||
|
"version" :
|
||||||
|
{
|
||||||
|
"major" : 2,
|
||||||
|
"minor" : 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cmakeFiles-v1" :
|
||||||
|
{
|
||||||
|
"jsonFile" : "cmakeFiles-v1-ff3074f82be3b867f3ca.json",
|
||||||
|
"kind" : "cmakeFiles",
|
||||||
|
"version" :
|
||||||
|
{
|
||||||
|
"major" : 1,
|
||||||
|
"minor" : 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"codemodel-v2" :
|
||||||
|
{
|
||||||
|
"jsonFile" : "codemodel-v2-fcb92b0345b59c4ae6ab.json",
|
||||||
|
"kind" : "codemodel",
|
||||||
|
"version" :
|
||||||
|
{
|
||||||
|
"major" : 2,
|
||||||
|
"minor" : 3
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,326 @@
|
|||||||
|
{
|
||||||
|
"artifacts" :
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"path" : "C:/Users/gravi/Game/Library/Bee/Android/Prj/IL2CPP/Gradle/unityLibrary/build/intermediates/cxx/RelWithDebInfo/f3u1w6u2/obj/arm64-v8a/libgame.so"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"backtrace" : 1,
|
||||||
|
"backtraceGraph" :
|
||||||
|
{
|
||||||
|
"commands" :
|
||||||
|
[
|
||||||
|
"add_library",
|
||||||
|
"target_link_libraries",
|
||||||
|
"add_definitions",
|
||||||
|
"target_include_directories"
|
||||||
|
],
|
||||||
|
"files" :
|
||||||
|
[
|
||||||
|
"GameActivity/CMakeLists.txt"
|
||||||
|
],
|
||||||
|
"nodes" :
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"file" : 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"command" : 0,
|
||||||
|
"file" : 0,
|
||||||
|
"line" : 15,
|
||||||
|
"parent" : 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"command" : 1,
|
||||||
|
"file" : 0,
|
||||||
|
"line" : 23,
|
||||||
|
"parent" : 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"command" : 2,
|
||||||
|
"file" : 0,
|
||||||
|
"line" : 19,
|
||||||
|
"parent" : 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"command" : 3,
|
||||||
|
"file" : 0,
|
||||||
|
"line" : 21,
|
||||||
|
"parent" : 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"compileGroups" :
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"compileCommandFragments" :
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"fragment" : "-g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D__BIONIC_NO_PAGE_SIZE_MACRO -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -Wall -Wextra -pedantic -Werror -O2 -g -DNDEBUG -fPIC"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"defines" :
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"backtrace" : 3,
|
||||||
|
"define" : "EXTERNAL_GAME_ACTIVITY_CODE"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"define" : "game_EXPORTS"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"includes" :
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"backtrace" : 4,
|
||||||
|
"path" : "C:/Users/gravi/Game/Library/Bee/Android/Prj/IL2CPP/Gradle/unityLibrary/src/main/cpp/GameActivity"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"backtrace" : 2,
|
||||||
|
"isSystem" : true,
|
||||||
|
"path" : "C:/Users/gravi/.gradle/caches/8.13/transforms/1e7cc65d4e74b23bd94dca9ec0ac2eb3/transformed/jetified-games-activity-3.0.5/prefab/modules/game-activity_static/include"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"language" : "CXX",
|
||||||
|
"sourceIndexes" :
|
||||||
|
[
|
||||||
|
4,
|
||||||
|
6,
|
||||||
|
8,
|
||||||
|
10,
|
||||||
|
12,
|
||||||
|
14,
|
||||||
|
15,
|
||||||
|
16
|
||||||
|
],
|
||||||
|
"sysroot" :
|
||||||
|
{
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/toolchains/llvm/prebuilt/windows-x86_64/sysroot"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"id" : "game::@d02bb112ea9f9c2ed29f",
|
||||||
|
"link" :
|
||||||
|
{
|
||||||
|
"commandFragments" :
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"fragment" : "-Wl,-z,max-page-size=16384 -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--no-undefined-version -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments -Wl,--gc-sections",
|
||||||
|
"role" : "flags"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"backtrace" : 2,
|
||||||
|
"fragment" : "-landroid",
|
||||||
|
"role" : "libraries"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"backtrace" : 2,
|
||||||
|
"fragment" : "C:\\Users\\gravi\\.gradle\\caches\\8.13\\transforms\\1e7cc65d4e74b23bd94dca9ec0ac2eb3\\transformed\\jetified-games-activity-3.0.5\\prefab\\modules\\game-activity_static\\libs\\android.arm64-v8a\\libgame-activity_static.a",
|
||||||
|
"role" : "libraries"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"backtrace" : 2,
|
||||||
|
"fragment" : "-llog",
|
||||||
|
"role" : "libraries"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"backtrace" : 2,
|
||||||
|
"fragment" : "-lc++",
|
||||||
|
"role" : "libraries"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fragment" : "-latomic -lm",
|
||||||
|
"role" : "libraries"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"language" : "CXX",
|
||||||
|
"sysroot" :
|
||||||
|
{
|
||||||
|
"path" : "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/toolchains/llvm/prebuilt/windows-x86_64/sysroot"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"name" : "game",
|
||||||
|
"nameOnDisk" : "libgame.so",
|
||||||
|
"paths" :
|
||||||
|
{
|
||||||
|
"build" : "GameActivity",
|
||||||
|
"source" : "GameActivity"
|
||||||
|
},
|
||||||
|
"sourceGroups" :
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name" : "Header Files",
|
||||||
|
"sourceIndexes" :
|
||||||
|
[
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
2,
|
||||||
|
3,
|
||||||
|
5,
|
||||||
|
7,
|
||||||
|
9,
|
||||||
|
11,
|
||||||
|
13,
|
||||||
|
17,
|
||||||
|
18,
|
||||||
|
19,
|
||||||
|
20,
|
||||||
|
21,
|
||||||
|
22,
|
||||||
|
23,
|
||||||
|
24
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name" : "Source Files",
|
||||||
|
"sourceIndexes" :
|
||||||
|
[
|
||||||
|
4,
|
||||||
|
6,
|
||||||
|
8,
|
||||||
|
10,
|
||||||
|
12,
|
||||||
|
14,
|
||||||
|
15,
|
||||||
|
16
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"sources" :
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"backtrace" : 1,
|
||||||
|
"path" : "GameActivity/GAToUnityCallbacks.h",
|
||||||
|
"sourceGroupIndex" : 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"backtrace" : 1,
|
||||||
|
"path" : "GameActivity/MacroEnd.h",
|
||||||
|
"sourceGroupIndex" : 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"backtrace" : 1,
|
||||||
|
"path" : "GameActivity/MacroHeaderBegin.h",
|
||||||
|
"sourceGroupIndex" : 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"backtrace" : 1,
|
||||||
|
"path" : "GameActivity/MacroSourceBegin.h",
|
||||||
|
"sourceGroupIndex" : 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"backtrace" : 1,
|
||||||
|
"compileGroupIndex" : 0,
|
||||||
|
"path" : "GameActivity/UGAApplication.cpp",
|
||||||
|
"sourceGroupIndex" : 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"backtrace" : 1,
|
||||||
|
"path" : "GameActivity/UGAApplication.h",
|
||||||
|
"sourceGroupIndex" : 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"backtrace" : 1,
|
||||||
|
"compileGroupIndex" : 0,
|
||||||
|
"path" : "GameActivity/UGAConfiguration.cpp",
|
||||||
|
"sourceGroupIndex" : 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"backtrace" : 1,
|
||||||
|
"path" : "GameActivity/UGAConfiguration.h",
|
||||||
|
"sourceGroupIndex" : 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"backtrace" : 1,
|
||||||
|
"compileGroupIndex" : 0,
|
||||||
|
"path" : "GameActivity/UGADebug.cpp",
|
||||||
|
"sourceGroupIndex" : 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"backtrace" : 1,
|
||||||
|
"path" : "GameActivity/UGADebug.h",
|
||||||
|
"sourceGroupIndex" : 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"backtrace" : 1,
|
||||||
|
"compileGroupIndex" : 0,
|
||||||
|
"path" : "GameActivity/UGAEntry.cpp",
|
||||||
|
"sourceGroupIndex" : 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"backtrace" : 1,
|
||||||
|
"path" : "GameActivity/UGAEvents.h",
|
||||||
|
"sourceGroupIndex" : 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"backtrace" : 1,
|
||||||
|
"compileGroupIndex" : 0,
|
||||||
|
"path" : "GameActivity/UGAInput.cpp",
|
||||||
|
"sourceGroupIndex" : 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"backtrace" : 1,
|
||||||
|
"path" : "GameActivity/UGAInput.h",
|
||||||
|
"sourceGroupIndex" : 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"backtrace" : 1,
|
||||||
|
"compileGroupIndex" : 0,
|
||||||
|
"path" : "GameActivity/UGAInputKeyEvent.cpp",
|
||||||
|
"sourceGroupIndex" : 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"backtrace" : 1,
|
||||||
|
"compileGroupIndex" : 0,
|
||||||
|
"path" : "GameActivity/UGAInputMotionEvent.cpp",
|
||||||
|
"sourceGroupIndex" : 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"backtrace" : 1,
|
||||||
|
"compileGroupIndex" : 0,
|
||||||
|
"path" : "GameActivity/UGASoftKeyboard.cpp",
|
||||||
|
"sourceGroupIndex" : 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"backtrace" : 1,
|
||||||
|
"path" : "GameActivity/UGASoftKeyboard.h",
|
||||||
|
"sourceGroupIndex" : 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"backtrace" : 1,
|
||||||
|
"path" : "GameActivity/UGASoftKeyboardCallbacks.h",
|
||||||
|
"sourceGroupIndex" : 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"backtrace" : 1,
|
||||||
|
"path" : "GameActivity/UGATypes.h",
|
||||||
|
"sourceGroupIndex" : 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"backtrace" : 1,
|
||||||
|
"path" : "GameActivity/UGAVersion.h",
|
||||||
|
"sourceGroupIndex" : 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"backtrace" : 1,
|
||||||
|
"path" : "GameActivity/UnityToGACallbacks.h",
|
||||||
|
"sourceGroupIndex" : 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"backtrace" : 1,
|
||||||
|
"path" : "GameActivity/UnityToGAConfigurationCallbacks.h",
|
||||||
|
"sourceGroupIndex" : 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"backtrace" : 1,
|
||||||
|
"path" : "GameActivity/UnityToGAKeyEventCallbacks.h",
|
||||||
|
"sourceGroupIndex" : 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"backtrace" : 1,
|
||||||
|
"path" : "GameActivity/UnityToGAMotionEventCallbacks.h",
|
||||||
|
"sourceGroupIndex" : 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"type" : "SHARED_LIBRARY"
|
||||||
|
}
|
||||||
BIN
.utmp/RelWithDebInfo/f3u1w6u2/arm64-v8a/.ninja_deps
Normal file
10
.utmp/RelWithDebInfo/f3u1w6u2/arm64-v8a/.ninja_log
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
# ninja log v5
|
||||||
|
60 3106 7849098874557329 GameActivity/CMakeFiles/game.dir/UGAEntry.cpp.o 3d5eb9501bb1d693
|
||||||
|
49 3126 7849098874490852 GameActivity/CMakeFiles/game.dir/UGAInputKeyEvent.cpp.o 928956b05e4ea086
|
||||||
|
1 3131 7849098874723547 GameActivity/CMakeFiles/game.dir/UGAConfiguration.cpp.o 770c5ee4e888f3f9
|
||||||
|
74 3142 7849098875028129 GameActivity/CMakeFiles/game.dir/UGAInputMotionEvent.cpp.o a49a3b2f9178531d
|
||||||
|
14 3212 7849098875766479 GameActivity/CMakeFiles/game.dir/UGADebug.cpp.o df40ab6dffa3e599
|
||||||
|
88 3577 7849098879423849 GameActivity/CMakeFiles/game.dir/UGASoftKeyboard.cpp.o 9f43fd4650ee4e51
|
||||||
|
37 3655 7849098880206377 GameActivity/CMakeFiles/game.dir/UGAInput.cpp.o fce67f2f3cd23265
|
||||||
|
26 3883 7849098882485198 GameActivity/CMakeFiles/game.dir/UGAApplication.cpp.o 2b296d211ce33507
|
||||||
|
3883 4184 7849098885597064 C:/Users/gravi/Game/Library/Bee/Android/Prj/IL2CPP/Gradle/unityLibrary/build/intermediates/cxx/RelWithDebInfo/f3u1w6u2/obj/arm64-v8a/libgame.so 8c0df0356891a556
|
||||||
415
.utmp/RelWithDebInfo/f3u1w6u2/arm64-v8a/CMakeCache.txt
Normal file
@@ -0,0 +1,415 @@
|
|||||||
|
# This is the CMakeCache file.
|
||||||
|
# For build in directory: c:/Users/gravi/Game/.utmp/RelWithDebInfo/f3u1w6u2/arm64-v8a
|
||||||
|
# It was generated by CMake: C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/bin/cmake.exe
|
||||||
|
# You can edit this file to change values found and used by cmake.
|
||||||
|
# If you do not want to change any of the values, simply exit the editor.
|
||||||
|
# If you do want to change a value, simply edit, save, and exit the editor.
|
||||||
|
# The syntax for the file is as follows:
|
||||||
|
# KEY:TYPE=VALUE
|
||||||
|
# KEY is the name of a variable in the cache.
|
||||||
|
# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!.
|
||||||
|
# VALUE is the current value for the KEY.
|
||||||
|
|
||||||
|
########################
|
||||||
|
# EXTERNAL cache entries
|
||||||
|
########################
|
||||||
|
|
||||||
|
//No help, variable specified on the command line.
|
||||||
|
ANDROID_ABI:UNINITIALIZED=arm64-v8a
|
||||||
|
|
||||||
|
//No help, variable specified on the command line.
|
||||||
|
ANDROID_NDK:UNINITIALIZED=C:\Program Files\Unity\Hub\Editor\6000.2.8f1\Editor\Data\PlaybackEngines\AndroidPlayer\NDK
|
||||||
|
|
||||||
|
//No help, variable specified on the command line.
|
||||||
|
ANDROID_PLATFORM:UNINITIALIZED=android-24
|
||||||
|
|
||||||
|
//No help, variable specified on the command line.
|
||||||
|
ANDROID_STL:UNINITIALIZED=c++_shared
|
||||||
|
|
||||||
|
//No help, variable specified on the command line.
|
||||||
|
ANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES:UNINITIALIZED=ON
|
||||||
|
|
||||||
|
//Path to a program.
|
||||||
|
CMAKE_ADDR2LINE:FILEPATH=C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-addr2line.exe
|
||||||
|
|
||||||
|
//No help, variable specified on the command line.
|
||||||
|
CMAKE_ANDROID_ARCH_ABI:UNINITIALIZED=arm64-v8a
|
||||||
|
|
||||||
|
//No help, variable specified on the command line.
|
||||||
|
CMAKE_ANDROID_NDK:UNINITIALIZED=C:\Program Files\Unity\Hub\Editor\6000.2.8f1\Editor\Data\PlaybackEngines\AndroidPlayer\NDK
|
||||||
|
|
||||||
|
//Archiver
|
||||||
|
CMAKE_AR:FILEPATH=C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ar.exe
|
||||||
|
|
||||||
|
//Flags used by the compiler during all build types.
|
||||||
|
CMAKE_ASM_FLAGS:STRING=
|
||||||
|
|
||||||
|
//Flags used by the compiler during debug builds.
|
||||||
|
CMAKE_ASM_FLAGS_DEBUG:STRING=
|
||||||
|
|
||||||
|
//Flags used by the compiler during release builds.
|
||||||
|
CMAKE_ASM_FLAGS_RELEASE:STRING=
|
||||||
|
|
||||||
|
//Choose the type of build, options are: None Debug Release RelWithDebInfo
|
||||||
|
// MinSizeRel ...
|
||||||
|
CMAKE_BUILD_TYPE:STRING=RelWithDebInfo
|
||||||
|
|
||||||
|
//LLVM archiver
|
||||||
|
CMAKE_CXX_COMPILER_AR:FILEPATH=C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ar.exe
|
||||||
|
|
||||||
|
//Generate index for LLVM archive
|
||||||
|
CMAKE_CXX_COMPILER_RANLIB:FILEPATH=C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ranlib.exe
|
||||||
|
|
||||||
|
//Flags used by the compiler during all build types.
|
||||||
|
CMAKE_CXX_FLAGS:STRING=
|
||||||
|
|
||||||
|
//Flags used by the compiler during debug builds.
|
||||||
|
CMAKE_CXX_FLAGS_DEBUG:STRING=
|
||||||
|
|
||||||
|
//Flags used by the CXX compiler during MINSIZEREL builds.
|
||||||
|
CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
|
||||||
|
|
||||||
|
//Flags used by the compiler during release builds.
|
||||||
|
CMAKE_CXX_FLAGS_RELEASE:STRING=
|
||||||
|
|
||||||
|
//Flags used by the CXX compiler during RELWITHDEBINFO builds.
|
||||||
|
CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
|
||||||
|
|
||||||
|
//Libraries linked by default with all C++ applications.
|
||||||
|
CMAKE_CXX_STANDARD_LIBRARIES:STRING=-latomic -lm
|
||||||
|
|
||||||
|
//LLVM archiver
|
||||||
|
CMAKE_C_COMPILER_AR:FILEPATH=C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ar.exe
|
||||||
|
|
||||||
|
//Generate index for LLVM archive
|
||||||
|
CMAKE_C_COMPILER_RANLIB:FILEPATH=C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ranlib.exe
|
||||||
|
|
||||||
|
//Flags used by the compiler during all build types.
|
||||||
|
CMAKE_C_FLAGS:STRING=
|
||||||
|
|
||||||
|
//Flags used by the compiler during debug builds.
|
||||||
|
CMAKE_C_FLAGS_DEBUG:STRING=
|
||||||
|
|
||||||
|
//Flags used by the C compiler during MINSIZEREL builds.
|
||||||
|
CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
|
||||||
|
|
||||||
|
//Flags used by the compiler during release builds.
|
||||||
|
CMAKE_C_FLAGS_RELEASE:STRING=
|
||||||
|
|
||||||
|
//Flags used by the C compiler during RELWITHDEBINFO builds.
|
||||||
|
CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
|
||||||
|
|
||||||
|
//Libraries linked by default with all C applications.
|
||||||
|
CMAKE_C_STANDARD_LIBRARIES:STRING=-latomic -lm
|
||||||
|
|
||||||
|
//Path to a program.
|
||||||
|
CMAKE_DLLTOOL:FILEPATH=C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-dlltool.exe
|
||||||
|
|
||||||
|
//Flags used by the linker.
|
||||||
|
CMAKE_EXE_LINKER_FLAGS:STRING=
|
||||||
|
|
||||||
|
//Flags used by the linker during DEBUG builds.
|
||||||
|
CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING=
|
||||||
|
|
||||||
|
//Flags used by the linker during MINSIZEREL builds.
|
||||||
|
CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING=
|
||||||
|
|
||||||
|
//Flags used by the linker during RELEASE builds.
|
||||||
|
CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING=
|
||||||
|
|
||||||
|
//Flags used by the linker during RELWITHDEBINFO builds.
|
||||||
|
CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
|
||||||
|
|
||||||
|
//No help, variable specified on the command line.
|
||||||
|
CMAKE_EXPORT_COMPILE_COMMANDS:UNINITIALIZED=ON
|
||||||
|
|
||||||
|
//No help, variable specified on the command line.
|
||||||
|
CMAKE_FIND_ROOT_PATH:UNINITIALIZED=C:\Users\gravi\Game\.utmp\RelWithDebInfo\f3u1w6u2\prefab\arm64-v8a\prefab
|
||||||
|
|
||||||
|
//Install path prefix, prepended onto install directories.
|
||||||
|
CMAKE_INSTALL_PREFIX:PATH=C:/Program Files (x86)/Unity
|
||||||
|
|
||||||
|
//No help, variable specified on the command line.
|
||||||
|
CMAKE_LIBRARY_OUTPUT_DIRECTORY:UNINITIALIZED=C:\Users\gravi\Game\Library\Bee\Android\Prj\IL2CPP\Gradle\unityLibrary\build\intermediates\cxx\RelWithDebInfo\f3u1w6u2\obj\arm64-v8a
|
||||||
|
|
||||||
|
//Path to a program.
|
||||||
|
CMAKE_LINKER:FILEPATH=C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/toolchains/llvm/prebuilt/windows-x86_64/bin/ld.lld.exe
|
||||||
|
|
||||||
|
//make program
|
||||||
|
CMAKE_MAKE_PROGRAM:FILEPATH=C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/bin/ninja.exe
|
||||||
|
|
||||||
|
//Flags used by the linker during the creation of modules.
|
||||||
|
CMAKE_MODULE_LINKER_FLAGS:STRING=
|
||||||
|
|
||||||
|
//Flags used by the linker during the creation of modules during
|
||||||
|
// DEBUG builds.
|
||||||
|
CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING=
|
||||||
|
|
||||||
|
//Flags used by the linker during the creation of modules during
|
||||||
|
// MINSIZEREL builds.
|
||||||
|
CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING=
|
||||||
|
|
||||||
|
//Flags used by the linker during the creation of modules during
|
||||||
|
// RELEASE builds.
|
||||||
|
CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING=
|
||||||
|
|
||||||
|
//Flags used by the linker during the creation of modules during
|
||||||
|
// RELWITHDEBINFO builds.
|
||||||
|
CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
|
||||||
|
|
||||||
|
//Path to a program.
|
||||||
|
CMAKE_NM:FILEPATH=C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-nm.exe
|
||||||
|
|
||||||
|
//Path to a program.
|
||||||
|
CMAKE_OBJCOPY:FILEPATH=C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-objcopy.exe
|
||||||
|
|
||||||
|
//Path to a program.
|
||||||
|
CMAKE_OBJDUMP:FILEPATH=C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-objdump.exe
|
||||||
|
|
||||||
|
//Value Computed by CMake
|
||||||
|
CMAKE_PROJECT_DESCRIPTION:STATIC=
|
||||||
|
|
||||||
|
//Value Computed by CMake
|
||||||
|
CMAKE_PROJECT_HOMEPAGE_URL:STATIC=
|
||||||
|
|
||||||
|
//Value Computed by CMake
|
||||||
|
CMAKE_PROJECT_NAME:STATIC=Unity
|
||||||
|
|
||||||
|
//Ranlib
|
||||||
|
CMAKE_RANLIB:FILEPATH=C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ranlib.exe
|
||||||
|
|
||||||
|
//Path to a program.
|
||||||
|
CMAKE_READELF:FILEPATH=C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-readelf.exe
|
||||||
|
|
||||||
|
//No help, variable specified on the command line.
|
||||||
|
CMAKE_RUNTIME_OUTPUT_DIRECTORY:UNINITIALIZED=C:\Users\gravi\Game\Library\Bee\Android\Prj\IL2CPP\Gradle\unityLibrary\build\intermediates\cxx\RelWithDebInfo\f3u1w6u2\obj\arm64-v8a
|
||||||
|
|
||||||
|
//Flags used by the linker during the creation of dll's.
|
||||||
|
CMAKE_SHARED_LINKER_FLAGS:STRING=
|
||||||
|
|
||||||
|
//Flags used by the linker during the creation of shared libraries
|
||||||
|
// during DEBUG builds.
|
||||||
|
CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING=
|
||||||
|
|
||||||
|
//Flags used by the linker during the creation of shared libraries
|
||||||
|
// during MINSIZEREL builds.
|
||||||
|
CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING=
|
||||||
|
|
||||||
|
//Flags used by the linker during the creation of shared libraries
|
||||||
|
// during RELEASE builds.
|
||||||
|
CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING=
|
||||||
|
|
||||||
|
//Flags used by the linker during the creation of shared libraries
|
||||||
|
// during RELWITHDEBINFO builds.
|
||||||
|
CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING=
|
||||||
|
|
||||||
|
//If set, runtime paths are not added when installing shared libraries,
|
||||||
|
// but are added when building.
|
||||||
|
CMAKE_SKIP_INSTALL_RPATH:BOOL=NO
|
||||||
|
|
||||||
|
//If set, runtime paths are not added when using shared libraries.
|
||||||
|
CMAKE_SKIP_RPATH:BOOL=NO
|
||||||
|
|
||||||
|
//Flags used by the linker during the creation of static libraries
|
||||||
|
// during all build types.
|
||||||
|
CMAKE_STATIC_LINKER_FLAGS:STRING=
|
||||||
|
|
||||||
|
//Flags used by the linker during the creation of static libraries
|
||||||
|
// during DEBUG builds.
|
||||||
|
CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING=
|
||||||
|
|
||||||
|
//Flags used by the linker during the creation of static libraries
|
||||||
|
// during MINSIZEREL builds.
|
||||||
|
CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING=
|
||||||
|
|
||||||
|
//Flags used by the linker during the creation of static libraries
|
||||||
|
// during RELEASE builds.
|
||||||
|
CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING=
|
||||||
|
|
||||||
|
//Flags used by the linker during the creation of static libraries
|
||||||
|
// during RELWITHDEBINFO builds.
|
||||||
|
CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING=
|
||||||
|
|
||||||
|
//Strip
|
||||||
|
CMAKE_STRIP:FILEPATH=C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-strip.exe
|
||||||
|
|
||||||
|
//No help, variable specified on the command line.
|
||||||
|
CMAKE_SYSTEM_NAME:UNINITIALIZED=Android
|
||||||
|
|
||||||
|
//No help, variable specified on the command line.
|
||||||
|
CMAKE_SYSTEM_VERSION:UNINITIALIZED=24
|
||||||
|
|
||||||
|
//The CMake toolchain file
|
||||||
|
CMAKE_TOOLCHAIN_FILE:FILEPATH=C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/build/cmake/android.toolchain.cmake
|
||||||
|
|
||||||
|
//If this value is on, makefiles will be generated without the
|
||||||
|
// .SILENT directive, and all commands will be echoed to the console
|
||||||
|
// during the make. This is useful for debugging only. With Visual
|
||||||
|
// Studio IDE projects all commands are done without /nologo.
|
||||||
|
CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE
|
||||||
|
|
||||||
|
//Value Computed by CMake
|
||||||
|
Unity_BINARY_DIR:STATIC=C:/Users/gravi/Game/.utmp/RelWithDebInfo/f3u1w6u2/arm64-v8a
|
||||||
|
|
||||||
|
//Value Computed by CMake
|
||||||
|
Unity_IS_TOP_LEVEL:STATIC=ON
|
||||||
|
|
||||||
|
//Value Computed by CMake
|
||||||
|
Unity_SOURCE_DIR:STATIC=C:/Users/gravi/Game/Library/Bee/Android/Prj/IL2CPP/Gradle/unityLibrary/src/main/cpp
|
||||||
|
|
||||||
|
//The directory containing a CMake configuration file for game-activity.
|
||||||
|
game-activity_DIR:PATH=C:/Users/gravi/Game/.utmp/RelWithDebInfo/f3u1w6u2/prefab/arm64-v8a/prefab/lib/aarch64-linux-android/cmake/game-activity
|
||||||
|
|
||||||
|
//Value Computed by CMake
|
||||||
|
game_BINARY_DIR:STATIC=C:/Users/gravi/Game/.utmp/RelWithDebInfo/f3u1w6u2/arm64-v8a/GameActivity
|
||||||
|
|
||||||
|
//Value Computed by CMake
|
||||||
|
game_IS_TOP_LEVEL:STATIC=OFF
|
||||||
|
|
||||||
|
//Dependencies for the target
|
||||||
|
game_LIB_DEPENDS:STATIC=general;android;general;game-activity::game-activity_static;general;log;general;c++;
|
||||||
|
|
||||||
|
//Value Computed by CMake
|
||||||
|
game_SOURCE_DIR:STATIC=C:/Users/gravi/Game/Library/Bee/Android/Prj/IL2CPP/Gradle/unityLibrary/src/main/cpp/GameActivity
|
||||||
|
|
||||||
|
|
||||||
|
########################
|
||||||
|
# INTERNAL cache entries
|
||||||
|
########################
|
||||||
|
|
||||||
|
//ADVANCED property for variable: CMAKE_ADDR2LINE
|
||||||
|
CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_AR
|
||||||
|
CMAKE_AR-ADVANCED:INTERNAL=1
|
||||||
|
//This is the directory where this CMakeCache.txt was created
|
||||||
|
CMAKE_CACHEFILE_DIR:INTERNAL=c:/Users/gravi/Game/.utmp/RelWithDebInfo/f3u1w6u2/arm64-v8a
|
||||||
|
//Major version of cmake used to create the current loaded cache
|
||||||
|
CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3
|
||||||
|
//Minor version of cmake used to create the current loaded cache
|
||||||
|
CMAKE_CACHE_MINOR_VERSION:INTERNAL=22
|
||||||
|
//Patch version of cmake used to create the current loaded cache
|
||||||
|
CMAKE_CACHE_PATCH_VERSION:INTERNAL=1
|
||||||
|
//Path to CMake executable.
|
||||||
|
CMAKE_COMMAND:INTERNAL=C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/bin/cmake.exe
|
||||||
|
//Path to cpack program executable.
|
||||||
|
CMAKE_CPACK_COMMAND:INTERNAL=C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/bin/cpack.exe
|
||||||
|
//Path to ctest program executable.
|
||||||
|
CMAKE_CTEST_COMMAND:INTERNAL=C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/bin/ctest.exe
|
||||||
|
//ADVANCED property for variable: CMAKE_CXX_COMPILER_AR
|
||||||
|
CMAKE_CXX_COMPILER_AR-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_CXX_COMPILER_RANLIB
|
||||||
|
CMAKE_CXX_COMPILER_RANLIB-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_CXX_FLAGS
|
||||||
|
CMAKE_CXX_FLAGS-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_CXX_FLAGS_DEBUG
|
||||||
|
CMAKE_CXX_FLAGS_DEBUG-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_CXX_FLAGS_MINSIZEREL
|
||||||
|
CMAKE_CXX_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELEASE
|
||||||
|
CMAKE_CXX_FLAGS_RELEASE-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELWITHDEBINFO
|
||||||
|
CMAKE_CXX_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_CXX_STANDARD_LIBRARIES
|
||||||
|
CMAKE_CXX_STANDARD_LIBRARIES-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_C_COMPILER_AR
|
||||||
|
CMAKE_C_COMPILER_AR-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_C_COMPILER_RANLIB
|
||||||
|
CMAKE_C_COMPILER_RANLIB-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_C_FLAGS
|
||||||
|
CMAKE_C_FLAGS-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG
|
||||||
|
CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL
|
||||||
|
CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE
|
||||||
|
CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO
|
||||||
|
CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_C_STANDARD_LIBRARIES
|
||||||
|
CMAKE_C_STANDARD_LIBRARIES-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_DLLTOOL
|
||||||
|
CMAKE_DLLTOOL-ADVANCED:INTERNAL=1
|
||||||
|
//Executable file format
|
||||||
|
CMAKE_EXECUTABLE_FORMAT:INTERNAL=ELF
|
||||||
|
//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS
|
||||||
|
CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG
|
||||||
|
CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL
|
||||||
|
CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE
|
||||||
|
CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO
|
||||||
|
CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
|
||||||
|
//Name of external makefile project generator.
|
||||||
|
CMAKE_EXTRA_GENERATOR:INTERNAL=
|
||||||
|
//Name of generator.
|
||||||
|
CMAKE_GENERATOR:INTERNAL=Ninja
|
||||||
|
//Generator instance identifier.
|
||||||
|
CMAKE_GENERATOR_INSTANCE:INTERNAL=
|
||||||
|
//Name of generator platform.
|
||||||
|
CMAKE_GENERATOR_PLATFORM:INTERNAL=
|
||||||
|
//Name of generator toolset.
|
||||||
|
CMAKE_GENERATOR_TOOLSET:INTERNAL=
|
||||||
|
//Source directory with the top level CMakeLists.txt file for this
|
||||||
|
// project
|
||||||
|
CMAKE_HOME_DIRECTORY:INTERNAL=C:/Users/gravi/Game/Library/Bee/Android/Prj/IL2CPP/Gradle/unityLibrary/src/main/cpp
|
||||||
|
//Install .so files without execute permission.
|
||||||
|
CMAKE_INSTALL_SO_NO_EXE:INTERNAL=0
|
||||||
|
//ADVANCED property for variable: CMAKE_LINKER
|
||||||
|
CMAKE_LINKER-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS
|
||||||
|
CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG
|
||||||
|
CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL
|
||||||
|
CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE
|
||||||
|
CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO
|
||||||
|
CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_NM
|
||||||
|
CMAKE_NM-ADVANCED:INTERNAL=1
|
||||||
|
//number of local generators
|
||||||
|
CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=2
|
||||||
|
//ADVANCED property for variable: CMAKE_OBJCOPY
|
||||||
|
CMAKE_OBJCOPY-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_OBJDUMP
|
||||||
|
CMAKE_OBJDUMP-ADVANCED:INTERNAL=1
|
||||||
|
//Platform information initialized
|
||||||
|
CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_RANLIB
|
||||||
|
CMAKE_RANLIB-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_READELF
|
||||||
|
CMAKE_READELF-ADVANCED:INTERNAL=1
|
||||||
|
//Path to CMake installation.
|
||||||
|
CMAKE_ROOT:INTERNAL=C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/cmake/3.22.1/share/cmake-3.22
|
||||||
|
//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS
|
||||||
|
CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG
|
||||||
|
CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL
|
||||||
|
CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE
|
||||||
|
CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO
|
||||||
|
CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH
|
||||||
|
CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_SKIP_RPATH
|
||||||
|
CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS
|
||||||
|
CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG
|
||||||
|
CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL
|
||||||
|
CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE
|
||||||
|
CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO
|
||||||
|
CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_STRIP
|
||||||
|
CMAKE_STRIP-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE
|
||||||
|
CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1
|
||||||
|
|
||||||
@@ -0,0 +1,72 @@
|
|||||||
|
set(CMAKE_C_COMPILER "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/toolchains/llvm/prebuilt/windows-x86_64/bin/clang.exe")
|
||||||
|
set(CMAKE_C_COMPILER_ARG1 "")
|
||||||
|
set(CMAKE_C_COMPILER_ID "Clang")
|
||||||
|
set(CMAKE_C_COMPILER_VERSION "18.0.3")
|
||||||
|
set(CMAKE_C_COMPILER_VERSION_INTERNAL "")
|
||||||
|
set(CMAKE_C_COMPILER_WRAPPER "")
|
||||||
|
set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "17")
|
||||||
|
set(CMAKE_C_EXTENSIONS_COMPUTED_DEFAULT "ON")
|
||||||
|
set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert;c_std_17;c_std_23")
|
||||||
|
set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes")
|
||||||
|
set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros")
|
||||||
|
set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert")
|
||||||
|
set(CMAKE_C17_COMPILE_FEATURES "c_std_17")
|
||||||
|
set(CMAKE_C23_COMPILE_FEATURES "c_std_23")
|
||||||
|
|
||||||
|
set(CMAKE_C_PLATFORM_ID "Linux")
|
||||||
|
set(CMAKE_C_SIMULATE_ID "")
|
||||||
|
set(CMAKE_C_COMPILER_FRONTEND_VARIANT "GNU")
|
||||||
|
set(CMAKE_C_SIMULATE_VERSION "")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
set(CMAKE_AR "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ar.exe")
|
||||||
|
set(CMAKE_C_COMPILER_AR "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ar.exe")
|
||||||
|
set(CMAKE_RANLIB "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ranlib.exe")
|
||||||
|
set(CMAKE_C_COMPILER_RANLIB "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ranlib.exe")
|
||||||
|
set(CMAKE_LINKER "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/toolchains/llvm/prebuilt/windows-x86_64/bin/ld.lld.exe")
|
||||||
|
set(CMAKE_MT "")
|
||||||
|
set(CMAKE_COMPILER_IS_GNUCC )
|
||||||
|
set(CMAKE_C_COMPILER_LOADED 1)
|
||||||
|
set(CMAKE_C_COMPILER_WORKS TRUE)
|
||||||
|
set(CMAKE_C_ABI_COMPILED TRUE)
|
||||||
|
|
||||||
|
set(CMAKE_C_COMPILER_ENV_VAR "CC")
|
||||||
|
|
||||||
|
set(CMAKE_C_COMPILER_ID_RUN 1)
|
||||||
|
set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m)
|
||||||
|
set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC)
|
||||||
|
set(CMAKE_C_LINKER_PREFERENCE 10)
|
||||||
|
|
||||||
|
# Save compiler ABI information.
|
||||||
|
set(CMAKE_C_SIZEOF_DATA_PTR "8")
|
||||||
|
set(CMAKE_C_COMPILER_ABI "ELF")
|
||||||
|
set(CMAKE_C_BYTE_ORDER "LITTLE_ENDIAN")
|
||||||
|
set(CMAKE_C_LIBRARY_ARCHITECTURE "")
|
||||||
|
|
||||||
|
if(CMAKE_C_SIZEOF_DATA_PTR)
|
||||||
|
set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(CMAKE_C_COMPILER_ABI)
|
||||||
|
set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(CMAKE_C_LIBRARY_ARCHITECTURE)
|
||||||
|
set(CMAKE_LIBRARY_ARCHITECTURE "")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "")
|
||||||
|
if(CMAKE_C_CL_SHOWINCLUDES_PREFIX)
|
||||||
|
set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/include;C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android;C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include")
|
||||||
|
set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "-l:libunwind.a;dl;c;-l:libunwind.a;dl")
|
||||||
|
set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/lib/linux/aarch64;C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/24;C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android;C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib")
|
||||||
|
set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")
|
||||||
@@ -0,0 +1,83 @@
|
|||||||
|
set(CMAKE_CXX_COMPILER "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/toolchains/llvm/prebuilt/windows-x86_64/bin/clang++.exe")
|
||||||
|
set(CMAKE_CXX_COMPILER_ARG1 "")
|
||||||
|
set(CMAKE_CXX_COMPILER_ID "Clang")
|
||||||
|
set(CMAKE_CXX_COMPILER_VERSION "18.0.3")
|
||||||
|
set(CMAKE_CXX_COMPILER_VERSION_INTERNAL "")
|
||||||
|
set(CMAKE_CXX_COMPILER_WRAPPER "")
|
||||||
|
set(CMAKE_CXX_STANDARD_COMPUTED_DEFAULT "17")
|
||||||
|
set(CMAKE_CXX_EXTENSIONS_COMPUTED_DEFAULT "ON")
|
||||||
|
set(CMAKE_CXX_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters;cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates;cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates;cxx_std_17;cxx_std_20;cxx_std_23")
|
||||||
|
set(CMAKE_CXX98_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters")
|
||||||
|
set(CMAKE_CXX11_COMPILE_FEATURES "cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates")
|
||||||
|
set(CMAKE_CXX14_COMPILE_FEATURES "cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates")
|
||||||
|
set(CMAKE_CXX17_COMPILE_FEATURES "cxx_std_17")
|
||||||
|
set(CMAKE_CXX20_COMPILE_FEATURES "cxx_std_20")
|
||||||
|
set(CMAKE_CXX23_COMPILE_FEATURES "cxx_std_23")
|
||||||
|
|
||||||
|
set(CMAKE_CXX_PLATFORM_ID "Linux")
|
||||||
|
set(CMAKE_CXX_SIMULATE_ID "")
|
||||||
|
set(CMAKE_CXX_COMPILER_FRONTEND_VARIANT "GNU")
|
||||||
|
set(CMAKE_CXX_SIMULATE_VERSION "")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
set(CMAKE_AR "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ar.exe")
|
||||||
|
set(CMAKE_CXX_COMPILER_AR "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ar.exe")
|
||||||
|
set(CMAKE_RANLIB "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ranlib.exe")
|
||||||
|
set(CMAKE_CXX_COMPILER_RANLIB "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ranlib.exe")
|
||||||
|
set(CMAKE_LINKER "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/toolchains/llvm/prebuilt/windows-x86_64/bin/ld.lld.exe")
|
||||||
|
set(CMAKE_MT "")
|
||||||
|
set(CMAKE_COMPILER_IS_GNUCXX )
|
||||||
|
set(CMAKE_CXX_COMPILER_LOADED 1)
|
||||||
|
set(CMAKE_CXX_COMPILER_WORKS TRUE)
|
||||||
|
set(CMAKE_CXX_ABI_COMPILED TRUE)
|
||||||
|
|
||||||
|
set(CMAKE_CXX_COMPILER_ENV_VAR "CXX")
|
||||||
|
|
||||||
|
set(CMAKE_CXX_COMPILER_ID_RUN 1)
|
||||||
|
set(CMAKE_CXX_SOURCE_FILE_EXTENSIONS C;M;c++;cc;cpp;cxx;m;mm;mpp;CPP;ixx;cppm)
|
||||||
|
set(CMAKE_CXX_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O;obj;OBJ;def;DEF;rc;RC)
|
||||||
|
|
||||||
|
foreach (lang C OBJC OBJCXX)
|
||||||
|
if (CMAKE_${lang}_COMPILER_ID_RUN)
|
||||||
|
foreach(extension IN LISTS CMAKE_${lang}_SOURCE_FILE_EXTENSIONS)
|
||||||
|
list(REMOVE_ITEM CMAKE_CXX_SOURCE_FILE_EXTENSIONS ${extension})
|
||||||
|
endforeach()
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
set(CMAKE_CXX_LINKER_PREFERENCE 30)
|
||||||
|
set(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES 1)
|
||||||
|
|
||||||
|
# Save compiler ABI information.
|
||||||
|
set(CMAKE_CXX_SIZEOF_DATA_PTR "8")
|
||||||
|
set(CMAKE_CXX_COMPILER_ABI "ELF")
|
||||||
|
set(CMAKE_CXX_BYTE_ORDER "LITTLE_ENDIAN")
|
||||||
|
set(CMAKE_CXX_LIBRARY_ARCHITECTURE "")
|
||||||
|
|
||||||
|
if(CMAKE_CXX_SIZEOF_DATA_PTR)
|
||||||
|
set(CMAKE_SIZEOF_VOID_P "${CMAKE_CXX_SIZEOF_DATA_PTR}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(CMAKE_CXX_COMPILER_ABI)
|
||||||
|
set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CXX_COMPILER_ABI}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(CMAKE_CXX_LIBRARY_ARCHITECTURE)
|
||||||
|
set(CMAKE_LIBRARY_ARCHITECTURE "")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX "")
|
||||||
|
if(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX)
|
||||||
|
set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_CXX_CL_SHOWINCLUDES_PREFIX}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/c++/v1;C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/include;C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android;C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include")
|
||||||
|
set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "-l:libunwind.a;dl;c;-l:libunwind.a;dl")
|
||||||
|
set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/18/lib/linux/aarch64;C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/24;C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android;C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib")
|
||||||
|
set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
set(CMAKE_HOST_SYSTEM "Windows-10.0.26100")
|
||||||
|
set(CMAKE_HOST_SYSTEM_NAME "Windows")
|
||||||
|
set(CMAKE_HOST_SYSTEM_VERSION "10.0.26100")
|
||||||
|
set(CMAKE_HOST_SYSTEM_PROCESSOR "AMD64")
|
||||||
|
|
||||||
|
include("C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/build/cmake/android.toolchain.cmake")
|
||||||
|
|
||||||
|
set(CMAKE_SYSTEM "Android-1")
|
||||||
|
set(CMAKE_SYSTEM_NAME "Android")
|
||||||
|
set(CMAKE_SYSTEM_VERSION "1")
|
||||||
|
set(CMAKE_SYSTEM_PROCESSOR "aarch64")
|
||||||
|
|
||||||
|
set(CMAKE_CROSSCOMPILING "TRUE")
|
||||||
|
|
||||||
|
set(CMAKE_SYSTEM_LOADED 1)
|
||||||
@@ -0,0 +1,803 @@
|
|||||||
|
#ifdef __cplusplus
|
||||||
|
# error "A C++ compiler has been selected for C."
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(__18CXX)
|
||||||
|
# define ID_VOID_MAIN
|
||||||
|
#endif
|
||||||
|
#if defined(__CLASSIC_C__)
|
||||||
|
/* cv-qualifiers did not exist in K&R C */
|
||||||
|
# define const
|
||||||
|
# define volatile
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(__has_include)
|
||||||
|
/* If the compiler does not have __has_include, pretend the answer is
|
||||||
|
always no. */
|
||||||
|
# define __has_include(x) 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/* Version number components: V=Version, R=Revision, P=Patch
|
||||||
|
Version date components: YYYY=Year, MM=Month, DD=Day */
|
||||||
|
|
||||||
|
#if defined(__INTEL_COMPILER) || defined(__ICC)
|
||||||
|
# define COMPILER_ID "Intel"
|
||||||
|
# if defined(_MSC_VER)
|
||||||
|
# define SIMULATE_ID "MSVC"
|
||||||
|
# endif
|
||||||
|
# if defined(__GNUC__)
|
||||||
|
# define SIMULATE_ID "GNU"
|
||||||
|
# endif
|
||||||
|
/* __INTEL_COMPILER = VRP prior to 2021, and then VVVV for 2021 and later,
|
||||||
|
except that a few beta releases use the old format with V=2021. */
|
||||||
|
# if __INTEL_COMPILER < 2021 || __INTEL_COMPILER == 202110 || __INTEL_COMPILER == 202111
|
||||||
|
# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100)
|
||||||
|
# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10)
|
||||||
|
# if defined(__INTEL_COMPILER_UPDATE)
|
||||||
|
# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE)
|
||||||
|
# else
|
||||||
|
# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10)
|
||||||
|
# endif
|
||||||
|
# else
|
||||||
|
# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER)
|
||||||
|
# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER_UPDATE)
|
||||||
|
/* The third version component from --version is an update index,
|
||||||
|
but no macro is provided for it. */
|
||||||
|
# define COMPILER_VERSION_PATCH DEC(0)
|
||||||
|
# endif
|
||||||
|
# if defined(__INTEL_COMPILER_BUILD_DATE)
|
||||||
|
/* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */
|
||||||
|
# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE)
|
||||||
|
# endif
|
||||||
|
# if defined(_MSC_VER)
|
||||||
|
/* _MSC_VER = VVRR */
|
||||||
|
# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
|
||||||
|
# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
|
||||||
|
# endif
|
||||||
|
# if defined(__GNUC__)
|
||||||
|
# define SIMULATE_VERSION_MAJOR DEC(__GNUC__)
|
||||||
|
# elif defined(__GNUG__)
|
||||||
|
# define SIMULATE_VERSION_MAJOR DEC(__GNUG__)
|
||||||
|
# endif
|
||||||
|
# if defined(__GNUC_MINOR__)
|
||||||
|
# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__)
|
||||||
|
# endif
|
||||||
|
# if defined(__GNUC_PATCHLEVEL__)
|
||||||
|
# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__)
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#elif (defined(__clang__) && defined(__INTEL_CLANG_COMPILER)) || defined(__INTEL_LLVM_COMPILER)
|
||||||
|
# define COMPILER_ID "IntelLLVM"
|
||||||
|
#if defined(_MSC_VER)
|
||||||
|
# define SIMULATE_ID "MSVC"
|
||||||
|
#endif
|
||||||
|
#if defined(__GNUC__)
|
||||||
|
# define SIMULATE_ID "GNU"
|
||||||
|
#endif
|
||||||
|
/* __INTEL_LLVM_COMPILER = VVVVRP prior to 2021.2.0, VVVVRRPP for 2021.2.0 and
|
||||||
|
* later. Look for 6 digit vs. 8 digit version number to decide encoding.
|
||||||
|
* VVVV is no smaller than the current year when a version is released.
|
||||||
|
*/
|
||||||
|
#if __INTEL_LLVM_COMPILER < 1000000L
|
||||||
|
# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/100)
|
||||||
|
# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/10 % 10)
|
||||||
|
# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 10)
|
||||||
|
#else
|
||||||
|
# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/10000)
|
||||||
|
# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/100 % 100)
|
||||||
|
# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 100)
|
||||||
|
#endif
|
||||||
|
#if defined(_MSC_VER)
|
||||||
|
/* _MSC_VER = VVRR */
|
||||||
|
# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
|
||||||
|
# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
|
||||||
|
#endif
|
||||||
|
#if defined(__GNUC__)
|
||||||
|
# define SIMULATE_VERSION_MAJOR DEC(__GNUC__)
|
||||||
|
#elif defined(__GNUG__)
|
||||||
|
# define SIMULATE_VERSION_MAJOR DEC(__GNUG__)
|
||||||
|
#endif
|
||||||
|
#if defined(__GNUC_MINOR__)
|
||||||
|
# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__)
|
||||||
|
#endif
|
||||||
|
#if defined(__GNUC_PATCHLEVEL__)
|
||||||
|
# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#elif defined(__PATHCC__)
|
||||||
|
# define COMPILER_ID "PathScale"
|
||||||
|
# define COMPILER_VERSION_MAJOR DEC(__PATHCC__)
|
||||||
|
# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__)
|
||||||
|
# if defined(__PATHCC_PATCHLEVEL__)
|
||||||
|
# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__)
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__)
|
||||||
|
# define COMPILER_ID "Embarcadero"
|
||||||
|
# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF)
|
||||||
|
# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF)
|
||||||
|
# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF)
|
||||||
|
|
||||||
|
#elif defined(__BORLANDC__)
|
||||||
|
# define COMPILER_ID "Borland"
|
||||||
|
/* __BORLANDC__ = 0xVRR */
|
||||||
|
# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8)
|
||||||
|
# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF)
|
||||||
|
|
||||||
|
#elif defined(__WATCOMC__) && __WATCOMC__ < 1200
|
||||||
|
# define COMPILER_ID "Watcom"
|
||||||
|
/* __WATCOMC__ = VVRR */
|
||||||
|
# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100)
|
||||||
|
# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10)
|
||||||
|
# if (__WATCOMC__ % 10) > 0
|
||||||
|
# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10)
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#elif defined(__WATCOMC__)
|
||||||
|
# define COMPILER_ID "OpenWatcom"
|
||||||
|
/* __WATCOMC__ = VVRP + 1100 */
|
||||||
|
# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100)
|
||||||
|
# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10)
|
||||||
|
# if (__WATCOMC__ % 10) > 0
|
||||||
|
# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10)
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#elif defined(__SUNPRO_C)
|
||||||
|
# define COMPILER_ID "SunPro"
|
||||||
|
# if __SUNPRO_C >= 0x5100
|
||||||
|
/* __SUNPRO_C = 0xVRRP */
|
||||||
|
# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>12)
|
||||||
|
# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xFF)
|
||||||
|
# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF)
|
||||||
|
# else
|
||||||
|
/* __SUNPRO_CC = 0xVRP */
|
||||||
|
# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>8)
|
||||||
|
# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xF)
|
||||||
|
# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF)
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#elif defined(__HP_cc)
|
||||||
|
# define COMPILER_ID "HP"
|
||||||
|
/* __HP_cc = VVRRPP */
|
||||||
|
# define COMPILER_VERSION_MAJOR DEC(__HP_cc/10000)
|
||||||
|
# define COMPILER_VERSION_MINOR DEC(__HP_cc/100 % 100)
|
||||||
|
# define COMPILER_VERSION_PATCH DEC(__HP_cc % 100)
|
||||||
|
|
||||||
|
#elif defined(__DECC)
|
||||||
|
# define COMPILER_ID "Compaq"
|
||||||
|
/* __DECC_VER = VVRRTPPPP */
|
||||||
|
# define COMPILER_VERSION_MAJOR DEC(__DECC_VER/10000000)
|
||||||
|
# define COMPILER_VERSION_MINOR DEC(__DECC_VER/100000 % 100)
|
||||||
|
# define COMPILER_VERSION_PATCH DEC(__DECC_VER % 10000)
|
||||||
|
|
||||||
|
#elif defined(__IBMC__) && defined(__COMPILER_VER__)
|
||||||
|
# define COMPILER_ID "zOS"
|
||||||
|
/* __IBMC__ = VRP */
|
||||||
|
# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100)
|
||||||
|
# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10)
|
||||||
|
# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10)
|
||||||
|
|
||||||
|
#elif defined(__ibmxl__) && defined(__clang__)
|
||||||
|
# define COMPILER_ID "XLClang"
|
||||||
|
# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__)
|
||||||
|
# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__)
|
||||||
|
# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__)
|
||||||
|
# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__)
|
||||||
|
|
||||||
|
|
||||||
|
#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ >= 800
|
||||||
|
# define COMPILER_ID "XL"
|
||||||
|
/* __IBMC__ = VRP */
|
||||||
|
# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100)
|
||||||
|
# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10)
|
||||||
|
# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10)
|
||||||
|
|
||||||
|
#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ < 800
|
||||||
|
# define COMPILER_ID "VisualAge"
|
||||||
|
/* __IBMC__ = VRP */
|
||||||
|
# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100)
|
||||||
|
# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10)
|
||||||
|
# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10)
|
||||||
|
|
||||||
|
#elif defined(__NVCOMPILER)
|
||||||
|
# define COMPILER_ID "NVHPC"
|
||||||
|
# define COMPILER_VERSION_MAJOR DEC(__NVCOMPILER_MAJOR__)
|
||||||
|
# define COMPILER_VERSION_MINOR DEC(__NVCOMPILER_MINOR__)
|
||||||
|
# if defined(__NVCOMPILER_PATCHLEVEL__)
|
||||||
|
# define COMPILER_VERSION_PATCH DEC(__NVCOMPILER_PATCHLEVEL__)
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#elif defined(__PGI)
|
||||||
|
# define COMPILER_ID "PGI"
|
||||||
|
# define COMPILER_VERSION_MAJOR DEC(__PGIC__)
|
||||||
|
# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__)
|
||||||
|
# if defined(__PGIC_PATCHLEVEL__)
|
||||||
|
# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__)
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#elif defined(_CRAYC)
|
||||||
|
# define COMPILER_ID "Cray"
|
||||||
|
# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR)
|
||||||
|
# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR)
|
||||||
|
|
||||||
|
#elif defined(__TI_COMPILER_VERSION__)
|
||||||
|
# define COMPILER_ID "TI"
|
||||||
|
/* __TI_COMPILER_VERSION__ = VVVRRRPPP */
|
||||||
|
# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000)
|
||||||
|
# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000)
|
||||||
|
# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000)
|
||||||
|
|
||||||
|
#elif defined(__CLANG_FUJITSU)
|
||||||
|
# define COMPILER_ID "FujitsuClang"
|
||||||
|
# define COMPILER_VERSION_MAJOR DEC(__FCC_major__)
|
||||||
|
# define COMPILER_VERSION_MINOR DEC(__FCC_minor__)
|
||||||
|
# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__)
|
||||||
|
# define COMPILER_VERSION_INTERNAL_STR __clang_version__
|
||||||
|
|
||||||
|
|
||||||
|
#elif defined(__FUJITSU)
|
||||||
|
# define COMPILER_ID "Fujitsu"
|
||||||
|
# if defined(__FCC_version__)
|
||||||
|
# define COMPILER_VERSION __FCC_version__
|
||||||
|
# elif defined(__FCC_major__)
|
||||||
|
# define COMPILER_VERSION_MAJOR DEC(__FCC_major__)
|
||||||
|
# define COMPILER_VERSION_MINOR DEC(__FCC_minor__)
|
||||||
|
# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__)
|
||||||
|
# endif
|
||||||
|
# if defined(__fcc_version)
|
||||||
|
# define COMPILER_VERSION_INTERNAL DEC(__fcc_version)
|
||||||
|
# elif defined(__FCC_VERSION)
|
||||||
|
# define COMPILER_VERSION_INTERNAL DEC(__FCC_VERSION)
|
||||||
|
# endif
|
||||||
|
|
||||||
|
|
||||||
|
#elif defined(__ghs__)
|
||||||
|
# define COMPILER_ID "GHS"
|
||||||
|
/* __GHS_VERSION_NUMBER = VVVVRP */
|
||||||
|
# ifdef __GHS_VERSION_NUMBER
|
||||||
|
# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100)
|
||||||
|
# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10)
|
||||||
|
# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10)
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#elif defined(__TINYC__)
|
||||||
|
# define COMPILER_ID "TinyCC"
|
||||||
|
|
||||||
|
#elif defined(__BCC__)
|
||||||
|
# define COMPILER_ID "Bruce"
|
||||||
|
|
||||||
|
#elif defined(__SCO_VERSION__)
|
||||||
|
# define COMPILER_ID "SCO"
|
||||||
|
|
||||||
|
#elif defined(__ARMCC_VERSION) && !defined(__clang__)
|
||||||
|
# define COMPILER_ID "ARMCC"
|
||||||
|
#if __ARMCC_VERSION >= 1000000
|
||||||
|
/* __ARMCC_VERSION = VRRPPPP */
|
||||||
|
# define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000)
|
||||||
|
# define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100)
|
||||||
|
# define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000)
|
||||||
|
#else
|
||||||
|
/* __ARMCC_VERSION = VRPPPP */
|
||||||
|
# define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000)
|
||||||
|
# define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10)
|
||||||
|
# define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#elif defined(__clang__) && defined(__apple_build_version__)
|
||||||
|
# define COMPILER_ID "AppleClang"
|
||||||
|
# if defined(_MSC_VER)
|
||||||
|
# define SIMULATE_ID "MSVC"
|
||||||
|
# endif
|
||||||
|
# define COMPILER_VERSION_MAJOR DEC(__clang_major__)
|
||||||
|
# define COMPILER_VERSION_MINOR DEC(__clang_minor__)
|
||||||
|
# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__)
|
||||||
|
# if defined(_MSC_VER)
|
||||||
|
/* _MSC_VER = VVRR */
|
||||||
|
# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
|
||||||
|
# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
|
||||||
|
# endif
|
||||||
|
# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__)
|
||||||
|
|
||||||
|
#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION)
|
||||||
|
# define COMPILER_ID "ARMClang"
|
||||||
|
# define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000)
|
||||||
|
# define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100)
|
||||||
|
# define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION % 10000)
|
||||||
|
# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION)
|
||||||
|
|
||||||
|
#elif defined(__clang__)
|
||||||
|
# define COMPILER_ID "Clang"
|
||||||
|
# if defined(_MSC_VER)
|
||||||
|
# define SIMULATE_ID "MSVC"
|
||||||
|
# endif
|
||||||
|
# define COMPILER_VERSION_MAJOR DEC(__clang_major__)
|
||||||
|
# define COMPILER_VERSION_MINOR DEC(__clang_minor__)
|
||||||
|
# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__)
|
||||||
|
# if defined(_MSC_VER)
|
||||||
|
/* _MSC_VER = VVRR */
|
||||||
|
# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
|
||||||
|
# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#elif defined(__GNUC__)
|
||||||
|
# define COMPILER_ID "GNU"
|
||||||
|
# define COMPILER_VERSION_MAJOR DEC(__GNUC__)
|
||||||
|
# if defined(__GNUC_MINOR__)
|
||||||
|
# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__)
|
||||||
|
# endif
|
||||||
|
# if defined(__GNUC_PATCHLEVEL__)
|
||||||
|
# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__)
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#elif defined(_MSC_VER)
|
||||||
|
# define COMPILER_ID "MSVC"
|
||||||
|
/* _MSC_VER = VVRR */
|
||||||
|
# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100)
|
||||||
|
# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100)
|
||||||
|
# if defined(_MSC_FULL_VER)
|
||||||
|
# if _MSC_VER >= 1400
|
||||||
|
/* _MSC_FULL_VER = VVRRPPPPP */
|
||||||
|
# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000)
|
||||||
|
# else
|
||||||
|
/* _MSC_FULL_VER = VVRRPPPP */
|
||||||
|
# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000)
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
# if defined(_MSC_BUILD)
|
||||||
|
# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD)
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__)
|
||||||
|
# define COMPILER_ID "ADSP"
|
||||||
|
#if defined(__VISUALDSPVERSION__)
|
||||||
|
/* __VISUALDSPVERSION__ = 0xVVRRPP00 */
|
||||||
|
# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24)
|
||||||
|
# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF)
|
||||||
|
# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC)
|
||||||
|
# define COMPILER_ID "IAR"
|
||||||
|
# if defined(__VER__) && defined(__ICCARM__)
|
||||||
|
# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000)
|
||||||
|
# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000)
|
||||||
|
# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000)
|
||||||
|
# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__)
|
||||||
|
# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__) || defined(__ICCSTM8__))
|
||||||
|
# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100)
|
||||||
|
# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100))
|
||||||
|
# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__)
|
||||||
|
# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__)
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#elif defined(__SDCC_VERSION_MAJOR) || defined(SDCC)
|
||||||
|
# define COMPILER_ID "SDCC"
|
||||||
|
# if defined(__SDCC_VERSION_MAJOR)
|
||||||
|
# define COMPILER_VERSION_MAJOR DEC(__SDCC_VERSION_MAJOR)
|
||||||
|
# define COMPILER_VERSION_MINOR DEC(__SDCC_VERSION_MINOR)
|
||||||
|
# define COMPILER_VERSION_PATCH DEC(__SDCC_VERSION_PATCH)
|
||||||
|
# else
|
||||||
|
/* SDCC = VRP */
|
||||||
|
# define COMPILER_VERSION_MAJOR DEC(SDCC/100)
|
||||||
|
# define COMPILER_VERSION_MINOR DEC(SDCC/10 % 10)
|
||||||
|
# define COMPILER_VERSION_PATCH DEC(SDCC % 10)
|
||||||
|
# endif
|
||||||
|
|
||||||
|
|
||||||
|
/* These compilers are either not known or too old to define an
|
||||||
|
identification macro. Try to identify the platform and guess that
|
||||||
|
it is the native compiler. */
|
||||||
|
#elif defined(__hpux) || defined(__hpua)
|
||||||
|
# define COMPILER_ID "HP"
|
||||||
|
|
||||||
|
#else /* unknown compiler */
|
||||||
|
# define COMPILER_ID ""
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Construct the string literal in pieces to prevent the source from
|
||||||
|
getting matched. Store it in a pointer rather than an array
|
||||||
|
because some compilers will just produce instructions to fill the
|
||||||
|
array rather than assigning a pointer to a static array. */
|
||||||
|
char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]";
|
||||||
|
#ifdef SIMULATE_ID
|
||||||
|
char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]";
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __QNXNTO__
|
||||||
|
char const* qnxnto = "INFO" ":" "qnxnto[]";
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(__CRAYXT_COMPUTE_LINUX_TARGET)
|
||||||
|
char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]";
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define STRINGIFY_HELPER(X) #X
|
||||||
|
#define STRINGIFY(X) STRINGIFY_HELPER(X)
|
||||||
|
|
||||||
|
/* Identify known platforms by name. */
|
||||||
|
#if defined(__linux) || defined(__linux__) || defined(linux)
|
||||||
|
# define PLATFORM_ID "Linux"
|
||||||
|
|
||||||
|
#elif defined(__MSYS__)
|
||||||
|
# define PLATFORM_ID "MSYS"
|
||||||
|
|
||||||
|
#elif defined(__CYGWIN__)
|
||||||
|
# define PLATFORM_ID "Cygwin"
|
||||||
|
|
||||||
|
#elif defined(__MINGW32__)
|
||||||
|
# define PLATFORM_ID "MinGW"
|
||||||
|
|
||||||
|
#elif defined(__APPLE__)
|
||||||
|
# define PLATFORM_ID "Darwin"
|
||||||
|
|
||||||
|
#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
|
||||||
|
# define PLATFORM_ID "Windows"
|
||||||
|
|
||||||
|
#elif defined(__FreeBSD__) || defined(__FreeBSD)
|
||||||
|
# define PLATFORM_ID "FreeBSD"
|
||||||
|
|
||||||
|
#elif defined(__NetBSD__) || defined(__NetBSD)
|
||||||
|
# define PLATFORM_ID "NetBSD"
|
||||||
|
|
||||||
|
#elif defined(__OpenBSD__) || defined(__OPENBSD)
|
||||||
|
# define PLATFORM_ID "OpenBSD"
|
||||||
|
|
||||||
|
#elif defined(__sun) || defined(sun)
|
||||||
|
# define PLATFORM_ID "SunOS"
|
||||||
|
|
||||||
|
#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__)
|
||||||
|
# define PLATFORM_ID "AIX"
|
||||||
|
|
||||||
|
#elif defined(__hpux) || defined(__hpux__)
|
||||||
|
# define PLATFORM_ID "HP-UX"
|
||||||
|
|
||||||
|
#elif defined(__HAIKU__)
|
||||||
|
# define PLATFORM_ID "Haiku"
|
||||||
|
|
||||||
|
#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS)
|
||||||
|
# define PLATFORM_ID "BeOS"
|
||||||
|
|
||||||
|
#elif defined(__QNX__) || defined(__QNXNTO__)
|
||||||
|
# define PLATFORM_ID "QNX"
|
||||||
|
|
||||||
|
#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__)
|
||||||
|
# define PLATFORM_ID "Tru64"
|
||||||
|
|
||||||
|
#elif defined(__riscos) || defined(__riscos__)
|
||||||
|
# define PLATFORM_ID "RISCos"
|
||||||
|
|
||||||
|
#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__)
|
||||||
|
# define PLATFORM_ID "SINIX"
|
||||||
|
|
||||||
|
#elif defined(__UNIX_SV__)
|
||||||
|
# define PLATFORM_ID "UNIX_SV"
|
||||||
|
|
||||||
|
#elif defined(__bsdos__)
|
||||||
|
# define PLATFORM_ID "BSDOS"
|
||||||
|
|
||||||
|
#elif defined(_MPRAS) || defined(MPRAS)
|
||||||
|
# define PLATFORM_ID "MP-RAS"
|
||||||
|
|
||||||
|
#elif defined(__osf) || defined(__osf__)
|
||||||
|
# define PLATFORM_ID "OSF1"
|
||||||
|
|
||||||
|
#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv)
|
||||||
|
# define PLATFORM_ID "SCO_SV"
|
||||||
|
|
||||||
|
#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX)
|
||||||
|
# define PLATFORM_ID "ULTRIX"
|
||||||
|
|
||||||
|
#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX)
|
||||||
|
# define PLATFORM_ID "Xenix"
|
||||||
|
|
||||||
|
#elif defined(__WATCOMC__)
|
||||||
|
# if defined(__LINUX__)
|
||||||
|
# define PLATFORM_ID "Linux"
|
||||||
|
|
||||||
|
# elif defined(__DOS__)
|
||||||
|
# define PLATFORM_ID "DOS"
|
||||||
|
|
||||||
|
# elif defined(__OS2__)
|
||||||
|
# define PLATFORM_ID "OS2"
|
||||||
|
|
||||||
|
# elif defined(__WINDOWS__)
|
||||||
|
# define PLATFORM_ID "Windows3x"
|
||||||
|
|
||||||
|
# elif defined(__VXWORKS__)
|
||||||
|
# define PLATFORM_ID "VxWorks"
|
||||||
|
|
||||||
|
# else /* unknown platform */
|
||||||
|
# define PLATFORM_ID
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#elif defined(__INTEGRITY)
|
||||||
|
# if defined(INT_178B)
|
||||||
|
# define PLATFORM_ID "Integrity178"
|
||||||
|
|
||||||
|
# else /* regular Integrity */
|
||||||
|
# define PLATFORM_ID "Integrity"
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#else /* unknown platform */
|
||||||
|
# define PLATFORM_ID
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* For windows compilers MSVC and Intel we can determine
|
||||||
|
the architecture of the compiler being used. This is because
|
||||||
|
the compilers do not have flags that can change the architecture,
|
||||||
|
but rather depend on which compiler is being used
|
||||||
|
*/
|
||||||
|
#if defined(_WIN32) && defined(_MSC_VER)
|
||||||
|
# if defined(_M_IA64)
|
||||||
|
# define ARCHITECTURE_ID "IA64"
|
||||||
|
|
||||||
|
# elif defined(_M_ARM64EC)
|
||||||
|
# define ARCHITECTURE_ID "ARM64EC"
|
||||||
|
|
||||||
|
# elif defined(_M_X64) || defined(_M_AMD64)
|
||||||
|
# define ARCHITECTURE_ID "x64"
|
||||||
|
|
||||||
|
# elif defined(_M_IX86)
|
||||||
|
# define ARCHITECTURE_ID "X86"
|
||||||
|
|
||||||
|
# elif defined(_M_ARM64)
|
||||||
|
# define ARCHITECTURE_ID "ARM64"
|
||||||
|
|
||||||
|
# elif defined(_M_ARM)
|
||||||
|
# if _M_ARM == 4
|
||||||
|
# define ARCHITECTURE_ID "ARMV4I"
|
||||||
|
# elif _M_ARM == 5
|
||||||
|
# define ARCHITECTURE_ID "ARMV5I"
|
||||||
|
# else
|
||||||
|
# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM)
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# elif defined(_M_MIPS)
|
||||||
|
# define ARCHITECTURE_ID "MIPS"
|
||||||
|
|
||||||
|
# elif defined(_M_SH)
|
||||||
|
# define ARCHITECTURE_ID "SHx"
|
||||||
|
|
||||||
|
# else /* unknown architecture */
|
||||||
|
# define ARCHITECTURE_ID ""
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#elif defined(__WATCOMC__)
|
||||||
|
# if defined(_M_I86)
|
||||||
|
# define ARCHITECTURE_ID "I86"
|
||||||
|
|
||||||
|
# elif defined(_M_IX86)
|
||||||
|
# define ARCHITECTURE_ID "X86"
|
||||||
|
|
||||||
|
# else /* unknown architecture */
|
||||||
|
# define ARCHITECTURE_ID ""
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC)
|
||||||
|
# if defined(__ICCARM__)
|
||||||
|
# define ARCHITECTURE_ID "ARM"
|
||||||
|
|
||||||
|
# elif defined(__ICCRX__)
|
||||||
|
# define ARCHITECTURE_ID "RX"
|
||||||
|
|
||||||
|
# elif defined(__ICCRH850__)
|
||||||
|
# define ARCHITECTURE_ID "RH850"
|
||||||
|
|
||||||
|
# elif defined(__ICCRL78__)
|
||||||
|
# define ARCHITECTURE_ID "RL78"
|
||||||
|
|
||||||
|
# elif defined(__ICCRISCV__)
|
||||||
|
# define ARCHITECTURE_ID "RISCV"
|
||||||
|
|
||||||
|
# elif defined(__ICCAVR__)
|
||||||
|
# define ARCHITECTURE_ID "AVR"
|
||||||
|
|
||||||
|
# elif defined(__ICC430__)
|
||||||
|
# define ARCHITECTURE_ID "MSP430"
|
||||||
|
|
||||||
|
# elif defined(__ICCV850__)
|
||||||
|
# define ARCHITECTURE_ID "V850"
|
||||||
|
|
||||||
|
# elif defined(__ICC8051__)
|
||||||
|
# define ARCHITECTURE_ID "8051"
|
||||||
|
|
||||||
|
# elif defined(__ICCSTM8__)
|
||||||
|
# define ARCHITECTURE_ID "STM8"
|
||||||
|
|
||||||
|
# else /* unknown architecture */
|
||||||
|
# define ARCHITECTURE_ID ""
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#elif defined(__ghs__)
|
||||||
|
# if defined(__PPC64__)
|
||||||
|
# define ARCHITECTURE_ID "PPC64"
|
||||||
|
|
||||||
|
# elif defined(__ppc__)
|
||||||
|
# define ARCHITECTURE_ID "PPC"
|
||||||
|
|
||||||
|
# elif defined(__ARM__)
|
||||||
|
# define ARCHITECTURE_ID "ARM"
|
||||||
|
|
||||||
|
# elif defined(__x86_64__)
|
||||||
|
# define ARCHITECTURE_ID "x64"
|
||||||
|
|
||||||
|
# elif defined(__i386__)
|
||||||
|
# define ARCHITECTURE_ID "X86"
|
||||||
|
|
||||||
|
# else /* unknown architecture */
|
||||||
|
# define ARCHITECTURE_ID ""
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#elif defined(__TI_COMPILER_VERSION__)
|
||||||
|
# if defined(__TI_ARM__)
|
||||||
|
# define ARCHITECTURE_ID "ARM"
|
||||||
|
|
||||||
|
# elif defined(__MSP430__)
|
||||||
|
# define ARCHITECTURE_ID "MSP430"
|
||||||
|
|
||||||
|
# elif defined(__TMS320C28XX__)
|
||||||
|
# define ARCHITECTURE_ID "TMS320C28x"
|
||||||
|
|
||||||
|
# elif defined(__TMS320C6X__) || defined(_TMS320C6X)
|
||||||
|
# define ARCHITECTURE_ID "TMS320C6x"
|
||||||
|
|
||||||
|
# else /* unknown architecture */
|
||||||
|
# define ARCHITECTURE_ID ""
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#else
|
||||||
|
# define ARCHITECTURE_ID
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Convert integer to decimal digit literals. */
|
||||||
|
#define DEC(n) \
|
||||||
|
('0' + (((n) / 10000000)%10)), \
|
||||||
|
('0' + (((n) / 1000000)%10)), \
|
||||||
|
('0' + (((n) / 100000)%10)), \
|
||||||
|
('0' + (((n) / 10000)%10)), \
|
||||||
|
('0' + (((n) / 1000)%10)), \
|
||||||
|
('0' + (((n) / 100)%10)), \
|
||||||
|
('0' + (((n) / 10)%10)), \
|
||||||
|
('0' + ((n) % 10))
|
||||||
|
|
||||||
|
/* Convert integer to hex digit literals. */
|
||||||
|
#define HEX(n) \
|
||||||
|
('0' + ((n)>>28 & 0xF)), \
|
||||||
|
('0' + ((n)>>24 & 0xF)), \
|
||||||
|
('0' + ((n)>>20 & 0xF)), \
|
||||||
|
('0' + ((n)>>16 & 0xF)), \
|
||||||
|
('0' + ((n)>>12 & 0xF)), \
|
||||||
|
('0' + ((n)>>8 & 0xF)), \
|
||||||
|
('0' + ((n)>>4 & 0xF)), \
|
||||||
|
('0' + ((n) & 0xF))
|
||||||
|
|
||||||
|
/* Construct a string literal encoding the version number. */
|
||||||
|
#ifdef COMPILER_VERSION
|
||||||
|
char const* info_version = "INFO" ":" "compiler_version[" COMPILER_VERSION "]";
|
||||||
|
|
||||||
|
/* Construct a string literal encoding the version number components. */
|
||||||
|
#elif defined(COMPILER_VERSION_MAJOR)
|
||||||
|
char const info_version[] = {
|
||||||
|
'I', 'N', 'F', 'O', ':',
|
||||||
|
'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[',
|
||||||
|
COMPILER_VERSION_MAJOR,
|
||||||
|
# ifdef COMPILER_VERSION_MINOR
|
||||||
|
'.', COMPILER_VERSION_MINOR,
|
||||||
|
# ifdef COMPILER_VERSION_PATCH
|
||||||
|
'.', COMPILER_VERSION_PATCH,
|
||||||
|
# ifdef COMPILER_VERSION_TWEAK
|
||||||
|
'.', COMPILER_VERSION_TWEAK,
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
']','\0'};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Construct a string literal encoding the internal version number. */
|
||||||
|
#ifdef COMPILER_VERSION_INTERNAL
|
||||||
|
char const info_version_internal[] = {
|
||||||
|
'I', 'N', 'F', 'O', ':',
|
||||||
|
'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_',
|
||||||
|
'i','n','t','e','r','n','a','l','[',
|
||||||
|
COMPILER_VERSION_INTERNAL,']','\0'};
|
||||||
|
#elif defined(COMPILER_VERSION_INTERNAL_STR)
|
||||||
|
char const* info_version_internal = "INFO" ":" "compiler_version_internal[" COMPILER_VERSION_INTERNAL_STR "]";
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Construct a string literal encoding the version number components. */
|
||||||
|
#ifdef SIMULATE_VERSION_MAJOR
|
||||||
|
char const info_simulate_version[] = {
|
||||||
|
'I', 'N', 'F', 'O', ':',
|
||||||
|
's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[',
|
||||||
|
SIMULATE_VERSION_MAJOR,
|
||||||
|
# ifdef SIMULATE_VERSION_MINOR
|
||||||
|
'.', SIMULATE_VERSION_MINOR,
|
||||||
|
# ifdef SIMULATE_VERSION_PATCH
|
||||||
|
'.', SIMULATE_VERSION_PATCH,
|
||||||
|
# ifdef SIMULATE_VERSION_TWEAK
|
||||||
|
'.', SIMULATE_VERSION_TWEAK,
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
']','\0'};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Construct the string literal in pieces to prevent the source from
|
||||||
|
getting matched. Store it in a pointer rather than an array
|
||||||
|
because some compilers will just produce instructions to fill the
|
||||||
|
array rather than assigning a pointer to a static array. */
|
||||||
|
char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]";
|
||||||
|
char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#if !defined(__STDC__) && !defined(__clang__)
|
||||||
|
# if defined(_MSC_VER) || defined(__ibmxl__) || defined(__IBMC__)
|
||||||
|
# define C_VERSION "90"
|
||||||
|
# else
|
||||||
|
# define C_VERSION
|
||||||
|
# endif
|
||||||
|
#elif __STDC_VERSION__ > 201710L
|
||||||
|
# define C_VERSION "23"
|
||||||
|
#elif __STDC_VERSION__ >= 201710L
|
||||||
|
# define C_VERSION "17"
|
||||||
|
#elif __STDC_VERSION__ >= 201000L
|
||||||
|
# define C_VERSION "11"
|
||||||
|
#elif __STDC_VERSION__ >= 199901L
|
||||||
|
# define C_VERSION "99"
|
||||||
|
#else
|
||||||
|
# define C_VERSION "90"
|
||||||
|
#endif
|
||||||
|
const char* info_language_standard_default =
|
||||||
|
"INFO" ":" "standard_default[" C_VERSION "]";
|
||||||
|
|
||||||
|
const char* info_language_extensions_default = "INFO" ":" "extensions_default["
|
||||||
|
/* !defined(_MSC_VER) to exclude Clang's MSVC compatibility mode. */
|
||||||
|
#if (defined(__clang__) || defined(__GNUC__) || \
|
||||||
|
defined(__TI_COMPILER_VERSION__)) && \
|
||||||
|
!defined(__STRICT_ANSI__) && !defined(_MSC_VER)
|
||||||
|
"ON"
|
||||||
|
#else
|
||||||
|
"OFF"
|
||||||
|
#endif
|
||||||
|
"]";
|
||||||
|
|
||||||
|
/*--------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifdef ID_VOID_MAIN
|
||||||
|
void main() {}
|
||||||
|
#else
|
||||||
|
# if defined(__CLASSIC_C__)
|
||||||
|
int main(argc, argv) int argc; char *argv[];
|
||||||
|
# else
|
||||||
|
int main(int argc, char* argv[])
|
||||||
|
# endif
|
||||||
|
{
|
||||||
|
int require = 0;
|
||||||
|
require += info_compiler[argc];
|
||||||
|
require += info_platform[argc];
|
||||||
|
require += info_arch[argc];
|
||||||
|
#ifdef COMPILER_VERSION_MAJOR
|
||||||
|
require += info_version[argc];
|
||||||
|
#endif
|
||||||
|
#ifdef COMPILER_VERSION_INTERNAL
|
||||||
|
require += info_version_internal[argc];
|
||||||
|
#endif
|
||||||
|
#ifdef SIMULATE_ID
|
||||||
|
require += info_simulate[argc];
|
||||||
|
#endif
|
||||||
|
#ifdef SIMULATE_VERSION_MAJOR
|
||||||
|
require += info_simulate_version[argc];
|
||||||
|
#endif
|
||||||
|
#if defined(__CRAYXT_COMPUTE_LINUX_TARGET)
|
||||||
|
require += info_cray[argc];
|
||||||
|
#endif
|
||||||
|
require += info_language_standard_default[argc];
|
||||||
|
require += info_language_extensions_default[argc];
|
||||||
|
(void)argv;
|
||||||
|
return require;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,791 @@
|
|||||||
|
/* This source file must have a .cpp extension so that all C++ compilers
|
||||||
|
recognize the extension without flags. Borland does not know .cxx for
|
||||||
|
example. */
|
||||||
|
#ifndef __cplusplus
|
||||||
|
# error "A C compiler has been selected for C++."
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(__has_include)
|
||||||
|
/* If the compiler does not have __has_include, pretend the answer is
|
||||||
|
always no. */
|
||||||
|
# define __has_include(x) 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/* Version number components: V=Version, R=Revision, P=Patch
|
||||||
|
Version date components: YYYY=Year, MM=Month, DD=Day */
|
||||||
|
|
||||||
|
#if defined(__COMO__)
|
||||||
|
# define COMPILER_ID "Comeau"
|
||||||
|
/* __COMO_VERSION__ = VRR */
|
||||||
|
# define COMPILER_VERSION_MAJOR DEC(__COMO_VERSION__ / 100)
|
||||||
|
# define COMPILER_VERSION_MINOR DEC(__COMO_VERSION__ % 100)
|
||||||
|
|
||||||
|
#elif defined(__INTEL_COMPILER) || defined(__ICC)
|
||||||
|
# define COMPILER_ID "Intel"
|
||||||
|
# if defined(_MSC_VER)
|
||||||
|
# define SIMULATE_ID "MSVC"
|
||||||
|
# endif
|
||||||
|
# if defined(__GNUC__)
|
||||||
|
# define SIMULATE_ID "GNU"
|
||||||
|
# endif
|
||||||
|
/* __INTEL_COMPILER = VRP prior to 2021, and then VVVV for 2021 and later,
|
||||||
|
except that a few beta releases use the old format with V=2021. */
|
||||||
|
# if __INTEL_COMPILER < 2021 || __INTEL_COMPILER == 202110 || __INTEL_COMPILER == 202111
|
||||||
|
# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100)
|
||||||
|
# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10)
|
||||||
|
# if defined(__INTEL_COMPILER_UPDATE)
|
||||||
|
# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE)
|
||||||
|
# else
|
||||||
|
# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10)
|
||||||
|
# endif
|
||||||
|
# else
|
||||||
|
# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER)
|
||||||
|
# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER_UPDATE)
|
||||||
|
/* The third version component from --version is an update index,
|
||||||
|
but no macro is provided for it. */
|
||||||
|
# define COMPILER_VERSION_PATCH DEC(0)
|
||||||
|
# endif
|
||||||
|
# if defined(__INTEL_COMPILER_BUILD_DATE)
|
||||||
|
/* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */
|
||||||
|
# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE)
|
||||||
|
# endif
|
||||||
|
# if defined(_MSC_VER)
|
||||||
|
/* _MSC_VER = VVRR */
|
||||||
|
# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
|
||||||
|
# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
|
||||||
|
# endif
|
||||||
|
# if defined(__GNUC__)
|
||||||
|
# define SIMULATE_VERSION_MAJOR DEC(__GNUC__)
|
||||||
|
# elif defined(__GNUG__)
|
||||||
|
# define SIMULATE_VERSION_MAJOR DEC(__GNUG__)
|
||||||
|
# endif
|
||||||
|
# if defined(__GNUC_MINOR__)
|
||||||
|
# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__)
|
||||||
|
# endif
|
||||||
|
# if defined(__GNUC_PATCHLEVEL__)
|
||||||
|
# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__)
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#elif (defined(__clang__) && defined(__INTEL_CLANG_COMPILER)) || defined(__INTEL_LLVM_COMPILER)
|
||||||
|
# define COMPILER_ID "IntelLLVM"
|
||||||
|
#if defined(_MSC_VER)
|
||||||
|
# define SIMULATE_ID "MSVC"
|
||||||
|
#endif
|
||||||
|
#if defined(__GNUC__)
|
||||||
|
# define SIMULATE_ID "GNU"
|
||||||
|
#endif
|
||||||
|
/* __INTEL_LLVM_COMPILER = VVVVRP prior to 2021.2.0, VVVVRRPP for 2021.2.0 and
|
||||||
|
* later. Look for 6 digit vs. 8 digit version number to decide encoding.
|
||||||
|
* VVVV is no smaller than the current year when a version is released.
|
||||||
|
*/
|
||||||
|
#if __INTEL_LLVM_COMPILER < 1000000L
|
||||||
|
# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/100)
|
||||||
|
# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/10 % 10)
|
||||||
|
# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 10)
|
||||||
|
#else
|
||||||
|
# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/10000)
|
||||||
|
# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/100 % 100)
|
||||||
|
# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 100)
|
||||||
|
#endif
|
||||||
|
#if defined(_MSC_VER)
|
||||||
|
/* _MSC_VER = VVRR */
|
||||||
|
# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
|
||||||
|
# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
|
||||||
|
#endif
|
||||||
|
#if defined(__GNUC__)
|
||||||
|
# define SIMULATE_VERSION_MAJOR DEC(__GNUC__)
|
||||||
|
#elif defined(__GNUG__)
|
||||||
|
# define SIMULATE_VERSION_MAJOR DEC(__GNUG__)
|
||||||
|
#endif
|
||||||
|
#if defined(__GNUC_MINOR__)
|
||||||
|
# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__)
|
||||||
|
#endif
|
||||||
|
#if defined(__GNUC_PATCHLEVEL__)
|
||||||
|
# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#elif defined(__PATHCC__)
|
||||||
|
# define COMPILER_ID "PathScale"
|
||||||
|
# define COMPILER_VERSION_MAJOR DEC(__PATHCC__)
|
||||||
|
# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__)
|
||||||
|
# if defined(__PATHCC_PATCHLEVEL__)
|
||||||
|
# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__)
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__)
|
||||||
|
# define COMPILER_ID "Embarcadero"
|
||||||
|
# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF)
|
||||||
|
# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF)
|
||||||
|
# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF)
|
||||||
|
|
||||||
|
#elif defined(__BORLANDC__)
|
||||||
|
# define COMPILER_ID "Borland"
|
||||||
|
/* __BORLANDC__ = 0xVRR */
|
||||||
|
# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8)
|
||||||
|
# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF)
|
||||||
|
|
||||||
|
#elif defined(__WATCOMC__) && __WATCOMC__ < 1200
|
||||||
|
# define COMPILER_ID "Watcom"
|
||||||
|
/* __WATCOMC__ = VVRR */
|
||||||
|
# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100)
|
||||||
|
# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10)
|
||||||
|
# if (__WATCOMC__ % 10) > 0
|
||||||
|
# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10)
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#elif defined(__WATCOMC__)
|
||||||
|
# define COMPILER_ID "OpenWatcom"
|
||||||
|
/* __WATCOMC__ = VVRP + 1100 */
|
||||||
|
# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100)
|
||||||
|
# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10)
|
||||||
|
# if (__WATCOMC__ % 10) > 0
|
||||||
|
# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10)
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#elif defined(__SUNPRO_CC)
|
||||||
|
# define COMPILER_ID "SunPro"
|
||||||
|
# if __SUNPRO_CC >= 0x5100
|
||||||
|
/* __SUNPRO_CC = 0xVRRP */
|
||||||
|
# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>12)
|
||||||
|
# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xFF)
|
||||||
|
# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF)
|
||||||
|
# else
|
||||||
|
/* __SUNPRO_CC = 0xVRP */
|
||||||
|
# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>8)
|
||||||
|
# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xF)
|
||||||
|
# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF)
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#elif defined(__HP_aCC)
|
||||||
|
# define COMPILER_ID "HP"
|
||||||
|
/* __HP_aCC = VVRRPP */
|
||||||
|
# define COMPILER_VERSION_MAJOR DEC(__HP_aCC/10000)
|
||||||
|
# define COMPILER_VERSION_MINOR DEC(__HP_aCC/100 % 100)
|
||||||
|
# define COMPILER_VERSION_PATCH DEC(__HP_aCC % 100)
|
||||||
|
|
||||||
|
#elif defined(__DECCXX)
|
||||||
|
# define COMPILER_ID "Compaq"
|
||||||
|
/* __DECCXX_VER = VVRRTPPPP */
|
||||||
|
# define COMPILER_VERSION_MAJOR DEC(__DECCXX_VER/10000000)
|
||||||
|
# define COMPILER_VERSION_MINOR DEC(__DECCXX_VER/100000 % 100)
|
||||||
|
# define COMPILER_VERSION_PATCH DEC(__DECCXX_VER % 10000)
|
||||||
|
|
||||||
|
#elif defined(__IBMCPP__) && defined(__COMPILER_VER__)
|
||||||
|
# define COMPILER_ID "zOS"
|
||||||
|
/* __IBMCPP__ = VRP */
|
||||||
|
# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100)
|
||||||
|
# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10)
|
||||||
|
# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10)
|
||||||
|
|
||||||
|
#elif defined(__ibmxl__) && defined(__clang__)
|
||||||
|
# define COMPILER_ID "XLClang"
|
||||||
|
# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__)
|
||||||
|
# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__)
|
||||||
|
# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__)
|
||||||
|
# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__)
|
||||||
|
|
||||||
|
|
||||||
|
#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ >= 800
|
||||||
|
# define COMPILER_ID "XL"
|
||||||
|
/* __IBMCPP__ = VRP */
|
||||||
|
# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100)
|
||||||
|
# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10)
|
||||||
|
# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10)
|
||||||
|
|
||||||
|
#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ < 800
|
||||||
|
# define COMPILER_ID "VisualAge"
|
||||||
|
/* __IBMCPP__ = VRP */
|
||||||
|
# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100)
|
||||||
|
# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10)
|
||||||
|
# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10)
|
||||||
|
|
||||||
|
#elif defined(__NVCOMPILER)
|
||||||
|
# define COMPILER_ID "NVHPC"
|
||||||
|
# define COMPILER_VERSION_MAJOR DEC(__NVCOMPILER_MAJOR__)
|
||||||
|
# define COMPILER_VERSION_MINOR DEC(__NVCOMPILER_MINOR__)
|
||||||
|
# if defined(__NVCOMPILER_PATCHLEVEL__)
|
||||||
|
# define COMPILER_VERSION_PATCH DEC(__NVCOMPILER_PATCHLEVEL__)
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#elif defined(__PGI)
|
||||||
|
# define COMPILER_ID "PGI"
|
||||||
|
# define COMPILER_VERSION_MAJOR DEC(__PGIC__)
|
||||||
|
# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__)
|
||||||
|
# if defined(__PGIC_PATCHLEVEL__)
|
||||||
|
# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__)
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#elif defined(_CRAYC)
|
||||||
|
# define COMPILER_ID "Cray"
|
||||||
|
# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR)
|
||||||
|
# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR)
|
||||||
|
|
||||||
|
#elif defined(__TI_COMPILER_VERSION__)
|
||||||
|
# define COMPILER_ID "TI"
|
||||||
|
/* __TI_COMPILER_VERSION__ = VVVRRRPPP */
|
||||||
|
# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000)
|
||||||
|
# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000)
|
||||||
|
# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000)
|
||||||
|
|
||||||
|
#elif defined(__CLANG_FUJITSU)
|
||||||
|
# define COMPILER_ID "FujitsuClang"
|
||||||
|
# define COMPILER_VERSION_MAJOR DEC(__FCC_major__)
|
||||||
|
# define COMPILER_VERSION_MINOR DEC(__FCC_minor__)
|
||||||
|
# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__)
|
||||||
|
# define COMPILER_VERSION_INTERNAL_STR __clang_version__
|
||||||
|
|
||||||
|
|
||||||
|
#elif defined(__FUJITSU)
|
||||||
|
# define COMPILER_ID "Fujitsu"
|
||||||
|
# if defined(__FCC_version__)
|
||||||
|
# define COMPILER_VERSION __FCC_version__
|
||||||
|
# elif defined(__FCC_major__)
|
||||||
|
# define COMPILER_VERSION_MAJOR DEC(__FCC_major__)
|
||||||
|
# define COMPILER_VERSION_MINOR DEC(__FCC_minor__)
|
||||||
|
# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__)
|
||||||
|
# endif
|
||||||
|
# if defined(__fcc_version)
|
||||||
|
# define COMPILER_VERSION_INTERNAL DEC(__fcc_version)
|
||||||
|
# elif defined(__FCC_VERSION)
|
||||||
|
# define COMPILER_VERSION_INTERNAL DEC(__FCC_VERSION)
|
||||||
|
# endif
|
||||||
|
|
||||||
|
|
||||||
|
#elif defined(__ghs__)
|
||||||
|
# define COMPILER_ID "GHS"
|
||||||
|
/* __GHS_VERSION_NUMBER = VVVVRP */
|
||||||
|
# ifdef __GHS_VERSION_NUMBER
|
||||||
|
# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100)
|
||||||
|
# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10)
|
||||||
|
# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10)
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#elif defined(__SCO_VERSION__)
|
||||||
|
# define COMPILER_ID "SCO"
|
||||||
|
|
||||||
|
#elif defined(__ARMCC_VERSION) && !defined(__clang__)
|
||||||
|
# define COMPILER_ID "ARMCC"
|
||||||
|
#if __ARMCC_VERSION >= 1000000
|
||||||
|
/* __ARMCC_VERSION = VRRPPPP */
|
||||||
|
# define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000)
|
||||||
|
# define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100)
|
||||||
|
# define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000)
|
||||||
|
#else
|
||||||
|
/* __ARMCC_VERSION = VRPPPP */
|
||||||
|
# define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000)
|
||||||
|
# define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10)
|
||||||
|
# define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#elif defined(__clang__) && defined(__apple_build_version__)
|
||||||
|
# define COMPILER_ID "AppleClang"
|
||||||
|
# if defined(_MSC_VER)
|
||||||
|
# define SIMULATE_ID "MSVC"
|
||||||
|
# endif
|
||||||
|
# define COMPILER_VERSION_MAJOR DEC(__clang_major__)
|
||||||
|
# define COMPILER_VERSION_MINOR DEC(__clang_minor__)
|
||||||
|
# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__)
|
||||||
|
# if defined(_MSC_VER)
|
||||||
|
/* _MSC_VER = VVRR */
|
||||||
|
# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
|
||||||
|
# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
|
||||||
|
# endif
|
||||||
|
# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__)
|
||||||
|
|
||||||
|
#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION)
|
||||||
|
# define COMPILER_ID "ARMClang"
|
||||||
|
# define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000)
|
||||||
|
# define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100)
|
||||||
|
# define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION % 10000)
|
||||||
|
# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION)
|
||||||
|
|
||||||
|
#elif defined(__clang__)
|
||||||
|
# define COMPILER_ID "Clang"
|
||||||
|
# if defined(_MSC_VER)
|
||||||
|
# define SIMULATE_ID "MSVC"
|
||||||
|
# endif
|
||||||
|
# define COMPILER_VERSION_MAJOR DEC(__clang_major__)
|
||||||
|
# define COMPILER_VERSION_MINOR DEC(__clang_minor__)
|
||||||
|
# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__)
|
||||||
|
# if defined(_MSC_VER)
|
||||||
|
/* _MSC_VER = VVRR */
|
||||||
|
# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
|
||||||
|
# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#elif defined(__GNUC__) || defined(__GNUG__)
|
||||||
|
# define COMPILER_ID "GNU"
|
||||||
|
# if defined(__GNUC__)
|
||||||
|
# define COMPILER_VERSION_MAJOR DEC(__GNUC__)
|
||||||
|
# else
|
||||||
|
# define COMPILER_VERSION_MAJOR DEC(__GNUG__)
|
||||||
|
# endif
|
||||||
|
# if defined(__GNUC_MINOR__)
|
||||||
|
# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__)
|
||||||
|
# endif
|
||||||
|
# if defined(__GNUC_PATCHLEVEL__)
|
||||||
|
# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__)
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#elif defined(_MSC_VER)
|
||||||
|
# define COMPILER_ID "MSVC"
|
||||||
|
/* _MSC_VER = VVRR */
|
||||||
|
# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100)
|
||||||
|
# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100)
|
||||||
|
# if defined(_MSC_FULL_VER)
|
||||||
|
# if _MSC_VER >= 1400
|
||||||
|
/* _MSC_FULL_VER = VVRRPPPPP */
|
||||||
|
# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000)
|
||||||
|
# else
|
||||||
|
/* _MSC_FULL_VER = VVRRPPPP */
|
||||||
|
# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000)
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
# if defined(_MSC_BUILD)
|
||||||
|
# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD)
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__)
|
||||||
|
# define COMPILER_ID "ADSP"
|
||||||
|
#if defined(__VISUALDSPVERSION__)
|
||||||
|
/* __VISUALDSPVERSION__ = 0xVVRRPP00 */
|
||||||
|
# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24)
|
||||||
|
# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF)
|
||||||
|
# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC)
|
||||||
|
# define COMPILER_ID "IAR"
|
||||||
|
# if defined(__VER__) && defined(__ICCARM__)
|
||||||
|
# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000)
|
||||||
|
# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000)
|
||||||
|
# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000)
|
||||||
|
# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__)
|
||||||
|
# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__) || defined(__ICCSTM8__))
|
||||||
|
# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100)
|
||||||
|
# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100))
|
||||||
|
# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__)
|
||||||
|
# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__)
|
||||||
|
# endif
|
||||||
|
|
||||||
|
|
||||||
|
/* These compilers are either not known or too old to define an
|
||||||
|
identification macro. Try to identify the platform and guess that
|
||||||
|
it is the native compiler. */
|
||||||
|
#elif defined(__hpux) || defined(__hpua)
|
||||||
|
# define COMPILER_ID "HP"
|
||||||
|
|
||||||
|
#else /* unknown compiler */
|
||||||
|
# define COMPILER_ID ""
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Construct the string literal in pieces to prevent the source from
|
||||||
|
getting matched. Store it in a pointer rather than an array
|
||||||
|
because some compilers will just produce instructions to fill the
|
||||||
|
array rather than assigning a pointer to a static array. */
|
||||||
|
char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]";
|
||||||
|
#ifdef SIMULATE_ID
|
||||||
|
char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]";
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __QNXNTO__
|
||||||
|
char const* qnxnto = "INFO" ":" "qnxnto[]";
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(__CRAYXT_COMPUTE_LINUX_TARGET)
|
||||||
|
char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]";
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define STRINGIFY_HELPER(X) #X
|
||||||
|
#define STRINGIFY(X) STRINGIFY_HELPER(X)
|
||||||
|
|
||||||
|
/* Identify known platforms by name. */
|
||||||
|
#if defined(__linux) || defined(__linux__) || defined(linux)
|
||||||
|
# define PLATFORM_ID "Linux"
|
||||||
|
|
||||||
|
#elif defined(__MSYS__)
|
||||||
|
# define PLATFORM_ID "MSYS"
|
||||||
|
|
||||||
|
#elif defined(__CYGWIN__)
|
||||||
|
# define PLATFORM_ID "Cygwin"
|
||||||
|
|
||||||
|
#elif defined(__MINGW32__)
|
||||||
|
# define PLATFORM_ID "MinGW"
|
||||||
|
|
||||||
|
#elif defined(__APPLE__)
|
||||||
|
# define PLATFORM_ID "Darwin"
|
||||||
|
|
||||||
|
#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
|
||||||
|
# define PLATFORM_ID "Windows"
|
||||||
|
|
||||||
|
#elif defined(__FreeBSD__) || defined(__FreeBSD)
|
||||||
|
# define PLATFORM_ID "FreeBSD"
|
||||||
|
|
||||||
|
#elif defined(__NetBSD__) || defined(__NetBSD)
|
||||||
|
# define PLATFORM_ID "NetBSD"
|
||||||
|
|
||||||
|
#elif defined(__OpenBSD__) || defined(__OPENBSD)
|
||||||
|
# define PLATFORM_ID "OpenBSD"
|
||||||
|
|
||||||
|
#elif defined(__sun) || defined(sun)
|
||||||
|
# define PLATFORM_ID "SunOS"
|
||||||
|
|
||||||
|
#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__)
|
||||||
|
# define PLATFORM_ID "AIX"
|
||||||
|
|
||||||
|
#elif defined(__hpux) || defined(__hpux__)
|
||||||
|
# define PLATFORM_ID "HP-UX"
|
||||||
|
|
||||||
|
#elif defined(__HAIKU__)
|
||||||
|
# define PLATFORM_ID "Haiku"
|
||||||
|
|
||||||
|
#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS)
|
||||||
|
# define PLATFORM_ID "BeOS"
|
||||||
|
|
||||||
|
#elif defined(__QNX__) || defined(__QNXNTO__)
|
||||||
|
# define PLATFORM_ID "QNX"
|
||||||
|
|
||||||
|
#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__)
|
||||||
|
# define PLATFORM_ID "Tru64"
|
||||||
|
|
||||||
|
#elif defined(__riscos) || defined(__riscos__)
|
||||||
|
# define PLATFORM_ID "RISCos"
|
||||||
|
|
||||||
|
#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__)
|
||||||
|
# define PLATFORM_ID "SINIX"
|
||||||
|
|
||||||
|
#elif defined(__UNIX_SV__)
|
||||||
|
# define PLATFORM_ID "UNIX_SV"
|
||||||
|
|
||||||
|
#elif defined(__bsdos__)
|
||||||
|
# define PLATFORM_ID "BSDOS"
|
||||||
|
|
||||||
|
#elif defined(_MPRAS) || defined(MPRAS)
|
||||||
|
# define PLATFORM_ID "MP-RAS"
|
||||||
|
|
||||||
|
#elif defined(__osf) || defined(__osf__)
|
||||||
|
# define PLATFORM_ID "OSF1"
|
||||||
|
|
||||||
|
#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv)
|
||||||
|
# define PLATFORM_ID "SCO_SV"
|
||||||
|
|
||||||
|
#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX)
|
||||||
|
# define PLATFORM_ID "ULTRIX"
|
||||||
|
|
||||||
|
#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX)
|
||||||
|
# define PLATFORM_ID "Xenix"
|
||||||
|
|
||||||
|
#elif defined(__WATCOMC__)
|
||||||
|
# if defined(__LINUX__)
|
||||||
|
# define PLATFORM_ID "Linux"
|
||||||
|
|
||||||
|
# elif defined(__DOS__)
|
||||||
|
# define PLATFORM_ID "DOS"
|
||||||
|
|
||||||
|
# elif defined(__OS2__)
|
||||||
|
# define PLATFORM_ID "OS2"
|
||||||
|
|
||||||
|
# elif defined(__WINDOWS__)
|
||||||
|
# define PLATFORM_ID "Windows3x"
|
||||||
|
|
||||||
|
# elif defined(__VXWORKS__)
|
||||||
|
# define PLATFORM_ID "VxWorks"
|
||||||
|
|
||||||
|
# else /* unknown platform */
|
||||||
|
# define PLATFORM_ID
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#elif defined(__INTEGRITY)
|
||||||
|
# if defined(INT_178B)
|
||||||
|
# define PLATFORM_ID "Integrity178"
|
||||||
|
|
||||||
|
# else /* regular Integrity */
|
||||||
|
# define PLATFORM_ID "Integrity"
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#else /* unknown platform */
|
||||||
|
# define PLATFORM_ID
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* For windows compilers MSVC and Intel we can determine
|
||||||
|
the architecture of the compiler being used. This is because
|
||||||
|
the compilers do not have flags that can change the architecture,
|
||||||
|
but rather depend on which compiler is being used
|
||||||
|
*/
|
||||||
|
#if defined(_WIN32) && defined(_MSC_VER)
|
||||||
|
# if defined(_M_IA64)
|
||||||
|
# define ARCHITECTURE_ID "IA64"
|
||||||
|
|
||||||
|
# elif defined(_M_ARM64EC)
|
||||||
|
# define ARCHITECTURE_ID "ARM64EC"
|
||||||
|
|
||||||
|
# elif defined(_M_X64) || defined(_M_AMD64)
|
||||||
|
# define ARCHITECTURE_ID "x64"
|
||||||
|
|
||||||
|
# elif defined(_M_IX86)
|
||||||
|
# define ARCHITECTURE_ID "X86"
|
||||||
|
|
||||||
|
# elif defined(_M_ARM64)
|
||||||
|
# define ARCHITECTURE_ID "ARM64"
|
||||||
|
|
||||||
|
# elif defined(_M_ARM)
|
||||||
|
# if _M_ARM == 4
|
||||||
|
# define ARCHITECTURE_ID "ARMV4I"
|
||||||
|
# elif _M_ARM == 5
|
||||||
|
# define ARCHITECTURE_ID "ARMV5I"
|
||||||
|
# else
|
||||||
|
# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM)
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# elif defined(_M_MIPS)
|
||||||
|
# define ARCHITECTURE_ID "MIPS"
|
||||||
|
|
||||||
|
# elif defined(_M_SH)
|
||||||
|
# define ARCHITECTURE_ID "SHx"
|
||||||
|
|
||||||
|
# else /* unknown architecture */
|
||||||
|
# define ARCHITECTURE_ID ""
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#elif defined(__WATCOMC__)
|
||||||
|
# if defined(_M_I86)
|
||||||
|
# define ARCHITECTURE_ID "I86"
|
||||||
|
|
||||||
|
# elif defined(_M_IX86)
|
||||||
|
# define ARCHITECTURE_ID "X86"
|
||||||
|
|
||||||
|
# else /* unknown architecture */
|
||||||
|
# define ARCHITECTURE_ID ""
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC)
|
||||||
|
# if defined(__ICCARM__)
|
||||||
|
# define ARCHITECTURE_ID "ARM"
|
||||||
|
|
||||||
|
# elif defined(__ICCRX__)
|
||||||
|
# define ARCHITECTURE_ID "RX"
|
||||||
|
|
||||||
|
# elif defined(__ICCRH850__)
|
||||||
|
# define ARCHITECTURE_ID "RH850"
|
||||||
|
|
||||||
|
# elif defined(__ICCRL78__)
|
||||||
|
# define ARCHITECTURE_ID "RL78"
|
||||||
|
|
||||||
|
# elif defined(__ICCRISCV__)
|
||||||
|
# define ARCHITECTURE_ID "RISCV"
|
||||||
|
|
||||||
|
# elif defined(__ICCAVR__)
|
||||||
|
# define ARCHITECTURE_ID "AVR"
|
||||||
|
|
||||||
|
# elif defined(__ICC430__)
|
||||||
|
# define ARCHITECTURE_ID "MSP430"
|
||||||
|
|
||||||
|
# elif defined(__ICCV850__)
|
||||||
|
# define ARCHITECTURE_ID "V850"
|
||||||
|
|
||||||
|
# elif defined(__ICC8051__)
|
||||||
|
# define ARCHITECTURE_ID "8051"
|
||||||
|
|
||||||
|
# elif defined(__ICCSTM8__)
|
||||||
|
# define ARCHITECTURE_ID "STM8"
|
||||||
|
|
||||||
|
# else /* unknown architecture */
|
||||||
|
# define ARCHITECTURE_ID ""
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#elif defined(__ghs__)
|
||||||
|
# if defined(__PPC64__)
|
||||||
|
# define ARCHITECTURE_ID "PPC64"
|
||||||
|
|
||||||
|
# elif defined(__ppc__)
|
||||||
|
# define ARCHITECTURE_ID "PPC"
|
||||||
|
|
||||||
|
# elif defined(__ARM__)
|
||||||
|
# define ARCHITECTURE_ID "ARM"
|
||||||
|
|
||||||
|
# elif defined(__x86_64__)
|
||||||
|
# define ARCHITECTURE_ID "x64"
|
||||||
|
|
||||||
|
# elif defined(__i386__)
|
||||||
|
# define ARCHITECTURE_ID "X86"
|
||||||
|
|
||||||
|
# else /* unknown architecture */
|
||||||
|
# define ARCHITECTURE_ID ""
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#elif defined(__TI_COMPILER_VERSION__)
|
||||||
|
# if defined(__TI_ARM__)
|
||||||
|
# define ARCHITECTURE_ID "ARM"
|
||||||
|
|
||||||
|
# elif defined(__MSP430__)
|
||||||
|
# define ARCHITECTURE_ID "MSP430"
|
||||||
|
|
||||||
|
# elif defined(__TMS320C28XX__)
|
||||||
|
# define ARCHITECTURE_ID "TMS320C28x"
|
||||||
|
|
||||||
|
# elif defined(__TMS320C6X__) || defined(_TMS320C6X)
|
||||||
|
# define ARCHITECTURE_ID "TMS320C6x"
|
||||||
|
|
||||||
|
# else /* unknown architecture */
|
||||||
|
# define ARCHITECTURE_ID ""
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#else
|
||||||
|
# define ARCHITECTURE_ID
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Convert integer to decimal digit literals. */
|
||||||
|
#define DEC(n) \
|
||||||
|
('0' + (((n) / 10000000)%10)), \
|
||||||
|
('0' + (((n) / 1000000)%10)), \
|
||||||
|
('0' + (((n) / 100000)%10)), \
|
||||||
|
('0' + (((n) / 10000)%10)), \
|
||||||
|
('0' + (((n) / 1000)%10)), \
|
||||||
|
('0' + (((n) / 100)%10)), \
|
||||||
|
('0' + (((n) / 10)%10)), \
|
||||||
|
('0' + ((n) % 10))
|
||||||
|
|
||||||
|
/* Convert integer to hex digit literals. */
|
||||||
|
#define HEX(n) \
|
||||||
|
('0' + ((n)>>28 & 0xF)), \
|
||||||
|
('0' + ((n)>>24 & 0xF)), \
|
||||||
|
('0' + ((n)>>20 & 0xF)), \
|
||||||
|
('0' + ((n)>>16 & 0xF)), \
|
||||||
|
('0' + ((n)>>12 & 0xF)), \
|
||||||
|
('0' + ((n)>>8 & 0xF)), \
|
||||||
|
('0' + ((n)>>4 & 0xF)), \
|
||||||
|
('0' + ((n) & 0xF))
|
||||||
|
|
||||||
|
/* Construct a string literal encoding the version number. */
|
||||||
|
#ifdef COMPILER_VERSION
|
||||||
|
char const* info_version = "INFO" ":" "compiler_version[" COMPILER_VERSION "]";
|
||||||
|
|
||||||
|
/* Construct a string literal encoding the version number components. */
|
||||||
|
#elif defined(COMPILER_VERSION_MAJOR)
|
||||||
|
char const info_version[] = {
|
||||||
|
'I', 'N', 'F', 'O', ':',
|
||||||
|
'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[',
|
||||||
|
COMPILER_VERSION_MAJOR,
|
||||||
|
# ifdef COMPILER_VERSION_MINOR
|
||||||
|
'.', COMPILER_VERSION_MINOR,
|
||||||
|
# ifdef COMPILER_VERSION_PATCH
|
||||||
|
'.', COMPILER_VERSION_PATCH,
|
||||||
|
# ifdef COMPILER_VERSION_TWEAK
|
||||||
|
'.', COMPILER_VERSION_TWEAK,
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
']','\0'};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Construct a string literal encoding the internal version number. */
|
||||||
|
#ifdef COMPILER_VERSION_INTERNAL
|
||||||
|
char const info_version_internal[] = {
|
||||||
|
'I', 'N', 'F', 'O', ':',
|
||||||
|
'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_',
|
||||||
|
'i','n','t','e','r','n','a','l','[',
|
||||||
|
COMPILER_VERSION_INTERNAL,']','\0'};
|
||||||
|
#elif defined(COMPILER_VERSION_INTERNAL_STR)
|
||||||
|
char const* info_version_internal = "INFO" ":" "compiler_version_internal[" COMPILER_VERSION_INTERNAL_STR "]";
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Construct a string literal encoding the version number components. */
|
||||||
|
#ifdef SIMULATE_VERSION_MAJOR
|
||||||
|
char const info_simulate_version[] = {
|
||||||
|
'I', 'N', 'F', 'O', ':',
|
||||||
|
's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[',
|
||||||
|
SIMULATE_VERSION_MAJOR,
|
||||||
|
# ifdef SIMULATE_VERSION_MINOR
|
||||||
|
'.', SIMULATE_VERSION_MINOR,
|
||||||
|
# ifdef SIMULATE_VERSION_PATCH
|
||||||
|
'.', SIMULATE_VERSION_PATCH,
|
||||||
|
# ifdef SIMULATE_VERSION_TWEAK
|
||||||
|
'.', SIMULATE_VERSION_TWEAK,
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
']','\0'};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Construct the string literal in pieces to prevent the source from
|
||||||
|
getting matched. Store it in a pointer rather than an array
|
||||||
|
because some compilers will just produce instructions to fill the
|
||||||
|
array rather than assigning a pointer to a static array. */
|
||||||
|
char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]";
|
||||||
|
char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(__INTEL_COMPILER) && defined(_MSVC_LANG) && _MSVC_LANG < 201403L
|
||||||
|
# if defined(__INTEL_CXX11_MODE__)
|
||||||
|
# if defined(__cpp_aggregate_nsdmi)
|
||||||
|
# define CXX_STD 201402L
|
||||||
|
# else
|
||||||
|
# define CXX_STD 201103L
|
||||||
|
# endif
|
||||||
|
# else
|
||||||
|
# define CXX_STD 199711L
|
||||||
|
# endif
|
||||||
|
#elif defined(_MSC_VER) && defined(_MSVC_LANG)
|
||||||
|
# define CXX_STD _MSVC_LANG
|
||||||
|
#else
|
||||||
|
# define CXX_STD __cplusplus
|
||||||
|
#endif
|
||||||
|
|
||||||
|
const char* info_language_standard_default = "INFO" ":" "standard_default["
|
||||||
|
#if CXX_STD > 202002L
|
||||||
|
"23"
|
||||||
|
#elif CXX_STD > 201703L
|
||||||
|
"20"
|
||||||
|
#elif CXX_STD >= 201703L
|
||||||
|
"17"
|
||||||
|
#elif CXX_STD >= 201402L
|
||||||
|
"14"
|
||||||
|
#elif CXX_STD >= 201103L
|
||||||
|
"11"
|
||||||
|
#else
|
||||||
|
"98"
|
||||||
|
#endif
|
||||||
|
"]";
|
||||||
|
|
||||||
|
const char* info_language_extensions_default = "INFO" ":" "extensions_default["
|
||||||
|
/* !defined(_MSC_VER) to exclude Clang's MSVC compatibility mode. */
|
||||||
|
#if (defined(__clang__) || defined(__GNUC__) || \
|
||||||
|
defined(__TI_COMPILER_VERSION__)) && \
|
||||||
|
!defined(__STRICT_ANSI__) && !defined(_MSC_VER)
|
||||||
|
"ON"
|
||||||
|
#else
|
||||||
|
"OFF"
|
||||||
|
#endif
|
||||||
|
"]";
|
||||||
|
|
||||||
|
/*--------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
int main(int argc, char* argv[])
|
||||||
|
{
|
||||||
|
int require = 0;
|
||||||
|
require += info_compiler[argc];
|
||||||
|
require += info_platform[argc];
|
||||||
|
#ifdef COMPILER_VERSION_MAJOR
|
||||||
|
require += info_version[argc];
|
||||||
|
#endif
|
||||||
|
#ifdef COMPILER_VERSION_INTERNAL
|
||||||
|
require += info_version_internal[argc];
|
||||||
|
#endif
|
||||||
|
#ifdef SIMULATE_ID
|
||||||
|
require += info_simulate[argc];
|
||||||
|
#endif
|
||||||
|
#ifdef SIMULATE_VERSION_MAJOR
|
||||||
|
require += info_simulate_version[argc];
|
||||||
|
#endif
|
||||||
|
#if defined(__CRAYXT_COMPUTE_LINUX_TARGET)
|
||||||
|
require += info_cray[argc];
|
||||||
|
#endif
|
||||||
|
require += info_language_standard_default[argc];
|
||||||
|
require += info_language_extensions_default[argc];
|
||||||
|
(void)argv;
|
||||||
|
return require;
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
C:/Users/gravi/Game/.utmp/RelWithDebInfo/f3u1w6u2/arm64-v8a/CMakeFiles/edit_cache.dir
|
||||||
|
C:/Users/gravi/Game/.utmp/RelWithDebInfo/f3u1w6u2/arm64-v8a/CMakeFiles/rebuild_cache.dir
|
||||||
|
C:/Users/gravi/Game/.utmp/RelWithDebInfo/f3u1w6u2/arm64-v8a/GameActivity/CMakeFiles/game.dir
|
||||||
|
C:/Users/gravi/Game/.utmp/RelWithDebInfo/f3u1w6u2/arm64-v8a/GameActivity/CMakeFiles/edit_cache.dir
|
||||||
|
C:/Users/gravi/Game/.utmp/RelWithDebInfo/f3u1w6u2/arm64-v8a/GameActivity/CMakeFiles/rebuild_cache.dir
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
# This file is generated by cmake for dependency checking of the CMakeCache.txt file
|
||||||
@@ -0,0 +1,64 @@
|
|||||||
|
# CMAKE generated file: DO NOT EDIT!
|
||||||
|
# Generated by "Ninja" Generator, CMake Version 3.22
|
||||||
|
|
||||||
|
# This file contains all the rules used to get the outputs files
|
||||||
|
# built from the input files.
|
||||||
|
# It is included in the main 'build.ninja'.
|
||||||
|
|
||||||
|
# =============================================================================
|
||||||
|
# Project: Unity
|
||||||
|
# Configurations: RelWithDebInfo
|
||||||
|
# =============================================================================
|
||||||
|
# =============================================================================
|
||||||
|
|
||||||
|
#############################################
|
||||||
|
# Rule for running custom commands.
|
||||||
|
|
||||||
|
rule CUSTOM_COMMAND
|
||||||
|
command = $COMMAND
|
||||||
|
description = $DESC
|
||||||
|
|
||||||
|
|
||||||
|
#############################################
|
||||||
|
# Rule for compiling CXX files.
|
||||||
|
|
||||||
|
rule CXX_COMPILER__game_RelWithDebInfo
|
||||||
|
depfile = $DEP_FILE
|
||||||
|
deps = gcc
|
||||||
|
command = C:\PROGRA~1\Unity\Hub\Editor\60002~1.8F1\Editor\Data\PLAYBA~1\ANDROI~1\NDK\TOOLCH~1\llvm\prebuilt\WINDOW~1\bin\CLANG_~1.EXE --target=aarch64-none-linux-android24 --sysroot="C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/toolchains/llvm/prebuilt/windows-x86_64/sysroot" $DEFINES $INCLUDES $FLAGS -MD -MT $out -MF $DEP_FILE -o $out -c $in
|
||||||
|
description = Building CXX object $out
|
||||||
|
|
||||||
|
|
||||||
|
#############################################
|
||||||
|
# Rule for linking CXX shared library.
|
||||||
|
|
||||||
|
rule CXX_SHARED_LIBRARY_LINKER__game_RelWithDebInfo
|
||||||
|
command = cmd.exe /C "$PRE_LINK && C:\PROGRA~1\Unity\Hub\Editor\60002~1.8F1\Editor\Data\PLAYBA~1\ANDROI~1\NDK\TOOLCH~1\llvm\prebuilt\WINDOW~1\bin\CLANG_~1.EXE --target=aarch64-none-linux-android24 --sysroot="C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/toolchains/llvm/prebuilt/windows-x86_64/sysroot" -fPIC $LANGUAGE_COMPILE_FLAGS $ARCH_FLAGS $LINK_FLAGS -shared $SONAME_FLAG$SONAME -o $TARGET_FILE $in $LINK_PATH $LINK_LIBRARIES && $POST_BUILD"
|
||||||
|
description = Linking CXX shared library $TARGET_FILE
|
||||||
|
restat = $RESTAT
|
||||||
|
|
||||||
|
|
||||||
|
#############################################
|
||||||
|
# Rule for re-running cmake.
|
||||||
|
|
||||||
|
rule RERUN_CMAKE
|
||||||
|
command = "C:\Program Files\Unity\Hub\Editor\6000.2.8f1\Editor\Data\PlaybackEngines\AndroidPlayer\SDK\cmake\3.22.1\bin\cmake.exe" --regenerate-during-build -SC:\Users\gravi\Game\Library\Bee\Android\Prj\IL2CPP\Gradle\unityLibrary\src\main\cpp -BC:\Users\gravi\Game\.utmp\RelWithDebInfo\f3u1w6u2\arm64-v8a
|
||||||
|
description = Re-running CMake...
|
||||||
|
generator = 1
|
||||||
|
|
||||||
|
|
||||||
|
#############################################
|
||||||
|
# Rule for cleaning all built files.
|
||||||
|
|
||||||
|
rule CLEAN
|
||||||
|
command = "C:\Program Files\Unity\Hub\Editor\6000.2.8f1\Editor\Data\PlaybackEngines\AndroidPlayer\SDK\cmake\3.22.1\bin\ninja.exe" $FILE_ARG -t clean $TARGETS
|
||||||
|
description = Cleaning all built files...
|
||||||
|
|
||||||
|
|
||||||
|
#############################################
|
||||||
|
# Rule for printing all primary targets available.
|
||||||
|
|
||||||
|
rule HELP
|
||||||
|
command = "C:\Program Files\Unity\Hub\Editor\6000.2.8f1\Editor\Data\PlaybackEngines\AndroidPlayer\SDK\cmake\3.22.1\bin\ninja.exe" -t targets
|
||||||
|
description = All primary targets available:
|
||||||
|
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
# Install script for directory: C:/Users/gravi/Game/Library/Bee/Android/Prj/IL2CPP/Gradle/unityLibrary/src/main/cpp/GameActivity
|
||||||
|
|
||||||
|
# Set the install prefix
|
||||||
|
if(NOT DEFINED CMAKE_INSTALL_PREFIX)
|
||||||
|
set(CMAKE_INSTALL_PREFIX "C:/Program Files (x86)/Unity")
|
||||||
|
endif()
|
||||||
|
string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
|
||||||
|
|
||||||
|
# Set the install configuration name.
|
||||||
|
if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME)
|
||||||
|
if(BUILD_TYPE)
|
||||||
|
string(REGEX REPLACE "^[^A-Za-z0-9_]+" ""
|
||||||
|
CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}")
|
||||||
|
else()
|
||||||
|
set(CMAKE_INSTALL_CONFIG_NAME "RelWithDebInfo")
|
||||||
|
endif()
|
||||||
|
message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Set the component getting installed.
|
||||||
|
if(NOT CMAKE_INSTALL_COMPONENT)
|
||||||
|
if(COMPONENT)
|
||||||
|
message(STATUS "Install component: \"${COMPONENT}\"")
|
||||||
|
set(CMAKE_INSTALL_COMPONENT "${COMPONENT}")
|
||||||
|
else()
|
||||||
|
set(CMAKE_INSTALL_COMPONENT)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Install shared libraries without execute permission?
|
||||||
|
if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE)
|
||||||
|
set(CMAKE_INSTALL_SO_NO_EXE "0")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Is this installation the result of a crosscompile?
|
||||||
|
if(NOT DEFINED CMAKE_CROSSCOMPILING)
|
||||||
|
set(CMAKE_CROSSCOMPILING "TRUE")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Set default install directory permissions.
|
||||||
|
if(NOT DEFINED CMAKE_OBJDUMP)
|
||||||
|
set(CMAKE_OBJDUMP "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-objdump.exe")
|
||||||
|
endif()
|
||||||
|
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
C:\Users\gravi\Game\Library\Bee\Android\Prj\IL2CPP\Gradle\unityLibrary\src\main\cpp\GameActivity\GAToUnityCallbacks.h
|
||||||
|
C:\Users\gravi\Game\Library\Bee\Android\Prj\IL2CPP\Gradle\unityLibrary\src\main\cpp\GameActivity\MacroEnd.h
|
||||||
|
C:\Users\gravi\Game\Library\Bee\Android\Prj\IL2CPP\Gradle\unityLibrary\src\main\cpp\GameActivity\MacroHeaderBegin.h
|
||||||
|
C:\Users\gravi\Game\Library\Bee\Android\Prj\IL2CPP\Gradle\unityLibrary\src\main\cpp\GameActivity\MacroSourceBegin.h
|
||||||
|
C:\Users\gravi\Game\Library\Bee\Android\Prj\IL2CPP\Gradle\unityLibrary\src\main\cpp\GameActivity\UGAApplication.h
|
||||||
|
C:\Users\gravi\Game\Library\Bee\Android\Prj\IL2CPP\Gradle\unityLibrary\src\main\cpp\GameActivity\UGAConfiguration.h
|
||||||
|
C:\Users\gravi\Game\Library\Bee\Android\Prj\IL2CPP\Gradle\unityLibrary\src\main\cpp\GameActivity\UGADebug.h
|
||||||
|
C:\Users\gravi\Game\Library\Bee\Android\Prj\IL2CPP\Gradle\unityLibrary\src\main\cpp\GameActivity\UGAEvents.h
|
||||||
|
C:\Users\gravi\Game\Library\Bee\Android\Prj\IL2CPP\Gradle\unityLibrary\src\main\cpp\GameActivity\UGAInput.h
|
||||||
|
C:\Users\gravi\Game\Library\Bee\Android\Prj\IL2CPP\Gradle\unityLibrary\src\main\cpp\GameActivity\UGASoftKeyboard.h
|
||||||
|
C:\Users\gravi\Game\Library\Bee\Android\Prj\IL2CPP\Gradle\unityLibrary\src\main\cpp\GameActivity\UGASoftKeyboardCallbacks.h
|
||||||
|
C:\Users\gravi\Game\Library\Bee\Android\Prj\IL2CPP\Gradle\unityLibrary\src\main\cpp\GameActivity\UGATypes.h
|
||||||
|
C:\Users\gravi\Game\Library\Bee\Android\Prj\IL2CPP\Gradle\unityLibrary\src\main\cpp\GameActivity\UGAVersion.h
|
||||||
|
C:\Users\gravi\Game\Library\Bee\Android\Prj\IL2CPP\Gradle\unityLibrary\src\main\cpp\GameActivity\UnityToGACallbacks.h
|
||||||
|
C:\Users\gravi\Game\Library\Bee\Android\Prj\IL2CPP\Gradle\unityLibrary\src\main\cpp\GameActivity\UnityToGAConfigurationCallbacks.h
|
||||||
|
C:\Users\gravi\Game\Library\Bee\Android\Prj\IL2CPP\Gradle\unityLibrary\src\main\cpp\GameActivity\UnityToGAKeyEventCallbacks.h
|
||||||
|
C:\Users\gravi\Game\Library\Bee\Android\Prj\IL2CPP\Gradle\unityLibrary\src\main\cpp\GameActivity\UnityToGAMotionEventCallbacks.h
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
{
|
||||||
|
"buildFiles": [
|
||||||
|
"C:\\Users\\gravi\\Game\\Library\\Bee\\Android\\Prj\\IL2CPP\\Gradle\\unityLibrary\\src\\main\\cpp\\CMakeLists.txt",
|
||||||
|
"C:\\Users\\gravi\\Game\\Library\\Bee\\Android\\Prj\\IL2CPP\\Gradle\\unityLibrary\\src\\main\\cpp\\GameActivity\\CMakeLists.txt"
|
||||||
|
],
|
||||||
|
"cleanCommandsComponents": [
|
||||||
|
[
|
||||||
|
"C:\\Program Files\\Unity\\Hub\\Editor\\6000.2.8f1\\Editor\\Data\\PlaybackEngines\\AndroidPlayer\\SDK\\cmake\\3.22.1\\bin\\ninja.exe",
|
||||||
|
"-C",
|
||||||
|
"C:\\Users\\gravi\\Game\\.utmp\\RelWithDebInfo\\f3u1w6u2\\arm64-v8a",
|
||||||
|
"clean"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"buildTargetsCommandComponents": [
|
||||||
|
"C:\\Program Files\\Unity\\Hub\\Editor\\6000.2.8f1\\Editor\\Data\\PlaybackEngines\\AndroidPlayer\\SDK\\cmake\\3.22.1\\bin\\ninja.exe",
|
||||||
|
"-C",
|
||||||
|
"C:\\Users\\gravi\\Game\\.utmp\\RelWithDebInfo\\f3u1w6u2\\arm64-v8a",
|
||||||
|
"{LIST_OF_TARGETS_TO_BUILD}"
|
||||||
|
],
|
||||||
|
"libraries": {
|
||||||
|
"game::@d02bb112ea9f9c2ed29f": {
|
||||||
|
"toolchain": "toolchain",
|
||||||
|
"abi": "arm64-v8a",
|
||||||
|
"artifactName": "game",
|
||||||
|
"output": "C:\\Users\\gravi\\Game\\Library\\Bee\\Android\\Prj\\IL2CPP\\Gradle\\unityLibrary\\build\\intermediates\\cxx\\RelWithDebInfo\\f3u1w6u2\\obj\\arm64-v8a\\libgame.so",
|
||||||
|
"runtimeFiles": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"toolchains": {
|
||||||
|
"toolchain": {
|
||||||
|
"cCompilerExecutable": "C:\\Program Files\\Unity\\Hub\\Editor\\6000.2.8f1\\Editor\\Data\\PlaybackEngines\\AndroidPlayer\\NDK\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\clang.exe",
|
||||||
|
"cppCompilerExecutable": "C:\\Program Files\\Unity\\Hub\\Editor\\6000.2.8f1\\Editor\\Data\\PlaybackEngines\\AndroidPlayer\\NDK\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\clang++.exe"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cFileExtensions": [],
|
||||||
|
"cppFileExtensions": [
|
||||||
|
"cpp"
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
{
|
||||||
|
"buildFiles": [
|
||||||
|
"C:\\Users\\gravi\\Game\\Library\\Bee\\Android\\Prj\\IL2CPP\\Gradle\\unityLibrary\\src\\main\\cpp\\CMakeLists.txt",
|
||||||
|
"C:\\Users\\gravi\\Game\\Library\\Bee\\Android\\Prj\\IL2CPP\\Gradle\\unityLibrary\\src\\main\\cpp\\GameActivity\\CMakeLists.txt"
|
||||||
|
],
|
||||||
|
"cleanCommandsComponents": [
|
||||||
|
[
|
||||||
|
"C:\\Program Files\\Unity\\Hub\\Editor\\6000.2.8f1\\Editor\\Data\\PlaybackEngines\\AndroidPlayer\\SDK\\cmake\\3.22.1\\bin\\ninja.exe",
|
||||||
|
"-C",
|
||||||
|
"C:\\Users\\gravi\\Game\\.utmp\\RelWithDebInfo\\f3u1w6u2\\arm64-v8a",
|
||||||
|
"clean"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"buildTargetsCommandComponents": [
|
||||||
|
"C:\\Program Files\\Unity\\Hub\\Editor\\6000.2.8f1\\Editor\\Data\\PlaybackEngines\\AndroidPlayer\\SDK\\cmake\\3.22.1\\bin\\ninja.exe",
|
||||||
|
"-C",
|
||||||
|
"C:\\Users\\gravi\\Game\\.utmp\\RelWithDebInfo\\f3u1w6u2\\arm64-v8a",
|
||||||
|
"{LIST_OF_TARGETS_TO_BUILD}"
|
||||||
|
],
|
||||||
|
"libraries": {
|
||||||
|
"game::@d02bb112ea9f9c2ed29f": {
|
||||||
|
"artifactName": "game",
|
||||||
|
"abi": "arm64-v8a",
|
||||||
|
"output": "C:\\Users\\gravi\\Game\\Library\\Bee\\Android\\Prj\\IL2CPP\\Gradle\\unityLibrary\\build\\intermediates\\cxx\\RelWithDebInfo\\f3u1w6u2\\obj\\arm64-v8a\\libgame.so",
|
||||||
|
"runtimeFiles": []
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
260
.utmp/RelWithDebInfo/f3u1w6u2/arm64-v8a/build.ninja
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
C:\Users\gravi\Game\Library\Bee\Android\Prj\IL2CPP\Gradle\unityLibrary\src\main\cpp\CMakeLists.txt
|
||||||
|
C:\Users\gravi\Game\Library\Bee\Android\Prj\IL2CPP\Gradle\unityLibrary\src\main\cpp\GameActivity\CMakeLists.txt
|
||||||
60
.utmp/RelWithDebInfo/f3u1w6u2/arm64-v8a/cmake_install.cmake
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
# Install script for directory: C:/Users/gravi/Game/Library/Bee/Android/Prj/IL2CPP/Gradle/unityLibrary/src/main/cpp
|
||||||
|
|
||||||
|
# Set the install prefix
|
||||||
|
if(NOT DEFINED CMAKE_INSTALL_PREFIX)
|
||||||
|
set(CMAKE_INSTALL_PREFIX "C:/Program Files (x86)/Unity")
|
||||||
|
endif()
|
||||||
|
string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
|
||||||
|
|
||||||
|
# Set the install configuration name.
|
||||||
|
if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME)
|
||||||
|
if(BUILD_TYPE)
|
||||||
|
string(REGEX REPLACE "^[^A-Za-z0-9_]+" ""
|
||||||
|
CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}")
|
||||||
|
else()
|
||||||
|
set(CMAKE_INSTALL_CONFIG_NAME "RelWithDebInfo")
|
||||||
|
endif()
|
||||||
|
message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Set the component getting installed.
|
||||||
|
if(NOT CMAKE_INSTALL_COMPONENT)
|
||||||
|
if(COMPONENT)
|
||||||
|
message(STATUS "Install component: \"${COMPONENT}\"")
|
||||||
|
set(CMAKE_INSTALL_COMPONENT "${COMPONENT}")
|
||||||
|
else()
|
||||||
|
set(CMAKE_INSTALL_COMPONENT)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Install shared libraries without execute permission?
|
||||||
|
if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE)
|
||||||
|
set(CMAKE_INSTALL_SO_NO_EXE "0")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Is this installation the result of a crosscompile?
|
||||||
|
if(NOT DEFINED CMAKE_CROSSCOMPILING)
|
||||||
|
set(CMAKE_CROSSCOMPILING "TRUE")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Set default install directory permissions.
|
||||||
|
if(NOT DEFINED CMAKE_OBJDUMP)
|
||||||
|
set(CMAKE_OBJDUMP "C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-objdump.exe")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT CMAKE_INSTALL_LOCAL_ONLY)
|
||||||
|
# Include the install script for each subdirectory.
|
||||||
|
include("C:/Users/gravi/Game/.utmp/RelWithDebInfo/f3u1w6u2/arm64-v8a/GameActivity/cmake_install.cmake")
|
||||||
|
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(CMAKE_INSTALL_COMPONENT)
|
||||||
|
set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt")
|
||||||
|
else()
|
||||||
|
set(CMAKE_INSTALL_MANIFEST "install_manifest.txt")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT
|
||||||
|
"${CMAKE_INSTALL_MANIFEST_FILES}")
|
||||||
|
file(WRITE "C:/Users/gravi/Game/.utmp/RelWithDebInfo/f3u1w6u2/arm64-v8a/${CMAKE_INSTALL_MANIFEST}"
|
||||||
|
"${CMAKE_INSTALL_MANIFEST_CONTENT}")
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"directory": "C:/Users/gravi/Game/.utmp/RelWithDebInfo/f3u1w6u2/arm64-v8a",
|
||||||
|
"command": "C:\\PROGRA~1\\Unity\\Hub\\Editor\\60002~1.8F1\\Editor\\Data\\PLAYBA~1\\ANDROI~1\\NDK\\TOOLCH~1\\llvm\\prebuilt\\WINDOW~1\\bin\\CLANG_~1.EXE --target=aarch64-none-linux-android24 --sysroot=\"C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/toolchains/llvm/prebuilt/windows-x86_64/sysroot\" -DEXTERNAL_GAME_ACTIVITY_CODE -Dgame_EXPORTS -IC:/Users/gravi/Game/Library/Bee/Android/Prj/IL2CPP/Gradle/unityLibrary/src/main/cpp/GameActivity -isystem C:/Users/gravi/.gradle/caches/8.13/transforms/1e7cc65d4e74b23bd94dca9ec0ac2eb3/transformed/jetified-games-activity-3.0.5/prefab/modules/game-activity_static/include -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D__BIONIC_NO_PAGE_SIZE_MACRO -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -Wall -Wextra -pedantic -Werror -O2 -g -DNDEBUG -fPIC -o GameActivity\\CMakeFiles\\game.dir\\UGAApplication.cpp.o -c C:\\Users\\gravi\\Game\\Library\\Bee\\Android\\Prj\\IL2CPP\\Gradle\\unityLibrary\\src\\main\\cpp\\GameActivity\\UGAApplication.cpp",
|
||||||
|
"file": "C:\\Users\\gravi\\Game\\Library\\Bee\\Android\\Prj\\IL2CPP\\Gradle\\unityLibrary\\src\\main\\cpp\\GameActivity\\UGAApplication.cpp"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"directory": "C:/Users/gravi/Game/.utmp/RelWithDebInfo/f3u1w6u2/arm64-v8a",
|
||||||
|
"command": "C:\\PROGRA~1\\Unity\\Hub\\Editor\\60002~1.8F1\\Editor\\Data\\PLAYBA~1\\ANDROI~1\\NDK\\TOOLCH~1\\llvm\\prebuilt\\WINDOW~1\\bin\\CLANG_~1.EXE --target=aarch64-none-linux-android24 --sysroot=\"C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/toolchains/llvm/prebuilt/windows-x86_64/sysroot\" -DEXTERNAL_GAME_ACTIVITY_CODE -Dgame_EXPORTS -IC:/Users/gravi/Game/Library/Bee/Android/Prj/IL2CPP/Gradle/unityLibrary/src/main/cpp/GameActivity -isystem C:/Users/gravi/.gradle/caches/8.13/transforms/1e7cc65d4e74b23bd94dca9ec0ac2eb3/transformed/jetified-games-activity-3.0.5/prefab/modules/game-activity_static/include -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D__BIONIC_NO_PAGE_SIZE_MACRO -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -Wall -Wextra -pedantic -Werror -O2 -g -DNDEBUG -fPIC -o GameActivity\\CMakeFiles\\game.dir\\UGAConfiguration.cpp.o -c C:\\Users\\gravi\\Game\\Library\\Bee\\Android\\Prj\\IL2CPP\\Gradle\\unityLibrary\\src\\main\\cpp\\GameActivity\\UGAConfiguration.cpp",
|
||||||
|
"file": "C:\\Users\\gravi\\Game\\Library\\Bee\\Android\\Prj\\IL2CPP\\Gradle\\unityLibrary\\src\\main\\cpp\\GameActivity\\UGAConfiguration.cpp"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"directory": "C:/Users/gravi/Game/.utmp/RelWithDebInfo/f3u1w6u2/arm64-v8a",
|
||||||
|
"command": "C:\\PROGRA~1\\Unity\\Hub\\Editor\\60002~1.8F1\\Editor\\Data\\PLAYBA~1\\ANDROI~1\\NDK\\TOOLCH~1\\llvm\\prebuilt\\WINDOW~1\\bin\\CLANG_~1.EXE --target=aarch64-none-linux-android24 --sysroot=\"C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/toolchains/llvm/prebuilt/windows-x86_64/sysroot\" -DEXTERNAL_GAME_ACTIVITY_CODE -Dgame_EXPORTS -IC:/Users/gravi/Game/Library/Bee/Android/Prj/IL2CPP/Gradle/unityLibrary/src/main/cpp/GameActivity -isystem C:/Users/gravi/.gradle/caches/8.13/transforms/1e7cc65d4e74b23bd94dca9ec0ac2eb3/transformed/jetified-games-activity-3.0.5/prefab/modules/game-activity_static/include -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D__BIONIC_NO_PAGE_SIZE_MACRO -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -Wall -Wextra -pedantic -Werror -O2 -g -DNDEBUG -fPIC -o GameActivity\\CMakeFiles\\game.dir\\UGADebug.cpp.o -c C:\\Users\\gravi\\Game\\Library\\Bee\\Android\\Prj\\IL2CPP\\Gradle\\unityLibrary\\src\\main\\cpp\\GameActivity\\UGADebug.cpp",
|
||||||
|
"file": "C:\\Users\\gravi\\Game\\Library\\Bee\\Android\\Prj\\IL2CPP\\Gradle\\unityLibrary\\src\\main\\cpp\\GameActivity\\UGADebug.cpp"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"directory": "C:/Users/gravi/Game/.utmp/RelWithDebInfo/f3u1w6u2/arm64-v8a",
|
||||||
|
"command": "C:\\PROGRA~1\\Unity\\Hub\\Editor\\60002~1.8F1\\Editor\\Data\\PLAYBA~1\\ANDROI~1\\NDK\\TOOLCH~1\\llvm\\prebuilt\\WINDOW~1\\bin\\CLANG_~1.EXE --target=aarch64-none-linux-android24 --sysroot=\"C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/toolchains/llvm/prebuilt/windows-x86_64/sysroot\" -DEXTERNAL_GAME_ACTIVITY_CODE -Dgame_EXPORTS -IC:/Users/gravi/Game/Library/Bee/Android/Prj/IL2CPP/Gradle/unityLibrary/src/main/cpp/GameActivity -isystem C:/Users/gravi/.gradle/caches/8.13/transforms/1e7cc65d4e74b23bd94dca9ec0ac2eb3/transformed/jetified-games-activity-3.0.5/prefab/modules/game-activity_static/include -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D__BIONIC_NO_PAGE_SIZE_MACRO -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -Wall -Wextra -pedantic -Werror -O2 -g -DNDEBUG -fPIC -o GameActivity\\CMakeFiles\\game.dir\\UGAEntry.cpp.o -c C:\\Users\\gravi\\Game\\Library\\Bee\\Android\\Prj\\IL2CPP\\Gradle\\unityLibrary\\src\\main\\cpp\\GameActivity\\UGAEntry.cpp",
|
||||||
|
"file": "C:\\Users\\gravi\\Game\\Library\\Bee\\Android\\Prj\\IL2CPP\\Gradle\\unityLibrary\\src\\main\\cpp\\GameActivity\\UGAEntry.cpp"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"directory": "C:/Users/gravi/Game/.utmp/RelWithDebInfo/f3u1w6u2/arm64-v8a",
|
||||||
|
"command": "C:\\PROGRA~1\\Unity\\Hub\\Editor\\60002~1.8F1\\Editor\\Data\\PLAYBA~1\\ANDROI~1\\NDK\\TOOLCH~1\\llvm\\prebuilt\\WINDOW~1\\bin\\CLANG_~1.EXE --target=aarch64-none-linux-android24 --sysroot=\"C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/toolchains/llvm/prebuilt/windows-x86_64/sysroot\" -DEXTERNAL_GAME_ACTIVITY_CODE -Dgame_EXPORTS -IC:/Users/gravi/Game/Library/Bee/Android/Prj/IL2CPP/Gradle/unityLibrary/src/main/cpp/GameActivity -isystem C:/Users/gravi/.gradle/caches/8.13/transforms/1e7cc65d4e74b23bd94dca9ec0ac2eb3/transformed/jetified-games-activity-3.0.5/prefab/modules/game-activity_static/include -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D__BIONIC_NO_PAGE_SIZE_MACRO -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -Wall -Wextra -pedantic -Werror -O2 -g -DNDEBUG -fPIC -o GameActivity\\CMakeFiles\\game.dir\\UGAInput.cpp.o -c C:\\Users\\gravi\\Game\\Library\\Bee\\Android\\Prj\\IL2CPP\\Gradle\\unityLibrary\\src\\main\\cpp\\GameActivity\\UGAInput.cpp",
|
||||||
|
"file": "C:\\Users\\gravi\\Game\\Library\\Bee\\Android\\Prj\\IL2CPP\\Gradle\\unityLibrary\\src\\main\\cpp\\GameActivity\\UGAInput.cpp"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"directory": "C:/Users/gravi/Game/.utmp/RelWithDebInfo/f3u1w6u2/arm64-v8a",
|
||||||
|
"command": "C:\\PROGRA~1\\Unity\\Hub\\Editor\\60002~1.8F1\\Editor\\Data\\PLAYBA~1\\ANDROI~1\\NDK\\TOOLCH~1\\llvm\\prebuilt\\WINDOW~1\\bin\\CLANG_~1.EXE --target=aarch64-none-linux-android24 --sysroot=\"C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/toolchains/llvm/prebuilt/windows-x86_64/sysroot\" -DEXTERNAL_GAME_ACTIVITY_CODE -Dgame_EXPORTS -IC:/Users/gravi/Game/Library/Bee/Android/Prj/IL2CPP/Gradle/unityLibrary/src/main/cpp/GameActivity -isystem C:/Users/gravi/.gradle/caches/8.13/transforms/1e7cc65d4e74b23bd94dca9ec0ac2eb3/transformed/jetified-games-activity-3.0.5/prefab/modules/game-activity_static/include -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D__BIONIC_NO_PAGE_SIZE_MACRO -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -Wall -Wextra -pedantic -Werror -O2 -g -DNDEBUG -fPIC -o GameActivity\\CMakeFiles\\game.dir\\UGAInputKeyEvent.cpp.o -c C:\\Users\\gravi\\Game\\Library\\Bee\\Android\\Prj\\IL2CPP\\Gradle\\unityLibrary\\src\\main\\cpp\\GameActivity\\UGAInputKeyEvent.cpp",
|
||||||
|
"file": "C:\\Users\\gravi\\Game\\Library\\Bee\\Android\\Prj\\IL2CPP\\Gradle\\unityLibrary\\src\\main\\cpp\\GameActivity\\UGAInputKeyEvent.cpp"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"directory": "C:/Users/gravi/Game/.utmp/RelWithDebInfo/f3u1w6u2/arm64-v8a",
|
||||||
|
"command": "C:\\PROGRA~1\\Unity\\Hub\\Editor\\60002~1.8F1\\Editor\\Data\\PLAYBA~1\\ANDROI~1\\NDK\\TOOLCH~1\\llvm\\prebuilt\\WINDOW~1\\bin\\CLANG_~1.EXE --target=aarch64-none-linux-android24 --sysroot=\"C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/toolchains/llvm/prebuilt/windows-x86_64/sysroot\" -DEXTERNAL_GAME_ACTIVITY_CODE -Dgame_EXPORTS -IC:/Users/gravi/Game/Library/Bee/Android/Prj/IL2CPP/Gradle/unityLibrary/src/main/cpp/GameActivity -isystem C:/Users/gravi/.gradle/caches/8.13/transforms/1e7cc65d4e74b23bd94dca9ec0ac2eb3/transformed/jetified-games-activity-3.0.5/prefab/modules/game-activity_static/include -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D__BIONIC_NO_PAGE_SIZE_MACRO -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -Wall -Wextra -pedantic -Werror -O2 -g -DNDEBUG -fPIC -o GameActivity\\CMakeFiles\\game.dir\\UGAInputMotionEvent.cpp.o -c C:\\Users\\gravi\\Game\\Library\\Bee\\Android\\Prj\\IL2CPP\\Gradle\\unityLibrary\\src\\main\\cpp\\GameActivity\\UGAInputMotionEvent.cpp",
|
||||||
|
"file": "C:\\Users\\gravi\\Game\\Library\\Bee\\Android\\Prj\\IL2CPP\\Gradle\\unityLibrary\\src\\main\\cpp\\GameActivity\\UGAInputMotionEvent.cpp"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"directory": "C:/Users/gravi/Game/.utmp/RelWithDebInfo/f3u1w6u2/arm64-v8a",
|
||||||
|
"command": "C:\\PROGRA~1\\Unity\\Hub\\Editor\\60002~1.8F1\\Editor\\Data\\PLAYBA~1\\ANDROI~1\\NDK\\TOOLCH~1\\llvm\\prebuilt\\WINDOW~1\\bin\\CLANG_~1.EXE --target=aarch64-none-linux-android24 --sysroot=\"C:/Program Files/Unity/Hub/Editor/6000.2.8f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/toolchains/llvm/prebuilt/windows-x86_64/sysroot\" -DEXTERNAL_GAME_ACTIVITY_CODE -Dgame_EXPORTS -IC:/Users/gravi/Game/Library/Bee/Android/Prj/IL2CPP/Gradle/unityLibrary/src/main/cpp/GameActivity -isystem C:/Users/gravi/.gradle/caches/8.13/transforms/1e7cc65d4e74b23bd94dca9ec0ac2eb3/transformed/jetified-games-activity-3.0.5/prefab/modules/game-activity_static/include -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D__BIONIC_NO_PAGE_SIZE_MACRO -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -Wall -Wextra -pedantic -Werror -O2 -g -DNDEBUG -fPIC -o GameActivity\\CMakeFiles\\game.dir\\UGASoftKeyboard.cpp.o -c C:\\Users\\gravi\\Game\\Library\\Bee\\Android\\Prj\\IL2CPP\\Gradle\\unityLibrary\\src\\main\\cpp\\GameActivity\\UGASoftKeyboard.cpp",
|
||||||
|
"file": "C:\\Users\\gravi\\Game\\Library\\Bee\\Android\\Prj\\IL2CPP\\Gradle\\unityLibrary\\src\\main\\cpp\\GameActivity\\UGASoftKeyboard.cpp"
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
C/C++ Structured Log\
|
||||||
|
Z
|
||||||
|
XC:\Users\gravi\Game\.utmp\RelWithDebInfo\f3u1w6u2\arm64-v8a\additional_project_files.txtC
|
||||||
|
A
|
||||||
|
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint µÝÖ½¨3µ ¡¼»º¨3Y
|
||||||
|
W
|
||||||
|
UC:\Users\gravi\Game\.utmp\RelWithDebInfo\f3u1w6u2\arm64-v8a\android_gradle_build.json µÝÖ½¨3À
|
||||||
|
ª¼»º¨3^
|
||||||
|
\
|
||||||
|
ZC:\Users\gravi\Game\.utmp\RelWithDebInfo\f3u1w6u2\arm64-v8a\android_gradle_build_mini.json µÝÖ½¨3ª м»º¨3K
|
||||||
|
I
|
||||||
|
GC:\Users\gravi\Game\.utmp\RelWithDebInfo\f3u1w6u2\arm64-v8a\build.ninja µÝÖ½¨3¬Ÿ ׺»º¨3O
|
||||||
|
M
|
||||||
|
KC:\Users\gravi\Game\.utmp\RelWithDebInfo\f3u1w6u2\arm64-v8a\build.ninja.txt µÝÖ½¨3T
|
||||||
|
R
|
||||||
|
PC:\Users\gravi\Game\.utmp\RelWithDebInfo\f3u1w6u2\arm64-v8a\build_file_index.txt µÝÖ½¨3Ó ×¼»º¨3U
|
||||||
|
S
|
||||||
|
QC:\Users\gravi\Game\.utmp\RelWithDebInfo\f3u1w6u2\arm64-v8a\compile_commands.json µÝÖ½¨3ÛS Ôº»º¨3Y
|
||||||
|
W
|
||||||
|
UC:\Users\gravi\Game\.utmp\RelWithDebInfo\f3u1w6u2\arm64-v8a\compile_commands.json.bin µÝÖ½¨3 ‡ Ôº»º¨3_
|
||||||
|
]
|
||||||
|
[C:\Users\gravi\Game\.utmp\RelWithDebInfo\f3u1w6u2\arm64-v8a\metadata_generation_command.txt ¶ÝÖ½¨3
|
||||||
|
Á Ö¼»º¨3R
|
||||||
|
P
|
||||||
|
NC:\Users\gravi\Game\.utmp\RelWithDebInfo\f3u1w6u2\arm64-v8a\prefab_config.json ¶ÝÖ½¨3á Ö¼»º¨3W
|
||||||
|
U
|
||||||
|
SC:\Users\gravi\Game\.utmp\RelWithDebInfo\f3u1w6u2\arm64-v8a\symbol_folder_index.txt ¶ÝÖ½¨3„ ×¼»º¨3f
|
||||||
|
d
|
||||||
|
bC:\Users\gravi\Game\Library\Bee\Android\Prj\IL2CPP\Gradle\unityLibrary\src\main\cpp\CMakeLists.txt ¶ÝÖ½¨3
|
||||||
|
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
-HC:\Users\gravi\Game\Library\Bee\Android\Prj\IL2CPP\Gradle\unityLibrary\src\main\cpp
|
||||||
|
-DCMAKE_SYSTEM_NAME=Android
|
||||||
|
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON
|
||||||
|
-DCMAKE_SYSTEM_VERSION=24
|
||||||
|
-DANDROID_PLATFORM=android-24
|
||||||
|
-DANDROID_ABI=arm64-v8a
|
||||||
|
-DCMAKE_ANDROID_ARCH_ABI=arm64-v8a
|
||||||
|
-DANDROID_NDK=C:\Program Files\Unity\Hub\Editor\6000.2.8f1\Editor\Data\PlaybackEngines\AndroidPlayer\NDK
|
||||||
|
-DCMAKE_ANDROID_NDK=C:\Program Files\Unity\Hub\Editor\6000.2.8f1\Editor\Data\PlaybackEngines\AndroidPlayer\NDK
|
||||||
|
-DCMAKE_TOOLCHAIN_FILE=C:\Program Files\Unity\Hub\Editor\6000.2.8f1\Editor\Data\PlaybackEngines\AndroidPlayer\NDK\build\cmake\android.toolchain.cmake
|
||||||
|
-DCMAKE_MAKE_PROGRAM=C:\Program Files\Unity\Hub\Editor\6000.2.8f1\Editor\Data\PlaybackEngines\AndroidPlayer\SDK\cmake\3.22.1\bin\ninja.exe
|
||||||
|
-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=C:\Users\gravi\Game\Library\Bee\Android\Prj\IL2CPP\Gradle\unityLibrary\build\intermediates\cxx\RelWithDebInfo\f3u1w6u2\obj\arm64-v8a
|
||||||
|
-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=C:\Users\gravi\Game\Library\Bee\Android\Prj\IL2CPP\Gradle\unityLibrary\build\intermediates\cxx\RelWithDebInfo\f3u1w6u2\obj\arm64-v8a
|
||||||
|
-DCMAKE_BUILD_TYPE=RelWithDebInfo
|
||||||
|
-DCMAKE_FIND_ROOT_PATH=C:\Users\gravi\Game\.utmp\RelWithDebInfo\f3u1w6u2\prefab\arm64-v8a\prefab
|
||||||
|
-BC:\Users\gravi\Game\.utmp\RelWithDebInfo\f3u1w6u2\arm64-v8a
|
||||||
|
-GNinja
|
||||||
|
-DANDROID_STL=c++_shared
|
||||||
|
-DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=ON
|
||||||
|
Build command args: []
|
||||||
|
Version: 2
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"enabled": true,
|
||||||
|
"prefabPath": "C:\\Users\\gravi\\.gradle\\caches\\modules-2\\files-2.1\\com.google.prefab\\cli\\2.1.0\\aa32fec809c44fa531f01dcfb739b5b3304d3050\\cli-2.1.0-all.jar",
|
||||||
|
"packages": [
|
||||||
|
"C:\\Users\\gravi\\.gradle\\caches\\8.13\\transforms\\1e7cc65d4e74b23bd94dca9ec0ac2eb3\\transformed\\jetified-games-activity-3.0.5\\prefab"
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
C:\Users\gravi\Game\Library\Bee\Android\Prj\IL2CPP\Gradle\unityLibrary\build\intermediates\cxx\RelWithDebInfo\f3u1w6u2\obj\arm64-v8a
|
||||||
28
.utmp/RelWithDebInfo/f3u1w6u2/hash_key.txt
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
# Values used to calculate the hash in this folder name.
|
||||||
|
# Should not depend on the absolute path of the project itself.
|
||||||
|
# - AGP: 8.10.0.
|
||||||
|
# - $NDK is the path to NDK 27.2.12479018.
|
||||||
|
# - $PROJECT is the path to the parent folder of the root Gradle build file.
|
||||||
|
# - $ABI is the ABI to be built with. The specific value doesn't contribute to the value of the hash.
|
||||||
|
# - $HASH is the hash value computed from this text.
|
||||||
|
# - $CMAKE is the path to CMake 3.22.1.
|
||||||
|
# - $NINJA is the path to Ninja.
|
||||||
|
-H$PROJECT/unityLibrary/src/main/cpp
|
||||||
|
-DCMAKE_SYSTEM_NAME=Android
|
||||||
|
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON
|
||||||
|
-DCMAKE_SYSTEM_VERSION=24
|
||||||
|
-DANDROID_PLATFORM=android-24
|
||||||
|
-DANDROID_ABI=$ABI
|
||||||
|
-DCMAKE_ANDROID_ARCH_ABI=$ABI
|
||||||
|
-DANDROID_NDK=$NDK
|
||||||
|
-DCMAKE_ANDROID_NDK=$NDK
|
||||||
|
-DCMAKE_TOOLCHAIN_FILE=$NDK/build/cmake/android.toolchain.cmake
|
||||||
|
-DCMAKE_MAKE_PROGRAM=$NINJA
|
||||||
|
-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=$PROJECT/unityLibrary/build/intermediates/cxx/RelWithDebInfo/$HASH/obj/$ABI
|
||||||
|
-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=$PROJECT/unityLibrary/build/intermediates/cxx/RelWithDebInfo/$HASH/obj/$ABI
|
||||||
|
-DCMAKE_BUILD_TYPE=RelWithDebInfo
|
||||||
|
-DCMAKE_FIND_ROOT_PATH=C:/Users/gravi/Game/.utmp/RelWithDebInfo/$HASH/prefab/$ABI/prefab
|
||||||
|
-BC:/Users/gravi/Game/.utmp/RelWithDebInfo/$HASH/$ABI
|
||||||
|
-GNinja
|
||||||
|
-DANDROID_STL=c++_shared
|
||||||
|
-DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=ON
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
if(NOT TARGET game-activity::game-activity)
|
||||||
|
add_library(game-activity::game-activity STATIC IMPORTED)
|
||||||
|
set_target_properties(game-activity::game-activity PROPERTIES
|
||||||
|
IMPORTED_LOCATION "C:/Users/gravi/.gradle/caches/8.13/transforms/1e7cc65d4e74b23bd94dca9ec0ac2eb3/transformed/jetified-games-activity-3.0.5/prefab/modules/game-activity/libs/android.arm64-v8a/libgame-activity.a"
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES "C:/Users/gravi/.gradle/caches/8.13/transforms/1e7cc65d4e74b23bd94dca9ec0ac2eb3/transformed/jetified-games-activity-3.0.5/prefab/modules/game-activity/include"
|
||||||
|
INTERFACE_LINK_LIBRARIES ""
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT TARGET game-activity::game-activity_static)
|
||||||
|
add_library(game-activity::game-activity_static STATIC IMPORTED)
|
||||||
|
set_target_properties(game-activity::game-activity_static PROPERTIES
|
||||||
|
IMPORTED_LOCATION "C:/Users/gravi/.gradle/caches/8.13/transforms/1e7cc65d4e74b23bd94dca9ec0ac2eb3/transformed/jetified-games-activity-3.0.5/prefab/modules/game-activity_static/libs/android.arm64-v8a/libgame-activity_static.a"
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES "C:/Users/gravi/.gradle/caches/8.13/transforms/1e7cc65d4e74b23bd94dca9ec0ac2eb3/transformed/jetified-games-activity-3.0.5/prefab/modules/game-activity_static/include"
|
||||||
|
INTERFACE_LINK_LIBRARIES ""
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
5
.vscode/extensions.json
vendored
@@ -1,5 +0,0 @@
|
|||||||
{
|
|
||||||
"recommendations": [
|
|
||||||
"visualstudiotoolsforunity.vstuc"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
10
.vscode/launch.json
vendored
@@ -1,10 +0,0 @@
|
|||||||
{
|
|
||||||
"version": "0.2.0",
|
|
||||||
"configurations": [
|
|
||||||
{
|
|
||||||
"name": "Attach to Unity",
|
|
||||||
"type": "vstuc",
|
|
||||||
"request": "attach"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
72
.vscode/settings.json
vendored
@@ -1,72 +0,0 @@
|
|||||||
{
|
|
||||||
"files.exclude": {
|
|
||||||
"**/.DS_Store": true,
|
|
||||||
"**/.git": true,
|
|
||||||
"**/.vs": true,
|
|
||||||
"**/.gitmodules": true,
|
|
||||||
"**/.vsconfig": true,
|
|
||||||
"**/*.booproj": true,
|
|
||||||
"**/*.pidb": true,
|
|
||||||
"**/*.suo": true,
|
|
||||||
"**/*.user": true,
|
|
||||||
"**/*.userprefs": true,
|
|
||||||
"**/*.unityproj": true,
|
|
||||||
"**/*.dll": true,
|
|
||||||
"**/*.exe": true,
|
|
||||||
"**/*.pdf": true,
|
|
||||||
"**/*.mid": true,
|
|
||||||
"**/*.midi": true,
|
|
||||||
"**/*.wav": true,
|
|
||||||
"**/*.gif": true,
|
|
||||||
"**/*.ico": true,
|
|
||||||
"**/*.jpg": true,
|
|
||||||
"**/*.jpeg": true,
|
|
||||||
"**/*.png": true,
|
|
||||||
"**/*.psd": true,
|
|
||||||
"**/*.tga": true,
|
|
||||||
"**/*.tif": true,
|
|
||||||
"**/*.tiff": true,
|
|
||||||
"**/*.3ds": true,
|
|
||||||
"**/*.3DS": true,
|
|
||||||
"**/*.fbx": true,
|
|
||||||
"**/*.FBX": true,
|
|
||||||
"**/*.lxo": true,
|
|
||||||
"**/*.LXO": true,
|
|
||||||
"**/*.ma": true,
|
|
||||||
"**/*.MA": true,
|
|
||||||
"**/*.obj": true,
|
|
||||||
"**/*.OBJ": true,
|
|
||||||
"**/*.asset": true,
|
|
||||||
"**/*.cubemap": true,
|
|
||||||
"**/*.flare": true,
|
|
||||||
"**/*.mat": true,
|
|
||||||
"**/*.meta": true,
|
|
||||||
"**/*.prefab": true,
|
|
||||||
"**/*.unity": true,
|
|
||||||
"build/": true,
|
|
||||||
"Build/": true,
|
|
||||||
"Library/": true,
|
|
||||||
"library/": true,
|
|
||||||
"obj/": true,
|
|
||||||
"Obj/": true,
|
|
||||||
"Logs/": true,
|
|
||||||
"logs/": true,
|
|
||||||
"ProjectSettings/": true,
|
|
||||||
"UserSettings/": true,
|
|
||||||
"temp/": true,
|
|
||||||
"Temp/": true
|
|
||||||
},
|
|
||||||
"files.associations": {
|
|
||||||
"*.asset": "yaml",
|
|
||||||
"*.meta": "yaml",
|
|
||||||
"*.prefab": "yaml",
|
|
||||||
"*.unity": "yaml",
|
|
||||||
},
|
|
||||||
"explorer.fileNesting.enabled": true,
|
|
||||||
"explorer.fileNesting.patterns": {
|
|
||||||
"*.sln": "*.csproj",
|
|
||||||
"*.slnx": "*.csproj"
|
|
||||||
},
|
|
||||||
"dotnet.defaultSolution": "GeoSusGame.slnx",
|
|
||||||
"dotnet.enableWorkspaceBasedDevelopment": false
|
|
||||||
}
|
|
||||||
@@ -132,20 +132,7 @@ public class GameClient : IDisposable
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
public void Disconnect(string reason = "User disconnected")
|
||||||
/// Tears down the socket and crypto session. When `transient` is true
|
|
||||||
/// (network drop, decrypt-failure cascade, anything we expect to retry),
|
|
||||||
/// the lobby/role/task/state caches are preserved so the post-reconnect
|
|
||||||
/// flow can re-associate via Reconnect(LobbyId). Default false matches
|
|
||||||
/// pre-P9 behavior (full state wipe) for explicit user disconnects.
|
|
||||||
///
|
|
||||||
/// Critical for the P9 reconnect bug: previously every Disconnect path
|
|
||||||
/// nuked LobbyId, so by the time GameManager_Network's reconnect coroutine
|
|
||||||
/// fired, the client had no idea which lobby it had been in - the
|
|
||||||
/// post-handshake Reconnect call had nothing to send and the server
|
|
||||||
/// answered the next vote/action with NOT_IN_LOBBY.
|
|
||||||
/// </summary>
|
|
||||||
public void Disconnect(string reason = "User disconnected", bool transient = false)
|
|
||||||
{
|
{
|
||||||
_cts?.Cancel();
|
_cts?.Cancel();
|
||||||
_tcpClient?.Close();
|
_tcpClient?.Close();
|
||||||
@@ -154,8 +141,6 @@ public class GameClient : IDisposable
|
|||||||
_encryption?.Dispose();
|
_encryption?.Dispose();
|
||||||
_encryption = null;
|
_encryption = null;
|
||||||
|
|
||||||
if (!transient)
|
|
||||||
{
|
|
||||||
LobbyId = null;
|
LobbyId = null;
|
||||||
JoinCode = null;
|
JoinCode = null;
|
||||||
CurrentLobbyState = null;
|
CurrentLobbyState = null;
|
||||||
@@ -163,11 +148,6 @@ public class GameClient : IDisposable
|
|||||||
MyTasks.Clear();
|
MyTasks.Clear();
|
||||||
PlayerPositions.Clear();
|
PlayerPositions.Clear();
|
||||||
Bodies.Clear();
|
Bodies.Clear();
|
||||||
}
|
|
||||||
// PlayerPositions are stale anyway after a drop, but we keep them so
|
|
||||||
// the UI doesn't blink avatars off-map mid-meeting; the next position
|
|
||||||
// broadcast overwrites them. LastEventId is intentionally preserved
|
|
||||||
// so the Reconnect message can ask the server for missed events.
|
|
||||||
|
|
||||||
Dispatcher.Post(() => OnDisconnected?.Invoke(reason));
|
Dispatcher.Post(() => OnDisconnected?.Invoke(reason));
|
||||||
}
|
}
|
||||||
@@ -256,8 +236,7 @@ public class GameClient : IDisposable
|
|||||||
decryptFailures++;
|
decryptFailures++;
|
||||||
if (decryptFailures >= 3)
|
if (decryptFailures >= 3)
|
||||||
{
|
{
|
||||||
// Transient: keep LobbyId for the reconnect coroutine.
|
Disconnect("Too many decryption failures");
|
||||||
Disconnect("Too many decryption failures", transient: true);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
@@ -274,9 +253,7 @@ public class GameClient : IDisposable
|
|||||||
}
|
}
|
||||||
catch (Exception ex) when (!ct.IsCancellationRequested)
|
catch (Exception ex) when (!ct.IsCancellationRequested)
|
||||||
{
|
{
|
||||||
// Transient: TCP RST / read failure is exactly what reconnect was
|
Disconnect($"Connection error: {ex.Message}");
|
||||||
// designed for. Keep LobbyId so post-reconnect flow can re-attach.
|
|
||||||
Disconnect($"Connection error: {ex.Message}", transient: true);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -316,35 +293,7 @@ public class GameClient : IDisposable
|
|||||||
{
|
{
|
||||||
LobbyId = r.LobbyId;
|
LobbyId = r.LobbyId;
|
||||||
JoinCode = r.JoinCode;
|
JoinCode = r.JoinCode;
|
||||||
// Ensure we always have a valid lobby state with the creator as owner
|
|
||||||
if (r.LobbyState != null)
|
|
||||||
{
|
|
||||||
CurrentLobbyState = r.LobbyState;
|
CurrentLobbyState = r.LobbyState;
|
||||||
if (string.IsNullOrEmpty(CurrentLobbyState.OwnerId))
|
|
||||||
CurrentLobbyState.OwnerId = ClientUuid;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
CurrentLobbyState = new LobbyState
|
|
||||||
{
|
|
||||||
LobbyId = r.LobbyId ?? "",
|
|
||||||
JoinCode = r.JoinCode ?? "",
|
|
||||||
OwnerId = ClientUuid
|
|
||||||
};
|
|
||||||
}
|
|
||||||
// Make sure creator appears in the player list
|
|
||||||
if (CurrentLobbyState.Players == null)
|
|
||||||
CurrentLobbyState.Players = new System.Collections.Generic.List<PlayerInfo>();
|
|
||||||
if (!CurrentLobbyState.Players.Any(p => p.ClientUuid == ClientUuid))
|
|
||||||
{
|
|
||||||
CurrentLobbyState.Players.Insert(0, new PlayerInfo
|
|
||||||
{
|
|
||||||
ClientUuid = ClientUuid,
|
|
||||||
DisplayName = DisplayName,
|
|
||||||
IsOwner = true,
|
|
||||||
State = PlayerState.Alive
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -354,22 +303,6 @@ public class GameClient : IDisposable
|
|||||||
LobbyId = r.LobbyId;
|
LobbyId = r.LobbyId;
|
||||||
CurrentLobbyState = r.LobbyState;
|
CurrentLobbyState = r.LobbyState;
|
||||||
JoinCode = r.LobbyState?.JoinCode;
|
JoinCode = r.LobbyState?.JoinCode;
|
||||||
// Ensure self is in the player list
|
|
||||||
if (CurrentLobbyState != null)
|
|
||||||
{
|
|
||||||
if (CurrentLobbyState.Players == null)
|
|
||||||
CurrentLobbyState.Players = new System.Collections.Generic.List<PlayerInfo>();
|
|
||||||
if (!CurrentLobbyState.Players.Any(p => p.ClientUuid == ClientUuid))
|
|
||||||
{
|
|
||||||
CurrentLobbyState.Players.Add(new PlayerInfo
|
|
||||||
{
|
|
||||||
ClientUuid = ClientUuid,
|
|
||||||
DisplayName = DisplayName,
|
|
||||||
IsOwner = CurrentLobbyState.OwnerId == ClientUuid,
|
|
||||||
State = PlayerState.Alive
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -411,6 +344,7 @@ public class GameClient : IDisposable
|
|||||||
var joinedPayload = evt.GetPayload<PlayerJoinedPayload>();
|
var joinedPayload = evt.GetPayload<PlayerJoinedPayload>();
|
||||||
if (joinedPayload != null && CurrentLobbyState?.Players != null)
|
if (joinedPayload != null && CurrentLobbyState?.Players != null)
|
||||||
{
|
{
|
||||||
|
// Check if player already exists
|
||||||
bool exists = CurrentLobbyState.Players.Any(p => p.ClientUuid == joinedPayload.ClientUuid);
|
bool exists = CurrentLobbyState.Players.Any(p => p.ClientUuid == joinedPayload.ClientUuid);
|
||||||
if (!exists)
|
if (!exists)
|
||||||
{
|
{
|
||||||
@@ -418,7 +352,7 @@ public class GameClient : IDisposable
|
|||||||
{
|
{
|
||||||
ClientUuid = joinedPayload.ClientUuid,
|
ClientUuid = joinedPayload.ClientUuid,
|
||||||
DisplayName = joinedPayload.DisplayName,
|
DisplayName = joinedPayload.DisplayName,
|
||||||
IsOwner = joinedPayload.ClientUuid == CurrentLobbyState.OwnerId,
|
IsOwner = false,
|
||||||
IsReady = false,
|
IsReady = false,
|
||||||
State = PlayerState.Alive
|
State = PlayerState.Alive
|
||||||
});
|
});
|
||||||
@@ -531,22 +465,15 @@ public class GameClient : IDisposable
|
|||||||
|
|
||||||
#region Game Actions
|
#region Game Actions
|
||||||
|
|
||||||
public void CreateLobby(Position? center = null, int impostorCount = 1, int taskCount = 5, string? password = null, double playAreaRadius = 500, GameSettingsOverrides? settings = null)
|
public void CreateLobby(Position? center = null, int impostorCount = 1, int taskCount = 5, string? password = null, double playAreaRadius = 500)
|
||||||
{
|
{
|
||||||
// DisplayName is sent on every CreateLobby/JoinLobby so the server
|
|
||||||
// picks up the live nickname (typed into the input field after the
|
|
||||||
// ClientHello handshake fired). Without this the server uses the
|
|
||||||
// ClientHello-time name, which is the GameManager prefab default
|
|
||||||
// for any user who immediately created/joined a lobby.
|
|
||||||
Send(new CreateLobby
|
Send(new CreateLobby
|
||||||
{
|
{
|
||||||
PlayAreaCenter = center,
|
PlayAreaCenter = center,
|
||||||
PlayAreaRadius = playAreaRadius,
|
PlayAreaRadius = playAreaRadius,
|
||||||
ImpostorCount = impostorCount,
|
ImpostorCount = impostorCount,
|
||||||
TaskCount = taskCount,
|
TaskCount = taskCount,
|
||||||
Password = password,
|
Password = password
|
||||||
Settings = settings,
|
|
||||||
DisplayName = DisplayName
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -555,8 +482,7 @@ public class GameClient : IDisposable
|
|||||||
Send(new JoinLobby
|
Send(new JoinLobby
|
||||||
{
|
{
|
||||||
JoinCode = joinCode.ToUpperInvariant(),
|
JoinCode = joinCode.ToUpperInvariant(),
|
||||||
Password = password,
|
Password = password
|
||||||
DisplayName = DisplayName
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -565,7 +491,6 @@ public class GameClient : IDisposable
|
|||||||
Send(new LeaveLobby());
|
Send(new LeaveLobby());
|
||||||
LobbyId = null;
|
LobbyId = null;
|
||||||
JoinCode = null;
|
JoinCode = null;
|
||||||
CurrentLobbyState = null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void StartGame()
|
public void StartGame()
|
||||||
|
|||||||
@@ -49,11 +49,6 @@ public enum PlayerRole { Crew, Impostor }
|
|||||||
public enum PlayerState { Alive, Dead }
|
public enum PlayerState { Alive, Dead }
|
||||||
|
|
||||||
[JsonConverter(typeof(StringEnumConverter))]
|
[JsonConverter(typeof(StringEnumConverter))]
|
||||||
// NOTE: `Voting` is reserved-but-unused on the wire as of 2026. The server
|
|
||||||
// keeps the entire vote cycle inside `Meeting` and uses MeetingStartedPayload
|
|
||||||
// timestamps (DiscussionEndTime / VotingEndTime) to distinguish sub-phases.
|
|
||||||
// The enum value is preserved here for serialization compatibility with old
|
|
||||||
// saves; new code should not assign it.
|
|
||||||
public enum GamePhase { Lobby, Loading, Playing, Meeting, Voting, Ended }
|
public enum GamePhase { Lobby, Loading, Playing, Meeting, Voting, Ended }
|
||||||
|
|
||||||
[JsonConverter(typeof(StringEnumConverter))]
|
[JsonConverter(typeof(StringEnumConverter))]
|
||||||
@@ -189,24 +184,6 @@ public class CreateLobby : Message
|
|||||||
|
|
||||||
[JsonProperty("taskCount")]
|
[JsonProperty("taskCount")]
|
||||||
public int TaskCount { get; set; } = 5;
|
public int TaskCount { get; set; } = 5;
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// P13b: optional per-lobby settings overrides supplied by the host.
|
|
||||||
/// Any field left null falls through to the server's current default
|
|
||||||
/// (snapshotted at lobby creation, immutable thereafter for this lobby).
|
|
||||||
/// </summary>
|
|
||||||
[JsonProperty("settings")]
|
|
||||||
public GameSettingsOverrides? Settings { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Optional. Live host display name from the nickname input field at
|
|
||||||
/// the moment of CreateLobby. ClientHello-time name is stale because
|
|
||||||
/// the handshake fires before the user has typed anything; this lets
|
|
||||||
/// the server pick up the freshly-typed name without a separate
|
|
||||||
/// rename round-trip.
|
|
||||||
/// </summary>
|
|
||||||
[JsonProperty("displayName")]
|
|
||||||
public string? DisplayName { get; set; }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class CreateLobbyResponse : Message
|
public class CreateLobbyResponse : Message
|
||||||
@@ -238,13 +215,6 @@ public class JoinLobby : Message
|
|||||||
|
|
||||||
[JsonProperty("password")]
|
[JsonProperty("password")]
|
||||||
public string? Password { get; set; }
|
public string? Password { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Optional. Live joiner display name from the nickname input field
|
|
||||||
/// at the moment of Join. See CreateLobby.DisplayName for rationale.
|
|
||||||
/// </summary>
|
|
||||||
[JsonProperty("displayName")]
|
|
||||||
public string? DisplayName { get; set; }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class JoinLobbyResponse : Message
|
public class JoinLobbyResponse : Message
|
||||||
@@ -653,15 +623,6 @@ public class PlayerEjectedPayload
|
|||||||
public PlayerRole Role { get; set; }
|
public PlayerRole Role { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class TaskStartedPayload
|
|
||||||
{
|
|
||||||
[JsonProperty("clientUuid")]
|
|
||||||
public string ClientUuid { get; set; } = "";
|
|
||||||
|
|
||||||
[JsonProperty("taskId")]
|
|
||||||
public string TaskId { get; set; } = "";
|
|
||||||
}
|
|
||||||
|
|
||||||
public class TaskCompletedPayload
|
public class TaskCompletedPayload
|
||||||
{
|
{
|
||||||
[JsonProperty("clientUuid")]
|
[JsonProperty("clientUuid")]
|
||||||
@@ -829,162 +790,6 @@ public class LobbyState
|
|||||||
/// <summary>True if map data has been loaded (or Overpass is disabled)</summary>
|
/// <summary>True if map data has been loaded (or Overpass is disabled)</summary>
|
||||||
[JsonProperty("mapDataReady")]
|
[JsonProperty("mapDataReady")]
|
||||||
public bool MapDataReady { get; set; } = true;
|
public bool MapDataReady { get; set; } = true;
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// P13b: full per-lobby settings snapshot. Clients use this for HUD
|
|
||||||
/// (button visibility, countdown timings, etc.) instead of hardcoded
|
|
||||||
/// values. Always populated for new server builds; old client builds
|
|
||||||
/// can ignore the field.
|
|
||||||
/// </summary>
|
|
||||||
[JsonProperty("settings")]
|
|
||||||
public GameSettings? Settings { get; set; }
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// P13b: per-lobby gameplay settings on the wire. Server populates this from
|
|
||||||
/// its per-lobby snapshot so clients can drive HUD logic from authoritative
|
|
||||||
/// values rather than hardcoded constants.
|
|
||||||
/// </summary>
|
|
||||||
public class GameSettings
|
|
||||||
{
|
|
||||||
// Round shape
|
|
||||||
[JsonProperty("maxPlayers")]
|
|
||||||
public int MaxPlayers { get; set; }
|
|
||||||
|
|
||||||
[JsonProperty("impostorCount")]
|
|
||||||
public int ImpostorCount { get; set; }
|
|
||||||
|
|
||||||
[JsonProperty("taskCount")]
|
|
||||||
public int TaskCount { get; set; }
|
|
||||||
|
|
||||||
[JsonProperty("tiePolicy")]
|
|
||||||
public string TiePolicy { get; set; } = "NoEject";
|
|
||||||
|
|
||||||
// Distances (m)
|
|
||||||
[JsonProperty("killDistanceM")]
|
|
||||||
public double KillDistanceM { get; set; }
|
|
||||||
|
|
||||||
[JsonProperty("reportDistanceM")]
|
|
||||||
public double ReportDistanceM { get; set; }
|
|
||||||
|
|
||||||
[JsonProperty("taskStartDistanceM")]
|
|
||||||
public double TaskStartDistanceM { get; set; }
|
|
||||||
|
|
||||||
[JsonProperty("meetingArrivalRadiusM")]
|
|
||||||
public double MeetingArrivalRadiusM { get; set; }
|
|
||||||
|
|
||||||
[JsonProperty("emergencyMeetingCallRadiusM")]
|
|
||||||
public double EmergencyMeetingCallRadiusM { get; set; }
|
|
||||||
|
|
||||||
[JsonProperty("repairStationDistanceM")]
|
|
||||||
public double RepairStationDistanceM { get; set; }
|
|
||||||
|
|
||||||
// Cooldowns / counts
|
|
||||||
[JsonProperty("killCooldownMs")]
|
|
||||||
public int KillCooldownMs { get; set; }
|
|
||||||
|
|
||||||
[JsonProperty("emergencyMeetingCooldownMs")]
|
|
||||||
public int EmergencyMeetingCooldownMs { get; set; }
|
|
||||||
|
|
||||||
[JsonProperty("maxEmergencyMeetingsPerPlayer")]
|
|
||||||
public int MaxEmergencyMeetingsPerPlayer { get; set; }
|
|
||||||
|
|
||||||
// Meeting phases (ms)
|
|
||||||
[JsonProperty("arrivalBaseMs")]
|
|
||||||
public int ArrivalBaseMs { get; set; }
|
|
||||||
|
|
||||||
[JsonProperty("allowedLateMs")]
|
|
||||||
public int AllowedLateMs { get; set; }
|
|
||||||
|
|
||||||
[JsonProperty("discussionPhaseMs")]
|
|
||||||
public int DiscussionPhaseMs { get; set; }
|
|
||||||
|
|
||||||
[JsonProperty("votingPhaseMs")]
|
|
||||||
public int VotingPhaseMs { get; set; }
|
|
||||||
|
|
||||||
// Sabotage
|
|
||||||
[JsonProperty("sabotageCooldownMs")]
|
|
||||||
public int SabotageCooldownMs { get; set; }
|
|
||||||
|
|
||||||
[JsonProperty("commsBlackoutDurationMs")]
|
|
||||||
public int CommsBlackoutDurationMs { get; set; }
|
|
||||||
|
|
||||||
[JsonProperty("criticalMeltdownDeadlineMs")]
|
|
||||||
public int CriticalMeltdownDeadlineMs { get; set; }
|
|
||||||
|
|
||||||
[JsonProperty("repairStationHoldMs")]
|
|
||||||
public int RepairStationHoldMs { get; set; }
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// P13b: host-supplied overrides at CreateLobby. Every field is nullable so
|
|
||||||
/// the host can opt into changing only what they care about; null = use the
|
|
||||||
/// server's current default at the moment of lobby creation.
|
|
||||||
/// </summary>
|
|
||||||
public class GameSettingsOverrides
|
|
||||||
{
|
|
||||||
[JsonProperty("maxPlayers")]
|
|
||||||
public int? MaxPlayers { get; set; }
|
|
||||||
|
|
||||||
[JsonProperty("impostorCount")]
|
|
||||||
public int? ImpostorCount { get; set; }
|
|
||||||
|
|
||||||
[JsonProperty("taskCount")]
|
|
||||||
public int? TaskCount { get; set; }
|
|
||||||
|
|
||||||
[JsonProperty("tiePolicy")]
|
|
||||||
public string? TiePolicy { get; set; }
|
|
||||||
|
|
||||||
[JsonProperty("killDistanceM")]
|
|
||||||
public double? KillDistanceM { get; set; }
|
|
||||||
|
|
||||||
[JsonProperty("reportDistanceM")]
|
|
||||||
public double? ReportDistanceM { get; set; }
|
|
||||||
|
|
||||||
[JsonProperty("taskStartDistanceM")]
|
|
||||||
public double? TaskStartDistanceM { get; set; }
|
|
||||||
|
|
||||||
[JsonProperty("meetingArrivalRadiusM")]
|
|
||||||
public double? MeetingArrivalRadiusM { get; set; }
|
|
||||||
|
|
||||||
[JsonProperty("emergencyMeetingCallRadiusM")]
|
|
||||||
public double? EmergencyMeetingCallRadiusM { get; set; }
|
|
||||||
|
|
||||||
[JsonProperty("repairStationDistanceM")]
|
|
||||||
public double? RepairStationDistanceM { get; set; }
|
|
||||||
|
|
||||||
[JsonProperty("killCooldownMs")]
|
|
||||||
public int? KillCooldownMs { get; set; }
|
|
||||||
|
|
||||||
[JsonProperty("emergencyMeetingCooldownMs")]
|
|
||||||
public int? EmergencyMeetingCooldownMs { get; set; }
|
|
||||||
|
|
||||||
[JsonProperty("maxEmergencyMeetingsPerPlayer")]
|
|
||||||
public int? MaxEmergencyMeetingsPerPlayer { get; set; }
|
|
||||||
|
|
||||||
[JsonProperty("arrivalBaseMs")]
|
|
||||||
public int? ArrivalBaseMs { get; set; }
|
|
||||||
|
|
||||||
[JsonProperty("allowedLateMs")]
|
|
||||||
public int? AllowedLateMs { get; set; }
|
|
||||||
|
|
||||||
[JsonProperty("discussionPhaseMs")]
|
|
||||||
public int? DiscussionPhaseMs { get; set; }
|
|
||||||
|
|
||||||
[JsonProperty("votingPhaseMs")]
|
|
||||||
public int? VotingPhaseMs { get; set; }
|
|
||||||
|
|
||||||
[JsonProperty("sabotageCooldownMs")]
|
|
||||||
public int? SabotageCooldownMs { get; set; }
|
|
||||||
|
|
||||||
[JsonProperty("commsBlackoutDurationMs")]
|
|
||||||
public int? CommsBlackoutDurationMs { get; set; }
|
|
||||||
|
|
||||||
[JsonProperty("criticalMeltdownDeadlineMs")]
|
|
||||||
public int? CriticalMeltdownDeadlineMs { get; set; }
|
|
||||||
|
|
||||||
[JsonProperty("repairStationHoldMs")]
|
|
||||||
public int? RepairStationHoldMs { get; set; }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Map data classes for rendering - compact format from server
|
// Map data classes for rendering - compact format from server
|
||||||
|
|||||||
@@ -1,7 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 1b8722ddfeb323a4da4a18797ed7df32
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 3f5e4c6e6f8367342893fd7030d1b4cb
|
|
||||||
folderAsset: yes
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 8b02f5e5a2bd2df479219d58104b58e4
|
|
||||||
folderAsset: yes
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 9f4fa73205ab4db41871cc3e9260180f
|
|
||||||
folderAsset: yes
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 5d7070679a02c0f478502a9eac088352
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: d08b4a9b983113c4a9c56b2738a85291
|
|
||||||
folderAsset: yes
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
@@ -1,53 +0,0 @@
|
|||||||
%YAML 1.1
|
|
||||||
%TAG !u! tag:unity3d.com,2011:
|
|
||||||
--- !u!74 &7400000
|
|
||||||
AnimationClip:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_Name: border anim
|
|
||||||
serializedVersion: 7
|
|
||||||
m_Legacy: 0
|
|
||||||
m_Compressed: 0
|
|
||||||
m_UseHighQualityCurve: 1
|
|
||||||
m_RotationCurves: []
|
|
||||||
m_CompressedRotationCurves: []
|
|
||||||
m_EulerCurves: []
|
|
||||||
m_PositionCurves: []
|
|
||||||
m_ScaleCurves: []
|
|
||||||
m_FloatCurves: []
|
|
||||||
m_PPtrCurves: []
|
|
||||||
m_SampleRate: 60
|
|
||||||
m_WrapMode: 0
|
|
||||||
m_Bounds:
|
|
||||||
m_Center: {x: 0, y: 0, z: 0}
|
|
||||||
m_Extent: {x: 0, y: 0, z: 0}
|
|
||||||
m_ClipBindingConstant:
|
|
||||||
genericBindings: []
|
|
||||||
pptrCurveMapping: []
|
|
||||||
m_AnimationClipSettings:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_AdditiveReferencePoseClip: {fileID: 0}
|
|
||||||
m_AdditiveReferencePoseTime: 0
|
|
||||||
m_StartTime: 0
|
|
||||||
m_StopTime: 1
|
|
||||||
m_OrientationOffsetY: 0
|
|
||||||
m_Level: 0
|
|
||||||
m_CycleOffset: 0
|
|
||||||
m_HasAdditiveReferencePose: 0
|
|
||||||
m_LoopTime: 1
|
|
||||||
m_LoopBlend: 0
|
|
||||||
m_LoopBlendOrientation: 0
|
|
||||||
m_LoopBlendPositionY: 0
|
|
||||||
m_LoopBlendPositionXZ: 0
|
|
||||||
m_KeepOriginalOrientation: 0
|
|
||||||
m_KeepOriginalPositionY: 1
|
|
||||||
m_KeepOriginalPositionXZ: 0
|
|
||||||
m_HeightFromFeet: 0
|
|
||||||
m_Mirror: 0
|
|
||||||
m_EditorCurves: []
|
|
||||||
m_EulerEditorCurves: []
|
|
||||||
m_HasGenericRootTransform: 0
|
|
||||||
m_HasMotionFloatCurves: 0
|
|
||||||
m_Events: []
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: f5b8b3d1765137a40a4094e14ea0b1c8
|
|
||||||
NativeFormatImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
mainObjectFileID: 7400000
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
@@ -1,72 +0,0 @@
|
|||||||
%YAML 1.1
|
|
||||||
%TAG !u! tag:unity3d.com,2011:
|
|
||||||
--- !u!1102 &-7814012930283619509
|
|
||||||
AnimatorState:
|
|
||||||
serializedVersion: 6
|
|
||||||
m_ObjectHideFlags: 1
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_Name: New Animation
|
|
||||||
m_Speed: 1
|
|
||||||
m_CycleOffset: 0
|
|
||||||
m_Transitions: []
|
|
||||||
m_StateMachineBehaviours: []
|
|
||||||
m_Position: {x: 50, y: 50, z: 0}
|
|
||||||
m_IKOnFeet: 0
|
|
||||||
m_WriteDefaultValues: 1
|
|
||||||
m_Mirror: 0
|
|
||||||
m_SpeedParameterActive: 0
|
|
||||||
m_MirrorParameterActive: 0
|
|
||||||
m_CycleOffsetParameterActive: 0
|
|
||||||
m_TimeParameterActive: 0
|
|
||||||
m_Motion: {fileID: 7400000, guid: f5b8b3d1765137a40a4094e14ea0b1c8, type: 2}
|
|
||||||
m_Tag:
|
|
||||||
m_SpeedParameter:
|
|
||||||
m_MirrorParameter:
|
|
||||||
m_CycleOffsetParameter:
|
|
||||||
m_TimeParameter:
|
|
||||||
--- !u!91 &9100000
|
|
||||||
AnimatorController:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_Name: border
|
|
||||||
serializedVersion: 5
|
|
||||||
m_AnimatorParameters: []
|
|
||||||
m_AnimatorLayers:
|
|
||||||
- serializedVersion: 5
|
|
||||||
m_Name: Base Layer
|
|
||||||
m_StateMachine: {fileID: 2563971018880681404}
|
|
||||||
m_Mask: {fileID: 0}
|
|
||||||
m_Motions: []
|
|
||||||
m_Behaviours: []
|
|
||||||
m_BlendingMode: 0
|
|
||||||
m_SyncedLayerIndex: -1
|
|
||||||
m_DefaultWeight: 0
|
|
||||||
m_IKPass: 0
|
|
||||||
m_SyncedLayerAffectsTiming: 0
|
|
||||||
m_Controller: {fileID: 9100000}
|
|
||||||
--- !u!1107 &2563971018880681404
|
|
||||||
AnimatorStateMachine:
|
|
||||||
serializedVersion: 6
|
|
||||||
m_ObjectHideFlags: 1
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_Name: Base Layer
|
|
||||||
m_ChildStates:
|
|
||||||
- serializedVersion: 1
|
|
||||||
m_State: {fileID: -7814012930283619509}
|
|
||||||
m_Position: {x: 270, y: 0, z: 0}
|
|
||||||
m_ChildStateMachines: []
|
|
||||||
m_AnyStateTransitions: []
|
|
||||||
m_EntryTransitions: []
|
|
||||||
m_StateMachineTransitions: {}
|
|
||||||
m_StateMachineBehaviours: []
|
|
||||||
m_AnyStatePosition: {x: 50, y: 20, z: 0}
|
|
||||||
m_EntryPosition: {x: 50, y: 120, z: 0}
|
|
||||||
m_ExitPosition: {x: 800, y: 120, z: 0}
|
|
||||||
m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
|
|
||||||
m_DefaultState: {fileID: -7814012930283619509}
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: cecdd3ffd08949d49bfa9bad93dddd3b
|
|
||||||
NativeFormatImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
mainObjectFileID: 9100000
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
|
Before Width: | Height: | Size: 469 KiB |
|
Before Width: | Height: | Size: 435 KiB |
|
Before Width: | Height: | Size: 405 KiB |
|
Before Width: | Height: | Size: 371 KiB |
|
Before Width: | Height: | Size: 340 KiB |
@@ -1,117 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: b3f2382597d46c640ab466c1609bd193
|
|
||||||
TextureImporter:
|
|
||||||
internalIDToNameTable: []
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 13
|
|
||||||
mipmaps:
|
|
||||||
mipMapMode: 0
|
|
||||||
enableMipMap: 0
|
|
||||||
sRGBTexture: 1
|
|
||||||
linearTexture: 0
|
|
||||||
fadeOut: 0
|
|
||||||
borderMipMap: 0
|
|
||||||
mipMapsPreserveCoverage: 0
|
|
||||||
alphaTestReferenceValue: 0.5
|
|
||||||
mipMapFadeDistanceStart: 1
|
|
||||||
mipMapFadeDistanceEnd: 3
|
|
||||||
bumpmap:
|
|
||||||
convertToNormalMap: 0
|
|
||||||
externalNormalMap: 0
|
|
||||||
heightScale: 0.25
|
|
||||||
normalMapFilter: 0
|
|
||||||
flipGreenChannel: 0
|
|
||||||
isReadable: 0
|
|
||||||
streamingMipmaps: 0
|
|
||||||
streamingMipmapsPriority: 0
|
|
||||||
vTOnly: 0
|
|
||||||
ignoreMipmapLimit: 0
|
|
||||||
grayScaleToAlpha: 0
|
|
||||||
generateCubemap: 6
|
|
||||||
cubemapConvolution: 0
|
|
||||||
seamlessCubemap: 0
|
|
||||||
textureFormat: 1
|
|
||||||
maxTextureSize: 2048
|
|
||||||
textureSettings:
|
|
||||||
serializedVersion: 2
|
|
||||||
filterMode: 1
|
|
||||||
aniso: 1
|
|
||||||
mipBias: 0
|
|
||||||
wrapU: 1
|
|
||||||
wrapV: 1
|
|
||||||
wrapW: 0
|
|
||||||
nPOTScale: 0
|
|
||||||
lightmap: 0
|
|
||||||
compressionQuality: 50
|
|
||||||
spriteMode: 1
|
|
||||||
spriteExtrude: 1
|
|
||||||
spriteMeshType: 1
|
|
||||||
alignment: 0
|
|
||||||
spritePivot: {x: 0.5, y: 0.5}
|
|
||||||
spritePixelsToUnits: 100
|
|
||||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
|
||||||
spriteGenerateFallbackPhysicsShape: 1
|
|
||||||
alphaUsage: 1
|
|
||||||
alphaIsTransparency: 1
|
|
||||||
spriteTessellationDetail: -1
|
|
||||||
textureType: 8
|
|
||||||
textureShape: 1
|
|
||||||
singleChannelComponent: 0
|
|
||||||
flipbookRows: 1
|
|
||||||
flipbookColumns: 1
|
|
||||||
maxTextureSizeSet: 0
|
|
||||||
compressionQualitySet: 0
|
|
||||||
textureFormatSet: 0
|
|
||||||
ignorePngGamma: 0
|
|
||||||
applyGammaDecoding: 0
|
|
||||||
swizzle: 50462976
|
|
||||||
cookieLightType: 0
|
|
||||||
platformSettings:
|
|
||||||
- serializedVersion: 4
|
|
||||||
buildTarget: DefaultTexturePlatform
|
|
||||||
maxTextureSize: 2048
|
|
||||||
resizeAlgorithm: 0
|
|
||||||
textureFormat: -1
|
|
||||||
textureCompression: 1
|
|
||||||
compressionQuality: 50
|
|
||||||
crunchedCompression: 0
|
|
||||||
allowsAlphaSplitting: 0
|
|
||||||
overridden: 0
|
|
||||||
ignorePlatformSupport: 0
|
|
||||||
androidETC2FallbackOverride: 0
|
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
|
||||||
- serializedVersion: 4
|
|
||||||
buildTarget: Standalone
|
|
||||||
maxTextureSize: 2048
|
|
||||||
resizeAlgorithm: 0
|
|
||||||
textureFormat: -1
|
|
||||||
textureCompression: 1
|
|
||||||
compressionQuality: 50
|
|
||||||
crunchedCompression: 0
|
|
||||||
allowsAlphaSplitting: 0
|
|
||||||
overridden: 0
|
|
||||||
ignorePlatformSupport: 0
|
|
||||||
androidETC2FallbackOverride: 0
|
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
|
||||||
spriteSheet:
|
|
||||||
serializedVersion: 2
|
|
||||||
sprites: []
|
|
||||||
outline: []
|
|
||||||
customData:
|
|
||||||
physicsShape: []
|
|
||||||
bones: []
|
|
||||||
spriteID: 5e97eb03825dee720800000000000000
|
|
||||||
internalID: 0
|
|
||||||
vertices: []
|
|
||||||
indices:
|
|
||||||
edges: []
|
|
||||||
weights: []
|
|
||||||
secondaryTextures: []
|
|
||||||
spriteCustomMetadata:
|
|
||||||
entries: []
|
|
||||||
nameFileIdTable: {}
|
|
||||||
mipmapLimitGroupName:
|
|
||||||
pSDRemoveMatte: 0
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
|
Before Width: | Height: | Size: 308 KiB |
@@ -1,117 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: c1f13902211756a4d9b7246f52ac5005
|
|
||||||
TextureImporter:
|
|
||||||
internalIDToNameTable: []
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 13
|
|
||||||
mipmaps:
|
|
||||||
mipMapMode: 0
|
|
||||||
enableMipMap: 0
|
|
||||||
sRGBTexture: 1
|
|
||||||
linearTexture: 0
|
|
||||||
fadeOut: 0
|
|
||||||
borderMipMap: 0
|
|
||||||
mipMapsPreserveCoverage: 0
|
|
||||||
alphaTestReferenceValue: 0.5
|
|
||||||
mipMapFadeDistanceStart: 1
|
|
||||||
mipMapFadeDistanceEnd: 3
|
|
||||||
bumpmap:
|
|
||||||
convertToNormalMap: 0
|
|
||||||
externalNormalMap: 0
|
|
||||||
heightScale: 0.25
|
|
||||||
normalMapFilter: 0
|
|
||||||
flipGreenChannel: 0
|
|
||||||
isReadable: 0
|
|
||||||
streamingMipmaps: 0
|
|
||||||
streamingMipmapsPriority: 0
|
|
||||||
vTOnly: 0
|
|
||||||
ignoreMipmapLimit: 0
|
|
||||||
grayScaleToAlpha: 0
|
|
||||||
generateCubemap: 6
|
|
||||||
cubemapConvolution: 0
|
|
||||||
seamlessCubemap: 0
|
|
||||||
textureFormat: 1
|
|
||||||
maxTextureSize: 2048
|
|
||||||
textureSettings:
|
|
||||||
serializedVersion: 2
|
|
||||||
filterMode: 1
|
|
||||||
aniso: 1
|
|
||||||
mipBias: 0
|
|
||||||
wrapU: 1
|
|
||||||
wrapV: 1
|
|
||||||
wrapW: 0
|
|
||||||
nPOTScale: 0
|
|
||||||
lightmap: 0
|
|
||||||
compressionQuality: 50
|
|
||||||
spriteMode: 1
|
|
||||||
spriteExtrude: 1
|
|
||||||
spriteMeshType: 1
|
|
||||||
alignment: 0
|
|
||||||
spritePivot: {x: 0.5, y: 0.5}
|
|
||||||
spritePixelsToUnits: 100
|
|
||||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
|
||||||
spriteGenerateFallbackPhysicsShape: 1
|
|
||||||
alphaUsage: 1
|
|
||||||
alphaIsTransparency: 1
|
|
||||||
spriteTessellationDetail: -1
|
|
||||||
textureType: 8
|
|
||||||
textureShape: 1
|
|
||||||
singleChannelComponent: 0
|
|
||||||
flipbookRows: 1
|
|
||||||
flipbookColumns: 1
|
|
||||||
maxTextureSizeSet: 0
|
|
||||||
compressionQualitySet: 0
|
|
||||||
textureFormatSet: 0
|
|
||||||
ignorePngGamma: 0
|
|
||||||
applyGammaDecoding: 0
|
|
||||||
swizzle: 50462976
|
|
||||||
cookieLightType: 0
|
|
||||||
platformSettings:
|
|
||||||
- serializedVersion: 4
|
|
||||||
buildTarget: DefaultTexturePlatform
|
|
||||||
maxTextureSize: 2048
|
|
||||||
resizeAlgorithm: 0
|
|
||||||
textureFormat: -1
|
|
||||||
textureCompression: 1
|
|
||||||
compressionQuality: 50
|
|
||||||
crunchedCompression: 0
|
|
||||||
allowsAlphaSplitting: 0
|
|
||||||
overridden: 0
|
|
||||||
ignorePlatformSupport: 0
|
|
||||||
androidETC2FallbackOverride: 0
|
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
|
||||||
- serializedVersion: 4
|
|
||||||
buildTarget: Standalone
|
|
||||||
maxTextureSize: 2048
|
|
||||||
resizeAlgorithm: 0
|
|
||||||
textureFormat: -1
|
|
||||||
textureCompression: 1
|
|
||||||
compressionQuality: 50
|
|
||||||
crunchedCompression: 0
|
|
||||||
allowsAlphaSplitting: 0
|
|
||||||
overridden: 0
|
|
||||||
ignorePlatformSupport: 0
|
|
||||||
androidETC2FallbackOverride: 0
|
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
|
||||||
spriteSheet:
|
|
||||||
serializedVersion: 2
|
|
||||||
sprites: []
|
|
||||||
outline: []
|
|
||||||
customData:
|
|
||||||
physicsShape: []
|
|
||||||
bones: []
|
|
||||||
spriteID: 5e97eb03825dee720800000000000000
|
|
||||||
internalID: 0
|
|
||||||
vertices: []
|
|
||||||
indices:
|
|
||||||
edges: []
|
|
||||||
weights: []
|
|
||||||
secondaryTextures: []
|
|
||||||
spriteCustomMetadata:
|
|
||||||
entries: []
|
|
||||||
nameFileIdTable: {}
|
|
||||||
mipmapLimitGroupName:
|
|
||||||
pSDRemoveMatte: 0
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
|
Before Width: | Height: | Size: 276 KiB |
@@ -1,117 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 997acda7ef7df0e4eaeb2a8dff863abf
|
|
||||||
TextureImporter:
|
|
||||||
internalIDToNameTable: []
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 13
|
|
||||||
mipmaps:
|
|
||||||
mipMapMode: 0
|
|
||||||
enableMipMap: 0
|
|
||||||
sRGBTexture: 1
|
|
||||||
linearTexture: 0
|
|
||||||
fadeOut: 0
|
|
||||||
borderMipMap: 0
|
|
||||||
mipMapsPreserveCoverage: 0
|
|
||||||
alphaTestReferenceValue: 0.5
|
|
||||||
mipMapFadeDistanceStart: 1
|
|
||||||
mipMapFadeDistanceEnd: 3
|
|
||||||
bumpmap:
|
|
||||||
convertToNormalMap: 0
|
|
||||||
externalNormalMap: 0
|
|
||||||
heightScale: 0.25
|
|
||||||
normalMapFilter: 0
|
|
||||||
flipGreenChannel: 0
|
|
||||||
isReadable: 0
|
|
||||||
streamingMipmaps: 0
|
|
||||||
streamingMipmapsPriority: 0
|
|
||||||
vTOnly: 0
|
|
||||||
ignoreMipmapLimit: 0
|
|
||||||
grayScaleToAlpha: 0
|
|
||||||
generateCubemap: 6
|
|
||||||
cubemapConvolution: 0
|
|
||||||
seamlessCubemap: 0
|
|
||||||
textureFormat: 1
|
|
||||||
maxTextureSize: 2048
|
|
||||||
textureSettings:
|
|
||||||
serializedVersion: 2
|
|
||||||
filterMode: 1
|
|
||||||
aniso: 1
|
|
||||||
mipBias: 0
|
|
||||||
wrapU: 1
|
|
||||||
wrapV: 1
|
|
||||||
wrapW: 0
|
|
||||||
nPOTScale: 0
|
|
||||||
lightmap: 0
|
|
||||||
compressionQuality: 50
|
|
||||||
spriteMode: 1
|
|
||||||
spriteExtrude: 1
|
|
||||||
spriteMeshType: 1
|
|
||||||
alignment: 0
|
|
||||||
spritePivot: {x: 0.5, y: 0.5}
|
|
||||||
spritePixelsToUnits: 100
|
|
||||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
|
||||||
spriteGenerateFallbackPhysicsShape: 1
|
|
||||||
alphaUsage: 1
|
|
||||||
alphaIsTransparency: 1
|
|
||||||
spriteTessellationDetail: -1
|
|
||||||
textureType: 8
|
|
||||||
textureShape: 1
|
|
||||||
singleChannelComponent: 0
|
|
||||||
flipbookRows: 1
|
|
||||||
flipbookColumns: 1
|
|
||||||
maxTextureSizeSet: 0
|
|
||||||
compressionQualitySet: 0
|
|
||||||
textureFormatSet: 0
|
|
||||||
ignorePngGamma: 0
|
|
||||||
applyGammaDecoding: 0
|
|
||||||
swizzle: 50462976
|
|
||||||
cookieLightType: 0
|
|
||||||
platformSettings:
|
|
||||||
- serializedVersion: 4
|
|
||||||
buildTarget: DefaultTexturePlatform
|
|
||||||
maxTextureSize: 2048
|
|
||||||
resizeAlgorithm: 0
|
|
||||||
textureFormat: -1
|
|
||||||
textureCompression: 1
|
|
||||||
compressionQuality: 50
|
|
||||||
crunchedCompression: 0
|
|
||||||
allowsAlphaSplitting: 0
|
|
||||||
overridden: 0
|
|
||||||
ignorePlatformSupport: 0
|
|
||||||
androidETC2FallbackOverride: 0
|
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
|
||||||
- serializedVersion: 4
|
|
||||||
buildTarget: Standalone
|
|
||||||
maxTextureSize: 2048
|
|
||||||
resizeAlgorithm: 0
|
|
||||||
textureFormat: -1
|
|
||||||
textureCompression: 1
|
|
||||||
compressionQuality: 50
|
|
||||||
crunchedCompression: 0
|
|
||||||
allowsAlphaSplitting: 0
|
|
||||||
overridden: 0
|
|
||||||
ignorePlatformSupport: 0
|
|
||||||
androidETC2FallbackOverride: 0
|
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
|
||||||
spriteSheet:
|
|
||||||
serializedVersion: 2
|
|
||||||
sprites: []
|
|
||||||
outline: []
|
|
||||||
customData:
|
|
||||||
physicsShape: []
|
|
||||||
bones: []
|
|
||||||
spriteID: 5e97eb03825dee720800000000000000
|
|
||||||
internalID: 0
|
|
||||||
vertices: []
|
|
||||||
indices:
|
|
||||||
edges: []
|
|
||||||
weights: []
|
|
||||||
secondaryTextures: []
|
|
||||||
spriteCustomMetadata:
|
|
||||||
entries: []
|
|
||||||
nameFileIdTable: {}
|
|
||||||
mipmapLimitGroupName:
|
|
||||||
pSDRemoveMatte: 0
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
|
Before Width: | Height: | Size: 248 KiB |
@@ -1,117 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 8292414d4bad4364f874555af2f7e712
|
|
||||||
TextureImporter:
|
|
||||||
internalIDToNameTable: []
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 13
|
|
||||||
mipmaps:
|
|
||||||
mipMapMode: 0
|
|
||||||
enableMipMap: 0
|
|
||||||
sRGBTexture: 1
|
|
||||||
linearTexture: 0
|
|
||||||
fadeOut: 0
|
|
||||||
borderMipMap: 0
|
|
||||||
mipMapsPreserveCoverage: 0
|
|
||||||
alphaTestReferenceValue: 0.5
|
|
||||||
mipMapFadeDistanceStart: 1
|
|
||||||
mipMapFadeDistanceEnd: 3
|
|
||||||
bumpmap:
|
|
||||||
convertToNormalMap: 0
|
|
||||||
externalNormalMap: 0
|
|
||||||
heightScale: 0.25
|
|
||||||
normalMapFilter: 0
|
|
||||||
flipGreenChannel: 0
|
|
||||||
isReadable: 0
|
|
||||||
streamingMipmaps: 0
|
|
||||||
streamingMipmapsPriority: 0
|
|
||||||
vTOnly: 0
|
|
||||||
ignoreMipmapLimit: 0
|
|
||||||
grayScaleToAlpha: 0
|
|
||||||
generateCubemap: 6
|
|
||||||
cubemapConvolution: 0
|
|
||||||
seamlessCubemap: 0
|
|
||||||
textureFormat: 1
|
|
||||||
maxTextureSize: 2048
|
|
||||||
textureSettings:
|
|
||||||
serializedVersion: 2
|
|
||||||
filterMode: 1
|
|
||||||
aniso: 1
|
|
||||||
mipBias: 0
|
|
||||||
wrapU: 1
|
|
||||||
wrapV: 1
|
|
||||||
wrapW: 0
|
|
||||||
nPOTScale: 0
|
|
||||||
lightmap: 0
|
|
||||||
compressionQuality: 50
|
|
||||||
spriteMode: 1
|
|
||||||
spriteExtrude: 1
|
|
||||||
spriteMeshType: 1
|
|
||||||
alignment: 0
|
|
||||||
spritePivot: {x: 0.5, y: 0.5}
|
|
||||||
spritePixelsToUnits: 100
|
|
||||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
|
||||||
spriteGenerateFallbackPhysicsShape: 1
|
|
||||||
alphaUsage: 1
|
|
||||||
alphaIsTransparency: 1
|
|
||||||
spriteTessellationDetail: -1
|
|
||||||
textureType: 8
|
|
||||||
textureShape: 1
|
|
||||||
singleChannelComponent: 0
|
|
||||||
flipbookRows: 1
|
|
||||||
flipbookColumns: 1
|
|
||||||
maxTextureSizeSet: 0
|
|
||||||
compressionQualitySet: 0
|
|
||||||
textureFormatSet: 0
|
|
||||||
ignorePngGamma: 0
|
|
||||||
applyGammaDecoding: 0
|
|
||||||
swizzle: 50462976
|
|
||||||
cookieLightType: 0
|
|
||||||
platformSettings:
|
|
||||||
- serializedVersion: 4
|
|
||||||
buildTarget: DefaultTexturePlatform
|
|
||||||
maxTextureSize: 2048
|
|
||||||
resizeAlgorithm: 0
|
|
||||||
textureFormat: -1
|
|
||||||
textureCompression: 1
|
|
||||||
compressionQuality: 50
|
|
||||||
crunchedCompression: 0
|
|
||||||
allowsAlphaSplitting: 0
|
|
||||||
overridden: 0
|
|
||||||
ignorePlatformSupport: 0
|
|
||||||
androidETC2FallbackOverride: 0
|
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
|
||||||
- serializedVersion: 4
|
|
||||||
buildTarget: Standalone
|
|
||||||
maxTextureSize: 2048
|
|
||||||
resizeAlgorithm: 0
|
|
||||||
textureFormat: -1
|
|
||||||
textureCompression: 1
|
|
||||||
compressionQuality: 50
|
|
||||||
crunchedCompression: 0
|
|
||||||
allowsAlphaSplitting: 0
|
|
||||||
overridden: 0
|
|
||||||
ignorePlatformSupport: 0
|
|
||||||
androidETC2FallbackOverride: 0
|
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
|
||||||
spriteSheet:
|
|
||||||
serializedVersion: 2
|
|
||||||
sprites: []
|
|
||||||
outline: []
|
|
||||||
customData:
|
|
||||||
physicsShape: []
|
|
||||||
bones: []
|
|
||||||
spriteID: 5e97eb03825dee720800000000000000
|
|
||||||
internalID: 0
|
|
||||||
vertices: []
|
|
||||||
indices:
|
|
||||||
edges: []
|
|
||||||
weights: []
|
|
||||||
secondaryTextures: []
|
|
||||||
spriteCustomMetadata:
|
|
||||||
entries: []
|
|
||||||
nameFileIdTable: {}
|
|
||||||
mipmapLimitGroupName:
|
|
||||||
pSDRemoveMatte: 0
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
|
Before Width: | Height: | Size: 248 KiB |
@@ -1,117 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 3b63bdfb82042f94887a00a48094f69a
|
|
||||||
TextureImporter:
|
|
||||||
internalIDToNameTable: []
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 13
|
|
||||||
mipmaps:
|
|
||||||
mipMapMode: 0
|
|
||||||
enableMipMap: 0
|
|
||||||
sRGBTexture: 1
|
|
||||||
linearTexture: 0
|
|
||||||
fadeOut: 0
|
|
||||||
borderMipMap: 0
|
|
||||||
mipMapsPreserveCoverage: 0
|
|
||||||
alphaTestReferenceValue: 0.5
|
|
||||||
mipMapFadeDistanceStart: 1
|
|
||||||
mipMapFadeDistanceEnd: 3
|
|
||||||
bumpmap:
|
|
||||||
convertToNormalMap: 0
|
|
||||||
externalNormalMap: 0
|
|
||||||
heightScale: 0.25
|
|
||||||
normalMapFilter: 0
|
|
||||||
flipGreenChannel: 0
|
|
||||||
isReadable: 0
|
|
||||||
streamingMipmaps: 0
|
|
||||||
streamingMipmapsPriority: 0
|
|
||||||
vTOnly: 0
|
|
||||||
ignoreMipmapLimit: 0
|
|
||||||
grayScaleToAlpha: 0
|
|
||||||
generateCubemap: 6
|
|
||||||
cubemapConvolution: 0
|
|
||||||
seamlessCubemap: 0
|
|
||||||
textureFormat: 1
|
|
||||||
maxTextureSize: 2048
|
|
||||||
textureSettings:
|
|
||||||
serializedVersion: 2
|
|
||||||
filterMode: 1
|
|
||||||
aniso: 1
|
|
||||||
mipBias: 0
|
|
||||||
wrapU: 1
|
|
||||||
wrapV: 1
|
|
||||||
wrapW: 0
|
|
||||||
nPOTScale: 0
|
|
||||||
lightmap: 0
|
|
||||||
compressionQuality: 50
|
|
||||||
spriteMode: 1
|
|
||||||
spriteExtrude: 1
|
|
||||||
spriteMeshType: 1
|
|
||||||
alignment: 0
|
|
||||||
spritePivot: {x: 0.5, y: 0.5}
|
|
||||||
spritePixelsToUnits: 100
|
|
||||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
|
||||||
spriteGenerateFallbackPhysicsShape: 1
|
|
||||||
alphaUsage: 1
|
|
||||||
alphaIsTransparency: 1
|
|
||||||
spriteTessellationDetail: -1
|
|
||||||
textureType: 8
|
|
||||||
textureShape: 1
|
|
||||||
singleChannelComponent: 0
|
|
||||||
flipbookRows: 1
|
|
||||||
flipbookColumns: 1
|
|
||||||
maxTextureSizeSet: 0
|
|
||||||
compressionQualitySet: 0
|
|
||||||
textureFormatSet: 0
|
|
||||||
ignorePngGamma: 0
|
|
||||||
applyGammaDecoding: 0
|
|
||||||
swizzle: 50462976
|
|
||||||
cookieLightType: 0
|
|
||||||
platformSettings:
|
|
||||||
- serializedVersion: 4
|
|
||||||
buildTarget: DefaultTexturePlatform
|
|
||||||
maxTextureSize: 2048
|
|
||||||
resizeAlgorithm: 0
|
|
||||||
textureFormat: -1
|
|
||||||
textureCompression: 1
|
|
||||||
compressionQuality: 50
|
|
||||||
crunchedCompression: 0
|
|
||||||
allowsAlphaSplitting: 0
|
|
||||||
overridden: 0
|
|
||||||
ignorePlatformSupport: 0
|
|
||||||
androidETC2FallbackOverride: 0
|
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
|
||||||
- serializedVersion: 4
|
|
||||||
buildTarget: Standalone
|
|
||||||
maxTextureSize: 2048
|
|
||||||
resizeAlgorithm: 0
|
|
||||||
textureFormat: -1
|
|
||||||
textureCompression: 1
|
|
||||||
compressionQuality: 50
|
|
||||||
crunchedCompression: 0
|
|
||||||
allowsAlphaSplitting: 0
|
|
||||||
overridden: 0
|
|
||||||
ignorePlatformSupport: 0
|
|
||||||
androidETC2FallbackOverride: 0
|
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
|
||||||
spriteSheet:
|
|
||||||
serializedVersion: 2
|
|
||||||
sprites: []
|
|
||||||
outline: []
|
|
||||||
customData:
|
|
||||||
physicsShape: []
|
|
||||||
bones: []
|
|
||||||
spriteID: 5e97eb03825dee720800000000000000
|
|
||||||
internalID: 0
|
|
||||||
vertices: []
|
|
||||||
indices:
|
|
||||||
edges: []
|
|
||||||
weights: []
|
|
||||||
secondaryTextures: []
|
|
||||||
spriteCustomMetadata:
|
|
||||||
entries: []
|
|
||||||
nameFileIdTable: {}
|
|
||||||
mipmapLimitGroupName:
|
|
||||||
pSDRemoveMatte: 0
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
|
Before Width: | Height: | Size: 156 KiB |
@@ -1,117 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: ae21ad83b0f7d5941822a82c37238864
|
|
||||||
TextureImporter:
|
|
||||||
internalIDToNameTable: []
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 13
|
|
||||||
mipmaps:
|
|
||||||
mipMapMode: 0
|
|
||||||
enableMipMap: 0
|
|
||||||
sRGBTexture: 1
|
|
||||||
linearTexture: 0
|
|
||||||
fadeOut: 0
|
|
||||||
borderMipMap: 0
|
|
||||||
mipMapsPreserveCoverage: 0
|
|
||||||
alphaTestReferenceValue: 0.5
|
|
||||||
mipMapFadeDistanceStart: 1
|
|
||||||
mipMapFadeDistanceEnd: 3
|
|
||||||
bumpmap:
|
|
||||||
convertToNormalMap: 0
|
|
||||||
externalNormalMap: 0
|
|
||||||
heightScale: 0.25
|
|
||||||
normalMapFilter: 0
|
|
||||||
flipGreenChannel: 0
|
|
||||||
isReadable: 0
|
|
||||||
streamingMipmaps: 0
|
|
||||||
streamingMipmapsPriority: 0
|
|
||||||
vTOnly: 0
|
|
||||||
ignoreMipmapLimit: 0
|
|
||||||
grayScaleToAlpha: 0
|
|
||||||
generateCubemap: 6
|
|
||||||
cubemapConvolution: 0
|
|
||||||
seamlessCubemap: 0
|
|
||||||
textureFormat: 1
|
|
||||||
maxTextureSize: 2048
|
|
||||||
textureSettings:
|
|
||||||
serializedVersion: 2
|
|
||||||
filterMode: 1
|
|
||||||
aniso: 1
|
|
||||||
mipBias: 0
|
|
||||||
wrapU: 1
|
|
||||||
wrapV: 1
|
|
||||||
wrapW: 0
|
|
||||||
nPOTScale: 0
|
|
||||||
lightmap: 0
|
|
||||||
compressionQuality: 50
|
|
||||||
spriteMode: 1
|
|
||||||
spriteExtrude: 1
|
|
||||||
spriteMeshType: 1
|
|
||||||
alignment: 0
|
|
||||||
spritePivot: {x: 0.5, y: 0.5}
|
|
||||||
spritePixelsToUnits: 100
|
|
||||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
|
||||||
spriteGenerateFallbackPhysicsShape: 1
|
|
||||||
alphaUsage: 1
|
|
||||||
alphaIsTransparency: 1
|
|
||||||
spriteTessellationDetail: -1
|
|
||||||
textureType: 8
|
|
||||||
textureShape: 1
|
|
||||||
singleChannelComponent: 0
|
|
||||||
flipbookRows: 1
|
|
||||||
flipbookColumns: 1
|
|
||||||
maxTextureSizeSet: 0
|
|
||||||
compressionQualitySet: 0
|
|
||||||
textureFormatSet: 0
|
|
||||||
ignorePngGamma: 0
|
|
||||||
applyGammaDecoding: 0
|
|
||||||
swizzle: 50462976
|
|
||||||
cookieLightType: 0
|
|
||||||
platformSettings:
|
|
||||||
- serializedVersion: 4
|
|
||||||
buildTarget: DefaultTexturePlatform
|
|
||||||
maxTextureSize: 2048
|
|
||||||
resizeAlgorithm: 0
|
|
||||||
textureFormat: -1
|
|
||||||
textureCompression: 1
|
|
||||||
compressionQuality: 50
|
|
||||||
crunchedCompression: 0
|
|
||||||
allowsAlphaSplitting: 0
|
|
||||||
overridden: 0
|
|
||||||
ignorePlatformSupport: 0
|
|
||||||
androidETC2FallbackOverride: 0
|
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
|
||||||
- serializedVersion: 4
|
|
||||||
buildTarget: Standalone
|
|
||||||
maxTextureSize: 2048
|
|
||||||
resizeAlgorithm: 0
|
|
||||||
textureFormat: -1
|
|
||||||
textureCompression: 1
|
|
||||||
compressionQuality: 50
|
|
||||||
crunchedCompression: 0
|
|
||||||
allowsAlphaSplitting: 0
|
|
||||||
overridden: 0
|
|
||||||
ignorePlatformSupport: 0
|
|
||||||
androidETC2FallbackOverride: 0
|
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
|
||||||
spriteSheet:
|
|
||||||
serializedVersion: 2
|
|
||||||
sprites: []
|
|
||||||
outline: []
|
|
||||||
customData:
|
|
||||||
physicsShape: []
|
|
||||||
bones: []
|
|
||||||
spriteID: 5e97eb03825dee720800000000000000
|
|
||||||
internalID: 0
|
|
||||||
vertices: []
|
|
||||||
indices:
|
|
||||||
edges: []
|
|
||||||
weights: []
|
|
||||||
secondaryTextures: []
|
|
||||||
spriteCustomMetadata:
|
|
||||||
entries: []
|
|
||||||
nameFileIdTable: {}
|
|
||||||
mipmapLimitGroupName:
|
|
||||||
pSDRemoveMatte: 0
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
|
Before Width: | Height: | Size: 189 KiB |
@@ -1,117 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 7a6ffeb1058a6f8409a669fbd1d5c463
|
|
||||||
TextureImporter:
|
|
||||||
internalIDToNameTable: []
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 13
|
|
||||||
mipmaps:
|
|
||||||
mipMapMode: 0
|
|
||||||
enableMipMap: 0
|
|
||||||
sRGBTexture: 1
|
|
||||||
linearTexture: 0
|
|
||||||
fadeOut: 0
|
|
||||||
borderMipMap: 0
|
|
||||||
mipMapsPreserveCoverage: 0
|
|
||||||
alphaTestReferenceValue: 0.5
|
|
||||||
mipMapFadeDistanceStart: 1
|
|
||||||
mipMapFadeDistanceEnd: 3
|
|
||||||
bumpmap:
|
|
||||||
convertToNormalMap: 0
|
|
||||||
externalNormalMap: 0
|
|
||||||
heightScale: 0.25
|
|
||||||
normalMapFilter: 0
|
|
||||||
flipGreenChannel: 0
|
|
||||||
isReadable: 0
|
|
||||||
streamingMipmaps: 0
|
|
||||||
streamingMipmapsPriority: 0
|
|
||||||
vTOnly: 0
|
|
||||||
ignoreMipmapLimit: 0
|
|
||||||
grayScaleToAlpha: 0
|
|
||||||
generateCubemap: 6
|
|
||||||
cubemapConvolution: 0
|
|
||||||
seamlessCubemap: 0
|
|
||||||
textureFormat: 1
|
|
||||||
maxTextureSize: 2048
|
|
||||||
textureSettings:
|
|
||||||
serializedVersion: 2
|
|
||||||
filterMode: 1
|
|
||||||
aniso: 1
|
|
||||||
mipBias: 0
|
|
||||||
wrapU: 1
|
|
||||||
wrapV: 1
|
|
||||||
wrapW: 0
|
|
||||||
nPOTScale: 0
|
|
||||||
lightmap: 0
|
|
||||||
compressionQuality: 50
|
|
||||||
spriteMode: 1
|
|
||||||
spriteExtrude: 1
|
|
||||||
spriteMeshType: 1
|
|
||||||
alignment: 0
|
|
||||||
spritePivot: {x: 0.5, y: 0.5}
|
|
||||||
spritePixelsToUnits: 100
|
|
||||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
|
||||||
spriteGenerateFallbackPhysicsShape: 1
|
|
||||||
alphaUsage: 1
|
|
||||||
alphaIsTransparency: 1
|
|
||||||
spriteTessellationDetail: -1
|
|
||||||
textureType: 8
|
|
||||||
textureShape: 1
|
|
||||||
singleChannelComponent: 0
|
|
||||||
flipbookRows: 1
|
|
||||||
flipbookColumns: 1
|
|
||||||
maxTextureSizeSet: 0
|
|
||||||
compressionQualitySet: 0
|
|
||||||
textureFormatSet: 0
|
|
||||||
ignorePngGamma: 0
|
|
||||||
applyGammaDecoding: 0
|
|
||||||
swizzle: 50462976
|
|
||||||
cookieLightType: 0
|
|
||||||
platformSettings:
|
|
||||||
- serializedVersion: 4
|
|
||||||
buildTarget: DefaultTexturePlatform
|
|
||||||
maxTextureSize: 2048
|
|
||||||
resizeAlgorithm: 0
|
|
||||||
textureFormat: -1
|
|
||||||
textureCompression: 1
|
|
||||||
compressionQuality: 50
|
|
||||||
crunchedCompression: 0
|
|
||||||
allowsAlphaSplitting: 0
|
|
||||||
overridden: 0
|
|
||||||
ignorePlatformSupport: 0
|
|
||||||
androidETC2FallbackOverride: 0
|
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
|
||||||
- serializedVersion: 4
|
|
||||||
buildTarget: Standalone
|
|
||||||
maxTextureSize: 2048
|
|
||||||
resizeAlgorithm: 0
|
|
||||||
textureFormat: -1
|
|
||||||
textureCompression: 1
|
|
||||||
compressionQuality: 50
|
|
||||||
crunchedCompression: 0
|
|
||||||
allowsAlphaSplitting: 0
|
|
||||||
overridden: 0
|
|
||||||
ignorePlatformSupport: 0
|
|
||||||
androidETC2FallbackOverride: 0
|
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
|
||||||
spriteSheet:
|
|
||||||
serializedVersion: 2
|
|
||||||
sprites: []
|
|
||||||
outline: []
|
|
||||||
customData:
|
|
||||||
physicsShape: []
|
|
||||||
bones: []
|
|
||||||
spriteID: 5e97eb03825dee720800000000000000
|
|
||||||
internalID: 0
|
|
||||||
vertices: []
|
|
||||||
indices:
|
|
||||||
edges: []
|
|
||||||
weights: []
|
|
||||||
secondaryTextures: []
|
|
||||||
spriteCustomMetadata:
|
|
||||||
entries: []
|
|
||||||
nameFileIdTable: {}
|
|
||||||
mipmapLimitGroupName:
|
|
||||||
pSDRemoveMatte: 0
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
|
Before Width: | Height: | Size: 152 KiB |
@@ -1,117 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 68ab2eea03d99d544b9c5c607019b2c0
|
|
||||||
TextureImporter:
|
|
||||||
internalIDToNameTable: []
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 13
|
|
||||||
mipmaps:
|
|
||||||
mipMapMode: 0
|
|
||||||
enableMipMap: 0
|
|
||||||
sRGBTexture: 1
|
|
||||||
linearTexture: 0
|
|
||||||
fadeOut: 0
|
|
||||||
borderMipMap: 0
|
|
||||||
mipMapsPreserveCoverage: 0
|
|
||||||
alphaTestReferenceValue: 0.5
|
|
||||||
mipMapFadeDistanceStart: 1
|
|
||||||
mipMapFadeDistanceEnd: 3
|
|
||||||
bumpmap:
|
|
||||||
convertToNormalMap: 0
|
|
||||||
externalNormalMap: 0
|
|
||||||
heightScale: 0.25
|
|
||||||
normalMapFilter: 0
|
|
||||||
flipGreenChannel: 0
|
|
||||||
isReadable: 0
|
|
||||||
streamingMipmaps: 0
|
|
||||||
streamingMipmapsPriority: 0
|
|
||||||
vTOnly: 0
|
|
||||||
ignoreMipmapLimit: 0
|
|
||||||
grayScaleToAlpha: 0
|
|
||||||
generateCubemap: 6
|
|
||||||
cubemapConvolution: 0
|
|
||||||
seamlessCubemap: 0
|
|
||||||
textureFormat: 1
|
|
||||||
maxTextureSize: 2048
|
|
||||||
textureSettings:
|
|
||||||
serializedVersion: 2
|
|
||||||
filterMode: 1
|
|
||||||
aniso: 1
|
|
||||||
mipBias: 0
|
|
||||||
wrapU: 1
|
|
||||||
wrapV: 1
|
|
||||||
wrapW: 0
|
|
||||||
nPOTScale: 0
|
|
||||||
lightmap: 0
|
|
||||||
compressionQuality: 50
|
|
||||||
spriteMode: 1
|
|
||||||
spriteExtrude: 1
|
|
||||||
spriteMeshType: 1
|
|
||||||
alignment: 0
|
|
||||||
spritePivot: {x: 0.5, y: 0.5}
|
|
||||||
spritePixelsToUnits: 100
|
|
||||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
|
||||||
spriteGenerateFallbackPhysicsShape: 1
|
|
||||||
alphaUsage: 1
|
|
||||||
alphaIsTransparency: 1
|
|
||||||
spriteTessellationDetail: -1
|
|
||||||
textureType: 8
|
|
||||||
textureShape: 1
|
|
||||||
singleChannelComponent: 0
|
|
||||||
flipbookRows: 1
|
|
||||||
flipbookColumns: 1
|
|
||||||
maxTextureSizeSet: 0
|
|
||||||
compressionQualitySet: 0
|
|
||||||
textureFormatSet: 0
|
|
||||||
ignorePngGamma: 0
|
|
||||||
applyGammaDecoding: 0
|
|
||||||
swizzle: 50462976
|
|
||||||
cookieLightType: 0
|
|
||||||
platformSettings:
|
|
||||||
- serializedVersion: 4
|
|
||||||
buildTarget: DefaultTexturePlatform
|
|
||||||
maxTextureSize: 2048
|
|
||||||
resizeAlgorithm: 0
|
|
||||||
textureFormat: -1
|
|
||||||
textureCompression: 1
|
|
||||||
compressionQuality: 50
|
|
||||||
crunchedCompression: 0
|
|
||||||
allowsAlphaSplitting: 0
|
|
||||||
overridden: 0
|
|
||||||
ignorePlatformSupport: 0
|
|
||||||
androidETC2FallbackOverride: 0
|
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
|
||||||
- serializedVersion: 4
|
|
||||||
buildTarget: Standalone
|
|
||||||
maxTextureSize: 2048
|
|
||||||
resizeAlgorithm: 0
|
|
||||||
textureFormat: -1
|
|
||||||
textureCompression: 1
|
|
||||||
compressionQuality: 50
|
|
||||||
crunchedCompression: 0
|
|
||||||
allowsAlphaSplitting: 0
|
|
||||||
overridden: 0
|
|
||||||
ignorePlatformSupport: 0
|
|
||||||
androidETC2FallbackOverride: 0
|
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
|
||||||
spriteSheet:
|
|
||||||
serializedVersion: 2
|
|
||||||
sprites: []
|
|
||||||
outline: []
|
|
||||||
customData:
|
|
||||||
physicsShape: []
|
|
||||||
bones: []
|
|
||||||
spriteID: 5e97eb03825dee720800000000000000
|
|
||||||
internalID: 0
|
|
||||||
vertices: []
|
|
||||||
indices:
|
|
||||||
edges: []
|
|
||||||
weights: []
|
|
||||||
secondaryTextures: []
|
|
||||||
spriteCustomMetadata:
|
|
||||||
entries: []
|
|
||||||
nameFileIdTable: {}
|
|
||||||
mipmapLimitGroupName:
|
|
||||||
pSDRemoveMatte: 0
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
|
Before Width: | Height: | Size: 129 KiB |
@@ -1,117 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: c7a206d138cef964aa45af4cfa97fa9a
|
|
||||||
TextureImporter:
|
|
||||||
internalIDToNameTable: []
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 13
|
|
||||||
mipmaps:
|
|
||||||
mipMapMode: 0
|
|
||||||
enableMipMap: 0
|
|
||||||
sRGBTexture: 1
|
|
||||||
linearTexture: 0
|
|
||||||
fadeOut: 0
|
|
||||||
borderMipMap: 0
|
|
||||||
mipMapsPreserveCoverage: 0
|
|
||||||
alphaTestReferenceValue: 0.5
|
|
||||||
mipMapFadeDistanceStart: 1
|
|
||||||
mipMapFadeDistanceEnd: 3
|
|
||||||
bumpmap:
|
|
||||||
convertToNormalMap: 0
|
|
||||||
externalNormalMap: 0
|
|
||||||
heightScale: 0.25
|
|
||||||
normalMapFilter: 0
|
|
||||||
flipGreenChannel: 0
|
|
||||||
isReadable: 0
|
|
||||||
streamingMipmaps: 0
|
|
||||||
streamingMipmapsPriority: 0
|
|
||||||
vTOnly: 0
|
|
||||||
ignoreMipmapLimit: 0
|
|
||||||
grayScaleToAlpha: 0
|
|
||||||
generateCubemap: 6
|
|
||||||
cubemapConvolution: 0
|
|
||||||
seamlessCubemap: 0
|
|
||||||
textureFormat: 1
|
|
||||||
maxTextureSize: 2048
|
|
||||||
textureSettings:
|
|
||||||
serializedVersion: 2
|
|
||||||
filterMode: 1
|
|
||||||
aniso: 1
|
|
||||||
mipBias: 0
|
|
||||||
wrapU: 1
|
|
||||||
wrapV: 1
|
|
||||||
wrapW: 0
|
|
||||||
nPOTScale: 0
|
|
||||||
lightmap: 0
|
|
||||||
compressionQuality: 50
|
|
||||||
spriteMode: 1
|
|
||||||
spriteExtrude: 1
|
|
||||||
spriteMeshType: 1
|
|
||||||
alignment: 0
|
|
||||||
spritePivot: {x: 0.5, y: 0.5}
|
|
||||||
spritePixelsToUnits: 100
|
|
||||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
|
||||||
spriteGenerateFallbackPhysicsShape: 1
|
|
||||||
alphaUsage: 1
|
|
||||||
alphaIsTransparency: 1
|
|
||||||
spriteTessellationDetail: -1
|
|
||||||
textureType: 8
|
|
||||||
textureShape: 1
|
|
||||||
singleChannelComponent: 0
|
|
||||||
flipbookRows: 1
|
|
||||||
flipbookColumns: 1
|
|
||||||
maxTextureSizeSet: 0
|
|
||||||
compressionQualitySet: 0
|
|
||||||
textureFormatSet: 0
|
|
||||||
ignorePngGamma: 0
|
|
||||||
applyGammaDecoding: 0
|
|
||||||
swizzle: 50462976
|
|
||||||
cookieLightType: 0
|
|
||||||
platformSettings:
|
|
||||||
- serializedVersion: 4
|
|
||||||
buildTarget: DefaultTexturePlatform
|
|
||||||
maxTextureSize: 2048
|
|
||||||
resizeAlgorithm: 0
|
|
||||||
textureFormat: -1
|
|
||||||
textureCompression: 1
|
|
||||||
compressionQuality: 50
|
|
||||||
crunchedCompression: 0
|
|
||||||
allowsAlphaSplitting: 0
|
|
||||||
overridden: 0
|
|
||||||
ignorePlatformSupport: 0
|
|
||||||
androidETC2FallbackOverride: 0
|
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
|
||||||
- serializedVersion: 4
|
|
||||||
buildTarget: Standalone
|
|
||||||
maxTextureSize: 2048
|
|
||||||
resizeAlgorithm: 0
|
|
||||||
textureFormat: -1
|
|
||||||
textureCompression: 1
|
|
||||||
compressionQuality: 50
|
|
||||||
crunchedCompression: 0
|
|
||||||
allowsAlphaSplitting: 0
|
|
||||||
overridden: 0
|
|
||||||
ignorePlatformSupport: 0
|
|
||||||
androidETC2FallbackOverride: 0
|
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
|
||||||
spriteSheet:
|
|
||||||
serializedVersion: 2
|
|
||||||
sprites: []
|
|
||||||
outline: []
|
|
||||||
customData:
|
|
||||||
physicsShape: []
|
|
||||||
bones: []
|
|
||||||
spriteID: 5e97eb03825dee720800000000000000
|
|
||||||
internalID: 0
|
|
||||||
vertices: []
|
|
||||||
indices:
|
|
||||||
edges: []
|
|
||||||
weights: []
|
|
||||||
secondaryTextures: []
|
|
||||||
spriteCustomMetadata:
|
|
||||||
entries: []
|
|
||||||
nameFileIdTable: {}
|
|
||||||
mipmapLimitGroupName:
|
|
||||||
pSDRemoveMatte: 0
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
|
Before Width: | Height: | Size: 43 KiB |
@@ -1,117 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: a04092104e630434a84804e17040195a
|
|
||||||
TextureImporter:
|
|
||||||
internalIDToNameTable: []
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 13
|
|
||||||
mipmaps:
|
|
||||||
mipMapMode: 0
|
|
||||||
enableMipMap: 0
|
|
||||||
sRGBTexture: 1
|
|
||||||
linearTexture: 0
|
|
||||||
fadeOut: 0
|
|
||||||
borderMipMap: 0
|
|
||||||
mipMapsPreserveCoverage: 0
|
|
||||||
alphaTestReferenceValue: 0.5
|
|
||||||
mipMapFadeDistanceStart: 1
|
|
||||||
mipMapFadeDistanceEnd: 3
|
|
||||||
bumpmap:
|
|
||||||
convertToNormalMap: 0
|
|
||||||
externalNormalMap: 0
|
|
||||||
heightScale: 0.25
|
|
||||||
normalMapFilter: 0
|
|
||||||
flipGreenChannel: 0
|
|
||||||
isReadable: 0
|
|
||||||
streamingMipmaps: 0
|
|
||||||
streamingMipmapsPriority: 0
|
|
||||||
vTOnly: 0
|
|
||||||
ignoreMipmapLimit: 0
|
|
||||||
grayScaleToAlpha: 0
|
|
||||||
generateCubemap: 6
|
|
||||||
cubemapConvolution: 0
|
|
||||||
seamlessCubemap: 0
|
|
||||||
textureFormat: 1
|
|
||||||
maxTextureSize: 2048
|
|
||||||
textureSettings:
|
|
||||||
serializedVersion: 2
|
|
||||||
filterMode: 1
|
|
||||||
aniso: 1
|
|
||||||
mipBias: 0
|
|
||||||
wrapU: 1
|
|
||||||
wrapV: 1
|
|
||||||
wrapW: 0
|
|
||||||
nPOTScale: 0
|
|
||||||
lightmap: 0
|
|
||||||
compressionQuality: 50
|
|
||||||
spriteMode: 1
|
|
||||||
spriteExtrude: 1
|
|
||||||
spriteMeshType: 1
|
|
||||||
alignment: 0
|
|
||||||
spritePivot: {x: 0.5, y: 0.5}
|
|
||||||
spritePixelsToUnits: 100
|
|
||||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
|
||||||
spriteGenerateFallbackPhysicsShape: 1
|
|
||||||
alphaUsage: 1
|
|
||||||
alphaIsTransparency: 1
|
|
||||||
spriteTessellationDetail: -1
|
|
||||||
textureType: 8
|
|
||||||
textureShape: 1
|
|
||||||
singleChannelComponent: 0
|
|
||||||
flipbookRows: 1
|
|
||||||
flipbookColumns: 1
|
|
||||||
maxTextureSizeSet: 0
|
|
||||||
compressionQualitySet: 0
|
|
||||||
textureFormatSet: 0
|
|
||||||
ignorePngGamma: 0
|
|
||||||
applyGammaDecoding: 0
|
|
||||||
swizzle: 50462976
|
|
||||||
cookieLightType: 0
|
|
||||||
platformSettings:
|
|
||||||
- serializedVersion: 4
|
|
||||||
buildTarget: DefaultTexturePlatform
|
|
||||||
maxTextureSize: 2048
|
|
||||||
resizeAlgorithm: 0
|
|
||||||
textureFormat: -1
|
|
||||||
textureCompression: 1
|
|
||||||
compressionQuality: 50
|
|
||||||
crunchedCompression: 0
|
|
||||||
allowsAlphaSplitting: 0
|
|
||||||
overridden: 0
|
|
||||||
ignorePlatformSupport: 0
|
|
||||||
androidETC2FallbackOverride: 0
|
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
|
||||||
- serializedVersion: 4
|
|
||||||
buildTarget: Standalone
|
|
||||||
maxTextureSize: 2048
|
|
||||||
resizeAlgorithm: 0
|
|
||||||
textureFormat: -1
|
|
||||||
textureCompression: 1
|
|
||||||
compressionQuality: 50
|
|
||||||
crunchedCompression: 0
|
|
||||||
allowsAlphaSplitting: 0
|
|
||||||
overridden: 0
|
|
||||||
ignorePlatformSupport: 0
|
|
||||||
androidETC2FallbackOverride: 0
|
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
|
||||||
spriteSheet:
|
|
||||||
serializedVersion: 2
|
|
||||||
sprites: []
|
|
||||||
outline: []
|
|
||||||
customData:
|
|
||||||
physicsShape: []
|
|
||||||
bones: []
|
|
||||||
spriteID: 5e97eb03825dee720800000000000000
|
|
||||||
internalID: 0
|
|
||||||
vertices: []
|
|
||||||
indices:
|
|
||||||
edges: []
|
|
||||||
weights: []
|
|
||||||
secondaryTextures: []
|
|
||||||
spriteCustomMetadata:
|
|
||||||
entries: []
|
|
||||||
nameFileIdTable: {}
|
|
||||||
mipmapLimitGroupName:
|
|
||||||
pSDRemoveMatte: 0
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
|
Before Width: | Height: | Size: 51 KiB |
@@ -1,117 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 982be63b1292049488295e60ce74abe2
|
|
||||||
TextureImporter:
|
|
||||||
internalIDToNameTable: []
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 13
|
|
||||||
mipmaps:
|
|
||||||
mipMapMode: 0
|
|
||||||
enableMipMap: 0
|
|
||||||
sRGBTexture: 1
|
|
||||||
linearTexture: 0
|
|
||||||
fadeOut: 0
|
|
||||||
borderMipMap: 0
|
|
||||||
mipMapsPreserveCoverage: 0
|
|
||||||
alphaTestReferenceValue: 0.5
|
|
||||||
mipMapFadeDistanceStart: 1
|
|
||||||
mipMapFadeDistanceEnd: 3
|
|
||||||
bumpmap:
|
|
||||||
convertToNormalMap: 0
|
|
||||||
externalNormalMap: 0
|
|
||||||
heightScale: 0.25
|
|
||||||
normalMapFilter: 0
|
|
||||||
flipGreenChannel: 0
|
|
||||||
isReadable: 0
|
|
||||||
streamingMipmaps: 0
|
|
||||||
streamingMipmapsPriority: 0
|
|
||||||
vTOnly: 0
|
|
||||||
ignoreMipmapLimit: 0
|
|
||||||
grayScaleToAlpha: 0
|
|
||||||
generateCubemap: 6
|
|
||||||
cubemapConvolution: 0
|
|
||||||
seamlessCubemap: 0
|
|
||||||
textureFormat: 1
|
|
||||||
maxTextureSize: 2048
|
|
||||||
textureSettings:
|
|
||||||
serializedVersion: 2
|
|
||||||
filterMode: 1
|
|
||||||
aniso: 1
|
|
||||||
mipBias: 0
|
|
||||||
wrapU: 1
|
|
||||||
wrapV: 1
|
|
||||||
wrapW: 0
|
|
||||||
nPOTScale: 0
|
|
||||||
lightmap: 0
|
|
||||||
compressionQuality: 50
|
|
||||||
spriteMode: 1
|
|
||||||
spriteExtrude: 1
|
|
||||||
spriteMeshType: 1
|
|
||||||
alignment: 0
|
|
||||||
spritePivot: {x: 0.5, y: 0.5}
|
|
||||||
spritePixelsToUnits: 100
|
|
||||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
|
||||||
spriteGenerateFallbackPhysicsShape: 1
|
|
||||||
alphaUsage: 1
|
|
||||||
alphaIsTransparency: 1
|
|
||||||
spriteTessellationDetail: -1
|
|
||||||
textureType: 8
|
|
||||||
textureShape: 1
|
|
||||||
singleChannelComponent: 0
|
|
||||||
flipbookRows: 1
|
|
||||||
flipbookColumns: 1
|
|
||||||
maxTextureSizeSet: 0
|
|
||||||
compressionQualitySet: 0
|
|
||||||
textureFormatSet: 0
|
|
||||||
ignorePngGamma: 0
|
|
||||||
applyGammaDecoding: 0
|
|
||||||
swizzle: 50462976
|
|
||||||
cookieLightType: 0
|
|
||||||
platformSettings:
|
|
||||||
- serializedVersion: 4
|
|
||||||
buildTarget: DefaultTexturePlatform
|
|
||||||
maxTextureSize: 2048
|
|
||||||
resizeAlgorithm: 0
|
|
||||||
textureFormat: -1
|
|
||||||
textureCompression: 1
|
|
||||||
compressionQuality: 50
|
|
||||||
crunchedCompression: 0
|
|
||||||
allowsAlphaSplitting: 0
|
|
||||||
overridden: 0
|
|
||||||
ignorePlatformSupport: 0
|
|
||||||
androidETC2FallbackOverride: 0
|
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
|
||||||
- serializedVersion: 4
|
|
||||||
buildTarget: Standalone
|
|
||||||
maxTextureSize: 2048
|
|
||||||
resizeAlgorithm: 0
|
|
||||||
textureFormat: -1
|
|
||||||
textureCompression: 1
|
|
||||||
compressionQuality: 50
|
|
||||||
crunchedCompression: 0
|
|
||||||
allowsAlphaSplitting: 0
|
|
||||||
overridden: 0
|
|
||||||
ignorePlatformSupport: 0
|
|
||||||
androidETC2FallbackOverride: 0
|
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
|
||||||
spriteSheet:
|
|
||||||
serializedVersion: 2
|
|
||||||
sprites: []
|
|
||||||
outline: []
|
|
||||||
customData:
|
|
||||||
physicsShape: []
|
|
||||||
bones: []
|
|
||||||
spriteID: 5e97eb03825dee720800000000000000
|
|
||||||
internalID: 0
|
|
||||||
vertices: []
|
|
||||||
indices:
|
|
||||||
edges: []
|
|
||||||
weights: []
|
|
||||||
secondaryTextures: []
|
|
||||||
spriteCustomMetadata:
|
|
||||||
entries: []
|
|
||||||
nameFileIdTable: {}
|
|
||||||
mipmapLimitGroupName:
|
|
||||||
pSDRemoveMatte: 0
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 8fa0d9c695119af49bd1693054cf3174
|
|
||||||
folderAsset: yes
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 70729d202603eef42955f52bd64f7c69
|
|
||||||
folderAsset: yes
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
@@ -4,751 +4,145 @@ using Subsystems;
|
|||||||
using System.Collections;
|
using System.Collections;
|
||||||
using System;
|
using System;
|
||||||
using TMPro;
|
using TMPro;
|
||||||
using UnityEngine.SceneManagement;
|
/*
|
||||||
|
GameManager - hlavní tøida pro správu hry
|
||||||
|
GameManager_Network - subsystém pro správu komunikace se serverem
|
||||||
|
GameManager_Game - subsystém pro správu logiky hry (sabotáže, tasky, atd.)
|
||||||
|
GameManager_Map - subsystém pro správu mapy a prostøedí
|
||||||
|
GameManager_Input - subsystém pro správu vstupu od hráèe
|
||||||
|
GameManager_UI - subsystém pro správu uživatelského rozhraní
|
||||||
|
GamaManager_Stats - subsystém pro správu statistik pro server
|
||||||
|
*/
|
||||||
public class GameManager : MonoBehaviour
|
public class GameManager : MonoBehaviour
|
||||||
{
|
{
|
||||||
// Singleton
|
|
||||||
public static GameManager Instance { get; private set; }
|
|
||||||
|
|
||||||
[Header("Subsystems")]
|
[Header("Subsystems")]
|
||||||
public GameManager_Network networkSubsystem;
|
protected GameManager_Network networkSubsystem;
|
||||||
public GameManager_UI uiSubsystem;
|
protected GameManager_UI uiSubsystem;
|
||||||
public GameManager_Map mapSubsystem;
|
protected GameManager_Map mapSubsystem;
|
||||||
public GameManager_Input inputSubsystem;
|
protected GameManager_Input inputSubsystem;
|
||||||
public GameManager_Tasks taskSubsystem;
|
|
||||||
|
|
||||||
public GameClient gameClient;
|
protected GameClient gameClient;
|
||||||
|
|
||||||
[Header("Player Info")]
|
[Header("Player Info")]
|
||||||
public string displayName;
|
public string displayName;
|
||||||
|
|
||||||
[Header("Scene Management")]
|
[Header("UI Elements")]
|
||||||
[SerializeField] public string firstMenuScene = "main menu asi idk lol";
|
public Canvas JoinCreateLobby;
|
||||||
|
public Canvas InLobby;
|
||||||
|
public Canvas LoadingScreen;
|
||||||
|
public Canvas GameScreen;
|
||||||
|
|
||||||
[Header("UI Elements (Client.unity)")]
|
|
||||||
// Canvas names in Client.unity — found at runtime in OnSceneLoaded
|
|
||||||
private const string CanvasNameJoinCreate = "LobbySelector";
|
|
||||||
private const string CanvasNameInLobby = "InLobby";
|
|
||||||
private const string CanvasNameLoading = "LoadingScreen";
|
|
||||||
private const string CanvasNameGame = "InGame";
|
|
||||||
|
|
||||||
[Header("Map")]
|
[Header("Map")]
|
||||||
// MapCenterPoint and Player are in Client.unity — wired at runtime in OnSceneLoaded.
|
public GameObject MapCenterPoint;
|
||||||
// buildingSettings/pathwaySettings/areaSettings must be assigned in SampleScene Inspector.
|
|
||||||
public BuildingSettings buildingSettings;
|
public BuildingSettings buildingSettings;
|
||||||
public PathwaySettings pathwaySettings;
|
public PathwaySettings pathwaySettings;
|
||||||
public AreaSettings areaSettings;
|
public AreaSettings areaSettings;
|
||||||
|
|
||||||
[Header("Lobby Settings")]
|
[Header("GPS")]
|
||||||
public double pendingRadius = 500;
|
public GameObject Player;
|
||||||
public int pendingImpostorCount = 1;
|
|
||||||
public int pendingTaskCount = 5;
|
|
||||||
/// <summary>
|
|
||||||
/// P13b/c: full settings overrides accumulated by HostLobbyUI before the
|
|
||||||
/// host taps "Create". Null = host didn't change anything beyond the three
|
|
||||||
/// flat fields above; server falls through to its current defaults for
|
|
||||||
/// every field. Each field is independently nullable so the host can
|
|
||||||
/// opt into changing only what they care about.
|
|
||||||
/// </summary>
|
|
||||||
public GameSettingsOverrides pendingSettings;
|
|
||||||
|
|
||||||
[Header("Task Minigames (round-robin)")]
|
|
||||||
// Names MUST match the scene file names in Assets/Scenes (case-sensitive)
|
|
||||||
// and each one MUST be enabled in EditorBuildSettings, or LoadSceneAsync
|
|
||||||
// will silently fail and the task button will appear dead.
|
|
||||||
[SerializeField] public string[] minigameScenes = {
|
|
||||||
"MiniGame-Kabely V10",
|
|
||||||
"MiniGame-insertkeys",
|
|
||||||
"MiniGame-FlappyBird",
|
|
||||||
"MiniGame-ThrowInHole",
|
|
||||||
"MiniGame-Satelit"
|
|
||||||
};
|
|
||||||
|
|
||||||
[Header("Debug")]
|
[Header("Debug")]
|
||||||
public bool testMode = false;
|
public bool testMode = false;
|
||||||
/// <summary>
|
private GameClient _secondClient;
|
||||||
/// When true, draw a small GPS status banner across the top of every
|
private GameClient _thirdClient;
|
||||||
/// screen. Useful for diagnosing why CreateLobby is blocked or why a
|
private GameManager_Network _secondNetwork;
|
||||||
/// joiner's position isn't updating - failures otherwise only show up
|
private GameManager_Network _thirdNetwork;
|
||||||
/// in logcat which most users can't reach. Toggle off for release.
|
|
||||||
/// </summary>
|
|
||||||
public bool showGPSDebugOverlay = true;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Number of in-process test client bots to spawn alongside the host
|
|
||||||
/// when testMode is on. Each gets its own GameClient + Network and
|
|
||||||
/// joins the host's lobby automatically. Bots are switchable via
|
|
||||||
/// number keys 1..N (host = 0). Default 3 keeps memory reasonable;
|
|
||||||
/// bump for stress-testing voting / sabotage flows.
|
|
||||||
/// </summary>
|
|
||||||
public int testClientCount = 3;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Per-bot network + display-name + sim-position state. The active slot
|
|
||||||
/// (host = 0, bots = 1..N) gets WASD on the next tick.
|
|
||||||
/// </summary>
|
|
||||||
private class TestBot
|
|
||||||
{
|
|
||||||
public GameClient Client;
|
|
||||||
public GameManager_Network Network;
|
|
||||||
public string DisplayName;
|
|
||||||
public GeoSus.Client.Position SimPosition;
|
|
||||||
public bool Joined;
|
|
||||||
public float LastSendTime;
|
|
||||||
}
|
|
||||||
private System.Collections.Generic.List<TestBot> _testBots = new System.Collections.Generic.List<TestBot>();
|
|
||||||
/// <summary>Slot 0 = host (real player), 1..N = test bot index.</summary>
|
|
||||||
private int _activeClientSlot = 0;
|
|
||||||
|
|
||||||
void Awake()
|
|
||||||
{
|
|
||||||
if (Instance != null && Instance != this)
|
|
||||||
{
|
|
||||||
Destroy(gameObject);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
Instance = this;
|
|
||||||
DontDestroyOnLoad(gameObject);
|
|
||||||
|
|
||||||
// Keep the screen on while the player is in the app. A geographic
|
|
||||||
// social-deduction game asks the user to walk around for 5-15 minutes
|
|
||||||
// staring at the map; default Android sleep timeout (15-60s) blacks
|
|
||||||
// the screen out mid-round, drops GPS updates, and requires the
|
|
||||||
// player to re-unlock the phone. Two layers of belt-and-suspenders:
|
|
||||||
// (1) Unity's Screen.sleepTimeout, which works on most devices and
|
|
||||||
// is one line, but is overridden by some MIUI/EMUI ROMs.
|
|
||||||
// (2) Android FLAG_KEEP_SCREEN_ON on the activity window, harder for
|
|
||||||
// OEM ROMs to override and the standard pattern for navigation/maps
|
|
||||||
// apps. Wrapped in #if UNITY_ANDROID so editor/iOS skip it.
|
|
||||||
Screen.sleepTimeout = SleepTimeout.NeverSleep;
|
|
||||||
AcquireAndroidWakelock();
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Set FLAG_KEEP_SCREEN_ON on the Unity activity's window. This is the
|
|
||||||
/// standard navigation/maps-app pattern and survives ROM-level overrides
|
|
||||||
/// of Unity's Screen.sleepTimeout. No-op on non-Android platforms.
|
|
||||||
/// </summary>
|
|
||||||
private static void AcquireAndroidWakelock()
|
|
||||||
{
|
|
||||||
#if UNITY_ANDROID && !UNITY_EDITOR
|
|
||||||
try
|
|
||||||
{
|
|
||||||
using (var player = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
|
|
||||||
using (var activity = player.GetStatic<AndroidJavaObject>("currentActivity"))
|
|
||||||
{
|
|
||||||
// addFlags must run on the UI thread. Capture activity into a
|
|
||||||
// local for the closure - AndroidJavaObject can be reused.
|
|
||||||
var act = activity;
|
|
||||||
act.Call("runOnUiThread", new AndroidJavaRunnable(() =>
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
using (var window = act.Call<AndroidJavaObject>("getWindow"))
|
|
||||||
{
|
|
||||||
// WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
|
|
||||||
const int FLAG_KEEP_SCREEN_ON = 0x00000080;
|
|
||||||
window.Call("addFlags", FLAG_KEEP_SCREEN_ON);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (System.Exception ex)
|
|
||||||
{
|
|
||||||
Debug.LogWarning("[Wakelock] addFlags failed: " + ex.Message);
|
|
||||||
}
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (System.Exception ex)
|
|
||||||
{
|
|
||||||
Debug.LogWarning("[Wakelock] Android JNI bridge failed: " + ex.Message);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
void Start()
|
void Start()
|
||||||
{
|
{
|
||||||
// The prefab default in SampleScene.unity is "Hrac" (Czech for
|
DontDestroyOnLoad(this);
|
||||||
// "player"). Treat it as equivalent to "no name set" so users who
|
if (displayName == null || displayName == "")
|
||||||
// never customize their name don't all show up identically. This
|
{
|
||||||
// override only fires at startup; users who explicitly type "Hrac"
|
displayName = GenerateUsername();
|
||||||
// into the nickname field will still send "Hrac" via the live
|
}
|
||||||
// DisplayName payload field.
|
|
||||||
if (string.IsNullOrEmpty(displayName) || displayName == "Hrac")
|
|
||||||
displayName = PlayerPrefs.GetString("PlayerName", GenerateUsername());
|
|
||||||
|
|
||||||
gameClient = new GameClient(GenerateUUID(), displayName);
|
|
||||||
networkSubsystem = new GameManager_Network(gameClient, this);
|
|
||||||
mapSubsystem = new GameManager_Map(gameClient, null, buildingSettings, pathwaySettings, areaSettings);
|
|
||||||
uiSubsystem = new GameManager_UI(gameClient);
|
|
||||||
inputSubsystem = new GameManager_Input(gameClient, null, testMode);
|
|
||||||
taskSubsystem = new GameManager_Tasks(gameClient, minigameScenes, this);
|
|
||||||
|
|
||||||
if (testMode)
|
if (testMode)
|
||||||
{
|
{
|
||||||
int n = Mathf.Max(0, testClientCount);
|
_secondClient = new GameClient(GenerateUUID(), GenerateUsername());
|
||||||
for (int i = 0; i < n; i++)
|
_secondNetwork = new GameManager_Network(_secondClient);
|
||||||
{
|
_thirdClient = new GameClient(GenerateUUID(), GenerateUsername());
|
||||||
var bot = new TestBot
|
_thirdNetwork = new GameManager_Network(_thirdClient);
|
||||||
{
|
|
||||||
DisplayName = "TestBot" + (i + 1),
|
_secondNetwork.OpenConection();
|
||||||
};
|
_thirdNetwork.OpenConection();
|
||||||
bot.Client = new GameClient(GenerateUUID(), bot.DisplayName);
|
|
||||||
bot.Network = new GameManager_Network(bot.Client, null);
|
|
||||||
bot.Network.OpenConnection();
|
|
||||||
_testBots.Add(bot);
|
|
||||||
}
|
}
|
||||||
|
gameClient = new GameClient(GenerateUUID(), displayName);
|
||||||
|
uiSubsystem = new GameManager_UI(gameClient, JoinCreateLobby, InLobby, LoadingScreen, GameScreen);
|
||||||
|
networkSubsystem = new GameManager_Network(gameClient);
|
||||||
|
mapSubsystem = new GameManager_Map(gameClient, MapCenterPoint, buildingSettings, pathwaySettings, areaSettings);
|
||||||
|
inputSubsystem = new GameManager_Input(gameClient, Player, testMode);
|
||||||
|
networkSubsystem.OpenConection();
|
||||||
}
|
}
|
||||||
|
|
||||||
networkSubsystem.OpenConnection();
|
|
||||||
|
|
||||||
// Start GPS immediately at app launch. Acquiring a fix on a cold
|
|
||||||
// device can take 5-30 seconds; if we wait until CreateLobby is
|
|
||||||
// pressed, the lobby will be seeded with bad coords. Starting here
|
|
||||||
// means the user's normal navigation through the menus gives the
|
|
||||||
// GPS subsystem time to settle.
|
|
||||||
inputSubsystem?.EnsureGPSStarted();
|
|
||||||
|
|
||||||
// Load main menu after GameManager is ready
|
|
||||||
if (!string.IsNullOrEmpty(firstMenuScene))
|
|
||||||
SceneManager.LoadScene(firstMenuScene, LoadSceneMode.Single);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Draws a GPS status banner across the top of every screen. We use OnGUI
|
|
||||||
/// rather than a uGUI Canvas element because OnGUI works without any
|
|
||||||
/// scene wiring - we want this visible from the very first frame, on
|
|
||||||
/// every screen, even if the lobby canvas hasn't been bound yet. This is
|
|
||||||
/// a debug overlay; toggle showGPSDebugOverlay off for release builds.
|
|
||||||
/// </summary>
|
|
||||||
private void OnGUI()
|
|
||||||
{
|
|
||||||
if (!showGPSDebugOverlay) return;
|
|
||||||
if (inputSubsystem == null) return;
|
|
||||||
|
|
||||||
var diag = inputSubsystem.GpsDiagnostic;
|
|
||||||
var label = "GPS: " + diag;
|
|
||||||
|
|
||||||
// Scale font size to screen so it's legible on phones (HDPI) and
|
|
||||||
// editor (lower DPI) alike. Phones tend to have ~400dpi; the
|
|
||||||
// editor game view runs at ~100dpi.
|
|
||||||
int fontSize = Mathf.Max(14, Screen.width / 50);
|
|
||||||
|
|
||||||
var style = new GUIStyle(GUI.skin.label)
|
|
||||||
{
|
|
||||||
fontSize = fontSize,
|
|
||||||
fontStyle = FontStyle.Bold,
|
|
||||||
alignment = TextAnchor.MiddleLeft,
|
|
||||||
wordWrap = false,
|
|
||||||
normal = { textColor = Color.white }
|
|
||||||
};
|
|
||||||
|
|
||||||
// Width covers most of the screen so longer error strings don't get
|
|
||||||
// clipped. Height auto-fits the chosen font size.
|
|
||||||
float pad = fontSize * 0.5f;
|
|
||||||
float bannerH = fontSize * 2f;
|
|
||||||
var rect = new Rect(pad, pad, Screen.width - pad * 2, bannerH);
|
|
||||||
|
|
||||||
// Translucent black background for legibility against the map.
|
|
||||||
var prevColor = GUI.color;
|
|
||||||
GUI.color = new Color(0f, 0f, 0f, 0.65f);
|
|
||||||
GUI.Box(rect, GUIContent.none);
|
|
||||||
GUI.color = prevColor;
|
|
||||||
|
|
||||||
// Indent the label inside the box.
|
|
||||||
var textRect = new Rect(rect.x + pad, rect.y, rect.width - pad * 2, rect.height);
|
|
||||||
GUI.Label(textRect, label, style);
|
|
||||||
|
|
||||||
// Second row: position-source picker (tap to cycle) + active client
|
|
||||||
// indicator (testMode only). Both are diagnostic; the source picker
|
|
||||||
// is the recovery path when one backend silently fails on a phone.
|
|
||||||
float row2Y = rect.y + bannerH + pad * 0.5f;
|
|
||||||
var btnStyle = new GUIStyle(GUI.skin.button)
|
|
||||||
{
|
|
||||||
fontSize = Mathf.Max(12, fontSize - 2),
|
|
||||||
fontStyle = FontStyle.Bold,
|
|
||||||
alignment = TextAnchor.MiddleCenter,
|
|
||||||
};
|
|
||||||
|
|
||||||
// Source button: shows current source name + invites tap.
|
|
||||||
string sourceLabel = "Source: " + inputSubsystem.CurrentSourceName + " [tap to cycle]";
|
|
||||||
// Width sized to the text so the touch area matches the label.
|
|
||||||
Vector2 sourceSize = btnStyle.CalcSize(new GUIContent(sourceLabel));
|
|
||||||
float sourceW = Mathf.Min(Screen.width - pad * 2, sourceSize.x + pad * 2);
|
|
||||||
var sourceRect = new Rect(pad, row2Y, sourceW, bannerH);
|
|
||||||
if (GUI.Button(sourceRect, sourceLabel, btnStyle))
|
|
||||||
{
|
|
||||||
inputSubsystem.CycleNextPositionSource();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Active-client indicator (only when we have test bots).
|
|
||||||
if (testMode && _testBots.Count > 0)
|
|
||||||
{
|
|
||||||
string slot = _activeClientSlot == 0 ? "Host" : ("Bot " + _activeClientSlot);
|
|
||||||
string indicator = $"WASD: {slot} (0..{_testBots.Count} to switch)";
|
|
||||||
var indStyle = new GUIStyle(GUI.skin.label)
|
|
||||||
{
|
|
||||||
fontSize = Mathf.Max(12, fontSize - 2),
|
|
||||||
fontStyle = FontStyle.Bold,
|
|
||||||
alignment = TextAnchor.MiddleLeft,
|
|
||||||
normal = { textColor = new Color(0.9f, 1f, 0.4f) },
|
|
||||||
};
|
|
||||||
Vector2 indSize = indStyle.CalcSize(new GUIContent(indicator));
|
|
||||||
var indRect = new Rect(sourceRect.xMax + pad, row2Y, indSize.x + pad * 2, bannerH);
|
|
||||||
GUI.color = new Color(0f, 0f, 0f, 0.65f);
|
|
||||||
GUI.Box(indRect, GUIContent.none);
|
|
||||||
GUI.color = prevColor;
|
|
||||||
GUI.Label(new Rect(indRect.x + pad, indRect.y, indRect.width, indRect.height), indicator, indStyle);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void Update()
|
private void Update()
|
||||||
{
|
{
|
||||||
// Tick the SDK dispatcher so callbacks fire on main thread
|
if (gameClient.CurrentLobbyState != null)
|
||||||
gameClient?.Update();
|
|
||||||
if (testMode)
|
|
||||||
{
|
{
|
||||||
for (int i = 0; i < _testBots.Count; i++)
|
uiSubsystem.UpdateLobbyUI();
|
||||||
_testBots[i].Client?.Update();
|
}
|
||||||
HandleTestBotInput();
|
try
|
||||||
|
{
|
||||||
|
if (gameClient.CurrentLobbyState.MapDataReady)
|
||||||
|
{
|
||||||
|
mapSubsystem.BuildMap();
|
||||||
|
gameClient.CurrentLobbyState.MapDataReady = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (NullReferenceException ex) { }
|
||||||
|
inputSubsystem.positionCheck();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gameClient?.CurrentLobbyState != null)
|
|
||||||
{
|
|
||||||
uiSubsystem?.UpdateLobbyUI();
|
|
||||||
taskSubsystem?.UpdateProximity();
|
|
||||||
}
|
|
||||||
if (gameClient?.MyRole == PlayerRole.Impostor)
|
|
||||||
UpdateKillCooldown();
|
|
||||||
|
|
||||||
inputSubsystem?.positionCheck();
|
|
||||||
|
|
||||||
if (testMode) StepActiveTestBot();
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Number-key handling for slot switching. 0 = host, 1..N = test bot N.
|
|
||||||
/// Suppress host WASD when a non-host bot is active so the host capsule
|
|
||||||
/// doesn't drift while the user is moving a bot. Only fires when
|
|
||||||
/// testMode is on; release builds never see this path.
|
|
||||||
/// </summary>
|
|
||||||
private void HandleTestBotInput()
|
|
||||||
{
|
|
||||||
// 0 = host. 1..9 = bots (capped by Unity KeyCode.Alpha9).
|
|
||||||
if (Input.GetKeyDown(KeyCode.Alpha0)) _activeClientSlot = 0;
|
|
||||||
for (int i = 1; i <= 9 && i <= _testBots.Count; i++)
|
|
||||||
{
|
|
||||||
if (Input.GetKeyDown(KeyCode.Alpha0 + i)) _activeClientSlot = i;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Tell the host's input subsystem to ignore WASD when a bot is active.
|
|
||||||
if (inputSubsystem != null)
|
|
||||||
inputSubsystem.SuppressWasd = (_activeClientSlot != 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// If the active slot is a bot, step its sim position from WASD axes
|
|
||||||
/// and send to the server. Idle bots get a periodic keep-alive so their
|
|
||||||
/// avatars don't time out.
|
|
||||||
/// </summary>
|
|
||||||
private void StepActiveTestBot()
|
|
||||||
{
|
|
||||||
if (_testBots.Count == 0) return;
|
|
||||||
var state = gameClient?.CurrentLobbyState;
|
|
||||||
if (state == null || state.MapData == null) return;
|
|
||||||
|
|
||||||
// Lazy-init each bot's sim position to the lobby's map center on
|
|
||||||
// first lobby state. Until the bot has joined a lobby it can't
|
|
||||||
// send position updates.
|
|
||||||
for (int i = 0; i < _testBots.Count; i++)
|
|
||||||
{
|
|
||||||
var bot = _testBots[i];
|
|
||||||
if (!bot.Joined) continue;
|
|
||||||
if (bot.SimPosition.Lat == 0 && bot.SimPosition.Lon == 0)
|
|
||||||
{
|
|
||||||
// Spawn each bot in a small ring around the map center so
|
|
||||||
// they don't all stack on top of each other on frame one.
|
|
||||||
double offsetLat = 0.00003 * Mathf.Cos(i * Mathf.PI * 2f / Mathf.Max(1, _testBots.Count));
|
|
||||||
double offsetLon = 0.00003 * Mathf.Sin(i * Mathf.PI * 2f / Mathf.Max(1, _testBots.Count));
|
|
||||||
bot.SimPosition = new GeoSus.Client.Position(
|
|
||||||
state.MapData.Center.Lat + offsetLat,
|
|
||||||
state.MapData.Center.Lon + offsetLon);
|
|
||||||
bot.Client.UpdatePosition(bot.SimPosition);
|
|
||||||
bot.LastSendTime = Time.time;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// WASD only drives the active bot.
|
|
||||||
if (_activeClientSlot >= 1 && _activeClientSlot <= _testBots.Count)
|
|
||||||
{
|
|
||||||
var bot = _testBots[_activeClientSlot - 1];
|
|
||||||
if (bot.Joined)
|
|
||||||
{
|
|
||||||
float dx = Input.GetAxis("Horizontal");
|
|
||||||
float dy = Input.GetAxis("Vertical");
|
|
||||||
const double speed = 0.00001;
|
|
||||||
bool moved = Mathf.Abs(dx) > 0.001f || Mathf.Abs(dy) > 0.001f;
|
|
||||||
if (moved)
|
|
||||||
{
|
|
||||||
bot.SimPosition = new GeoSus.Client.Position(
|
|
||||||
bot.SimPosition.Lat + dy * speed,
|
|
||||||
bot.SimPosition.Lon + dx * speed);
|
|
||||||
}
|
|
||||||
// Send on movement OR on keep-alive cadence so the server
|
|
||||||
// doesn't drop our presence.
|
|
||||||
bool dueKeepAlive = (Time.time - bot.LastSendTime) >= 1.0f;
|
|
||||||
if (moved || dueKeepAlive)
|
|
||||||
{
|
|
||||||
bot.Client.UpdatePosition(bot.SimPosition);
|
|
||||||
bot.LastSendTime = Time.time;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// No bot is active. All bots get keep-alive only.
|
|
||||||
for (int i = 0; i < _testBots.Count; i++)
|
|
||||||
{
|
|
||||||
var bot = _testBots[i];
|
|
||||||
if (!bot.Joined) continue;
|
|
||||||
if ((Time.time - bot.LastSendTime) >= 1.0f)
|
|
||||||
{
|
|
||||||
bot.Client.UpdatePosition(bot.SimPosition);
|
|
||||||
bot.LastSendTime = Time.time;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void OnEnable()
|
|
||||||
{
|
|
||||||
SceneManager.sceneLoaded += OnSceneLoaded;
|
|
||||||
}
|
|
||||||
void OnDisable()
|
|
||||||
{
|
|
||||||
SceneManager.sceneLoaded -= OnSceneLoaded;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// After Client.unity loads, re-bind all canvas/HUD references because
|
|
||||||
/// those GameObjects don't exist in the Art menu scenes.
|
|
||||||
/// </summary>
|
|
||||||
private void OnSceneLoaded(Scene scene, LoadSceneMode mode)
|
|
||||||
{
|
|
||||||
if (scene.name == "Client")
|
|
||||||
{
|
|
||||||
var roots = scene.GetRootGameObjects();
|
|
||||||
|
|
||||||
// Find a root or deep GameObject by name in the loaded scene
|
|
||||||
GameObject FindGO(string n) {
|
|
||||||
foreach (var go in roots) {
|
|
||||||
if (go.name == n) return go;
|
|
||||||
var found = go.transform.Find(n);
|
|
||||||
if (found != null) return found.gameObject;
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
Canvas FindCanvas(string n) {
|
|
||||||
var go = FindGO(n);
|
|
||||||
return go != null ? go.GetComponent<Canvas>() : null;
|
|
||||||
}
|
|
||||||
|
|
||||||
// ── Build HUD BEFORE BindClientScene so FindTMP/Find can locate new elements ──
|
|
||||||
var inGameGO = FindGO("InGame");
|
|
||||||
if (inGameGO != null)
|
|
||||||
{
|
|
||||||
var builder = inGameGO.GetComponent<InGameHUDBuilder>()
|
|
||||||
?? inGameGO.AddComponent<InGameHUDBuilder>();
|
|
||||||
builder.BuildNow();
|
|
||||||
}
|
|
||||||
|
|
||||||
// ── Wire canvases (after HUD is built) ──
|
|
||||||
// Apply our standard CanvasScaler (1080x1920 reference, match=0.5)
|
|
||||||
// to every canvas in the scene before binding so layouts scale
|
|
||||||
// identically across phones and tablets without per-device tweaks.
|
|
||||||
var cJoin = FindCanvas(CanvasNameJoinCreate);
|
|
||||||
var cLobby = FindCanvas(CanvasNameInLobby);
|
|
||||||
var cLoad = FindCanvas(CanvasNameLoading);
|
|
||||||
var cGame = FindCanvas(CanvasNameGame);
|
|
||||||
InGameHUDBuilder.ConfigureCanvasScaler(cJoin);
|
|
||||||
InGameHUDBuilder.ConfigureCanvasScaler(cLobby);
|
|
||||||
InGameHUDBuilder.ConfigureCanvasScaler(cLoad);
|
|
||||||
InGameHUDBuilder.ConfigureCanvasScaler(cGame);
|
|
||||||
uiSubsystem?.BindClientScene(cJoin, cLobby, cLoad, cGame);
|
|
||||||
|
|
||||||
// ── Wire map center point and player capsule ──
|
|
||||||
var mapCenter = FindGO("MapCenterPoint");
|
|
||||||
var player = FindGO("Capsule");
|
|
||||||
mapSubsystem?.SetMapCenterPoint(mapCenter);
|
|
||||||
inputSubsystem?.SetPlayerObject(player);
|
|
||||||
|
|
||||||
// ── Attach camera controller to Main Camera ──
|
|
||||||
var mainCamGO = FindGO("Main Camera");
|
|
||||||
if (mainCamGO != null)
|
|
||||||
{
|
|
||||||
var camCtrl = mainCamGO.GetComponent<MapCameraController>()
|
|
||||||
?? mainCamGO.AddComponent<MapCameraController>();
|
|
||||||
camCtrl.SetTarget(player);
|
|
||||||
}
|
|
||||||
|
|
||||||
// If MapDataReady arrived before Client scene finished loading,
|
|
||||||
// this will build the map now that scene references are valid.
|
|
||||||
networkSubsystem?.OnClientSceneReady();
|
|
||||||
}
|
|
||||||
else if (scene.name == "create" || scene.name == "join loading")
|
|
||||||
{
|
|
||||||
// Lobby scene just loaded — ensure LobbyDisplayUI refreshes once
|
|
||||||
// its Start() has run and registered itself (happens before Update).
|
|
||||||
uiSubsystem?.NotifyLobbyChanged();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private float _killCooldownSeconds = 0f;
|
|
||||||
private const float KillCooldownDuration = 20f;
|
|
||||||
|
|
||||||
private void UpdateKillCooldown()
|
|
||||||
{
|
|
||||||
if (_killCooldownSeconds > 0)
|
|
||||||
{
|
|
||||||
_killCooldownSeconds -= Time.deltaTime;
|
|
||||||
// Mirror into GameState so UI reads from the single source of truth
|
|
||||||
if (networkSubsystem?.State != null)
|
|
||||||
networkSubsystem.State.KillCooldownRemaining = _killCooldownSeconds;
|
|
||||||
uiSubsystem?.SetKillCooldownText($"Kill: {Mathf.CeilToInt(_killCooldownSeconds)}s");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_killCooldownSeconds = 0f;
|
|
||||||
if (networkSubsystem?.State != null)
|
|
||||||
networkSubsystem.State.KillCooldownRemaining = 0;
|
|
||||||
uiSubsystem?.SetKillCooldownText("");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Called by the ActionButton. Routes to kill / report / emergency / use-task
|
|
||||||
/// depending on current proximity state.
|
|
||||||
/// </summary>
|
|
||||||
public void PerformAction()
|
|
||||||
{
|
|
||||||
if (uiSubsystem == null || uiSubsystem.IsPlayerDead) return;
|
|
||||||
|
|
||||||
bool isImpostor = gameClient?.MyRole == PlayerRole.Impostor;
|
|
||||||
|
|
||||||
// P13b: pull per-lobby distances from the server-snapshotted settings
|
|
||||||
// instead of hardcoding 5m for every check. ?? fallback keeps the
|
|
||||||
// pre-P13b behavior on old server builds that don't ship settings.
|
|
||||||
var settings = networkSubsystem?.State?.Settings;
|
|
||||||
double reportDist = settings?.ReportDistanceM ?? 5.0;
|
|
||||||
double emergencyDist = settings?.EmergencyMeetingCallRadiusM ?? 5.0;
|
|
||||||
double killDist = settings?.KillDistanceM ?? 5.0;
|
|
||||||
|
|
||||||
// 1. Nearby task → USE
|
|
||||||
var nearbyTask = taskSubsystem?.NearbyTask;
|
|
||||||
if (nearbyTask != null && !isImpostor)
|
|
||||||
{
|
|
||||||
taskSubsystem.TriggerNearbyTask();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 2. Nearby body → REPORT
|
|
||||||
if (!uiSubsystem.IsCommsBlackout)
|
|
||||||
{
|
|
||||||
var nearbyBody = gameClient?.FindNearbyBody(reportDist);
|
|
||||||
if (nearbyBody != null)
|
|
||||||
{
|
|
||||||
gameClient.ReportBody(nearbyBody.BodyId);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 3. Near map centre → EMERGENCY
|
|
||||||
if (gameClient?.CurrentLobbyState?.MapData != null)
|
|
||||||
{
|
|
||||||
double distToCenter = gameClient.MyPosition.DistanceTo(gameClient.CurrentLobbyState.MapData.Center);
|
|
||||||
if (distToCenter <= emergencyDist)
|
|
||||||
{
|
|
||||||
gameClient.CallEmergencyMeeting();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 4. Impostor kill
|
|
||||||
if (isImpostor && _killCooldownSeconds <= 0)
|
|
||||||
{
|
|
||||||
var targetUuid = gameClient?.FindNearbyPlayer(killDist);
|
|
||||||
if (!string.IsNullOrEmpty(targetUuid))
|
|
||||||
{
|
|
||||||
gameClient.Kill(targetUuid);
|
|
||||||
_killCooldownSeconds = KillCooldownDuration;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>Called by Impostor sabotage buttons.</summary>
|
|
||||||
public void StartSabotage(int typeIndex)
|
|
||||||
{
|
|
||||||
gameClient?.Send(new GeoSus.Client.StartSabotage { SabotageType = (SabotageType)typeIndex });
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>Called by the meeting vote buttons. Pass null to skip.</summary>
|
|
||||||
public void CastVote(string targetUuid)
|
|
||||||
{
|
|
||||||
gameClient?.Vote(targetUuid);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected string GenerateUUID()
|
protected string GenerateUUID()
|
||||||
{
|
{
|
||||||
return System.Guid.NewGuid().ToString();
|
string UUID = System.Guid.NewGuid().ToString();
|
||||||
|
Debug.Log(UUID);
|
||||||
|
return UUID;
|
||||||
}
|
}
|
||||||
protected string GenerateUsername()
|
protected string GenerateUsername()
|
||||||
{
|
{
|
||||||
return "Player" + UnityEngine.Random.Range(1000, 9999).ToString();
|
string Username = UnityEngine.Random.Range(0,10).ToString() + UnityEngine.Random.Range(0, 10).ToString() + UnityEngine.Random.Range(0, 10).ToString() + UnityEngine.Random.Range(0, 10).ToString();
|
||||||
|
Debug.Log(Username);
|
||||||
|
return Username;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Pull the nickname input field's current text into displayName +
|
|
||||||
/// gameClient.DisplayName + PlayerPrefs before sending a network
|
|
||||||
/// action. Defensive against any TMP_InputField / soft-keyboard race
|
|
||||||
/// where the user types and immediately taps a button: onValueChanged
|
|
||||||
/// normally fires before the click handler in the same frame, but
|
|
||||||
/// some Android keyboards batch text events oddly. Call this at the
|
|
||||||
/// top of any Create/Join/Rename flow. No-op if the input field
|
|
||||||
/// doesn't exist in the current scene.
|
|
||||||
/// </summary>
|
|
||||||
private void CommitNicknameFromInput()
|
|
||||||
{
|
|
||||||
var nameGO = GameObject.Find("name");
|
|
||||||
if (nameGO == null) return;
|
|
||||||
var field = nameGO.GetComponent<TMPro.TMP_InputField>();
|
|
||||||
if (field == null) return;
|
|
||||||
// Force the InputField to flush any pending soft-keyboard text.
|
|
||||||
// ForceLabelUpdate() is harmless if there's nothing pending.
|
|
||||||
field.ForceLabelUpdate();
|
|
||||||
string typed = (field.text ?? "").Trim();
|
|
||||||
if (string.IsNullOrEmpty(typed)) return;
|
|
||||||
if (typed == displayName) return; // already in sync, skip the writes
|
|
||||||
displayName = typed;
|
|
||||||
if (gameClient != null) gameClient.DisplayName = typed;
|
|
||||||
PlayerPrefs.SetString("PlayerName", typed);
|
|
||||||
PlayerPrefs.Save();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Called by HostLobbyUI
|
|
||||||
public void CreateLobbyButton()
|
public void CreateLobbyButton()
|
||||||
{
|
{
|
||||||
CommitNicknameFromInput();
|
networkSubsystem.CrateLobby(50.7727264, 15.0719876);
|
||||||
// Refuse to create a lobby without a real GPS fix. The previous
|
if (testMode)
|
||||||
// behavior of silently using a hardcoded Czechia fallback meant the
|
|
||||||
// game always started at the same place no matter where the host was,
|
|
||||||
// and the player capsule would spawn miles away in coordinate space
|
|
||||||
// because they're at their real GPS while the map was built around
|
|
||||||
// the fallback. Both bugs share this single gate.
|
|
||||||
if (inputSubsystem?.LastKnownPosition == null)
|
|
||||||
{
|
{
|
||||||
// testMode bypasses the GPS gate entirely so debug runs still work.
|
StartCoroutine(ConnectTestClients());
|
||||||
if (!testMode)
|
|
||||||
{
|
|
||||||
// Surface the actual GPS state in both logs and the toast
|
|
||||||
// instead of the generic "Waiting for GPS fix..." that hides
|
|
||||||
// permission/timeout/device-disabled distinctions.
|
|
||||||
string diag = inputSubsystem?.GpsDiagnostic ?? "no input subsystem";
|
|
||||||
Debug.LogWarning("[GameManager] CreateLobby blocked. " + diag);
|
|
||||||
uiSubsystem?.ShowToast("Cannot create lobby. " + diag);
|
|
||||||
inputSubsystem?.EnsureGPSStarted();
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
public void JoinLobbyButton()
|
||||||
var pos = inputSubsystem?.LastKnownPosition;
|
|
||||||
double lat = pos?.Lat ?? 0;
|
|
||||||
double lon = pos?.Lon ?? 0;
|
|
||||||
networkSubsystem.CreateLobby(lat, lon, pendingRadius, pendingImpostorCount, pendingTaskCount, pendingSettings);
|
|
||||||
if (testMode) StartCoroutine(ConnectTestClients());
|
|
||||||
}
|
|
||||||
|
|
||||||
// Called by JoinLobbyUI with the code from the input field
|
|
||||||
public void JoinLobbyButton(string code)
|
|
||||||
{
|
{
|
||||||
CommitNicknameFromInput();
|
TMP_InputField joinCode = JoinCreateLobby.transform.Find("InputCode").GetComponent<TMP_InputField>();
|
||||||
if (!string.IsNullOrEmpty(code))
|
if (joinCode.text != null && joinCode.text != "")
|
||||||
networkSubsystem.JoinLobby(code);
|
{
|
||||||
|
networkSubsystem.JoinLobby(joinCode.text);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
Debug.LogWarning("Join code is empty!");
|
{
|
||||||
|
Debug.Log("Join code is empty!");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void LeaveLobbyButton()
|
public void LeaveLobbyButton()
|
||||||
{
|
{
|
||||||
networkSubsystem.LeaveLobby();
|
networkSubsystem.LeaveLobby();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void StartGameButton()
|
public void StartGameButton()
|
||||||
{
|
{
|
||||||
networkSubsystem.StartGame();
|
networkSubsystem.StartGame();
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnApplicationQuit()
|
void OnApplicationQuit()
|
||||||
{
|
{
|
||||||
gameClient?.Disconnect();
|
gameClient.Disconnect();
|
||||||
for (int i = 0; i < _testBots.Count; i++)
|
_secondClient?.Disconnect();
|
||||||
_testBots[i].Client?.Disconnect();
|
_thirdClient?.Disconnect();
|
||||||
}
|
}
|
||||||
|
|
||||||
IEnumerator ConnectTestClients()
|
IEnumerator ConnectTestClients()
|
||||||
{
|
{
|
||||||
if (_testBots.Count == 0) yield break;
|
yield return new WaitForSeconds(2f);
|
||||||
|
_secondNetwork.JoinLobby(gameClient.CurrentLobbyState.JoinCode);
|
||||||
// Wait until host lobby code exists
|
_thirdNetwork.JoinLobby(gameClient.CurrentLobbyState.JoinCode);
|
||||||
float wait = 0f;
|
|
||||||
while ((gameClient?.CurrentLobbyState == null || string.IsNullOrEmpty(gameClient.CurrentLobbyState.JoinCode)) && wait < 20f)
|
|
||||||
{
|
|
||||||
wait += 0.25f;
|
|
||||||
yield return new WaitForSeconds(0.25f);
|
|
||||||
}
|
|
||||||
|
|
||||||
var joinCode = gameClient?.CurrentLobbyState?.JoinCode;
|
|
||||||
if (string.IsNullOrEmpty(joinCode))
|
|
||||||
{
|
|
||||||
Debug.LogWarning("[TestMode] Could not join test bots: join code not available.");
|
|
||||||
yield break;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Wait until every bot's client has finished its TCP handshake.
|
|
||||||
// IsReady flips once ClientHello + ClientHelloAck round-trip.
|
|
||||||
wait = 0f;
|
|
||||||
bool allReady;
|
|
||||||
do
|
|
||||||
{
|
|
||||||
allReady = true;
|
|
||||||
for (int i = 0; i < _testBots.Count; i++)
|
|
||||||
{
|
|
||||||
if (_testBots[i].Client == null || !_testBots[i].Client.IsReady)
|
|
||||||
{
|
|
||||||
allReady = false;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!allReady)
|
|
||||||
{
|
|
||||||
wait += 0.25f;
|
|
||||||
yield return new WaitForSeconds(0.25f);
|
|
||||||
}
|
|
||||||
} while (!allReady && wait < 20f);
|
|
||||||
|
|
||||||
if (!allReady)
|
|
||||||
{
|
|
||||||
Debug.LogWarning("[TestMode] Some test bots not ready, joining the ready ones only.");
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int i = 0; i < _testBots.Count; i++)
|
|
||||||
{
|
|
||||||
var bot = _testBots[i];
|
|
||||||
if (bot.Client != null && bot.Client.IsReady)
|
|
||||||
{
|
|
||||||
bot.Network?.JoinLobby(joinCode);
|
|
||||||
bot.Joined = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Debug.Log($"[TestMode] {_testBots.Count} bot(s) joined lobby with code {joinCode}.");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using GeoSus.Client;
|
using GeoSus.Client;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
@@ -16,292 +16,6 @@ namespace Subsystems
|
|||||||
Running,
|
Running,
|
||||||
Failed
|
Failed
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Position source backend. Selectable at runtime via the GPS overlay
|
|
||||||
/// "Source" button so the user can recover when one path misbehaves on
|
|
||||||
/// their phone:
|
|
||||||
/// Auto - JNI: subscribe to gps + network, pick most recent fix.
|
|
||||||
/// GpsOnly - JNI: subscribe to gps only (network's frequent indoor
|
|
||||||
/// fixes don't drown out the slower-but-precise gps fix).
|
|
||||||
/// NetworkOnly - JNI: subscribe to network only (cell tower / WiFi).
|
|
||||||
/// Useful indoors when no satellite lock is possible.
|
|
||||||
/// UnityInput - Unity's Input.location wrapper. Verified to hang on
|
|
||||||
/// Mi 9T / A20e (which is why JNI exists), but works on
|
|
||||||
/// newer Android where the JNI streaming-callbacks path
|
|
||||||
/// silently doesn't fire (MIUI/HyperOS battery saver,
|
|
||||||
/// approximate-vs-precise permission split, minDistance
|
|
||||||
/// gating on stationary phones).
|
|
||||||
/// EditorWasd - WASD-driven simulated position. Available regardless
|
|
||||||
/// of testMode flag so desktop builds and editor sessions
|
|
||||||
/// can navigate the map without real GPS.
|
|
||||||
/// </summary>
|
|
||||||
public enum PositionSource
|
|
||||||
{
|
|
||||||
Auto,
|
|
||||||
GpsOnly,
|
|
||||||
NetworkOnly,
|
|
||||||
UnityInput,
|
|
||||||
EditorWasd,
|
|
||||||
}
|
|
||||||
|
|
||||||
#if UNITY_ANDROID && !UNITY_EDITOR
|
|
||||||
/// <summary>
|
|
||||||
/// Bridges android.location.LocationListener to managed code. The method
|
|
||||||
/// names here must match Java's LocationListener interface exactly so
|
|
||||||
/// AndroidJavaProxy's reflection dispatcher can find them.
|
|
||||||
/// </summary>
|
|
||||||
internal class AndroidLocationProxy : AndroidJavaProxy
|
|
||||||
{
|
|
||||||
public AndroidLocationProvider Owner { get; set; }
|
|
||||||
public AndroidLocationProxy() : base("android.location.LocationListener") { }
|
|
||||||
|
|
||||||
// Called by Android each time a new fix arrives from the registered provider.
|
|
||||||
public void onLocationChanged(AndroidJavaObject location)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
if (location == null) return;
|
|
||||||
double lat = location.Call<double>("getLatitude");
|
|
||||||
double lon = location.Call<double>("getLongitude");
|
|
||||||
long t = location.Call<long>("getTime");
|
|
||||||
string provider = "";
|
|
||||||
try { provider = location.Call<string>("getProvider"); } catch { }
|
|
||||||
// Streaming callbacks are LIVE (never cached). The cached path
|
|
||||||
// calls UpdateLocation directly with isCached=true.
|
|
||||||
Owner?.UpdateLocation(lat, lon, t, provider, isCached: false);
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
Debug.LogWarning("[GPS-JNI] onLocationChanged failed: " + ex.Message);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Required by the LocationListener interface even if we don't use them.
|
|
||||||
// Missing methods cause java.lang.AbstractMethodError at runtime.
|
|
||||||
public void onStatusChanged(string provider, int status, AndroidJavaObject extras) { }
|
|
||||||
public void onProviderEnabled(string provider) { }
|
|
||||||
public void onProviderDisabled(string provider) { }
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Direct wrapper around android.location.LocationManager via JNI, used as
|
|
||||||
/// a replacement for Unity's Input.location on Android when the user picks
|
|
||||||
/// Auto/GpsOnly/NetworkOnly. Subscribed providers are configurable so the
|
|
||||||
/// position-source picker can rewire live without restart.
|
|
||||||
/// </summary>
|
|
||||||
internal class AndroidLocationProvider
|
|
||||||
{
|
|
||||||
private AndroidJavaObject _activity;
|
|
||||||
private AndroidJavaObject _locationManager;
|
|
||||||
private AndroidLocationProxy _gpsListener;
|
|
||||||
private AndroidLocationProxy _networkListener;
|
|
||||||
private double _lat, _lon;
|
|
||||||
private long _lastTimeMillis;
|
|
||||||
private long _lastLiveTimeMillis; // Time of most recent NON-cached fix.
|
|
||||||
private bool _hasFix;
|
|
||||||
private bool _hasLiveFix; // True once any streaming callback fired.
|
|
||||||
private string _activeProvider = "";
|
|
||||||
|
|
||||||
// Captured at Initialize() so the diagnostic can report
|
|
||||||
// "GPS provider DISABLED, only network enabled" etc.
|
|
||||||
private bool _gpsProviderEnabled;
|
|
||||||
private bool _networkProviderEnabled;
|
|
||||||
private bool _gpsLastKnownExists;
|
|
||||||
private bool _networkLastKnownExists;
|
|
||||||
private string _enabledProvidersList = "";
|
|
||||||
|
|
||||||
// Subscription scope - set in Initialize, used in Shutdown to know
|
|
||||||
// which listeners we registered.
|
|
||||||
private bool _subscribedGps;
|
|
||||||
private bool _subscribedNetwork;
|
|
||||||
|
|
||||||
public bool HasFix => _hasFix;
|
|
||||||
public bool HasLiveFix => _hasLiveFix;
|
|
||||||
public long LastLiveTimeMillis => _lastLiveTimeMillis;
|
|
||||||
public long LastTimeMillis => _lastTimeMillis;
|
|
||||||
public double Lat => _lat;
|
|
||||||
public double Lon => _lon;
|
|
||||||
public string ActiveProvider => _activeProvider;
|
|
||||||
public bool GpsProviderEnabled => _gpsProviderEnabled;
|
|
||||||
public bool NetworkProviderEnabled => _networkProviderEnabled;
|
|
||||||
public bool GpsLastKnownExists => _gpsLastKnownExists;
|
|
||||||
public bool NetworkLastKnownExists => _networkLastKnownExists;
|
|
||||||
public string EnabledProvidersList => _enabledProvidersList;
|
|
||||||
public bool SubscribedGps => _subscribedGps;
|
|
||||||
public bool SubscribedNetwork => _subscribedNetwork;
|
|
||||||
|
|
||||||
public bool Initialize(out string error, bool useGps, bool useNetwork)
|
|
||||||
{
|
|
||||||
error = "";
|
|
||||||
try
|
|
||||||
{
|
|
||||||
using (var unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
|
|
||||||
{
|
|
||||||
_activity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
|
|
||||||
}
|
|
||||||
if (_activity == null) { error = "no current activity"; return false; }
|
|
||||||
|
|
||||||
_locationManager = _activity.Call<AndroidJavaObject>("getSystemService", "location");
|
|
||||||
if (_locationManager == null) { error = "getSystemService(\"location\") returned null"; return false; }
|
|
||||||
|
|
||||||
// Capture provider enable state up front so the diagnostic
|
|
||||||
// can distinguish "provider disabled at OS level" from
|
|
||||||
// "provider enabled but produced no fix yet".
|
|
||||||
_gpsProviderEnabled = SafeIsProviderEnabled("gps");
|
|
||||||
_networkProviderEnabled = SafeIsProviderEnabled("network");
|
|
||||||
_enabledProvidersList = SafeGetEnabledProviders();
|
|
||||||
|
|
||||||
Debug.Log($"[GPS-JNI] init useGps={useGps} useNetwork={useNetwork} gps enabled={_gpsProviderEnabled} network enabled={_networkProviderEnabled} all enabled=[{_enabledProvidersList}]");
|
|
||||||
|
|
||||||
// Try cached last-known fixes from the providers we're about
|
|
||||||
// to subscribe to. If the OS already knows where we are
|
|
||||||
// (e.g. from another app that recently used GPS), we get a
|
|
||||||
// fix at zero cost and zero wait time. Tagged isCached so
|
|
||||||
// the diagnostic can mark them and we know we still need
|
|
||||||
// to wait for a streaming callback.
|
|
||||||
if (useNetwork) TryLastKnown("network", out _networkLastKnownExists);
|
|
||||||
if (useGps) TryLastKnown("gps", out _gpsLastKnownExists);
|
|
||||||
|
|
||||||
_subscribedGps = useGps;
|
|
||||||
_subscribedNetwork = useNetwork;
|
|
||||||
|
|
||||||
if (useGps) _gpsListener = new AndroidLocationProxy { Owner = this };
|
|
||||||
if (useNetwork) _networkListener = new AndroidLocationProxy { Owner = this };
|
|
||||||
|
|
||||||
// requestLocationUpdates must be called on a thread with a
|
|
||||||
// Looper. Use the Activity's UI thread, which always has one.
|
|
||||||
// minTime=1000ms, minDistance=0f - we want updates on every
|
|
||||||
// fix the OS produces. Previously this was 1f which gated
|
|
||||||
// out updates from a stationary phone (MIUI/newer Android
|
|
||||||
// are stricter about this and that's the suspected cause of
|
|
||||||
// "via gps (cached)" sticking forever).
|
|
||||||
_activity.Call("runOnUiThread", new AndroidJavaRunnable(() =>
|
|
||||||
{
|
|
||||||
if (useGps)
|
|
||||||
{
|
|
||||||
try { _locationManager.Call("requestLocationUpdates", "gps", 1000L, 0f, _gpsListener); }
|
|
||||||
catch (Exception ex) { Debug.LogWarning("[GPS-JNI] gps subscribe failed: " + ex.Message); }
|
|
||||||
}
|
|
||||||
if (useNetwork)
|
|
||||||
{
|
|
||||||
try { _locationManager.Call("requestLocationUpdates", "network", 1000L, 0f, _networkListener); }
|
|
||||||
catch (Exception ex) { Debug.LogWarning("[GPS-JNI] network subscribe failed: " + ex.Message); }
|
|
||||||
}
|
|
||||||
}));
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
error = "JNI init exception: " + ex.Message;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void TryLastKnown(string provider, out bool nonNullReturned)
|
|
||||||
{
|
|
||||||
nonNullReturned = false;
|
|
||||||
try
|
|
||||||
{
|
|
||||||
var loc = _locationManager.Call<AndroidJavaObject>("getLastKnownLocation", provider);
|
|
||||||
if (loc != null)
|
|
||||||
{
|
|
||||||
nonNullReturned = true;
|
|
||||||
double lat = loc.Call<double>("getLatitude");
|
|
||||||
double lon = loc.Call<double>("getLongitude");
|
|
||||||
long t = loc.Call<long>("getTime");
|
|
||||||
UpdateLocation(lat, lon, t, provider, isCached: true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
Debug.LogWarning($"[GPS-JNI] getLastKnownLocation({provider}) failed: " + ex.Message);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bool SafeIsProviderEnabled(string provider)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
return _locationManager.Call<bool>("isProviderEnabled", provider);
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
Debug.LogWarning($"[GPS-JNI] isProviderEnabled({provider}) failed: " + ex.Message);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Build a comma-separated list of currently-enabled providers via
|
|
||||||
// LocationManager.getProviders(true). We iterate the returned
|
|
||||||
// java.util.List by index because AndroidJavaObject does not
|
|
||||||
// implement IEnumerable.
|
|
||||||
string SafeGetEnabledProviders()
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
var list = _locationManager.Call<AndroidJavaObject>("getProviders", true);
|
|
||||||
if (list == null) return "";
|
|
||||||
int size = list.Call<int>("size");
|
|
||||||
var parts = new System.Text.StringBuilder();
|
|
||||||
for (int i = 0; i < size; i++)
|
|
||||||
{
|
|
||||||
var name = list.Call<string>("get", i);
|
|
||||||
if (i > 0) parts.Append(",");
|
|
||||||
parts.Append(name);
|
|
||||||
}
|
|
||||||
return parts.ToString();
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
Debug.LogWarning("[GPS-JNI] getProviders failed: " + ex.Message);
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void UpdateLocation(double lat, double lon, long timeMillis, string provider, bool isCached)
|
|
||||||
{
|
|
||||||
// Ignore older fixes if a newer one is already in hand. This lets
|
|
||||||
// both gps + network listeners feed us without ping-ponging
|
|
||||||
// between stale and fresh data.
|
|
||||||
if (timeMillis < _lastTimeMillis) return;
|
|
||||||
_lat = lat;
|
|
||||||
_lon = lon;
|
|
||||||
_lastTimeMillis = timeMillis;
|
|
||||||
// Active-provider name carries cached/live state in the diagnostic
|
|
||||||
// banner so the user can see at a glance whether streaming has
|
|
||||||
// kicked in or we're still on the initial cached snapshot.
|
|
||||||
_activeProvider = (provider ?? "") + (isCached ? " (cached)" : "");
|
|
||||||
_hasFix = true;
|
|
||||||
if (!isCached)
|
|
||||||
{
|
|
||||||
_hasLiveFix = true;
|
|
||||||
_lastLiveTimeMillis = timeMillis;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Shutdown()
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
if (_locationManager != null)
|
|
||||||
{
|
|
||||||
if (_gpsListener != null) _locationManager.Call("removeUpdates", _gpsListener);
|
|
||||||
if (_networkListener != null) _locationManager.Call("removeUpdates", _networkListener);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
Debug.LogWarning("[GPS-JNI] Shutdown failed: " + ex.Message);
|
|
||||||
}
|
|
||||||
_gpsListener = null;
|
|
||||||
_networkListener = null;
|
|
||||||
_locationManager = null;
|
|
||||||
_activity = null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
public static class PositonExtensions
|
public static class PositonExtensions
|
||||||
{
|
{
|
||||||
public static Position ToLocal(this Position position, Position center)
|
public static Position ToLocal(this Position position, Position center)
|
||||||
@@ -337,283 +51,34 @@ namespace Subsystems
|
|||||||
private GameObject _player;
|
private GameObject _player;
|
||||||
private bool _testMode;
|
private bool _testMode;
|
||||||
|
|
||||||
// PlayerPrefs key for the user's chosen position source. Persists
|
|
||||||
// across app restarts so a user who flipped to UnityInput because
|
|
||||||
// their phone hated the JNI path doesn't have to flip again every
|
|
||||||
// launch.
|
|
||||||
private const string PrefsSourceKey = "PositionSource_v1";
|
|
||||||
private PositionSource _currentSource = PositionSource.Auto;
|
|
||||||
|
|
||||||
// When the multi-client editor test mode picks a non-host bot as
|
|
||||||
// active, we need the host's WASD path to NOT also move. Set true
|
|
||||||
// by GameManager when active slot != 0.
|
|
||||||
public bool SuppressWasd = false;
|
|
||||||
|
|
||||||
private GPSState _GPSState = GPSState.Uninitialized;
|
private GPSState _GPSState = GPSState.Uninitialized;
|
||||||
private float _speed = 0.00001f;
|
private float _speed = 0.00001f;
|
||||||
private Position _mapCenter;
|
private Position _mapCenter;
|
||||||
private CoroutineHost _coroutineHost;
|
private CoroutineHost _coroutineHost = new CoroutineHost();
|
||||||
|
|
||||||
private int _gpsRetryCount = 0;
|
|
||||||
private const int _maxGpsRetries = 5;
|
|
||||||
private float _lastPositionSendTime;
|
|
||||||
private const float _positionKeepAliveSeconds = 1.0f;
|
|
||||||
|
|
||||||
// Diagnostic state. We capture *why* GPS init failed so the UI can
|
|
||||||
// surface it to the user without requiring logcat. Older Android
|
|
||||||
// phones (Mi 9T, A20e) hit silent failure modes that are impossible
|
|
||||||
// to distinguish from "still warming up" without this.
|
|
||||||
private string _lastGpsError = "";
|
|
||||||
private float _gpsInitStartTime = -1f;
|
|
||||||
// Bump from the original 20s. Cold-start GPS on older Android can
|
|
||||||
// easily exceed 20s indoors or under cloud cover - by the time the
|
|
||||||
// user notices nothing is happening, we've already given up.
|
|
||||||
private const int _gpsInitTimeoutSeconds = 60;
|
|
||||||
|
|
||||||
#if UNITY_ANDROID && !UNITY_EDITOR
|
|
||||||
// JNI-backed location provider, used for Auto/GpsOnly/NetworkOnly.
|
|
||||||
// UnityInput uses Input.location instead and leaves this null.
|
|
||||||
private AndroidLocationProvider _androidProvider;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/// <summary>Last known GPS position (for CreateLobby centre point)</summary>
|
|
||||||
public Position? LastKnownPosition => _currentPosition.Lat != 0 || _currentPosition.Lon != 0 ? _currentPosition : (Position?)null;
|
|
||||||
|
|
||||||
/// <summary>Current GPS state machine value (debug/diagnostic).</summary>
|
|
||||||
public string GpsStateName => _GPSState.ToString();
|
|
||||||
|
|
||||||
/// <summary>Last GPS error reason captured during init (empty if none).</summary>
|
|
||||||
public string LastGpsError => _lastGpsError ?? "";
|
|
||||||
|
|
||||||
/// <summary>Retry count out of max (debug/diagnostic).</summary>
|
|
||||||
public string GpsRetryProgress => $"{_gpsRetryCount}/{_maxGpsRetries}";
|
|
||||||
|
|
||||||
/// <summary>Currently selected position source (for UI cycle button).</summary>
|
|
||||||
public PositionSource CurrentSource => _currentSource;
|
|
||||||
|
|
||||||
/// <summary>Display name for the current source (for UI label).</summary>
|
|
||||||
public string CurrentSourceName
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
switch (_currentSource)
|
|
||||||
{
|
|
||||||
case PositionSource.Auto: return "Auto (GPS+Net)";
|
|
||||||
case PositionSource.GpsOnly: return "GPS only";
|
|
||||||
case PositionSource.NetworkOnly: return "Network only";
|
|
||||||
case PositionSource.UnityInput: return "Unity Input";
|
|
||||||
case PositionSource.EditorWasd: return "WASD";
|
|
||||||
default: return _currentSource.ToString();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Human-readable one-line GPS status for on-screen overlay. Designed
|
|
||||||
/// to be visible without ADB so users can self-diagnose permission
|
|
||||||
/// vs. timeout vs. device-disabled vs. running-but-no-fix-yet.
|
|
||||||
/// </summary>
|
|
||||||
public string GpsDiagnostic
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
if (_currentSource == PositionSource.EditorWasd)
|
|
||||||
{
|
|
||||||
if (_currentPosition.Lat == 0 && _currentPosition.Lon == 0)
|
|
||||||
return "WASD: waiting for map center";
|
|
||||||
return $"WASD lat={_currentPosition.Lat:F5} lon={_currentPosition.Lon:F5}";
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (_GPSState)
|
|
||||||
{
|
|
||||||
case GPSState.Uninitialized:
|
|
||||||
return "Uninitialized (will start on first lobby action)";
|
|
||||||
case GPSState.Initializing:
|
|
||||||
{
|
|
||||||
float elapsed = _gpsInitStartTime >= 0 ? Time.time - _gpsInitStartTime : 0;
|
|
||||||
string providers = "";
|
|
||||||
#if UNITY_ANDROID && !UNITY_EDITOR
|
|
||||||
if (_androidProvider != null && !string.IsNullOrEmpty(_androidProvider.EnabledProvidersList))
|
|
||||||
providers = $" providers=[{_androidProvider.EnabledProvidersList}]";
|
|
||||||
#endif
|
|
||||||
return $"Initializing ({elapsed:F1}s / max {_gpsInitTimeoutSeconds}s){providers}";
|
|
||||||
}
|
|
||||||
case GPSState.Running:
|
|
||||||
{
|
|
||||||
string suffix = "";
|
|
||||||
#if UNITY_ANDROID && !UNITY_EDITOR
|
|
||||||
if (_androidProvider != null)
|
|
||||||
{
|
|
||||||
string p = _androidProvider.ActiveProvider;
|
|
||||||
if (!string.IsNullOrEmpty(p)) suffix = " via " + p;
|
|
||||||
// Show how stale the most recent fix is (ms-level
|
|
||||||
// resolution) so "stuck on cached" is obvious at
|
|
||||||
// a glance: "via gps (cached) [no live, 47s old]".
|
|
||||||
if (!_androidProvider.HasLiveFix)
|
|
||||||
{
|
|
||||||
long now = (long)(DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds;
|
|
||||||
long ageMs = now - _androidProvider.LastTimeMillis;
|
|
||||||
if (_androidProvider.LastTimeMillis > 0 && ageMs > 0)
|
|
||||||
suffix += $" [no live, {ageMs / 1000}s old]";
|
|
||||||
else
|
|
||||||
suffix += " [no live]";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
long now = (long)(DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds;
|
|
||||||
long ageMs = now - _androidProvider.LastLiveTimeMillis;
|
|
||||||
if (ageMs > 5000) suffix += $" [live {ageMs / 1000}s old]";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
if (_currentPosition.Lat == 0 && _currentPosition.Lon == 0)
|
|
||||||
return "Running but no fix yet (waiting for satellites)" + suffix;
|
|
||||||
return $"Running lat={_currentPosition.Lat:F5} lon={_currentPosition.Lon:F5}" + suffix;
|
|
||||||
}
|
|
||||||
case GPSState.Failed:
|
|
||||||
return $"Failed: {(_lastGpsError ?? "unknown")} (retries {GpsRetryProgress})";
|
|
||||||
default:
|
|
||||||
return "?";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public GameManager_Input(GameClient gameClient, GameObject player, bool testMode)
|
public GameManager_Input(GameClient gameClient, GameObject player, bool testMode)
|
||||||
{
|
{
|
||||||
_gameClient = gameClient;
|
_gameClient = gameClient;
|
||||||
_player = player;
|
_player = player;
|
||||||
_testMode = testMode;
|
_testMode = testMode;
|
||||||
// CoroutineHost needs a MonoBehaviour on a real GameObject
|
|
||||||
var hostGO = new UnityEngine.GameObject("_CoroutineHost");
|
|
||||||
UnityEngine.Object.DontDestroyOnLoad(hostGO);
|
|
||||||
_coroutineHost = hostGO.AddComponent<CoroutineHost>();
|
|
||||||
|
|
||||||
// Restore the user's last picked source. Default depends on
|
|
||||||
// platform: editor defaults to EditorWasd (no GPS hardware in
|
|
||||||
// editor anyway); device defaults to Auto.
|
|
||||||
string saved = PlayerPrefs.GetString(PrefsSourceKey, "");
|
|
||||||
if (!string.IsNullOrEmpty(saved) && Enum.TryParse(saved, out PositionSource parsed))
|
|
||||||
{
|
|
||||||
_currentSource = parsed;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
#if UNITY_EDITOR
|
|
||||||
_currentSource = PositionSource.EditorWasd;
|
|
||||||
#else
|
|
||||||
_currentSource = PositionSource.Auto;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
// Legacy testMode flag forces EditorWasd. New code paths should
|
|
||||||
// use SwitchPositionSource(EditorWasd) instead, but we keep the
|
|
||||||
// old behavior for backward compatibility with the inspector flag.
|
|
||||||
if (_testMode) _currentSource = PositionSource.EditorWasd;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>Called from OnSceneLoaded when Client.unity loads so the
|
|
||||||
/// Player capsule (which lives in Client.unity) can be wired at runtime.</summary>
|
|
||||||
public void SetPlayerObject(GameObject player) { _player = player; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Switch the active position source backend live. Tears down the
|
|
||||||
/// current backend's listeners (JNI proxies, Input.location), resets
|
|
||||||
/// the state machine, and kicks off init for the new source. Persists
|
|
||||||
/// the choice to PlayerPrefs.
|
|
||||||
/// </summary>
|
|
||||||
public void SwitchPositionSource(PositionSource newSource)
|
|
||||||
{
|
|
||||||
if (_currentSource == newSource) return;
|
|
||||||
Debug.Log($"[GPS] SwitchPositionSource {_currentSource} -> {newSource}");
|
|
||||||
|
|
||||||
// Tear down whatever's running.
|
|
||||||
ShutdownCurrentBackend();
|
|
||||||
|
|
||||||
_currentSource = newSource;
|
|
||||||
PlayerPrefs.SetString(PrefsSourceKey, newSource.ToString());
|
|
||||||
PlayerPrefs.Save();
|
|
||||||
|
|
||||||
_GPSState = GPSState.Uninitialized;
|
|
||||||
_gpsRetryCount = 0;
|
|
||||||
_lastGpsError = "";
|
|
||||||
_gpsInitStartTime = -1f;
|
|
||||||
// Don't clear _currentPosition - the user has presumably been
|
|
||||||
// playing somewhere. Map markers/avatar position can stay until
|
|
||||||
// the next fix arrives from the new source.
|
|
||||||
|
|
||||||
EnsureGPSStarted();
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>Cycle through the available sources for tap-to-cycle UI.</summary>
|
|
||||||
public void CycleNextPositionSource()
|
|
||||||
{
|
|
||||||
var values = (PositionSource[])Enum.GetValues(typeof(PositionSource));
|
|
||||||
int idx = Array.IndexOf(values, _currentSource);
|
|
||||||
var next = values[(idx + 1) % values.Length];
|
|
||||||
SwitchPositionSource(next);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void ShutdownCurrentBackend()
|
|
||||||
{
|
|
||||||
#if UNITY_ANDROID && !UNITY_EDITOR
|
|
||||||
if (_androidProvider != null)
|
|
||||||
{
|
|
||||||
_androidProvider.Shutdown();
|
|
||||||
_androidProvider = null;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
// Stop Unity Input.location too, in case it was running.
|
|
||||||
try { Input.location.Stop(); } catch { }
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Kick off GPS initialization if it hasn't started yet. Safe to call
|
|
||||||
/// repeatedly. Hosts must call this from the lobby setup screen so
|
|
||||||
/// that by the time they click "Create Lobby" we have a real GPS
|
|
||||||
/// fix to use as the play-area center, instead of falling back to
|
|
||||||
/// the hardcoded coordinates.
|
|
||||||
/// </summary>
|
|
||||||
public void EnsureGPSStarted()
|
|
||||||
{
|
|
||||||
if (_currentSource == PositionSource.EditorWasd) return;
|
|
||||||
if (_coroutineHost == null) return;
|
|
||||||
// Allow tapping "Create Lobby" again (or any caller of this
|
|
||||||
// method) to retry from Failed up to _maxGpsRetries times.
|
|
||||||
if (_GPSState == GPSState.Uninitialized)
|
|
||||||
{
|
|
||||||
_coroutineHost.StartCoroutine(InitiallizeGPS());
|
|
||||||
}
|
|
||||||
else if (_GPSState == GPSState.Failed && _gpsRetryCount < _maxGpsRetries)
|
|
||||||
{
|
|
||||||
_gpsRetryCount++;
|
|
||||||
_coroutineHost.StartCoroutine(InitiallizeGPS());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
public void positionCheck()
|
public void positionCheck()
|
||||||
{
|
{
|
||||||
var state = _gameClient?.CurrentLobbyState;
|
|
||||||
if (state == null || state.Phase != GamePhase.Playing)
|
|
||||||
return;
|
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (_currentSource == PositionSource.EditorWasd)
|
if (_gameClient.CurrentLobbyState.Phase == GamePhase.Playing)
|
||||||
{
|
{
|
||||||
if (_currentPosition == new Position(0, 0))
|
if (_testMode)
|
||||||
{
|
{
|
||||||
if (state.MapData == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
|
if (_currentPosition == null || _currentPosition == new Position(0, 0))
|
||||||
|
{
|
||||||
//Init blok
|
//Init blok
|
||||||
_currentPosition = state.MapData.Center;
|
_currentPosition = _gameClient.CurrentLobbyState.MapData.Center;
|
||||||
_mapCenter = state.MapData.Center;
|
_mapCenter = _gameClient.CurrentLobbyState.MapData.Center;
|
||||||
_lastSentPosition = _currentPosition;
|
_lastSentPosition = _currentPosition;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!SuppressWasd)
|
|
||||||
TestPlayerPosition();
|
TestPlayerPosition();
|
||||||
else
|
|
||||||
TrySendCurrentPosition(); // keep-alive only
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -628,84 +93,54 @@ namespace Subsystems
|
|||||||
}
|
}
|
||||||
else if (_GPSState == GPSState.Running)
|
else if (_GPSState == GPSState.Running)
|
||||||
{
|
{
|
||||||
EnsureMapCenter();
|
try
|
||||||
TrySendCurrentPosition();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
Debug.Log("GPS failed, trying again...");
|
if (_currentPosition != _lastSentPosition)
|
||||||
if (_gpsRetryCount < _maxGpsRetries)
|
|
||||||
{
|
{
|
||||||
_gpsRetryCount++;
|
_gameClient.UpdatePosition(_currentPosition);
|
||||||
_GPSState = GPSState.Uninitialized;
|
_lastSentPosition = _currentPosition;
|
||||||
}
|
_player.transform.position = _currentPosition.ToLocalVector3(_mapCenter);
|
||||||
else
|
_player.transform.rotation = Quaternion.Euler(0, (float)CalculateHeading(_lastSentPosition.ToLocalVector3(_mapCenter), _currentPosition.ToLocalVector3(_mapCenter)), 0);
|
||||||
{
|
|
||||||
Debug.LogWarning("GPS unavailable after max retries. Using last known position.");
|
|
||||||
// Keep _GPSState = Failed so we stop retrying
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Debug.LogWarning($"[Input] positionCheck failed: {ex.Message}");
|
Debug.Log(ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
private void EnsureMapCenter()
|
|
||||||
{
|
{
|
||||||
if (_mapCenter.Lat != 0 || _mapCenter.Lon != 0)
|
Debug.Log("GPS failed, trying again...");
|
||||||
return;
|
_GPSState = GPSState.Uninitialized;
|
||||||
|
|
||||||
var md = _gameClient?.CurrentLobbyState?.MapData;
|
|
||||||
if (md != null)
|
|
||||||
_mapCenter = md.Center;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void TrySendCurrentPosition()
|
|
||||||
{
|
|
||||||
bool moved = _currentPosition != _lastSentPosition;
|
|
||||||
bool keepAliveDue = (Time.time - _lastPositionSendTime) >= _positionKeepAliveSeconds;
|
|
||||||
if (!moved && !keepAliveDue)
|
|
||||||
return;
|
|
||||||
|
|
||||||
var previous = _lastSentPosition;
|
|
||||||
_gameClient.UpdatePosition(_currentPosition);
|
|
||||||
_lastSentPosition = _currentPosition;
|
|
||||||
_lastPositionSendTime = Time.time;
|
|
||||||
|
|
||||||
if (_player == null || (_mapCenter.Lat == 0 && _mapCenter.Lon == 0))
|
|
||||||
return;
|
|
||||||
|
|
||||||
var localCurrent = _currentPosition.ToLocalVector3(_mapCenter);
|
|
||||||
_player.transform.position = localCurrent;
|
|
||||||
|
|
||||||
if (previous.Lat == 0 && previous.Lon == 0)
|
|
||||||
return;
|
|
||||||
|
|
||||||
var heading = CalculateHeading(previous.ToLocalVector3(_mapCenter), localCurrent);
|
|
||||||
if (heading.HasValue)
|
|
||||||
_player.transform.rotation = Quaternion.Euler(0, (float)heading.Value, 0);
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (NullReferenceException ex) { Debug.Log(ex); }
|
||||||
|
}
|
||||||
private void TestPlayerPosition()
|
private void TestPlayerPosition()
|
||||||
{
|
{
|
||||||
double x = Input.GetAxis("Horizontal");
|
double x = Input.GetAxis("Horizontal");
|
||||||
double y = Input.GetAxis("Vertical");
|
double y = Input.GetAxis("Vertical");
|
||||||
|
Debug.Log($"Input: {x}, {y}");
|
||||||
_currentPosition = new Position( _lastSentPosition.Lat + y * _speed, _lastSentPosition.Lon + x * _speed);
|
_currentPosition = new Position( _lastSentPosition.Lat + y * _speed, _lastSentPosition.Lon + x * _speed);
|
||||||
|
Debug.Log($"Current Position: {_currentPosition.Lat}, {_currentPosition.Lon}");
|
||||||
var localCurrent = _currentPosition.ToLocalVector3(_mapCenter);
|
var localCurrent = _currentPosition.ToLocalVector3(_mapCenter);
|
||||||
|
Debug.Log($"Local Current Position: {localCurrent}");
|
||||||
var heading = CalculateHeading(_lastSentPosition.ToLocalVector3(_mapCenter), localCurrent);
|
var heading = CalculateHeading(_lastSentPosition.ToLocalVector3(_mapCenter), localCurrent);
|
||||||
if (heading != null)
|
if (heading != null)
|
||||||
{
|
{
|
||||||
if (_player != null)
|
Debug.Log($"Heading: {heading}");
|
||||||
_player.transform.rotation = Quaternion.Euler(0, (float)heading, 0);
|
_player.transform.rotation = Quaternion.Euler(0, (float)heading, 0);
|
||||||
}
|
}
|
||||||
if (_player != null)
|
|
||||||
_player.transform.position = localCurrent;
|
_player.transform.position = localCurrent;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
TrySendCurrentPosition();
|
if (_currentPosition != _lastSentPosition)
|
||||||
|
{
|
||||||
|
_gameClient.UpdatePosition(_currentPosition);
|
||||||
|
_lastSentPosition = _currentPosition;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
@@ -715,212 +150,105 @@ namespace Subsystems
|
|||||||
}
|
}
|
||||||
private double? CalculateHeading(Vector3 first, Vector3 second)
|
private double? CalculateHeading(Vector3 first, Vector3 second)
|
||||||
{
|
{
|
||||||
if ((first - second).magnitude < 0.0001f) return null;
|
double? heading = null;
|
||||||
float dx = second.x - first.x;
|
if ((first - second).magnitude == 0)
|
||||||
float dz = second.z - first.z;
|
{
|
||||||
float heading = Mathf.Atan2(dx, dz) * Mathf.Rad2Deg;
|
return null;
|
||||||
if (heading < 0) heading += 360f;
|
}
|
||||||
|
else if (first.x == second.x && first.z < second.z)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
else if (first.x == second.x && first.z > second.z)
|
||||||
|
{
|
||||||
|
return 180;
|
||||||
|
}
|
||||||
|
else if (first.x > second.x && first.z == second.z)
|
||||||
|
{
|
||||||
|
return 270;
|
||||||
|
}
|
||||||
|
else if (first.x < second.x && first.z == second.z)
|
||||||
|
{
|
||||||
|
return 90;
|
||||||
|
}
|
||||||
|
else if (first.x < second.x && first.z < second.z)
|
||||||
|
{
|
||||||
|
heading = Math.Asin((second.z - first.z) / first.DistanceTo(second));
|
||||||
|
return (heading * 180) / Math.PI;
|
||||||
|
}
|
||||||
|
else if (first.x < second.x && first.z > second.z)
|
||||||
|
{
|
||||||
|
heading = Math.Asin((second.z - first.z) / first.DistanceTo(second));
|
||||||
|
return (heading * 180) / Math.PI + 180;
|
||||||
|
}
|
||||||
|
else if (first.x > second.x && first.z < second.z)
|
||||||
|
{
|
||||||
|
heading = Math.Asin((second.z - first.z) / first.DistanceTo(second));
|
||||||
|
return (heading * 180) / Math.PI - 90;
|
||||||
|
}
|
||||||
|
else if (first.x > second.x && first.z > second.z)
|
||||||
|
{
|
||||||
|
heading = Math.Asin((second.z - first.z) / first.DistanceTo(second));
|
||||||
|
return (heading * 180) / Math.PI - 90;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
return heading;
|
return heading;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
IEnumerator InitiallizeGPS()
|
IEnumerator InitiallizeGPS()
|
||||||
{
|
{
|
||||||
_GPSState = GPSState.Initializing;
|
_GPSState = GPSState.Initializing;
|
||||||
_gpsInitStartTime = Time.time;
|
|
||||||
_lastGpsError = "";
|
|
||||||
|
|
||||||
#if UNITY_ANDROID
|
|
||||||
// Request fine location permission if not already granted.
|
|
||||||
// On Android 12+ a "precise" toggle exists separately from coarse,
|
|
||||||
// but Unity's FineLocation request covers both for our purposes.
|
|
||||||
if (!UnityEngine.Android.Permission.HasUserAuthorizedPermission(UnityEngine.Android.Permission.FineLocation))
|
|
||||||
{
|
|
||||||
UnityEngine.Android.Permission.RequestUserPermission(UnityEngine.Android.Permission.FineLocation);
|
|
||||||
// Wait up to 10 seconds for user to respond to the permission dialog
|
|
||||||
float waited = 0f;
|
|
||||||
while (!UnityEngine.Android.Permission.HasUserAuthorizedPermission(UnityEngine.Android.Permission.FineLocation) && waited < 10f)
|
|
||||||
{
|
|
||||||
yield return new WaitForSeconds(0.5f);
|
|
||||||
waited += 0.5f;
|
|
||||||
}
|
|
||||||
if (!UnityEngine.Android.Permission.HasUserAuthorizedPermission(UnityEngine.Android.Permission.FineLocation))
|
|
||||||
{
|
|
||||||
_lastGpsError = "Permission denied (fine location)";
|
|
||||||
Debug.LogError("[GPS] " + _lastGpsError);
|
|
||||||
_GPSState = GPSState.Failed;
|
|
||||||
yield break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if UNITY_ANDROID && !UNITY_EDITOR
|
|
||||||
// Choose subscription scope based on selected source. UnityInput
|
|
||||||
// skips JNI entirely and falls through to the Input.location path
|
|
||||||
// below (the same path iOS / editor use).
|
|
||||||
if (_currentSource == PositionSource.Auto ||
|
|
||||||
_currentSource == PositionSource.GpsOnly ||
|
|
||||||
_currentSource == PositionSource.NetworkOnly)
|
|
||||||
{
|
|
||||||
bool useGps = (_currentSource != PositionSource.NetworkOnly);
|
|
||||||
bool useNetwork = (_currentSource != PositionSource.GpsOnly);
|
|
||||||
|
|
||||||
if (_androidProvider != null)
|
|
||||||
{
|
|
||||||
_androidProvider.Shutdown();
|
|
||||||
_androidProvider = null;
|
|
||||||
}
|
|
||||||
_androidProvider = new AndroidLocationProvider();
|
|
||||||
if (!_androidProvider.Initialize(out var initError, useGps, useNetwork))
|
|
||||||
{
|
|
||||||
_lastGpsError = "Native LocationManager failed: " + initError;
|
|
||||||
Debug.LogError("[GPS] " + _lastGpsError);
|
|
||||||
_androidProvider = null;
|
|
||||||
_GPSState = GPSState.Failed;
|
|
||||||
yield break;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Fast-fail if neither subscribed provider is enabled at OS
|
|
||||||
// level. Waiting 60s for fixes from disabled providers is
|
|
||||||
// pointless - tell the user immediately what's wrong.
|
|
||||||
bool anyUsableEnabled =
|
|
||||||
(useGps && _androidProvider.GpsProviderEnabled) ||
|
|
||||||
(useNetwork && _androidProvider.NetworkProviderEnabled);
|
|
||||||
if (!anyUsableEnabled)
|
|
||||||
{
|
|
||||||
string which = useGps && useNetwork ? "gps + network"
|
|
||||||
: useGps ? "gps"
|
|
||||||
: "network";
|
|
||||||
_lastGpsError = $"{which} provider DISABLED at OS level. Open Settings > Location and switch it ON. Or tap [Source] to try a different backend.";
|
|
||||||
Debug.LogError("[GPS] " + _lastGpsError);
|
|
||||||
_androidProvider.Shutdown();
|
|
||||||
_androidProvider = null;
|
|
||||||
_GPSState = GPSState.Failed;
|
|
||||||
yield break;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Wait for the first fix (cached or live).
|
|
||||||
int maxWaitJni = _gpsInitTimeoutSeconds;
|
|
||||||
while (!_androidProvider.HasFix && maxWaitJni > 0)
|
|
||||||
{
|
|
||||||
yield return new WaitForSeconds(1);
|
|
||||||
maxWaitJni--;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!_androidProvider.HasFix)
|
|
||||||
{
|
|
||||||
string enabled = _androidProvider.EnabledProvidersList ?? "";
|
|
||||||
string gpsState = _androidProvider.GpsProviderEnabled ? "ON" : "OFF";
|
|
||||||
string netState = _androidProvider.NetworkProviderEnabled ? "ON" : "OFF";
|
|
||||||
string lastKnown = $"lastKnown[gps={(_androidProvider.GpsLastKnownExists ? "yes" : "no")}, net={(_androidProvider.NetworkLastKnownExists ? "yes" : "no")}]";
|
|
||||||
|
|
||||||
_lastGpsError = $"Timeout {_gpsInitTimeoutSeconds}s on {_currentSource}. enabled=[{enabled}] gps={gpsState} net={netState} {lastKnown}. Try [Source] cycle to switch backends.";
|
|
||||||
Debug.LogError("[GPS] " + _lastGpsError);
|
|
||||||
_androidProvider.Shutdown();
|
|
||||||
_androidProvider = null;
|
|
||||||
_GPSState = GPSState.Failed;
|
|
||||||
yield break;
|
|
||||||
}
|
|
||||||
|
|
||||||
_currentPosition = new Position(_androidProvider.Lat, _androidProvider.Lon);
|
|
||||||
_GPSState = GPSState.Running;
|
|
||||||
_gpsRetryCount = 0;
|
|
||||||
_coroutineHost.StartCoroutine(AndroidGPSService());
|
|
||||||
yield break;
|
|
||||||
}
|
|
||||||
|
|
||||||
// _currentSource == UnityInput on Android: fall through to the
|
|
||||||
// Input.location path below. This is the recovery path for
|
|
||||||
// newer Android phones where JNI's streaming-callbacks don't
|
|
||||||
// fire (MIUI/HyperOS background restrictions, approximate-vs-
|
|
||||||
// precise permission, minDistance gating on stationary phones).
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// iOS / editor / non-Android / Android-with-UnityInput-source:
|
|
||||||
// use Unity's Input.location.
|
|
||||||
if (!Input.location.isEnabledByUser)
|
if (!Input.location.isEnabledByUser)
|
||||||
{
|
{
|
||||||
_lastGpsError = "Location services not enabled by user";
|
Debug.LogError("Location not enabled on device or app does not have permission to access location");
|
||||||
Debug.LogError("[GPS] " + _lastGpsError);
|
|
||||||
_GPSState = GPSState.Failed;
|
|
||||||
yield break;
|
|
||||||
}
|
}
|
||||||
|
// Starts the location service.
|
||||||
|
|
||||||
float desiredAccuracyInMeters = 5f;
|
float desiredAccuracyInMeters = 10f;
|
||||||
float updateDistanceInMeters = 1f;
|
float updateDistanceInMeters = 10f;
|
||||||
|
|
||||||
Input.location.Start(desiredAccuracyInMeters, updateDistanceInMeters);
|
Input.location.Start(desiredAccuracyInMeters, updateDistanceInMeters);
|
||||||
|
|
||||||
int maxWait = _gpsInitTimeoutSeconds;
|
// Waits until the location service initializes
|
||||||
|
int maxWait = 20;
|
||||||
while (Input.location.status == LocationServiceStatus.Initializing && maxWait > 0)
|
while (Input.location.status == LocationServiceStatus.Initializing && maxWait > 0)
|
||||||
{
|
{
|
||||||
yield return new WaitForSeconds(1);
|
yield return new WaitForSeconds(1);
|
||||||
maxWait--;
|
maxWait--;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If the service didn't initialize in 20 seconds this cancels location service use.
|
||||||
if (maxWait < 1)
|
if (maxWait < 1)
|
||||||
{
|
{
|
||||||
_lastGpsError = $"Timed out after {_gpsInitTimeoutSeconds}s waiting for first fix (try moving outdoors, or tap [Source] to try a different backend)";
|
|
||||||
Debug.LogError("[GPS] " + _lastGpsError);
|
|
||||||
_GPSState = GPSState.Failed;
|
_GPSState = GPSState.Failed;
|
||||||
|
Debug.LogError("Timed out");
|
||||||
yield break;
|
yield break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Input.location.status == LocationServiceStatus.Failed)
|
|
||||||
{
|
|
||||||
_lastGpsError = "Unity Input.location reported Failed status";
|
|
||||||
Debug.LogError("[GPS] " + _lastGpsError);
|
|
||||||
_GPSState = GPSState.Failed;
|
|
||||||
yield break;
|
|
||||||
}
|
|
||||||
|
|
||||||
_GPSState = GPSState.Running;
|
_GPSState = GPSState.Running;
|
||||||
_gpsRetryCount = 0;
|
yield return _coroutineHost.StartCoroutine(GPSService());
|
||||||
_coroutineHost.StartCoroutine(GPSService());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#if UNITY_ANDROID && !UNITY_EDITOR
|
|
||||||
/// <summary>
|
|
||||||
/// Mirrors the JNI provider's most recent fix into _currentPosition
|
|
||||||
/// every 0.5s so the rest of the game (which polls _currentPosition
|
|
||||||
/// indirectly via LastKnownPosition / TrySendCurrentPosition) keeps
|
|
||||||
/// working unchanged. Replaces GPSService on Android.
|
|
||||||
/// </summary>
|
|
||||||
IEnumerator AndroidGPSService()
|
|
||||||
{
|
|
||||||
while (_GPSState == GPSState.Running && _androidProvider != null)
|
|
||||||
{
|
|
||||||
if (_androidProvider.HasFix)
|
|
||||||
{
|
|
||||||
_currentPosition = new Position(_androidProvider.Lat, _androidProvider.Lon);
|
|
||||||
}
|
|
||||||
yield return new WaitForSeconds(0.5f);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Loop ended (state != Running or provider disposed). Clean up
|
|
||||||
// listeners so we don't leak across retries.
|
|
||||||
if (_androidProvider != null)
|
|
||||||
{
|
|
||||||
_androidProvider.Shutdown();
|
|
||||||
_androidProvider = null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
IEnumerator GPSService()
|
IEnumerator GPSService()
|
||||||
{
|
{
|
||||||
while (_GPSState == GPSState.Running)
|
// Check if the user has location service enabled.
|
||||||
{
|
|
||||||
|
|
||||||
|
// If the connection failed this cancels location service use.
|
||||||
if (Input.location.status == LocationServiceStatus.Failed)
|
if (Input.location.status == LocationServiceStatus.Failed)
|
||||||
{
|
{
|
||||||
_lastGpsError = "Location service died after init (provider stopped)";
|
Debug.LogError("Unable to determine device location");
|
||||||
Debug.LogError("[GPS] " + _lastGpsError);
|
|
||||||
_GPSState = GPSState.Failed;
|
|
||||||
yield break;
|
yield break;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
// Keep current GPS position fresh; sending is throttled in positionCheck().
|
{
|
||||||
var data = Input.location.lastData;
|
// If the connection succeeded, this retrieves the device's current location and displays it in the Console window.
|
||||||
_currentPosition = new Position(data.latitude, data.longitude);
|
_currentPosition = new Position(Input.location.lastData.latitude, Input.location.lastData.longitude);
|
||||||
yield return new WaitForSeconds(0.5f);
|
Debug.Log("Location: " + Input.location.lastData.latitude + " " + Input.location.lastData.longitude + " " + Input.location.lastData.altitude + " " + Input.location.lastData.horizontalAccuracy + " " + Input.location.lastData.timestamp);
|
||||||
|
yield return new WaitForSeconds(5f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Stops the location service if there is no need to query location updates continuously.
|
||||||
|
yield return _coroutineHost.StartCoroutine(GPSService());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3,8 +3,9 @@ using System;
|
|||||||
using System.Collections;
|
using System.Collections;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using TMPro;
|
using UnityEditor;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
using UnityEngine.Localization.Pseudo;
|
||||||
using UnityEngine.UI;
|
using UnityEngine.UI;
|
||||||
|
|
||||||
|
|
||||||
@@ -12,8 +13,8 @@ namespace Subsystems{
|
|||||||
[System.Serializable]
|
[System.Serializable]
|
||||||
public class BuildingSettings
|
public class BuildingSettings
|
||||||
{
|
{
|
||||||
public Material ResidentialBuildingsMat;
|
public Material ResidentalBuildingsMat;
|
||||||
public float ResidentialBuildingHeight;
|
public float ResidentalBuildingHeight;
|
||||||
public Material CommercialBuildingsMat;
|
public Material CommercialBuildingsMat;
|
||||||
public float CommercialBuildingHeight;
|
public float CommercialBuildingHeight;
|
||||||
public Material IndustrialBuildingsMat;
|
public Material IndustrialBuildingsMat;
|
||||||
@@ -65,43 +66,6 @@ namespace Subsystems{
|
|||||||
private PathwaySettings _pathwaySettings;
|
private PathwaySettings _pathwaySettings;
|
||||||
private AreaSettings _areaSettings;
|
private AreaSettings _areaSettings;
|
||||||
private const float _metersPerUnit = 1f;
|
private const float _metersPerUnit = 1f;
|
||||||
|
|
||||||
// ── Layer Y separation (single source of truth for vertical stacking) ───
|
|
||||||
// Areas at the bottom, paths above areas, buildings extruded upward from
|
|
||||||
// their own base, POIs floating well above everything else. Z-fighting
|
|
||||||
// happens when adjacent geometry shares a Y; these constants keep each
|
|
||||||
// logical layer at a distinct elevation.
|
|
||||||
private const float kAreaBaseY = 0.10f;
|
|
||||||
private const float kPathY = 0.30f;
|
|
||||||
private const float kBuildingBaseY = 0.50f;
|
|
||||||
private const float kPoiY = 2.00f;
|
|
||||||
|
|
||||||
// Render-queue forcing was tried in P3 to disambiguate same-Y geometry
|
|
||||||
// but turned out to be the cause of the "blank map in mobile game view,
|
|
||||||
// fine in scene view" regression: forcing transparent-class shaders
|
|
||||||
// (default queue 3000+) into the Geometry range (2000-2150) breaks
|
|
||||||
// their depth-write/blend assumptions on mobile shader paths. The
|
|
||||||
// editor's scene view masks it because it uses different render paths
|
|
||||||
// and post-process is off there. Queue forcing removed in P8;
|
|
||||||
// disambiguation is now via Y-layering + per-area Y-stagger alone,
|
|
||||||
// which the depth buffer resolves correctly even on weak mobile GPUs.
|
|
||||||
|
|
||||||
// ── Marker sizing (top-down camera, units = meters) ─────────────────
|
|
||||||
// The camera's orthographic size pushes "1 meter" to a small fraction
|
|
||||||
// of the screen. Markers need to be visibly larger than buildings'
|
|
||||||
// footprints for instant recognition.
|
|
||||||
private const float kMarkerHeight = 8f; // pillar height
|
|
||||||
private const float kMarkerRadius = 3f; // pillar radius (cylinder X/Z)
|
|
||||||
private const float kMarkerY = 4f; // base Y so pillar centers ~mid-height
|
|
||||||
private const float kLabelY = 9f; // text label sits above pillar top
|
|
||||||
private const float kLabelFontSize = 14f; // 3D text size in world units
|
|
||||||
|
|
||||||
// Runtime marker collections
|
|
||||||
private Dictionary<string, GameObject> _taskMarkers = new Dictionary<string, GameObject>();
|
|
||||||
private Dictionary<string, GameObject> _bodyMarkers = new Dictionary<string, GameObject>();
|
|
||||||
private Dictionary<string, GameObject> _playerAvatars = new Dictionary<string, GameObject>();
|
|
||||||
private List<GameObject> _sabotageMarkers = new List<GameObject>();
|
|
||||||
|
|
||||||
public GameManager_Map(GameClient gameClient, GameObject mapCenterPoint, BuildingSettings buildingSettings, PathwaySettings pathwaySettings, AreaSettings areaSettings)
|
public GameManager_Map(GameClient gameClient, GameObject mapCenterPoint, BuildingSettings buildingSettings, PathwaySettings pathwaySettings, AreaSettings areaSettings)
|
||||||
{
|
{
|
||||||
_gameClient = gameClient;
|
_gameClient = gameClient;
|
||||||
@@ -110,25 +74,8 @@ namespace Subsystems{
|
|||||||
_pathwaySettings = pathwaySettings;
|
_pathwaySettings = pathwaySettings;
|
||||||
_areaSettings = areaSettings;
|
_areaSettings = areaSettings;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool IsSceneReady => _mapCenterPoint != null;
|
|
||||||
|
|
||||||
/// <summary>Called from OnSceneLoaded when Client.unity is loaded so the
|
|
||||||
/// MapCenterPoint (which lives in Client.unity) can be wired at runtime.</summary>
|
|
||||||
public void SetMapCenterPoint(GameObject go) { _mapCenterPoint = go; }
|
|
||||||
public void BuildMap()
|
public void BuildMap()
|
||||||
{
|
{
|
||||||
if (_mapCenterPoint == null)
|
|
||||||
{
|
|
||||||
Debug.LogWarning("[Map] BuildMap skipped: MapCenterPoint is not yet bound.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (_gameClient?.CurrentLobbyState?.MapData == null)
|
|
||||||
{
|
|
||||||
Debug.LogWarning("[Map] BuildMap skipped: no MapData in CurrentLobbyState.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
ClearChildren();
|
ClearChildren();
|
||||||
_centerPosition = _gameClient.CurrentLobbyState.MapData.Center;
|
_centerPosition = _gameClient.CurrentLobbyState.MapData.Center;
|
||||||
GameObject buildingsRoot = new GameObject("Buildings");
|
GameObject buildingsRoot = new GameObject("Buildings");
|
||||||
@@ -162,133 +109,7 @@ namespace Subsystems{
|
|||||||
GameObject a = BuildAreaMesh(area);
|
GameObject a = BuildAreaMesh(area);
|
||||||
a.transform.parent = areaRoot.transform;
|
a.transform.parent = areaRoot.transform;
|
||||||
}
|
}
|
||||||
|
//TODO: POIs
|
||||||
GameObject poiRoot = new GameObject("POIs");
|
|
||||||
poiRoot.transform.parent = _mapCenterPoint.transform;
|
|
||||||
int poiCount = 0;
|
|
||||||
foreach (var poi in _gameClient.CurrentLobbyState.MapData.GetPOIs())
|
|
||||||
{
|
|
||||||
GameObject p = BuildPOIMarker(poi);
|
|
||||||
if (p != null) { p.transform.parent = poiRoot.transform; poiCount++; }
|
|
||||||
}
|
|
||||||
|
|
||||||
// Diagnostic - if the user reports "map missing in game view" but
|
|
||||||
// the counts here are non-zero, the bug is camera/culling related,
|
|
||||||
// not a build issue.
|
|
||||||
int buildings = _gameClient.CurrentLobbyState.MapData.GetBuildings()?.Count ?? 0;
|
|
||||||
int paths = _gameClient.CurrentLobbyState.MapData.GetPathways()?.Count ?? 0;
|
|
||||||
int areas = _gameClient.CurrentLobbyState.MapData.GetAreas()?.Count ?? 0;
|
|
||||||
Debug.Log($"[Map] BuildMap done: {buildings} buildings, {paths} paths, " +
|
|
||||||
$"{areas} areas, {poiCount} POIs. MapCenterPoint={_mapCenterPoint.name} " +
|
|
||||||
$"layer={_mapCenterPoint.layer} pos={_mapCenterPoint.transform.position} " +
|
|
||||||
$"scale={_mapCenterPoint.transform.localScale}");
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Build a tall, brightly-colored pillar for a Point of Interest with
|
|
||||||
/// a 3D text label above it (e.g. "FOOD", "SHOP"). The label is laid
|
|
||||||
/// flat on the XZ plane facing UP so it reads correctly under the
|
|
||||||
/// orthogonal top-down camera.
|
|
||||||
/// </summary>
|
|
||||||
private GameObject BuildPOIMarker(MapPOI poi)
|
|
||||||
{
|
|
||||||
if (poi == null) return null;
|
|
||||||
var color = ColorForPOI(poi.POIType);
|
|
||||||
string label = LabelForPOI(poi.POIType);
|
|
||||||
var pos = poi.Location.ToLocalVector3(_centerPosition);
|
|
||||||
return CreateMarkerWithLabel($"POI_{poi.POIType}_{poi.Id}", pos, color, label);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Shared marker builder: tall colored cylinder pillar + 3D text label
|
|
||||||
/// above it. Used by POIs, tasks, bodies, and sabotage stations so
|
|
||||||
/// they all share a visual language ("colored pillar with a name").
|
|
||||||
/// </summary>
|
|
||||||
private GameObject CreateMarkerWithLabel(string name, Vector3 worldPos, Color color, string label)
|
|
||||||
{
|
|
||||||
var go = GameObject.CreatePrimitive(PrimitiveType.Cylinder);
|
|
||||||
go.name = name;
|
|
||||||
|
|
||||||
// Strip the auto-added collider - markers are visual only.
|
|
||||||
var col = go.GetComponent<Collider>();
|
|
||||||
if (col != null) UnityEngine.Object.Destroy(col);
|
|
||||||
|
|
||||||
go.transform.position = worldPos + Vector3.up * kMarkerY;
|
|
||||||
// Cylinder's default unit is 2 tall, 1 wide. Scale Y by half of
|
|
||||||
// kMarkerHeight (built-in is 2 units), X/Z by kMarkerRadius.
|
|
||||||
go.transform.localScale = new Vector3(kMarkerRadius, kMarkerHeight * 0.5f, kMarkerRadius);
|
|
||||||
|
|
||||||
var mr = go.GetComponent<MeshRenderer>();
|
|
||||||
if (mr != null)
|
|
||||||
{
|
|
||||||
// One .material access -> single clone of the primitive's
|
|
||||||
// default mat. Don't touch renderQueue (P3 regression cause).
|
|
||||||
var inst = mr.material;
|
|
||||||
if (inst != null) inst.color = color;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 3D text label - lays flat on top of the pillar facing up.
|
|
||||||
// Parented to the marker so it follows position changes.
|
|
||||||
var labelGO = new GameObject("Label");
|
|
||||||
labelGO.transform.SetParent(go.transform, worldPositionStays: false);
|
|
||||||
// Local Y offset: pillar's local scale Y is kMarkerHeight/2, but
|
|
||||||
// the cylinder primitive is 2 units tall in local space, so its
|
|
||||||
// top is at local +1. Label sits a hair above that.
|
|
||||||
labelGO.transform.localPosition = new Vector3(0, 1.05f, 0);
|
|
||||||
// Rotate 90 around X so the text quad's normal points +Y (toward
|
|
||||||
// the top-down camera). The default TMP forward is +Z.
|
|
||||||
labelGO.transform.localRotation = Quaternion.Euler(90f, 0f, 0f);
|
|
||||||
// Compensate for the cylinder's non-uniform parent scale so the
|
|
||||||
// text size in world units matches kLabelFontSize regardless of
|
|
||||||
// how the pillar was scaled.
|
|
||||||
labelGO.transform.localScale = new Vector3(
|
|
||||||
1f / kMarkerRadius,
|
|
||||||
1f / (kMarkerHeight * 0.5f),
|
|
||||||
1f / kMarkerRadius);
|
|
||||||
|
|
||||||
var tmp = labelGO.AddComponent<TextMeshPro>();
|
|
||||||
tmp.text = label;
|
|
||||||
tmp.fontSize = kLabelFontSize;
|
|
||||||
tmp.color = Color.white;
|
|
||||||
tmp.fontStyle = FontStyles.Bold;
|
|
||||||
tmp.alignment = TextAlignmentOptions.Center;
|
|
||||||
tmp.outlineColor = Color.black;
|
|
||||||
tmp.outlineWidth = 0.25f;
|
|
||||||
// Reasonable bounds so the text mesh isn't auto-clipped.
|
|
||||||
var rt = tmp.rectTransform;
|
|
||||||
rt.sizeDelta = new Vector2(20, 4);
|
|
||||||
|
|
||||||
return go;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static Color ColorForPOI(MapPOIType type)
|
|
||||||
{
|
|
||||||
switch (type)
|
|
||||||
{
|
|
||||||
case MapPOIType.FoodDrink: return new Color(1.00f, 0.55f, 0.00f); // orange
|
|
||||||
case MapPOIType.Shop: return new Color(0.20f, 0.60f, 1.00f); // blue
|
|
||||||
case MapPOIType.Health: return new Color(0.96f, 0.27f, 0.27f); // red
|
|
||||||
case MapPOIType.Transport: return new Color(0.85f, 0.85f, 0.20f); // yellow
|
|
||||||
case MapPOIType.Culture: return new Color(0.65f, 0.30f, 0.95f); // purple
|
|
||||||
case MapPOIType.Landmark: return new Color(0.95f, 0.85f, 0.40f); // gold
|
|
||||||
case MapPOIType.Recreation: return new Color(0.30f, 0.85f, 0.30f); // green
|
|
||||||
default: return new Color(0.75f, 0.75f, 0.80f); // muted grey
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static string LabelForPOI(MapPOIType type)
|
|
||||||
{
|
|
||||||
switch (type)
|
|
||||||
{
|
|
||||||
case MapPOIType.FoodDrink: return "FOOD";
|
|
||||||
case MapPOIType.Shop: return "SHOP";
|
|
||||||
case MapPOIType.Health: return "HEALTH";
|
|
||||||
case MapPOIType.Transport: return "TRANSIT";
|
|
||||||
case MapPOIType.Culture: return "CULTURE";
|
|
||||||
case MapPOIType.Landmark: return "LANDMARK";
|
|
||||||
case MapPOIType.Recreation: return "PARK";
|
|
||||||
default: return "POI";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
void ClearChildren()
|
void ClearChildren()
|
||||||
{
|
{
|
||||||
@@ -305,12 +126,9 @@ namespace Subsystems{
|
|||||||
{
|
{
|
||||||
var building = new GameObject($"Building_{b.Name ?? "Unknown"}");
|
var building = new GameObject($"Building_{b.Name ?? "Unknown"}");
|
||||||
|
|
||||||
// Výpočet středu budovy. Lift the base above kPathY so building
|
// Výpočet středu budovy
|
||||||
// walls visibly extrude *upward* from above the road/area layer
|
|
||||||
// instead of starting at ground (which made them clip into paved
|
|
||||||
// areas that share their footprint).
|
|
||||||
Vector3 center = CalculatePolygonCenter(b.Outline);
|
Vector3 center = CalculatePolygonCenter(b.Outline);
|
||||||
building.transform.position = center + Vector3.up * kBuildingBaseY;
|
building.transform.position = center;
|
||||||
|
|
||||||
// Vytvoření mesh pro budovu
|
// Vytvoření mesh pro budovu
|
||||||
MeshFilter meshFilter = building.AddComponent<MeshFilter>();
|
MeshFilter meshFilter = building.AddComponent<MeshFilter>();
|
||||||
@@ -321,8 +139,8 @@ namespace Subsystems{
|
|||||||
switch (b.BuildingType.ToLower())
|
switch (b.BuildingType.ToLower())
|
||||||
{
|
{
|
||||||
case "residential":
|
case "residential":
|
||||||
mat = _buildingSettings.ResidentialBuildingsMat;
|
mat = _buildingSettings.ResidentalBuildingsMat;
|
||||||
height = _buildingSettings.ResidentialBuildingHeight;
|
height = _buildingSettings.ResidentalBuildingHeight;
|
||||||
break;
|
break;
|
||||||
case "commercial":
|
case "commercial":
|
||||||
mat = _buildingSettings.CommercialBuildingsMat;
|
mat = _buildingSettings.CommercialBuildingsMat;
|
||||||
@@ -341,12 +159,8 @@ namespace Subsystems{
|
|||||||
meshFilter.mesh = mesh;
|
meshFilter.mesh = mesh;
|
||||||
|
|
||||||
//TODO: material by type
|
//TODO: material by type
|
||||||
// Použijeme barvu podle typu budovy. Use sharedMaterial to keep
|
// Použijeme barvu podle typu budovy
|
||||||
// the project's Material asset reference - no clone, no leak.
|
meshRenderer.material = mat;
|
||||||
// Y-position alone disambiguates building geometry from area/path
|
|
||||||
// layers; we don't need renderQueue overrides (which broke mobile
|
|
||||||
// rendering for transparent-class shaders in P3).
|
|
||||||
meshRenderer.sharedMaterial = mat;
|
|
||||||
|
|
||||||
// Přidání collideru pro interakci
|
// Přidání collideru pro interakci
|
||||||
building.AddComponent<MeshCollider>();
|
building.AddComponent<MeshCollider>();
|
||||||
@@ -405,19 +219,15 @@ namespace Subsystems{
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// sharedMaterial avoids the LineRenderer cloning the project's
|
line.material = mat;
|
||||||
// shared path Material on every BuildMap call. Queue overrides
|
|
||||||
// dropped (P3 mobile-render regression cause).
|
|
||||||
line.sharedMaterial = mat;
|
|
||||||
line.widthMultiplier = width;
|
line.widthMultiplier = width;
|
||||||
|
|
||||||
// Nastavení bodů cesty - kPathY sits above all area polygons but
|
// Nastavení bodů cesty
|
||||||
// below building bases, so paths visibly run on top of areas.
|
|
||||||
line.positionCount = w.Points.Count;
|
line.positionCount = w.Points.Count;
|
||||||
for (int i = 0; i < w.Points.Count; i++)
|
for (int i = 0; i < w.Points.Count; i++)
|
||||||
{
|
{
|
||||||
Vector3 pos = w.Points[i].ToLocalVector3(_gameClient.CurrentLobbyState.MapData.Center);
|
Vector3 pos = w.Points[i].ToLocalVector3(_gameClient.CurrentLobbyState.MapData.Center);
|
||||||
pos.y = kPathY;
|
pos.y = 0.1f; // Mírně nad zemí
|
||||||
line.SetPosition(i, pos);
|
line.SetPosition(i, pos);
|
||||||
}
|
}
|
||||||
return path;
|
return path;
|
||||||
@@ -460,58 +270,13 @@ namespace Subsystems{
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// sharedMaterial: no per-area material clone. Render-queue forcing
|
meshRenderer.material = mat;
|
||||||
// dropped in P8 (caused mobile-render regression). The Y-stagger
|
|
||||||
// below alone now drives "smaller polygon on top of larger one"
|
|
||||||
// depth ordering - which is what the depth buffer was always
|
|
||||||
// designed to do, and works on mobile GPUs with weak precision
|
|
||||||
// because the stagger spread (0.04 units) is well above any
|
|
||||||
// reasonable depth-buffer epsilon.
|
|
||||||
meshRenderer.sharedMaterial = mat;
|
|
||||||
|
|
||||||
// Y stagger: smaller polygons sit a hair higher than larger ones,
|
area.transform.position = new Vector3(0, 0.05f, 0); // Těsně nad zemí
|
||||||
// so depth-test draws them on top of bigger area polygons they sit
|
|
||||||
// inside (e.g. a playground inside a park). Total spread is 0.04
|
|
||||||
// units - visually invisible but plenty for the depth buffer.
|
|
||||||
float yStagger = ComputeAreaYStagger(a.Outline);
|
|
||||||
area.transform.position = new Vector3(0, kAreaBaseY + yStagger, 0);
|
|
||||||
|
|
||||||
return area;
|
return area;
|
||||||
}
|
}
|
||||||
|
//TODO: POIs
|
||||||
/// <summary>
|
|
||||||
/// Returns a non-negative size proxy used to bucket areas by footprint.
|
|
||||||
/// Larger polygons return higher numbers; used inversely for queue/Y.
|
|
||||||
/// </summary>
|
|
||||||
private float AreaSizeBucket(List<Position> outline)
|
|
||||||
{
|
|
||||||
if (outline == null || outline.Count < 3) return 1f;
|
|
||||||
// Cheap bbox area in lat-lon space scaled by 1e6 - we only need a
|
|
||||||
// monotonic ordering, not a real geographic area.
|
|
||||||
double minLat = outline[0].Lat, maxLat = outline[0].Lat;
|
|
||||||
double minLon = outline[0].Lon, maxLon = outline[0].Lon;
|
|
||||||
for (int i = 1; i < outline.Count; i++)
|
|
||||||
{
|
|
||||||
if (outline[i].Lat < minLat) minLat = outline[i].Lat;
|
|
||||||
if (outline[i].Lat > maxLat) maxLat = outline[i].Lat;
|
|
||||||
if (outline[i].Lon < minLon) minLon = outline[i].Lon;
|
|
||||||
if (outline[i].Lon > maxLon) maxLon = outline[i].Lon;
|
|
||||||
}
|
|
||||||
double bbox = (maxLat - minLat) * (maxLon - minLon) * 1e6;
|
|
||||||
return (float)System.Math.Max(0.001, bbox);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Smaller areas get a higher Y so they render on top of any larger
|
|
||||||
/// area they overlap. Returns a value in [0, 0.04] units.
|
|
||||||
/// </summary>
|
|
||||||
private float ComputeAreaYStagger(List<Position> outline)
|
|
||||||
{
|
|
||||||
float bucket = AreaSizeBucket(outline);
|
|
||||||
// Inverse mapping: huge area -> 0, tiny area -> 0.04.
|
|
||||||
float t = Mathf.Clamp01(1f - bucket / (bucket + 50f));
|
|
||||||
return t * 0.04f;
|
|
||||||
}
|
|
||||||
#endregion
|
#endregion
|
||||||
#region Polygon Utils
|
#region Polygon Utils
|
||||||
private Vector3 CalculatePolygonCenter(List<Position> points)
|
private Vector3 CalculatePolygonCenter(List<Position> points)
|
||||||
@@ -523,52 +288,19 @@ namespace Subsystems{
|
|||||||
}
|
}
|
||||||
return center / points.Count;
|
return center / points.Count;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Signed XZ shoelace area for a polygon expressed in local Vector3.
|
|
||||||
/// Positive = CCW (Unity left-handed Y-up: upward-facing normal),
|
|
||||||
/// negative = CW (downward-facing normal -> top face invisible from
|
|
||||||
/// above unless we reverse the winding before triangulating).
|
|
||||||
/// </summary>
|
|
||||||
private static float PolygonSignedAreaXZ(List<Vector3> verts)
|
|
||||||
{
|
|
||||||
float area = 0f;
|
|
||||||
int n = verts.Count;
|
|
||||||
for (int i = 0; i < n; i++)
|
|
||||||
{
|
|
||||||
var a = verts[i];
|
|
||||||
var b = verts[(i + 1) % n];
|
|
||||||
area += (b.x - a.x) * (a.z + b.z);
|
|
||||||
}
|
|
||||||
return area * 0.5f;
|
|
||||||
}
|
|
||||||
private Mesh CreateExtrudedPolygonMesh(List<Position> outline, float height)
|
private Mesh CreateExtrudedPolygonMesh(List<Position> outline, float height)
|
||||||
{
|
{
|
||||||
Mesh mesh = new Mesh();
|
Mesh mesh = new Mesh();
|
||||||
|
|
||||||
// Reject degenerates - Recast/Overpass can hand back 1-2 vertex
|
|
||||||
// outlines on broken ways. Empty mesh -> renderer draws nothing,
|
|
||||||
// safer than a malformed triangle list.
|
|
||||||
if (outline == null || outline.Count < 3) return mesh;
|
|
||||||
|
|
||||||
// Convert to local space first so we can run a winding check, then
|
|
||||||
// reverse if needed. Without this, CW outlines from Overpass yield
|
|
||||||
// downward-facing top normals and the building roof is invisible
|
|
||||||
// from the top-down map camera.
|
|
||||||
int vertexCount = outline.Count;
|
int vertexCount = outline.Count;
|
||||||
var localVerts = new List<Vector3>(vertexCount);
|
|
||||||
Vector3 center = CalculatePolygonCenter(outline);
|
|
||||||
for (int i = 0; i < vertexCount; i++)
|
|
||||||
localVerts.Add(outline[i].ToLocalVector3(_gameClient.CurrentLobbyState.MapData.Center) - center);
|
|
||||||
|
|
||||||
if (PolygonSignedAreaXZ(localVerts) < 0f)
|
|
||||||
localVerts.Reverse();
|
|
||||||
|
|
||||||
// Vertices - spodní a horní podstava
|
// Vertices - spodní a horní podstava
|
||||||
Vector3[] vertices = new Vector3[vertexCount * 2];
|
Vector3[] vertices = new Vector3[vertexCount * 2];
|
||||||
|
Vector3 center = CalculatePolygonCenter(outline);
|
||||||
|
|
||||||
for (int i = 0; i < vertexCount; i++)
|
for (int i = 0; i < vertexCount; i++)
|
||||||
{
|
{
|
||||||
Vector3 pos = localVerts[i];
|
Vector3 pos = outline[i].ToLocalVector3(_gameClient.CurrentLobbyState.MapData.Center) - center;
|
||||||
vertices[i] = pos; // Spodní
|
vertices[i] = pos; // Spodní
|
||||||
vertices[i + vertexCount] = pos + Vector3.up * height; // Horní
|
vertices[i + vertexCount] = pos + Vector3.up * height; // Horní
|
||||||
}
|
}
|
||||||
@@ -612,31 +344,26 @@ namespace Subsystems{
|
|||||||
{
|
{
|
||||||
Mesh mesh = new Mesh();
|
Mesh mesh = new Mesh();
|
||||||
|
|
||||||
// Reject degenerates (matches CreateExtrudedPolygonMesh).
|
|
||||||
if (outline == null || outline.Count < 3) return mesh;
|
|
||||||
|
|
||||||
int vertexCount = outline.Count;
|
int vertexCount = outline.Count;
|
||||||
var localVerts = new List<Vector3>(vertexCount);
|
Vector3[] vertices = new Vector3[vertexCount];
|
||||||
Vector3 center = CalculatePolygonCenter(outline);
|
Vector3 center = CalculatePolygonCenter(outline);
|
||||||
|
|
||||||
for (int i = 0; i < vertexCount; i++)
|
for (int i = 0; i < vertexCount; i++)
|
||||||
localVerts.Add(outline[i].ToLocalVector3(_gameClient.CurrentLobbyState.MapData.Center) - center);
|
{
|
||||||
|
vertices[i] = outline[i].ToLocalVector3(_gameClient.CurrentLobbyState.MapData.Center) - center;
|
||||||
// Force CCW so RecalculateNormals produces an upward-facing normal.
|
}
|
||||||
// CW polygons from Overpass would otherwise render as black voids
|
|
||||||
// when the top-down camera looks at their back face.
|
|
||||||
if (PolygonSignedAreaXZ(localVerts) < 0f)
|
|
||||||
localVerts.Reverse();
|
|
||||||
|
|
||||||
Vector3[] vertices = localVerts.ToArray();
|
|
||||||
|
|
||||||
// Triangulace - fan pattern
|
// Triangulace - fan pattern
|
||||||
List<int> triangles = new List<int>();
|
List<int> triangles = new List<int>();
|
||||||
|
if (vertexCount >= 3)
|
||||||
|
{
|
||||||
for (int i = 1; i < vertexCount - 1; i++)
|
for (int i = 1; i < vertexCount - 1; i++)
|
||||||
{
|
{
|
||||||
triangles.Add(0);
|
triangles.Add(0);
|
||||||
triangles.Add(i);
|
triangles.Add(i);
|
||||||
triangles.Add(i + 1);
|
triangles.Add(i + 1);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
mesh.vertices = vertices;
|
mesh.vertices = vertices;
|
||||||
mesh.triangles = triangles.ToArray();
|
mesh.triangles = triangles.ToArray();
|
||||||
@@ -645,164 +372,5 @@ namespace Subsystems{
|
|||||||
return mesh;
|
return mesh;
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
#region Markers
|
|
||||||
|
|
||||||
public void CreateTaskMarkers(List<GeoSus.Client.GameTask> tasks)
|
|
||||||
{
|
|
||||||
if (_mapCenterPoint == null) return;
|
|
||||||
if (_centerPosition.Lat == 0 && _centerPosition.Lon == 0)
|
|
||||||
{
|
|
||||||
var md = _gameClient?.CurrentLobbyState?.MapData;
|
|
||||||
if (md != null) _centerPosition = md.Center;
|
|
||||||
}
|
|
||||||
if (_centerPosition.Lat == 0 && _centerPosition.Lon == 0) return;
|
|
||||||
var taskColor = new Color(0.20f, 0.95f, 0.55f); // bright green - "GO HERE"
|
|
||||||
foreach (var task in tasks)
|
|
||||||
{
|
|
||||||
if (_taskMarkers.ContainsKey(task.TaskId)) continue;
|
|
||||||
var pos = task.Location.ToLocalVector3(_centerPosition);
|
|
||||||
var go = CreateMarkerWithLabel($"Task_{task.TaskId}", pos, taskColor, "TASK");
|
|
||||||
go.transform.parent = _mapCenterPoint.transform;
|
|
||||||
|
|
||||||
// Pulsing point light so the task literally glows on the map.
|
|
||||||
var light = go.AddComponent<Light>();
|
|
||||||
light.color = taskColor;
|
|
||||||
light.intensity = 3f;
|
|
||||||
light.range = 25f;
|
|
||||||
_taskMarkers[task.TaskId] = go;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void RemoveTaskMarker(string taskId)
|
|
||||||
{
|
|
||||||
if (_taskMarkers.TryGetValue(taskId, out var go))
|
|
||||||
{
|
|
||||||
UnityEngine.Object.Destroy(go);
|
|
||||||
_taskMarkers.Remove(taskId);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void CreateBodyMarker(string bodyId, Position location)
|
|
||||||
{
|
|
||||||
if (_mapCenterPoint == null) return;
|
|
||||||
if (_bodyMarkers.ContainsKey(bodyId)) return;
|
|
||||||
var pos = location.ToLocalVector3(_centerPosition);
|
|
||||||
// Bright red pillar with "BODY" label - players need to see this
|
|
||||||
// from across the map to call it in.
|
|
||||||
var go = CreateMarkerWithLabel($"Body_{bodyId}", pos,
|
|
||||||
new Color(0.96f, 0.18f, 0.18f), "BODY");
|
|
||||||
go.transform.parent = _mapCenterPoint?.transform;
|
|
||||||
_bodyMarkers[bodyId] = go;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ClearBodyMarkers()
|
|
||||||
{
|
|
||||||
foreach (var go in _bodyMarkers.Values)
|
|
||||||
if (go) UnityEngine.Object.Destroy(go);
|
|
||||||
_bodyMarkers.Clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
// ── Player avatar sizing ────────────────────────────────────────────
|
|
||||||
// The default Unity capsule primitive is 2m tall in local space. The
|
|
||||||
// map camera defaults to 150m orthographic-ish height (see
|
|
||||||
// MapCameraController), so anything smaller than ~3m world-size is a
|
|
||||||
// pixel on screen. Original code used scale=0.4 (~0.8m capsule) which
|
|
||||||
// was invisible. Markers (POIs/tasks/bodies) are 8m pillars; players
|
|
||||||
// need to be visibly distinct from those AND from each other. The
|
|
||||||
// local player gets a halo light + larger scale so the user can find
|
|
||||||
// themselves on the map at a glance.
|
|
||||||
private const float kLocalPlayerScale = 4f; // ~8m capsule (matches marker height)
|
|
||||||
private const float kRemotePlayerScale = 2f; // ~4m capsule (smaller than markers)
|
|
||||||
private const float kLocalPlayerHaloRange = 18f;
|
|
||||||
private const float kLocalPlayerHaloIntensity = 2.5f;
|
|
||||||
|
|
||||||
public void UpdatePlayerAvatars(Dictionary<string, PlayerPositionInfo> positions, string myUuid)
|
|
||||||
{
|
|
||||||
if (_mapCenterPoint == null) return;
|
|
||||||
if (_centerPosition.Lat == 0 && _centerPosition.Lon == 0)
|
|
||||||
{
|
|
||||||
var md = _gameClient?.CurrentLobbyState?.MapData;
|
|
||||||
if (md != null) _centerPosition = md.Center;
|
|
||||||
}
|
|
||||||
if (_centerPosition.Lat == 0 && _centerPosition.Lon == 0) return;
|
|
||||||
foreach (var kvp in positions)
|
|
||||||
{
|
|
||||||
string uuid = kvp.Key;
|
|
||||||
var info = kvp.Value;
|
|
||||||
bool isLocal = uuid == myUuid;
|
|
||||||
if (!_playerAvatars.TryGetValue(uuid, out var go) || go == null)
|
|
||||||
{
|
|
||||||
go = GameObject.CreatePrimitive(PrimitiveType.Capsule);
|
|
||||||
go.name = $"Player_{uuid.Substring(0, Mathf.Min(8, uuid.Length))}";
|
|
||||||
go.transform.parent = _mapCenterPoint?.transform;
|
|
||||||
// Strip the auto-collider - avatars are visual only and the
|
|
||||||
// collider would interact with the map's MeshColliders.
|
|
||||||
var col = go.GetComponent<Collider>();
|
|
||||||
if (col != null) UnityEngine.Object.Destroy(col);
|
|
||||||
|
|
||||||
float scale = isLocal ? kLocalPlayerScale : kRemotePlayerScale;
|
|
||||||
go.transform.localScale = Vector3.one * scale;
|
|
||||||
|
|
||||||
if (isLocal)
|
|
||||||
{
|
|
||||||
// Halo light around the local player so the user can
|
|
||||||
// find themselves at a glance even at the widest zoom.
|
|
||||||
// Range/intensity tuned so it reads as "this is me"
|
|
||||||
// without bleeding far enough to drown POI markers.
|
|
||||||
var halo = go.AddComponent<Light>();
|
|
||||||
halo.color = new Color(0.30f, 1.00f, 0.55f); // matches green capsule color
|
|
||||||
halo.intensity = kLocalPlayerHaloIntensity;
|
|
||||||
halo.range = kLocalPlayerHaloRange;
|
|
||||||
}
|
|
||||||
|
|
||||||
_playerAvatars[uuid] = go;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Lift the avatar so the bottom of the capsule sits roughly at
|
|
||||||
// ground level despite the larger scale. Capsule's local pivot
|
|
||||||
// is at center, height = 2 * localScale.y world units, so we
|
|
||||||
// raise by half the local height.
|
|
||||||
float halfHeight = (isLocal ? kLocalPlayerScale : kRemotePlayerScale);
|
|
||||||
go.transform.position = info.Position.ToLocalVector3(_centerPosition)
|
|
||||||
+ Vector3.up * halfHeight;
|
|
||||||
|
|
||||||
var mr = go.GetComponent<MeshRenderer>();
|
|
||||||
if (mr)
|
|
||||||
{
|
|
||||||
if (isLocal) mr.material.color = new Color(0.30f, 1.00f, 0.55f);
|
|
||||||
else if (info.State == GeoSus.Client.PlayerState.Dead) mr.material.color = Color.grey;
|
|
||||||
else mr.material.color = Color.white;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void CreateSabotageMarkers(List<RepairStationInfo> stations)
|
|
||||||
{
|
|
||||||
var color = new Color(1.0f, 0.55f, 0.0f); // strong orange = repair urgency
|
|
||||||
foreach (var station in stations)
|
|
||||||
{
|
|
||||||
var pos = station.Location.ToLocalVector3(_centerPosition);
|
|
||||||
var go = CreateMarkerWithLabel($"Sabotage_{station.StationId}", pos,
|
|
||||||
color, "REPAIR");
|
|
||||||
go.transform.parent = _mapCenterPoint?.transform;
|
|
||||||
|
|
||||||
// Repair stations also pulse light so impostors and crew see
|
|
||||||
// the urgency from across the map.
|
|
||||||
var light = go.AddComponent<Light>();
|
|
||||||
light.color = color;
|
|
||||||
light.intensity = 4f;
|
|
||||||
light.range = 30f;
|
|
||||||
_sabotageMarkers.Add(go);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ClearSabotageMarkers()
|
|
||||||
{
|
|
||||||
foreach (var go in _sabotageMarkers)
|
|
||||||
if (go) UnityEngine.Object.Destroy(go);
|
|
||||||
_sabotageMarkers.Clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ using UnityEngine;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using Subsystems;
|
using Subsystems;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using UnityEngine.SceneManagement;
|
|
||||||
|
|
||||||
namespace Subsystems
|
namespace Subsystems
|
||||||
{
|
{
|
||||||
@@ -14,34 +13,9 @@ namespace Subsystems
|
|||||||
private const string _serverAddress = "geosus.honzuvkod.dev";
|
private const string _serverAddress = "geosus.honzuvkod.dev";
|
||||||
private const int _serverPort = 7777;
|
private const int _serverPort = 7777;
|
||||||
private GameClient _gameClient;
|
private GameClient _gameClient;
|
||||||
private GameManager _manager;
|
private GameManager_Map _mapSubsystem;
|
||||||
private bool _pendingMapBuild;
|
public async void OpenConection()
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Authoritative game state; written here, read by GameManager_UI.
|
|
||||||
/// </summary>
|
|
||||||
public GameState State { get; } = new GameState();
|
|
||||||
|
|
||||||
public GameManager_Network(GameClient gameClient, GameManager manager)
|
|
||||||
{
|
{
|
||||||
_gameClient = gameClient;
|
|
||||||
_manager = manager;
|
|
||||||
RegisterEventHandlers();
|
|
||||||
}
|
|
||||||
|
|
||||||
public async void OpenConnection()
|
|
||||||
{
|
|
||||||
// Snapshot the lobby we believed we were in BEFORE the new connect
|
|
||||||
// attempt. If the client SDK preserved it across a transient drop
|
|
||||||
// (P9 fix), this is non-null and we'll send a Reconnect message
|
|
||||||
// post-handshake to re-associate with the lobby on the server side.
|
|
||||||
// Without it, the next CastVote / TaskComplete / etc. would arrive
|
|
||||||
// on a fresh connection the server doesn't recognize and bounce
|
|
||||||
// with NOT_IN_LOBBY.
|
|
||||||
var rejoinLobbyId = _gameClient.LobbyId;
|
|
||||||
|
|
||||||
int retries = 0;
|
|
||||||
int delayMs = 5000;
|
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
Task<bool> state = _gameClient.ConnectAsync(_serverAddress, _serverPort);
|
Task<bool> state = _gameClient.ConnectAsync(_serverAddress, _serverPort);
|
||||||
@@ -49,29 +23,20 @@ namespace Subsystems
|
|||||||
if (state.Result)
|
if (state.Result)
|
||||||
{
|
{
|
||||||
Debug.Log("Connected to server.");
|
Debug.Log("Connected to server.");
|
||||||
|
|
||||||
// Re-attach to the prior lobby if we had one. Server-side
|
|
||||||
// HandleReconnectAsync will replay missed events and ack
|
|
||||||
// with a ReconnectResponse carrying the snapshot.
|
|
||||||
if (!string.IsNullOrEmpty(rejoinLobbyId))
|
|
||||||
{
|
|
||||||
Debug.Log($"Re-associating with lobby {rejoinLobbyId} after reconnect.");
|
|
||||||
_gameClient.Reconnect(rejoinLobbyId);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
retries++;
|
else
|
||||||
if (retries >= 10)
|
|
||||||
{
|
{
|
||||||
Debug.LogError("Failed to connect after 10 attempts. Giving up.");
|
Debug.Log("Failed to connect to server");
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
Debug.Log($"Failed to connect (attempt {retries}). Retrying in {delayMs / 1000}s...");
|
await Task.Delay(5000);
|
||||||
await Task.Delay(delayMs);
|
|
||||||
delayMs = Mathf.Min(delayMs * 2, 30000);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
public GameManager_Network(GameClient gameClient)
|
||||||
|
{
|
||||||
|
_gameClient = gameClient;
|
||||||
|
RegisterEventHandlers();
|
||||||
|
}
|
||||||
public void RegisterEventHandlers()
|
public void RegisterEventHandlers()
|
||||||
{
|
{
|
||||||
_gameClient.OnConnected += OnConnected;
|
_gameClient.OnConnected += OnConnected;
|
||||||
@@ -80,513 +45,117 @@ namespace Subsystems
|
|||||||
_gameClient.OnMessage += OnMessage;
|
_gameClient.OnMessage += OnMessage;
|
||||||
_gameClient.OnGameEvent += OnGameEvent;
|
_gameClient.OnGameEvent += OnGameEvent;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnConnected()
|
private void OnConnected()
|
||||||
{
|
{
|
||||||
Debug.Log("Successfully connected to the server.");
|
Debug.Log("Successfully connected to the server.");
|
||||||
// Tear the reconnect overlay down once the socket is healthy.
|
|
||||||
// No-op if it wasn't shown.
|
|
||||||
_manager?.uiSubsystem?.HideReconnecting();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnError(string e) => Debug.LogError($"Network error: {e}");
|
|
||||||
|
|
||||||
private void OnDisconnected(string reason)
|
private void OnDisconnected(string reason)
|
||||||
{
|
{
|
||||||
Debug.Log($"Disconnected: {reason}");
|
Debug.Log($"Host disconnected due to {reason}");
|
||||||
// Show the reconnect overlay only if the user is mid-game; we
|
|
||||||
// don't want it flashing during a clean shutdown ("Disposed") or
|
|
||||||
// before a real game has started.
|
|
||||||
if (reason != "Disposed" && State.Phase != GamePhase.Lobby)
|
|
||||||
_manager?.uiSubsystem?.ShowReconnecting();
|
|
||||||
|
|
||||||
if (reason != "Disposed" && _manager != null)
|
|
||||||
_manager.StartCoroutine(ReconnectAfterDelay(3f));
|
|
||||||
}
|
}
|
||||||
|
private void OnError(string error)
|
||||||
private IEnumerator ReconnectAfterDelay(float seconds)
|
|
||||||
{
|
{
|
||||||
yield return new UnityEngine.WaitForSeconds(seconds);
|
Debug.LogError($"Network error: {error}");
|
||||||
Debug.Log("Attempting to reconnect...");
|
|
||||||
OpenConnection();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnMessage(Message message)
|
private void OnMessage(Message message)
|
||||||
{
|
{
|
||||||
switch (message.Type)
|
switch (message.Type)
|
||||||
{
|
{
|
||||||
|
case "GameEvent":
|
||||||
|
OnGameEvent(message as GameEvent);
|
||||||
|
break;
|
||||||
case "CreateLobbyResponse":
|
case "CreateLobbyResponse":
|
||||||
|
Debug.Log("Received CreateLobbyResponse message");
|
||||||
HandleCreateLobbyResponse(message as CreateLobbyResponse);
|
HandleCreateLobbyResponse(message as CreateLobbyResponse);
|
||||||
break;
|
break;
|
||||||
case "JoinLobbyResponse":
|
case "JoinLobbyResponse":
|
||||||
|
Debug.Log("Received JoinLobbyResponse message");
|
||||||
HandleJoinLobbyResponse(message as JoinLobbyResponse);
|
HandleJoinLobbyResponse(message as JoinLobbyResponse);
|
||||||
break;
|
break;
|
||||||
case "PositionBroadcast":
|
|
||||||
HandlePositionBroadcast(message as PositionBroadcast);
|
|
||||||
break;
|
|
||||||
case "Error":
|
|
||||||
HandleErrorMessage(message as ErrorMessage);
|
|
||||||
break;
|
|
||||||
case "Ack":
|
case "Ack":
|
||||||
case "GameEvent":
|
Debug.Log("Received Ack message");
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
Debug.Log("Received message of type: " + message.Type);
|
Debug.Log("Received message of type: " + message.Type);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// P9 defensive path: if the server tells us NOT_IN_LOBBY but we still
|
|
||||||
/// believe we have a lobby (LobbyId preserved across the transient
|
|
||||||
/// disconnect), the lobby association on the server's side of the new
|
|
||||||
/// connection is missing - typically a race between OpenConnection's
|
|
||||||
/// Reconnect call and an in-flight action message that beat it. Retry
|
|
||||||
/// the Reconnect; if the second attempt also bounces, the lobby really
|
|
||||||
/// is gone and we'll surface the error to the user.
|
|
||||||
/// </summary>
|
|
||||||
private void HandleErrorMessage(ErrorMessage err)
|
|
||||||
{
|
|
||||||
if (err == null) return;
|
|
||||||
Debug.Log($"Server error: code={err.ErrorCode} text={err.ErrorText}");
|
|
||||||
|
|
||||||
if (err.ErrorCode == "NOT_IN_LOBBY" && !string.IsNullOrEmpty(_gameClient.LobbyId))
|
|
||||||
{
|
|
||||||
Debug.Log($"NOT_IN_LOBBY but we still have LobbyId={_gameClient.LobbyId}; resending Reconnect.");
|
|
||||||
_gameClient.Reconnect(_gameClient.LobbyId);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void OnGameEvent(GameEvent gameEvent)
|
private void OnGameEvent(GameEvent gameEvent)
|
||||||
{
|
{
|
||||||
// Always sync player list from lobby state after any event
|
|
||||||
SyncPlayersFromLobby();
|
|
||||||
|
|
||||||
switch (gameEvent.EventType)
|
switch (gameEvent.EventType)
|
||||||
{
|
{
|
||||||
case "PlayerJoined":
|
case "PlayerJoined":
|
||||||
|
Debug.Log($"Player {gameEvent.GetPayload<PlayerJoinedPayload>().DisplayName} joined");
|
||||||
|
break;
|
||||||
case "PlayerLeft":
|
case "PlayerLeft":
|
||||||
case "HostChanged":
|
Debug.Log($"Player {gameEvent.GetPayload<PlayerLeftPayload>()} left");
|
||||||
_manager?.uiSubsystem?.NotifyLobbyChanged();
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "GameStarting":
|
case "GameStarting":
|
||||||
State.Phase = GamePhase.Loading;
|
Debug.Log("Game is starting!");
|
||||||
HandleGameStarting();
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "MapDataReady":
|
|
||||||
HandleMapDataReady();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "GameStarted":
|
case "GameStarted":
|
||||||
State.Phase = GamePhase.Playing;
|
Debug.Log("Game started");
|
||||||
break;
|
break;
|
||||||
|
case "MapDataReady":
|
||||||
case "RoleAssigned":
|
Debug.Log("Map data ready");
|
||||||
HandleRoleAssigned(gameEvent);
|
|
||||||
break;
|
break;
|
||||||
|
case "PlayerMapDataReceived":
|
||||||
case "TaskCompleted":
|
Debug.Log("Player map data recieved");
|
||||||
HandleTaskCompleted(gameEvent);
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "PlayerKilled":
|
|
||||||
HandlePlayerKilled(gameEvent);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "BodyReported":
|
|
||||||
case "EmergencyMeetingCalled":
|
|
||||||
Toast("Meeting called! Head to the meeting point.");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "MeetingStarted":
|
|
||||||
HandleMeetingStarted(gameEvent);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "PlayerArrivedAtMeeting":
|
|
||||||
HandlePlayerArrivedAtMeeting(gameEvent);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "PlayerVoted":
|
|
||||||
HandlePlayerVoted(gameEvent);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "VotingClosed":
|
|
||||||
HandleVotingClosed(gameEvent);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "GameEnded":
|
|
||||||
HandleGameEnded(gameEvent);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "ReturnedToLobby":
|
|
||||||
HandleReturnedToLobby();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "SabotageStarted":
|
|
||||||
HandleSabotageStarted(gameEvent);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "RepairStarted":
|
|
||||||
HandleRepairStarted(gameEvent);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "RepairStopped":
|
|
||||||
HandleRepairStopped(gameEvent);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "SabotageRepaired":
|
|
||||||
case "SabotageMeltdown":
|
|
||||||
case "SabotageExpired":
|
|
||||||
State.ActiveSabotage = null;
|
|
||||||
State.ActiveRepairs.Clear();
|
|
||||||
_manager?.uiSubsystem?.HideSabotageTimer();
|
|
||||||
_manager?.mapSubsystem?.ClearSabotageMarkers();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "TaskStarted":
|
|
||||||
// Server now broadcasts when a player begins a task. Phase 1
|
|
||||||
// only acks; Phase 2/3 will surface this to other players.
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "MapDataError":
|
case "MapDataError":
|
||||||
HandleMapDataError(gameEvent);
|
Debug.Log("Received MapData server error");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
Debug.Log("GameEvent: " + gameEvent.EventType);
|
Debug.Log("Received GameEvent of type: " + gameEvent.EventType);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// ── Lobby responses ───────────────────────────────────────────────────
|
|
||||||
|
|
||||||
private void HandleCreateLobbyResponse(CreateLobbyResponse message)
|
private void HandleCreateLobbyResponse(CreateLobbyResponse message)
|
||||||
{
|
{
|
||||||
if (message == null) return;
|
|
||||||
if (message.Success)
|
if (message.Success)
|
||||||
{
|
{
|
||||||
Debug.Log($"Lobby created. Code: {message.JoinCode}");
|
Debug.Log("Lobby created successfully. Join Code: " + message.JoinCode + ", Lobby ID: " + message.LobbyId);
|
||||||
// P13b: snapshot the server's authoritative settings into
|
|
||||||
// GameState so HUD / proximity code can read distances and
|
|
||||||
// cooldowns from a single source of truth instead of hardcodes.
|
|
||||||
State.Settings = _gameClient.CurrentLobbyState?.Settings;
|
|
||||||
SceneManager.LoadScene("create", LoadSceneMode.Single);
|
|
||||||
_manager?.uiSubsystem?.NotifyLobbyChanged();
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Debug.LogError("Failed to create lobby: " + message.Error);
|
Debug.LogError("Failed to create lobby: " + message.Error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void HandleJoinLobbyResponse(JoinLobbyResponse message)
|
private void HandleJoinLobbyResponse(JoinLobbyResponse message)
|
||||||
{
|
{
|
||||||
if (message == null) return;
|
|
||||||
if (message.Success)
|
if (message.Success)
|
||||||
{
|
{
|
||||||
Debug.Log($"Joined lobby: {message.LobbyId}");
|
Debug.Log("Lobby created successfully." + ", Lobby ID: " + message.LobbyId);
|
||||||
// P13b: same settings snapshot path as host. Joiners read the
|
|
||||||
// server's snapshot taken at lobby creation; they cannot edit.
|
|
||||||
State.Settings = _gameClient.CurrentLobbyState?.Settings;
|
|
||||||
// Unified lobby: both host and joiners land on create.unity.
|
|
||||||
// LobbyDisplayUI handles the role split internally (start
|
|
||||||
// button for host, waiting text for joiners).
|
|
||||||
SceneManager.LoadScene("create", LoadSceneMode.Single);
|
|
||||||
_manager?.uiSubsystem?.NotifyLobbyChanged();
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Debug.LogError("Failed to join lobby: " + message.Error);
|
Debug.LogError("Failed to create lobby: " + message.Error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
public void CrateLobby(double lat, double lon)
|
||||||
// ── Game flow ─────────────────────────────────────────────────────────
|
|
||||||
|
|
||||||
private void HandleGameStarting()
|
|
||||||
{
|
{
|
||||||
_pendingMapBuild = false;
|
_gameClient.CreateLobby(new Position(lat, lon));
|
||||||
// Reset per-game state
|
|
||||||
State.MyRole = null;
|
|
||||||
State.IsDead = false;
|
|
||||||
State.MyTasks = new List<GameTask>();
|
|
||||||
State.MyCompletedTaskIds = new HashSet<string>();
|
|
||||||
State.TotalCompleted = 0;
|
|
||||||
State.TotalRequired = 0;
|
|
||||||
State.ActiveMeeting = null;
|
|
||||||
State.LastVoteResult = null;
|
|
||||||
State.VotedPlayerIds = new HashSet<string>();
|
|
||||||
State.ActiveSabotage = null;
|
|
||||||
State.GameEndData = null;
|
|
||||||
State.KillCooldownRemaining = 0;
|
|
||||||
SceneManager.LoadScene("Client", LoadSceneMode.Single);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void HandleMapDataReady()
|
|
||||||
{
|
|
||||||
_pendingMapBuild = true;
|
|
||||||
TryBuildMapAndMarkers();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void OnClientSceneReady()
|
|
||||||
{
|
|
||||||
TryBuildMapAndMarkers();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void TryBuildMapAndMarkers()
|
|
||||||
{
|
|
||||||
if (!_pendingMapBuild) return;
|
|
||||||
if (_manager?.mapSubsystem == null || !_manager.mapSubsystem.IsSceneReady) return;
|
|
||||||
if (_gameClient?.CurrentLobbyState?.MapData == null) return;
|
|
||||||
|
|
||||||
_manager.mapSubsystem.BuildMap();
|
|
||||||
_manager.mapSubsystem.CreateTaskMarkers(_gameClient.MyTasks);
|
|
||||||
_pendingMapBuild = false;
|
|
||||||
Debug.Log("[Network] Map built.");
|
|
||||||
}
|
|
||||||
|
|
||||||
private void HandleRoleAssigned(GameEvent evt)
|
|
||||||
{
|
|
||||||
var payload = evt.GetPayload<RoleAssignedPayload>();
|
|
||||||
if (payload == null || payload.ClientUuid != _gameClient.ClientUuid) return;
|
|
||||||
|
|
||||||
State.MyRole = payload.Role;
|
|
||||||
State.MyTasks = payload.Tasks ?? new List<GameTask>();
|
|
||||||
State.MyCompletedTaskIds.Clear();
|
|
||||||
|
|
||||||
Debug.Log($"Role: {payload.Role}, Tasks: {State.MyTasks.Count}");
|
|
||||||
_manager?.taskSubsystem?.Initialize(State.MyTasks);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void HandleTaskCompleted(GameEvent evt)
|
|
||||||
{
|
|
||||||
var payload = evt.GetPayload<TaskCompletedPayload>();
|
|
||||||
if (payload == null) return;
|
|
||||||
|
|
||||||
// Track if it's our task
|
|
||||||
if (payload.ClientUuid == _gameClient.ClientUuid)
|
|
||||||
State.MyCompletedTaskIds.Add(payload.TaskId);
|
|
||||||
|
|
||||||
State.TotalCompleted = payload.TotalCompleted;
|
|
||||||
State.TotalRequired = payload.TotalTasks;
|
|
||||||
|
|
||||||
_manager?.uiSubsystem?.UpdateTaskProgress(payload.TotalCompleted, payload.TotalTasks);
|
|
||||||
_manager?.mapSubsystem?.RemoveTaskMarker(payload.TaskId);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void HandlePlayerKilled(GameEvent evt)
|
|
||||||
{
|
|
||||||
var payload = evt.GetPayload<PlayerKilledPayload>();
|
|
||||||
if (payload == null) return;
|
|
||||||
|
|
||||||
_manager?.mapSubsystem?.CreateBodyMarker(payload.BodyId, payload.Location);
|
|
||||||
|
|
||||||
if (payload.VictimId == _gameClient.ClientUuid)
|
|
||||||
{
|
|
||||||
State.IsDead = true;
|
|
||||||
_manager?.uiSubsystem?.OnLocalPlayerDied();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Update player state in our list
|
|
||||||
var p = State.Players.Find(x => x.ClientUuid == payload.VictimId);
|
|
||||||
if (p != null) p.State = PlayerState.Dead;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void HandleMeetingStarted(GameEvent evt)
|
|
||||||
{
|
|
||||||
var payload = evt.GetPayload<MeetingStartedPayload>();
|
|
||||||
if (payload == null) return;
|
|
||||||
|
|
||||||
State.Phase = GamePhase.Meeting;
|
|
||||||
State.ActiveMeeting = payload;
|
|
||||||
State.VotedPlayerIds = new HashSet<string>();
|
|
||||||
State.ArrivedPlayerIds = new HashSet<string>();
|
|
||||||
State.VoterTargets = new Dictionary<string, string>();
|
|
||||||
State.VoteTallies = new Dictionary<string, int>();
|
|
||||||
State.MyVoteTarget = null;
|
|
||||||
State.LastVoteResult = null;
|
|
||||||
|
|
||||||
SyncPlayersFromLobby();
|
|
||||||
_manager?.uiSubsystem?.ShowMeetingPanel(State.Players, payload);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void HandlePlayerArrivedAtMeeting(GameEvent evt)
|
|
||||||
{
|
|
||||||
var payload = evt.GetPayload<PlayerArrivedAtMeetingPayload>();
|
|
||||||
if (payload == null) return;
|
|
||||||
State.ArrivedPlayerIds.Add(payload.ClientUuid);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void HandlePlayerVoted(GameEvent evt)
|
|
||||||
{
|
|
||||||
var payload = evt.GetPayload<PlayerVotedPayload>();
|
|
||||||
if (payload == null) return;
|
|
||||||
|
|
||||||
// Server allows vote changes within a 2s rate limit, so we always
|
|
||||||
// overwrite the voter's previous target rather than appending.
|
|
||||||
string target = payload.TargetId ?? GameState.VoteSkip;
|
|
||||||
|
|
||||||
State.VotedPlayerIds.Add(payload.VoterId);
|
|
||||||
State.VoterTargets[payload.VoterId] = target;
|
|
||||||
RecomputeVoteTallies();
|
|
||||||
|
|
||||||
if (payload.VoterId == _gameClient.ClientUuid)
|
|
||||||
State.MyVoteTarget = target;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void RecomputeVoteTallies()
|
|
||||||
{
|
|
||||||
State.VoteTallies.Clear();
|
|
||||||
foreach (var t in State.VoterTargets.Values)
|
|
||||||
{
|
|
||||||
if (string.IsNullOrEmpty(t)) continue;
|
|
||||||
State.VoteTallies.TryGetValue(t, out var count);
|
|
||||||
State.VoteTallies[t] = count + 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void HandleVotingClosed(GameEvent evt)
|
|
||||||
{
|
|
||||||
var payload = evt.GetPayload<VotingClosedPayload>();
|
|
||||||
if (payload == null) return;
|
|
||||||
|
|
||||||
State.Phase = GamePhase.Playing;
|
|
||||||
State.ActiveMeeting = null;
|
|
||||||
State.LastVoteResult = payload;
|
|
||||||
|
|
||||||
// Mark ejected player dead in our list
|
|
||||||
if (!string.IsNullOrEmpty(payload.EjectedPlayerId))
|
|
||||||
{
|
|
||||||
var p = State.Players.Find(x => x.ClientUuid == payload.EjectedPlayerId);
|
|
||||||
if (p != null) p.State = PlayerState.Dead;
|
|
||||||
}
|
|
||||||
|
|
||||||
_manager?.uiSubsystem?.ShowVoteResult(payload, State.Players);
|
|
||||||
_manager?.mapSubsystem?.ClearBodyMarkers();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void HandleGameEnded(GameEvent evt)
|
|
||||||
{
|
|
||||||
var payload = evt.GetPayload<GameEndedPayload>();
|
|
||||||
if (payload == null) return;
|
|
||||||
|
|
||||||
State.Phase = GamePhase.Ended;
|
|
||||||
State.GameEndData = payload;
|
|
||||||
|
|
||||||
// If the round ended while the meeting/vote-result overlay was
|
|
||||||
// still up (e.g. ejection won the game outright), the auto-close
|
|
||||||
// coroutine would otherwise fire 5s later and tear down the
|
|
||||||
// meeting panel while the GameEndPanel sits on top - leaving a
|
|
||||||
// glimpse of the dead overlay during the transition.
|
|
||||||
_manager?.uiSubsystem?.HideMeetingPanel();
|
|
||||||
_manager?.uiSubsystem?.ShowGameEndPanel(payload, _gameClient.ClientUuid);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void HandleReturnedToLobby()
|
|
||||||
{
|
|
||||||
State.Phase = GamePhase.Lobby;
|
|
||||||
_manager?.uiSubsystem?.HideMeetingPanel();
|
|
||||||
// Bodies survive the scene reload because the marker GameObjects are
|
|
||||||
// parented under MapCenterPoint (which lives in the persistent
|
|
||||||
// Client.unity scene). Without this clear, returning to lobby and
|
|
||||||
// starting a new round leaves stale corpses on the map of the new
|
|
||||||
// round. Server already cleared its `_bodies` set in
|
|
||||||
// ProcessReturnToLobby; this is the client-side mirror that was
|
|
||||||
// missing in HandleVotingClosed's symmetry.
|
|
||||||
_manager?.mapSubsystem?.ClearBodyMarkers();
|
|
||||||
_manager?.mapSubsystem?.ClearSabotageMarkers();
|
|
||||||
// Unified lobby: regardless of role, return to create.unity.
|
|
||||||
SceneManager.LoadScene("create", LoadSceneMode.Single);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void HandleSabotageStarted(GameEvent evt)
|
|
||||||
{
|
|
||||||
var payload = evt.GetPayload<SabotageStartedPayload>();
|
|
||||||
if (payload == null) return;
|
|
||||||
|
|
||||||
State.ActiveSabotage = payload;
|
|
||||||
State.ActiveRepairs.Clear();
|
|
||||||
|
|
||||||
_manager?.mapSubsystem?.CreateSabotageMarkers(payload.RepairStations);
|
|
||||||
if (payload.Type == SabotageType.CriticalMeltdown && payload.Deadline.HasValue)
|
|
||||||
_manager?.uiSubsystem?.ShowSabotageTimer(payload.Deadline.Value);
|
|
||||||
if (payload.Type == SabotageType.CommsBlackout)
|
|
||||||
_manager?.uiSubsystem?.SetCommsBlackout(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void HandleRepairStarted(GameEvent evt)
|
|
||||||
{
|
|
||||||
var payload = evt.GetPayload<RepairStartedPayload>();
|
|
||||||
if (payload == null || string.IsNullOrEmpty(payload.StationId)) return;
|
|
||||||
State.ActiveRepairs.Add(payload.StationId);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void HandleRepairStopped(GameEvent evt)
|
|
||||||
{
|
|
||||||
// A player abandoned a repair station mid-fix. The station is no
|
|
||||||
// longer counted as active for the simultaneous-repair coaching;
|
|
||||||
// the marker stays on the map until the sabotage resolves.
|
|
||||||
var payload = evt.GetPayload<RepairStoppedPayload>();
|
|
||||||
if (payload != null && !string.IsNullOrEmpty(payload.StationId))
|
|
||||||
State.ActiveRepairs.Remove(payload.StationId);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void HandleMapDataError(GameEvent evt)
|
|
||||||
{
|
|
||||||
// Server failed to fetch Overpass data. Without this the loading
|
|
||||||
// screen would hang forever. Drop back to lobby and surface the
|
|
||||||
// failure so the player can re-host or try a different center.
|
|
||||||
Debug.LogError("[Network] Server could not generate map data.");
|
|
||||||
State.Phase = GamePhase.Lobby;
|
|
||||||
_manager?.uiSubsystem?.ShowToast("Map fetch failed. Returning to lobby.");
|
|
||||||
LeaveLobby();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void HandlePositionBroadcast(PositionBroadcast broadcast)
|
|
||||||
{
|
|
||||||
if (broadcast == null) return;
|
|
||||||
_manager?.mapSubsystem?.UpdatePlayerAvatars(_gameClient.PlayerPositions, _gameClient.ClientUuid);
|
|
||||||
}
|
|
||||||
|
|
||||||
// ── Helpers ───────────────────────────────────────────────────────────
|
|
||||||
|
|
||||||
private void SyncPlayersFromLobby()
|
|
||||||
{
|
|
||||||
var lobby = _gameClient.CurrentLobbyState;
|
|
||||||
if (lobby?.Players != null)
|
|
||||||
State.Players = lobby.Players;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void Toast(string message)
|
|
||||||
{
|
|
||||||
State.ToastMessage = message;
|
|
||||||
State.ToastExpiry = UnityEngine.Time.time + 4f;
|
|
||||||
}
|
|
||||||
|
|
||||||
// ── Send helpers ──────────────────────────────────────────────────────
|
|
||||||
|
|
||||||
public void CreateLobby(double lat, double lon, double radius = 500, int impostorCount = 1, int taskCount = 5, GameSettingsOverrides settings = null)
|
|
||||||
{
|
|
||||||
_gameClient.CreateLobby(new Position(lat, lon), impostorCount, taskCount, null, radius, settings);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void JoinLobby(string joinCode)
|
public void JoinLobby(string joinCode)
|
||||||
{
|
{
|
||||||
try { _gameClient.JoinLobby(joinCode); }
|
try
|
||||||
catch (System.Exception ex) { Debug.LogError("JoinLobby error: " + ex.Message); }
|
{
|
||||||
|
_gameClient.JoinLobby(joinCode);
|
||||||
|
}
|
||||||
|
catch (System.Exception ex)
|
||||||
|
{
|
||||||
|
Debug.LogError("Error joining lobby: " + ex.Message);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void LeaveLobby()
|
public void LeaveLobby()
|
||||||
{
|
{
|
||||||
_gameClient.LeaveLobby();
|
_gameClient.Disconnect();
|
||||||
State.Phase = GamePhase.Lobby;
|
Application.Quit();
|
||||||
SceneManager.LoadScene(_manager?.firstMenuScene ?? "main menu asi idk lol", LoadSceneMode.Single);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void StartGame()
|
public void StartGame()
|
||||||
{
|
{
|
||||||
_gameClient.StartGame();
|
_gameClient.StartGame();
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,328 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using UnityEngine;
|
|
||||||
using UnityEngine.SceneManagement;
|
|
||||||
using GeoSus.Client;
|
|
||||||
|
|
||||||
namespace Subsystems
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Round-robin task-to-minigame assignment, proximity detection, additive scene launch.
|
|
||||||
/// </summary>
|
|
||||||
public class GameManager_Tasks
|
|
||||||
{
|
|
||||||
private class TaskEntry
|
|
||||||
{
|
|
||||||
public GeoSus.Client.GameTask ServerTask;
|
|
||||||
public string MinigameScene;
|
|
||||||
public bool Completed;
|
|
||||||
}
|
|
||||||
|
|
||||||
private GameClient _gameClient;
|
|
||||||
private string[] _minigameScenes;
|
|
||||||
private MonoBehaviour _host; // GameManager MonoBehaviour for coroutines
|
|
||||||
private List<TaskEntry> _tasks = new List<TaskEntry>();
|
|
||||||
private bool _minigameOpen;
|
|
||||||
private string _loadedMinigameScene;
|
|
||||||
private Camera _hostCameraSuspended;
|
|
||||||
private GameObject _hostInGameHudHidden;
|
|
||||||
|
|
||||||
// Proximity state (checked every frame in UpdateProximity)
|
|
||||||
public GeoSus.Client.GameTask NearbyTask { get; private set; }
|
|
||||||
|
|
||||||
// P13b: per-check distances pulled from the server-snapshotted lobby
|
|
||||||
// settings (null-fallback to 5m matches the old hardcoded behavior).
|
|
||||||
// Different actions use different fields so a host can tune e.g. a
|
|
||||||
// long-range "spotter" task radius without also widening kill range.
|
|
||||||
private const float ProximityRadiusFallback = 5f;
|
|
||||||
|
|
||||||
public GameManager_Tasks(GameClient gameClient, string[] minigameScenes, MonoBehaviour host)
|
|
||||||
{
|
|
||||||
_gameClient = gameClient;
|
|
||||||
_minigameScenes = minigameScenes ?? new string[0];
|
|
||||||
_host = host;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>Called by Network subsystem when RoleAssigned fires.</summary>
|
|
||||||
public void Initialize(List<GeoSus.Client.GameTask> serverTasks)
|
|
||||||
{
|
|
||||||
_tasks.Clear();
|
|
||||||
if (_minigameScenes.Length == 0) return;
|
|
||||||
|
|
||||||
for (int i = 0; i < serverTasks.Count; i++)
|
|
||||||
{
|
|
||||||
_tasks.Add(new TaskEntry
|
|
||||||
{
|
|
||||||
ServerTask = serverTasks[i],
|
|
||||||
MinigameScene = _minigameScenes[i % _minigameScenes.Length],
|
|
||||||
Completed = false
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create map markers
|
|
||||||
GameManager.Instance?.mapSubsystem?.CreateTaskMarkers(serverTasks);
|
|
||||||
Debug.Log($"[Tasks] Initialized {_tasks.Count} tasks.");
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>Called every frame from GameManager.Update().</summary>
|
|
||||||
public void UpdateProximity()
|
|
||||||
{
|
|
||||||
if (_minigameOpen) return;
|
|
||||||
|
|
||||||
// P13b: distances now come from the per-lobby settings snapshot
|
|
||||||
// instead of one hardcoded 5m radius for everything. ?? fallback
|
|
||||||
// matches the old behavior when running against an old server.
|
|
||||||
var state = GameManager.Instance?.networkSubsystem?.State;
|
|
||||||
var settings = state?.Settings;
|
|
||||||
double taskDist = settings?.TaskStartDistanceM ?? ProximityRadiusFallback;
|
|
||||||
double reportDist = settings?.ReportDistanceM ?? ProximityRadiusFallback;
|
|
||||||
double emergencyDist = settings?.EmergencyMeetingCallRadiusM?? ProximityRadiusFallback;
|
|
||||||
double killDist = settings?.KillDistanceM ?? ProximityRadiusFallback;
|
|
||||||
|
|
||||||
NearbyTask = null;
|
|
||||||
var myPos = _gameClient.MyPosition;
|
|
||||||
if (myPos.Lat == 0 && myPos.Lon == 0) return;
|
|
||||||
|
|
||||||
foreach (var entry in _tasks)
|
|
||||||
{
|
|
||||||
if (entry.Completed) continue;
|
|
||||||
double dist = myPos.DistanceTo(entry.ServerTask.Location);
|
|
||||||
if (dist <= taskDist)
|
|
||||||
{
|
|
||||||
NearbyTask = entry.ServerTask;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Drive the action button in UI
|
|
||||||
var ui = GameManager.Instance?.uiSubsystem;
|
|
||||||
if (ui == null || ui.IsPlayerDead) return;
|
|
||||||
|
|
||||||
bool isImpostor = _gameClient.MyRole == GeoSus.Client.PlayerRole.Impostor;
|
|
||||||
|
|
||||||
if (!isImpostor && NearbyTask != null)
|
|
||||||
{
|
|
||||||
ui.SetActionButton("USE", true, () => GameManager.Instance?.PerformAction());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check body proximity
|
|
||||||
if (!ui.IsCommsBlackout)
|
|
||||||
{
|
|
||||||
var body = _gameClient.FindNearbyBody(reportDist);
|
|
||||||
if (body != null)
|
|
||||||
{
|
|
||||||
ui.SetActionButton("REPORT", true, () => GameManager.Instance?.PerformAction());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Emergency meeting proximity
|
|
||||||
if (_gameClient.CurrentLobbyState?.MapData != null)
|
|
||||||
{
|
|
||||||
double dist = myPos.DistanceTo(_gameClient.CurrentLobbyState.MapData.Center);
|
|
||||||
if (dist <= emergencyDist)
|
|
||||||
{
|
|
||||||
ui.SetActionButton("EMERGENCY", true, () => GameManager.Instance?.PerformAction());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Impostor kill
|
|
||||||
if (isImpostor)
|
|
||||||
{
|
|
||||||
var target = _gameClient.FindNearbyPlayer(killDist);
|
|
||||||
if (!string.IsNullOrEmpty(target))
|
|
||||||
{
|
|
||||||
ui.SetActionButton("KILL", true, () => GameManager.Instance?.PerformAction());
|
|
||||||
// Hide sabotage menu while a kill is on offer (cleaner HUD).
|
|
||||||
ui.SetSabotageMenuVisible(false);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Nothing nearby
|
|
||||||
ui.SetActionButton("", false);
|
|
||||||
|
|
||||||
// P13g: persistent sabotage menu for impostors when no proximity
|
|
||||||
// action is on offer. Hidden when state isn't suitable - dead,
|
|
||||||
// not-impostor, in meeting, sabotage already active, or comms
|
|
||||||
// blackout (the impostor's own sabotage triggers a UI lock).
|
|
||||||
bool inPlayingPhase = state != null && state.Phase == GeoSus.Client.GamePhase.Playing;
|
|
||||||
bool sabotageActive = state?.ActiveSabotage != null;
|
|
||||||
bool showSabMenu = isImpostor && !ui.IsPlayerDead && inPlayingPhase &&
|
|
||||||
!sabotageActive && !ui.IsCommsBlackout;
|
|
||||||
ui.SetSabotageMenuVisible(showSabMenu);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>Called externally (e.g., GameManager.PerformAction) to launch the nearby task.</summary>
|
|
||||||
public void TriggerNearbyTask()
|
|
||||||
{
|
|
||||||
OnUsePressed();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void OnUsePressed()
|
|
||||||
{
|
|
||||||
if (NearbyTask == null || _minigameOpen) return;
|
|
||||||
var entry = _tasks.Find(t => t.ServerTask.TaskId == NearbyTask.TaskId);
|
|
||||||
if (entry != null) _host.StartCoroutine(LaunchMinigame(entry));
|
|
||||||
}
|
|
||||||
|
|
||||||
private IEnumerator LaunchMinigame(TaskEntry entry)
|
|
||||||
{
|
|
||||||
_minigameOpen = true;
|
|
||||||
Debug.Log($"[Tasks] Launching minigame '{entry.MinigameScene}' for task '{entry.ServerTask.Name}'");
|
|
||||||
|
|
||||||
// Validate that the scene name resolves to a build-included scene.
|
|
||||||
// LoadSceneAsync silently returns null when the scene name doesn't
|
|
||||||
// match (case-sensitive) or isn't in EditorBuildSettings, which
|
|
||||||
// leaves the action button looking dead from the player's POV.
|
|
||||||
if (string.IsNullOrEmpty(entry.MinigameScene) ||
|
|
||||||
!Application.CanStreamedLevelBeLoaded(entry.MinigameScene))
|
|
||||||
{
|
|
||||||
Debug.LogError($"[Tasks] Minigame scene '{entry.MinigameScene}' is not loadable. " +
|
|
||||||
$"Check the scene name (case-sensitive) and that it's enabled in Build Settings.");
|
|
||||||
GameManager.Instance?.uiSubsystem?.ShowToast(
|
|
||||||
$"Task scene missing: {entry.MinigameScene}");
|
|
||||||
_minigameOpen = false;
|
|
||||||
yield break;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Inform server that task started
|
|
||||||
_gameClient.Send(new TaskStart { TaskId = entry.ServerTask.TaskId });
|
|
||||||
|
|
||||||
// Disable the host scene's main camera while the minigame is up.
|
|
||||||
// With both cameras enabled the minigame's UI/3D content would
|
|
||||||
// fight the host's map camera for screen space, and what gets
|
|
||||||
// drawn depends on Camera.depth which isn't guaranteed across
|
|
||||||
// scenes. Restored in FinishMinigame.
|
|
||||||
_hostCameraSuspended = Camera.main;
|
|
||||||
if (_hostCameraSuspended != null) _hostCameraSuspended.enabled = false;
|
|
||||||
|
|
||||||
// Hide the persistent InGame HUD canvas (if present). It lives
|
|
||||||
// in Client.unity and renders Screen Space - Overlay so it would
|
|
||||||
// otherwise stack on top of the minigame's UI regardless of
|
|
||||||
// which scene is active. SetActive(false) is reversible.
|
|
||||||
_hostInGameHudHidden = GameObject.Find("InGame");
|
|
||||||
if (_hostInGameHudHidden != null && _hostInGameHudHidden.activeSelf)
|
|
||||||
_hostInGameHudHidden.SetActive(false);
|
|
||||||
else
|
|
||||||
_hostInGameHudHidden = null; // nothing to restore
|
|
||||||
|
|
||||||
var op = SceneManager.LoadSceneAsync(entry.MinigameScene, LoadSceneMode.Additive);
|
|
||||||
if (op == null)
|
|
||||||
{
|
|
||||||
Debug.LogError($"[Tasks] LoadSceneAsync returned null for '{entry.MinigameScene}'.");
|
|
||||||
GameManager.Instance?.uiSubsystem?.ShowToast(
|
|
||||||
$"Task scene failed to load: {entry.MinigameScene}");
|
|
||||||
if (_hostCameraSuspended != null) { _hostCameraSuspended.enabled = true; _hostCameraSuspended = null; }
|
|
||||||
_minigameOpen = false;
|
|
||||||
yield break;
|
|
||||||
}
|
|
||||||
yield return op;
|
|
||||||
|
|
||||||
_loadedMinigameScene = entry.MinigameScene;
|
|
||||||
|
|
||||||
// CRITICAL: switch the active scene to the loaded minigame.
|
|
||||||
// LoadSceneMode.Additive stacks scenes without changing which one
|
|
||||||
// is "active" - and an inactive scene's RenderSettings, ambient
|
|
||||||
// light, and skybox don't drive rendering. The host (Client.unity)
|
|
||||||
// remains active and its lighting context still applies, which
|
|
||||||
// is the root cause of "task opens to white screen": the
|
|
||||||
// minigame's content loads but its visuals don't take over.
|
|
||||||
// Without SetActiveScene, even minigames that ARE wired up
|
|
||||||
// correctly render against the host's lighting and look broken.
|
|
||||||
Scene scene = SceneManager.GetSceneByName(entry.MinigameScene);
|
|
||||||
if (scene.IsValid()) SceneManager.SetActiveScene(scene);
|
|
||||||
|
|
||||||
// Diagnostic: count cameras / canvases / lights in the loaded
|
|
||||||
// scene. If the white screen persists after this fix, the
|
|
||||||
// numbers tell us whether the scene is missing rendering bits
|
|
||||||
// (camera=0, canvas=0) or if the issue is elsewhere.
|
|
||||||
int camCount = 0, canvasCount = 0, lightCount = 0;
|
|
||||||
foreach (var root in scene.GetRootGameObjects())
|
|
||||||
{
|
|
||||||
camCount += root.GetComponentsInChildren<Camera>(true).Length;
|
|
||||||
canvasCount += root.GetComponentsInChildren<Canvas>(true).Length;
|
|
||||||
lightCount += root.GetComponentsInChildren<Light>(true).Length;
|
|
||||||
}
|
|
||||||
Debug.Log($"[Tasks] Loaded '{entry.MinigameScene}': cameras={camCount}, " +
|
|
||||||
$"canvases={canvasCount}, lights={lightCount}, " +
|
|
||||||
$"activeScene={SceneManager.GetActiveScene().name}");
|
|
||||||
|
|
||||||
// Find the ITask component in the newly loaded scene
|
|
||||||
ITask taskComponent = null;
|
|
||||||
foreach (var root in scene.GetRootGameObjects())
|
|
||||||
{
|
|
||||||
taskComponent = root.GetComponentInChildren<ITask>();
|
|
||||||
if (taskComponent != null) break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (taskComponent == null)
|
|
||||||
{
|
|
||||||
Debug.LogWarning($"[Tasks] No ITask found in '{entry.MinigameScene}'. " +
|
|
||||||
$"Either the minigame's controller script isn't attached to a GameObject in the scene, " +
|
|
||||||
$"or the script doesn't implement ITask. Auto-completing.");
|
|
||||||
yield return FinishMinigame(entry, true);
|
|
||||||
yield break;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Set task metadata
|
|
||||||
taskComponent.TaskID = entry.ServerTask.TaskId;
|
|
||||||
taskComponent.TaskName = entry.ServerTask.Name;
|
|
||||||
taskComponent.TaskLocation = (entry.ServerTask.Location.Lat, entry.ServerTask.Location.Lon);
|
|
||||||
|
|
||||||
bool done = false;
|
|
||||||
taskComponent.Initialize(t => { done = true; });
|
|
||||||
|
|
||||||
// Wait for completion or exit
|
|
||||||
yield return new WaitUntil(() => done);
|
|
||||||
|
|
||||||
yield return FinishMinigame(entry, done);
|
|
||||||
}
|
|
||||||
|
|
||||||
private IEnumerator FinishMinigame(TaskEntry entry, bool completed)
|
|
||||||
{
|
|
||||||
if (completed)
|
|
||||||
{
|
|
||||||
entry.Completed = true;
|
|
||||||
_gameClient.CompleteTask(entry.ServerTask.TaskId);
|
|
||||||
Debug.Log($"[Tasks] Task '{entry.ServerTask.Name}' completed.");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Debug.Log($"[Tasks] Task '{entry.ServerTask.Name}' exited without completion.");
|
|
||||||
}
|
|
||||||
|
|
||||||
// Unload minigame scene. Switch the active scene back to the
|
|
||||||
// host BEFORE the unload so we don't end up with no active
|
|
||||||
// scene mid-frame (Unity will complain and lighting flickers).
|
|
||||||
if (!string.IsNullOrEmpty(_loadedMinigameScene))
|
|
||||||
{
|
|
||||||
var hostScene = SceneManager.GetSceneByName("Client");
|
|
||||||
if (hostScene.IsValid()) SceneManager.SetActiveScene(hostScene);
|
|
||||||
|
|
||||||
var unload = SceneManager.UnloadSceneAsync(_loadedMinigameScene);
|
|
||||||
yield return unload;
|
|
||||||
_loadedMinigameScene = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Re-enable the host camera that was suspended during the minigame.
|
|
||||||
if (_hostCameraSuspended != null)
|
|
||||||
{
|
|
||||||
_hostCameraSuspended.enabled = true;
|
|
||||||
_hostCameraSuspended = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Re-show the InGame HUD canvas hidden at minigame entry.
|
|
||||||
if (_hostInGameHudHidden != null)
|
|
||||||
{
|
|
||||||
_hostInGameHudHidden.SetActive(true);
|
|
||||||
_hostInGameHudHidden = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
_minigameOpen = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 27a123dbda9eef8ba4815c0c0d30b6fb
|
|
||||||
MonoImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
defaultReferences: []
|
|
||||||
executionOrder: 0
|
|
||||||
icon: {instanceID: 0}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||