Init
This commit is contained in:
99
.gitignore
vendored
Normal file
99
.gitignore
vendored
Normal file
@@ -0,0 +1,99 @@
|
|||||||
|
# This .gitignore file should be placed at the root of your Unity project directory
|
||||||
|
#
|
||||||
|
# Get latest from https://github.com/github/gitignore/blob/main/Unity.gitignore
|
||||||
|
#
|
||||||
|
.utmp/
|
||||||
|
/[Ll]ibrary/
|
||||||
|
/[Tt]emp/
|
||||||
|
/[Oo]bj/
|
||||||
|
/[Bb]uild/
|
||||||
|
/[Bb]uilds/
|
||||||
|
/[Ll]ogs/
|
||||||
|
/[Uu]ser[Ss]ettings/
|
||||||
|
*.log
|
||||||
|
|
||||||
|
# By default unity supports Blender asset imports, *.blend1 blender files do not need to be commited to version control.
|
||||||
|
*.blend1
|
||||||
|
*.blend1.meta
|
||||||
|
|
||||||
|
# MemoryCaptures can get excessive in size.
|
||||||
|
# They also could contain extremely sensitive data
|
||||||
|
/[Mm]emoryCaptures/
|
||||||
|
|
||||||
|
# Recordings can get excessive in size
|
||||||
|
/[Rr]ecordings/
|
||||||
|
|
||||||
|
# Uncomment this line if you wish to ignore the asset store tools plugin
|
||||||
|
# /[Aa]ssets/AssetStoreTools*
|
||||||
|
|
||||||
|
# Autogenerated Jetbrains Rider plugin
|
||||||
|
/[Aa]ssets/Plugins/Editor/JetBrains*
|
||||||
|
# Jetbrains Rider personal-layer settings
|
||||||
|
*.DotSettings.user
|
||||||
|
|
||||||
|
# Visual Studio cache directory
|
||||||
|
.vs/
|
||||||
|
|
||||||
|
# Gradle cache directory
|
||||||
|
.gradle/
|
||||||
|
|
||||||
|
# Autogenerated VS/MD/Consulo solution and project files
|
||||||
|
ExportedObj/
|
||||||
|
.consulo/
|
||||||
|
*.csproj
|
||||||
|
*.unityproj
|
||||||
|
*.sln
|
||||||
|
*.suo
|
||||||
|
*.tmp
|
||||||
|
*.user
|
||||||
|
*.userprefs
|
||||||
|
*.pidb
|
||||||
|
*.booproj
|
||||||
|
*.svd
|
||||||
|
*.pdb
|
||||||
|
*.mdb
|
||||||
|
*.opendb
|
||||||
|
*.VC.db
|
||||||
|
|
||||||
|
# Unity3D generated meta files
|
||||||
|
*.pidb.meta
|
||||||
|
*.pdb.meta
|
||||||
|
*.mdb.meta
|
||||||
|
|
||||||
|
# Unity3D generated file on crash reports
|
||||||
|
sysinfo.txt
|
||||||
|
|
||||||
|
# Mono auto generated files
|
||||||
|
mono_crash.*
|
||||||
|
|
||||||
|
# Builds
|
||||||
|
*.apk
|
||||||
|
*.aab
|
||||||
|
*.unitypackage
|
||||||
|
*.unitypackage.meta
|
||||||
|
*.app
|
||||||
|
|
||||||
|
# Crashlytics generated file
|
||||||
|
crashlytics-build.properties
|
||||||
|
|
||||||
|
# TestRunner generated files
|
||||||
|
InitTestScene*.unity*
|
||||||
|
|
||||||
|
# Addressables default ignores, before user customizations
|
||||||
|
/ServerData
|
||||||
|
/[Aa]ssets/StreamingAssets/aa*
|
||||||
|
/[Aa]ssets/AddressableAssetsData/link.xml*
|
||||||
|
/[Aa]ssets/Addressables_Temp*
|
||||||
|
# By default, Addressables content builds will generate addressables_content_state.bin
|
||||||
|
# files in platform-specific subfolders, for example:
|
||||||
|
# /Assets/AddressableAssetsData/OSX/addressables_content_state.bin
|
||||||
|
/[Aa]ssets/AddressableAssetsData/*/*.bin*
|
||||||
|
|
||||||
|
# Visual Scripting auto-generated files
|
||||||
|
/[Aa]ssets/Unity.VisualScripting.Generated/VisualScripting.Flow/UnitOptions.db
|
||||||
|
/[Aa]ssets/Unity.VisualScripting.Generated/VisualScripting.Flow/UnitOptions.db.meta
|
||||||
|
/[Aa]ssets/Unity.VisualScripting.Generated/VisualScripting.Core/Property Providers
|
||||||
|
/[Aa]ssets/Unity.VisualScripting.Generated/VisualScripting.Core/Property Providers.meta
|
||||||
|
|
||||||
|
# Auto-generated scenes by play mode tests
|
||||||
|
/[Aa]ssets/[Ii]nit[Tt]est[Ss]cene*.unity*
|
||||||
6
.vsconfig
Normal file
6
.vsconfig
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"version": "1.0",
|
||||||
|
"components": [
|
||||||
|
"Microsoft.VisualStudio.Workload.ManagedGame"
|
||||||
|
]
|
||||||
|
}
|
||||||
8
Assets/ClientSDK.meta
Normal file
8
Assets/ClientSDK.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: d1d7531f2b0dd1c44a811f5704eeed90
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
7
Assets/ClientSDK/ClientSDK.csproj.meta
Normal file
7
Assets/ClientSDK/ClientSDK.csproj.meta
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 7009ccbbf5326044c8f2df72a309d093
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
285
Assets/ClientSDK/Encryption.cs
Normal file
285
Assets/ClientSDK/Encryption.cs
Normal file
@@ -0,0 +1,285 @@
|
|||||||
|
using System;
|
||||||
|
using System.IO;
|
||||||
|
using System.Security.Cryptography;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace GeoSus.Client
|
||||||
|
{
|
||||||
|
// Klientská strana šifrování - generuje session key, šifruje RSA, AES-CBC session
|
||||||
|
// Používá AES-CBC místo AES-GCM pro kompatibilitu s Unity
|
||||||
|
public class ClientEncryption : IDisposable
|
||||||
|
{
|
||||||
|
private byte[] _sessionKey;
|
||||||
|
private byte[] _sessionIv;
|
||||||
|
private long _nonceCounter;
|
||||||
|
private readonly object _lock = new object();
|
||||||
|
|
||||||
|
// Kontrola, zda je session key nastaven
|
||||||
|
public bool HasSessionKey => _sessionKey != null && _sessionIv != null;
|
||||||
|
|
||||||
|
// Generuje nový session key a IV
|
||||||
|
public void GenerateSessionKey()
|
||||||
|
{
|
||||||
|
_sessionKey = new byte[32]; // AES-256
|
||||||
|
_sessionIv = new byte[16]; // CBC IV (16 bytes)
|
||||||
|
|
||||||
|
using (var rng = RandomNumberGenerator.Create())
|
||||||
|
{
|
||||||
|
rng.GetBytes(_sessionKey);
|
||||||
|
rng.GetBytes(_sessionIv);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public byte[] SessionKey => _sessionKey ?? throw new InvalidOperationException("Session key not generated");
|
||||||
|
public byte[] SessionIV => _sessionIv ?? throw new InvalidOperationException("Session IV not generated");
|
||||||
|
|
||||||
|
// Zašifruje session key pomocí RSA public key serveru
|
||||||
|
public (string EncryptedKey, string EncryptedIV) EncryptSessionKeyForServer(string rsaPublicKeyPem)
|
||||||
|
{
|
||||||
|
if (_sessionKey == null || _sessionIv == null)
|
||||||
|
throw new InvalidOperationException("Session key not generated");
|
||||||
|
|
||||||
|
using (var rsa = RSA.Create())
|
||||||
|
{
|
||||||
|
// Parse PEM - extrahuj Base64 obsah
|
||||||
|
var pemLines = rsaPublicKeyPem.Split('\n');
|
||||||
|
var base64 = new StringBuilder();
|
||||||
|
foreach (var line in pemLines)
|
||||||
|
{
|
||||||
|
var trimmed = line.Trim();
|
||||||
|
if (!trimmed.StartsWith("-----") && !string.IsNullOrEmpty(trimmed))
|
||||||
|
{
|
||||||
|
base64.Append(trimmed);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var keyBytes = Convert.FromBase64String(base64.ToString());
|
||||||
|
|
||||||
|
// Unity kompatibilní import - parsujeme SubjectPublicKeyInfo ručně
|
||||||
|
ImportSubjectPublicKeyInfoManual(rsa, keyBytes);
|
||||||
|
|
||||||
|
// Používáme OaepSHA1 pro Unity kompatibilitu (OaepSHA256 není podporován)
|
||||||
|
var encryptedKey = rsa.Encrypt(_sessionKey, RSAEncryptionPadding.OaepSHA1);
|
||||||
|
var encryptedIv = rsa.Encrypt(_sessionIv, RSAEncryptionPadding.OaepSHA1);
|
||||||
|
|
||||||
|
return (Convert.ToBase64String(encryptedKey), Convert.ToBase64String(encryptedIv));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ručně parsuje SubjectPublicKeyInfo (DER) a importuje RSA klíč - Unity kompatibilní
|
||||||
|
private static void ImportSubjectPublicKeyInfoManual(RSA rsa, byte[] subjectPublicKeyInfo)
|
||||||
|
{
|
||||||
|
// SubjectPublicKeyInfo ::= SEQUENCE {
|
||||||
|
// algorithm AlgorithmIdentifier,
|
||||||
|
// subjectPublicKey BIT STRING }
|
||||||
|
// RSAPublicKey ::= SEQUENCE { modulus INTEGER, publicExponent INTEGER }
|
||||||
|
|
||||||
|
int index = 0;
|
||||||
|
|
||||||
|
// Outer SEQUENCE
|
||||||
|
if (subjectPublicKeyInfo[index++] != 0x30)
|
||||||
|
throw new InvalidOperationException("Invalid SubjectPublicKeyInfo");
|
||||||
|
ReadLength(subjectPublicKeyInfo, ref index);
|
||||||
|
|
||||||
|
// AlgorithmIdentifier SEQUENCE - skip it
|
||||||
|
if (subjectPublicKeyInfo[index++] != 0x30)
|
||||||
|
throw new InvalidOperationException("Invalid AlgorithmIdentifier");
|
||||||
|
int algLen = ReadLength(subjectPublicKeyInfo, ref index);
|
||||||
|
index += algLen;
|
||||||
|
|
||||||
|
// BIT STRING containing RSAPublicKey
|
||||||
|
if (subjectPublicKeyInfo[index++] != 0x03)
|
||||||
|
throw new InvalidOperationException("Invalid BIT STRING");
|
||||||
|
ReadLength(subjectPublicKeyInfo, ref index);
|
||||||
|
index++; // Skip unused bits byte (should be 0)
|
||||||
|
|
||||||
|
// RSAPublicKey SEQUENCE
|
||||||
|
if (subjectPublicKeyInfo[index++] != 0x30)
|
||||||
|
throw new InvalidOperationException("Invalid RSAPublicKey");
|
||||||
|
ReadLength(subjectPublicKeyInfo, ref index);
|
||||||
|
|
||||||
|
// Modulus INTEGER
|
||||||
|
byte[] modulus = ReadInteger(subjectPublicKeyInfo, ref index);
|
||||||
|
|
||||||
|
// Exponent INTEGER
|
||||||
|
byte[] exponent = ReadInteger(subjectPublicKeyInfo, ref index);
|
||||||
|
|
||||||
|
var parameters = new RSAParameters
|
||||||
|
{
|
||||||
|
Modulus = modulus,
|
||||||
|
Exponent = exponent
|
||||||
|
};
|
||||||
|
rsa.ImportParameters(parameters);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static int ReadLength(byte[] data, ref int index)
|
||||||
|
{
|
||||||
|
int length = data[index++];
|
||||||
|
if ((length & 0x80) != 0)
|
||||||
|
{
|
||||||
|
int numBytes = length & 0x7F;
|
||||||
|
length = 0;
|
||||||
|
for (int i = 0; i < numBytes; i++)
|
||||||
|
{
|
||||||
|
length = (length << 8) | data[index++];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return length;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static byte[] ReadInteger(byte[] data, ref int index)
|
||||||
|
{
|
||||||
|
if (data[index++] != 0x02)
|
||||||
|
throw new InvalidOperationException("Expected INTEGER");
|
||||||
|
int length = ReadLength(data, ref index);
|
||||||
|
|
||||||
|
// Skip leading zero if present (used for positive sign in DER)
|
||||||
|
int originalLength = length;
|
||||||
|
int start = index;
|
||||||
|
if (length > 1 && data[start] == 0x00)
|
||||||
|
{
|
||||||
|
start++;
|
||||||
|
length--;
|
||||||
|
}
|
||||||
|
|
||||||
|
byte[] result = new byte[length];
|
||||||
|
Buffer.BlockCopy(data, start, result, 0, length);
|
||||||
|
index += originalLength;
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Šifruje zprávu pomocí AES-256-CBC s HMAC
|
||||||
|
public byte[] Encrypt(byte[] plaintext)
|
||||||
|
{
|
||||||
|
if (_sessionKey == null || _sessionIv == null)
|
||||||
|
throw new InvalidOperationException("Session key not set");
|
||||||
|
|
||||||
|
lock (_lock)
|
||||||
|
{
|
||||||
|
// Generuj unikátní IV pro tuto zprávu
|
||||||
|
var iv = GetNextIV();
|
||||||
|
|
||||||
|
using (var aes = Aes.Create())
|
||||||
|
{
|
||||||
|
aes.Key = _sessionKey;
|
||||||
|
aes.IV = iv;
|
||||||
|
aes.Mode = CipherMode.CBC;
|
||||||
|
aes.Padding = PaddingMode.PKCS7;
|
||||||
|
|
||||||
|
byte[] ciphertext;
|
||||||
|
using (var encryptor = aes.CreateEncryptor())
|
||||||
|
using (var ms = new MemoryStream())
|
||||||
|
{
|
||||||
|
using (var cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write))
|
||||||
|
{
|
||||||
|
cs.Write(plaintext, 0, plaintext.Length);
|
||||||
|
}
|
||||||
|
ciphertext = ms.ToArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Compute HMAC pro integritu
|
||||||
|
byte[] hmac;
|
||||||
|
using (var hmacSha = new HMACSHA256(_sessionKey))
|
||||||
|
{
|
||||||
|
var toSign = new byte[iv.Length + ciphertext.Length];
|
||||||
|
Buffer.BlockCopy(iv, 0, toSign, 0, iv.Length);
|
||||||
|
Buffer.BlockCopy(ciphertext, 0, toSign, iv.Length, ciphertext.Length);
|
||||||
|
hmac = hmacSha.ComputeHash(toSign);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Výstup: [16 bytes IV][32 bytes HMAC][ciphertext]
|
||||||
|
var result = new byte[16 + 32 + ciphertext.Length];
|
||||||
|
Buffer.BlockCopy(iv, 0, result, 0, 16);
|
||||||
|
Buffer.BlockCopy(hmac, 0, result, 16, 32);
|
||||||
|
Buffer.BlockCopy(ciphertext, 0, result, 48, ciphertext.Length);
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Dešifruje zprávu pomocí AES-256-CBC s HMAC ověřením
|
||||||
|
public byte[] Decrypt(byte[] encrypted)
|
||||||
|
{
|
||||||
|
if (_sessionKey == null)
|
||||||
|
throw new InvalidOperationException("Session key not set");
|
||||||
|
|
||||||
|
if (encrypted.Length < 48) return null;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var iv = new byte[16];
|
||||||
|
var hmac = new byte[32];
|
||||||
|
var ciphertext = new byte[encrypted.Length - 48];
|
||||||
|
|
||||||
|
Buffer.BlockCopy(encrypted, 0, iv, 0, 16);
|
||||||
|
Buffer.BlockCopy(encrypted, 16, hmac, 0, 32);
|
||||||
|
Buffer.BlockCopy(encrypted, 48, ciphertext, 0, ciphertext.Length);
|
||||||
|
|
||||||
|
// Ověř HMAC
|
||||||
|
byte[] expectedHmac;
|
||||||
|
using (var hmacSha = new HMACSHA256(_sessionKey))
|
||||||
|
{
|
||||||
|
var toVerify = new byte[iv.Length + ciphertext.Length];
|
||||||
|
Buffer.BlockCopy(iv, 0, toVerify, 0, iv.Length);
|
||||||
|
Buffer.BlockCopy(ciphertext, 0, toVerify, iv.Length, ciphertext.Length);
|
||||||
|
expectedHmac = hmacSha.ComputeHash(toVerify);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Constant-time compare
|
||||||
|
var diff = 0;
|
||||||
|
for (int i = 0; i < 32; i++)
|
||||||
|
{
|
||||||
|
diff |= hmac[i] ^ expectedHmac[i];
|
||||||
|
}
|
||||||
|
if (diff != 0) return null; // HMAC mismatch
|
||||||
|
|
||||||
|
using (var aes = Aes.Create())
|
||||||
|
{
|
||||||
|
aes.Key = _sessionKey;
|
||||||
|
aes.IV = iv;
|
||||||
|
aes.Mode = CipherMode.CBC;
|
||||||
|
aes.Padding = PaddingMode.PKCS7;
|
||||||
|
|
||||||
|
using (var decryptor = aes.CreateDecryptor())
|
||||||
|
using (var ms = new MemoryStream(ciphertext))
|
||||||
|
using (var cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Read))
|
||||||
|
using (var output = new MemoryStream())
|
||||||
|
{
|
||||||
|
cs.CopyTo(output);
|
||||||
|
return output.ToArray();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (CryptographicException)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private byte[] GetNextIV()
|
||||||
|
{
|
||||||
|
if (_sessionIv == null)
|
||||||
|
throw new InvalidOperationException("Session IV not set");
|
||||||
|
|
||||||
|
var iv = new byte[16];
|
||||||
|
Buffer.BlockCopy(_sessionIv, 0, iv, 0, 8);
|
||||||
|
|
||||||
|
var counter = System.Threading.Interlocked.Increment(ref _nonceCounter);
|
||||||
|
var counterBytes = BitConverter.GetBytes(counter);
|
||||||
|
Buffer.BlockCopy(counterBytes, 0, iv, 8, 8);
|
||||||
|
|
||||||
|
return iv;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Dispose()
|
||||||
|
{
|
||||||
|
if (_sessionKey != null)
|
||||||
|
{
|
||||||
|
Array.Clear(_sessionKey, 0, _sessionKey.Length);
|
||||||
|
_sessionKey = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
2
Assets/ClientSDK/Encryption.cs.meta
Normal file
2
Assets/ClientSDK/Encryption.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: bc06bb57786c7e142b06ec231e5cf709
|
||||||
73
Assets/ClientSDK/EventDispatcher.cs
Normal file
73
Assets/ClientSDK/EventDispatcher.cs
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Threading;
|
||||||
|
|
||||||
|
namespace GeoSus.Client
|
||||||
|
{
|
||||||
|
// Event dispatcher pro Unity main thread
|
||||||
|
// Unity může přidat SynchronizationContext, nebo polling z Update()
|
||||||
|
public class EventDispatcher
|
||||||
|
{
|
||||||
|
private readonly Queue<Action> _pendingActions = new Queue<Action>();
|
||||||
|
private readonly object _lock = new object();
|
||||||
|
private SynchronizationContext? _syncContext;
|
||||||
|
|
||||||
|
public EventDispatcher()
|
||||||
|
{
|
||||||
|
// Pokusíme se zachytit aktuální synchronization context (Unity main thread)
|
||||||
|
_syncContext = SynchronizationContext.Current;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Volat z networking vlákna - naplánuje callback na main thread
|
||||||
|
public void Post(Action action)
|
||||||
|
{
|
||||||
|
if (_syncContext != null)
|
||||||
|
{
|
||||||
|
_syncContext.Post(_ => action(), null);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Fallback - přidáme do fronty pro polling
|
||||||
|
lock (_lock)
|
||||||
|
{
|
||||||
|
_pendingActions.Enqueue(action);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Volat z Unity Update() pokud není SynchronizationContext
|
||||||
|
public void ProcessPendingActions()
|
||||||
|
{
|
||||||
|
Action[] actions;
|
||||||
|
lock (_lock)
|
||||||
|
{
|
||||||
|
if (_pendingActions.Count == 0) return;
|
||||||
|
actions = _pendingActions.ToArray();
|
||||||
|
_pendingActions.Clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (var action in actions)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
action();
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Console.WriteLine($"EventDispatcher error: {ex}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public int PendingCount
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
lock (_lock)
|
||||||
|
{
|
||||||
|
return _pendingActions.Count;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
2
Assets/ClientSDK/EventDispatcher.cs.meta
Normal file
2
Assets/ClientSDK/EventDispatcher.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 1d2251b279edb0147bd274a884ac878b
|
||||||
607
Assets/ClientSDK/GameClient.cs
Normal file
607
Assets/ClientSDK/GameClient.cs
Normal file
@@ -0,0 +1,607 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Net.Sockets;
|
||||||
|
using System.Threading;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace GeoSus.Client
|
||||||
|
{
|
||||||
|
// Hlavní klientská třída pro připojení k serveru
|
||||||
|
public class GameClient : IDisposable
|
||||||
|
{
|
||||||
|
private TcpClient? _tcpClient;
|
||||||
|
private NetworkStream? _stream;
|
||||||
|
private ClientEncryption? _encryption;
|
||||||
|
private CancellationTokenSource? _cts;
|
||||||
|
private Task? _receiveTask;
|
||||||
|
private int _clientSeq;
|
||||||
|
private readonly object _sendLock = new object();
|
||||||
|
private bool _handshakeComplete;
|
||||||
|
|
||||||
|
public string ClientUuid { get; }
|
||||||
|
public string DisplayName { get; set; }
|
||||||
|
public bool IsConnected => _tcpClient?.Connected ?? false;
|
||||||
|
public bool IsReady => IsConnected && _handshakeComplete && (_encryption?.HasSessionKey ?? false);
|
||||||
|
public EventDispatcher Dispatcher { get; }
|
||||||
|
|
||||||
|
// Events - voláno na main thread přes dispatcher
|
||||||
|
public event Action? OnConnected;
|
||||||
|
public event Action<string>? OnDisconnected;
|
||||||
|
public event Action<string>? OnError;
|
||||||
|
public event Action<Message>? OnMessage;
|
||||||
|
public event Action<GameEvent>? OnGameEvent;
|
||||||
|
|
||||||
|
// Lobby state
|
||||||
|
public string? LobbyId { get; private set; }
|
||||||
|
public string? JoinCode { get; private set; }
|
||||||
|
public LobbyState? CurrentLobbyState { get; private set; }
|
||||||
|
public PlayerRole? MyRole { get; private set; }
|
||||||
|
public List<GameTask> MyTasks { get; } = new List<GameTask>();
|
||||||
|
public Position MyPosition { get; set; }
|
||||||
|
public Dictionary<string, PlayerPositionInfo> PlayerPositions { get; } = new Dictionary<string, PlayerPositionInfo>();
|
||||||
|
public List<Body> Bodies { get; } = new List<Body>();
|
||||||
|
public int Ping { get; private set; }
|
||||||
|
public long LastEventId { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>Returns true if this client is the current lobby owner</summary>
|
||||||
|
public bool IsOwner => CurrentLobbyState?.OwnerId == ClientUuid;
|
||||||
|
|
||||||
|
public GameClient(string clientUuid, string displayName)
|
||||||
|
{
|
||||||
|
ClientUuid = clientUuid;
|
||||||
|
DisplayName = displayName;
|
||||||
|
Dispatcher = new EventDispatcher();
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Connection
|
||||||
|
|
||||||
|
public async Task<bool> ConnectAsync(string host, int port)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
_tcpClient = new TcpClient();
|
||||||
|
await _tcpClient.ConnectAsync(host, port);
|
||||||
|
_stream = _tcpClient.GetStream();
|
||||||
|
_encryption = new ClientEncryption();
|
||||||
|
_cts = new CancellationTokenSource();
|
||||||
|
|
||||||
|
// Handshake
|
||||||
|
if (!await PerformHandshakeAsync())
|
||||||
|
{
|
||||||
|
Disconnect("Handshake failed");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Spustíme příjem zpráv
|
||||||
|
_receiveTask = Task.Run(() => ReceiveLoopAsync(_cts.Token));
|
||||||
|
|
||||||
|
Dispatcher.Post(() => OnConnected?.Invoke());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Dispatcher.Post(() => OnError?.Invoke(ex.Message));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task<bool> PerformHandshakeAsync()
|
||||||
|
{
|
||||||
|
if (_stream == null || _encryption == null) return false;
|
||||||
|
|
||||||
|
// 1. ClientHello
|
||||||
|
var hello = new ClientHello
|
||||||
|
{
|
||||||
|
ClientUuid = ClientUuid,
|
||||||
|
DisplayName = DisplayName
|
||||||
|
};
|
||||||
|
await SendPlainAsync(hello);
|
||||||
|
|
||||||
|
// 2. ServerHello
|
||||||
|
var serverHelloData = await ReadMessageAsync();
|
||||||
|
if (serverHelloData == null) return false;
|
||||||
|
|
||||||
|
var serverHello = MessageSerializer.Deserialize(serverHelloData) as ServerHello;
|
||||||
|
if (serverHello == null) return false;
|
||||||
|
|
||||||
|
// 3. Generujeme session key a šifrujeme RSA
|
||||||
|
_encryption.GenerateSessionKey();
|
||||||
|
var (encKey, encIv) = _encryption.EncryptSessionKeyForServer(serverHello.RsaPublicKeyPem);
|
||||||
|
|
||||||
|
var keyExchange = new KeyExchange
|
||||||
|
{
|
||||||
|
EncryptedSessionKey = encKey,
|
||||||
|
EncryptedIV = encIv
|
||||||
|
};
|
||||||
|
await SendPlainAsync(keyExchange);
|
||||||
|
|
||||||
|
// 4. KeyExchangeAck (šifrovaně)
|
||||||
|
var ackData = await ReadMessageAsync();
|
||||||
|
if (ackData == null) return false;
|
||||||
|
|
||||||
|
var decrypted = _encryption.Decrypt(ackData);
|
||||||
|
if (decrypted == null) return false;
|
||||||
|
|
||||||
|
var ack = MessageSerializer.Deserialize(decrypted) as KeyExchangeAck;
|
||||||
|
if (ack?.Status == "success")
|
||||||
|
{
|
||||||
|
_handshakeComplete = true;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Disconnect(string reason = "User disconnected")
|
||||||
|
{
|
||||||
|
_cts?.Cancel();
|
||||||
|
_tcpClient?.Close();
|
||||||
|
_tcpClient = null;
|
||||||
|
_stream = null;
|
||||||
|
_encryption?.Dispose();
|
||||||
|
_encryption = null;
|
||||||
|
|
||||||
|
LobbyId = null;
|
||||||
|
JoinCode = null;
|
||||||
|
CurrentLobbyState = null;
|
||||||
|
MyRole = null;
|
||||||
|
MyTasks.Clear();
|
||||||
|
PlayerPositions.Clear();
|
||||||
|
Bodies.Clear();
|
||||||
|
|
||||||
|
Dispatcher.Post(() => OnDisconnected?.Invoke(reason));
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Sending
|
||||||
|
|
||||||
|
public void Send(Message message)
|
||||||
|
{
|
||||||
|
if (_stream == null || _encryption == null || !IsConnected) return;
|
||||||
|
|
||||||
|
message.ClientSeq = Interlocked.Increment(ref _clientSeq);
|
||||||
|
if (string.IsNullOrEmpty(message.ActionId))
|
||||||
|
{
|
||||||
|
message.ActionId = Guid.NewGuid().ToString("N").Substring(0, 8);
|
||||||
|
}
|
||||||
|
|
||||||
|
var plain = MessageSerializer.Serialize(message);
|
||||||
|
var encrypted = _encryption.Encrypt(plain);
|
||||||
|
|
||||||
|
lock (_sendLock)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
SendData(encrypted);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Dispatcher.Post(() => OnError?.Invoke($"Send error: {ex.Message}"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task SendPlainAsync(Message message)
|
||||||
|
{
|
||||||
|
if (_stream == null) return;
|
||||||
|
var data = MessageSerializer.Serialize(message);
|
||||||
|
await SendDataAsync(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SendData(byte[] data)
|
||||||
|
{
|
||||||
|
if (_stream == null) return;
|
||||||
|
|
||||||
|
var lengthBuffer = BitConverter.GetBytes(data.Length);
|
||||||
|
if (BitConverter.IsLittleEndian)
|
||||||
|
Array.Reverse(lengthBuffer);
|
||||||
|
|
||||||
|
_stream.Write(lengthBuffer, 0, 4);
|
||||||
|
_stream.Write(data, 0, data.Length);
|
||||||
|
_stream.Flush();
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task SendDataAsync(byte[] data)
|
||||||
|
{
|
||||||
|
if (_stream == null) return;
|
||||||
|
|
||||||
|
var lengthBuffer = BitConverter.GetBytes(data.Length);
|
||||||
|
if (BitConverter.IsLittleEndian)
|
||||||
|
Array.Reverse(lengthBuffer);
|
||||||
|
|
||||||
|
await _stream.WriteAsync(lengthBuffer, 0, 4);
|
||||||
|
await _stream.WriteAsync(data, 0, data.Length);
|
||||||
|
await _stream.FlushAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Receiving
|
||||||
|
|
||||||
|
private async Task ReceiveLoopAsync(CancellationToken ct)
|
||||||
|
{
|
||||||
|
int decryptFailures = 0;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
while (!ct.IsCancellationRequested && IsConnected)
|
||||||
|
{
|
||||||
|
var data = await ReadMessageAsync();
|
||||||
|
if (data == null) break;
|
||||||
|
|
||||||
|
var decrypted = _encryption?.Decrypt(data);
|
||||||
|
if (decrypted == null)
|
||||||
|
{
|
||||||
|
decryptFailures++;
|
||||||
|
if (decryptFailures >= 3)
|
||||||
|
{
|
||||||
|
Disconnect("Too many decryption failures");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
decryptFailures = 0;
|
||||||
|
|
||||||
|
var message = MessageSerializer.Deserialize(decrypted);
|
||||||
|
if (message != null)
|
||||||
|
{
|
||||||
|
ProcessMessage(message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex) when (!ct.IsCancellationRequested)
|
||||||
|
{
|
||||||
|
Disconnect($"Connection error: {ex.Message}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task<byte[]?> ReadMessageAsync()
|
||||||
|
{
|
||||||
|
if (_stream == null) return null;
|
||||||
|
|
||||||
|
var lengthBuffer = new byte[4];
|
||||||
|
var read = await _stream.ReadAsync(lengthBuffer, 0, 4);
|
||||||
|
if (read < 4) return null;
|
||||||
|
|
||||||
|
if (BitConverter.IsLittleEndian)
|
||||||
|
Array.Reverse(lengthBuffer);
|
||||||
|
var length = BitConverter.ToInt32(lengthBuffer, 0);
|
||||||
|
|
||||||
|
if (length <= 0 || length > 1048576) return null;
|
||||||
|
|
||||||
|
var buffer = new byte[length];
|
||||||
|
var totalRead = 0;
|
||||||
|
while (totalRead < length)
|
||||||
|
{
|
||||||
|
read = await _stream.ReadAsync(buffer, totalRead, length - totalRead);
|
||||||
|
if (read == 0) return null;
|
||||||
|
totalRead += read;
|
||||||
|
}
|
||||||
|
|
||||||
|
return buffer;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ProcessMessage(Message message)
|
||||||
|
{
|
||||||
|
// Zpracujeme speciální typy
|
||||||
|
switch (message)
|
||||||
|
{
|
||||||
|
case CreateLobbyResponse r:
|
||||||
|
if (r.Success)
|
||||||
|
{
|
||||||
|
LobbyId = r.LobbyId;
|
||||||
|
JoinCode = r.JoinCode;
|
||||||
|
CurrentLobbyState = r.LobbyState;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case JoinLobbyResponse r:
|
||||||
|
if (r.Success)
|
||||||
|
{
|
||||||
|
LobbyId = r.LobbyId;
|
||||||
|
CurrentLobbyState = r.LobbyState;
|
||||||
|
JoinCode = r.LobbyState?.JoinCode;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PositionBroadcast b:
|
||||||
|
ProcessPositionBroadcast(b);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Pong p:
|
||||||
|
var now = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
|
||||||
|
Ping = (int)(now - p.ClientTime);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case GameEvent evt:
|
||||||
|
ProcessGameEvent(evt);
|
||||||
|
Dispatcher.Post(() => OnGameEvent?.Invoke(evt));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
Dispatcher.Post(() => OnMessage?.Invoke(message));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ProcessPositionBroadcast(PositionBroadcast broadcast)
|
||||||
|
{
|
||||||
|
PlayerPositions.Clear();
|
||||||
|
foreach (var player in broadcast.Players)
|
||||||
|
{
|
||||||
|
PlayerPositions[player.ClientUuid] = player;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ProcessGameEvent(GameEvent evt)
|
||||||
|
{
|
||||||
|
LastEventId = evt.EventId;
|
||||||
|
|
||||||
|
switch (evt.EventType)
|
||||||
|
{
|
||||||
|
case "PlayerJoined":
|
||||||
|
// Add player to lobby state
|
||||||
|
var joinedPayload = evt.GetPayload<PlayerJoinedPayload>();
|
||||||
|
if (joinedPayload != null && CurrentLobbyState?.Players != null)
|
||||||
|
{
|
||||||
|
// Check if player already exists
|
||||||
|
bool exists = CurrentLobbyState.Players.Any(p => p.ClientUuid == joinedPayload.ClientUuid);
|
||||||
|
if (!exists)
|
||||||
|
{
|
||||||
|
CurrentLobbyState.Players.Add(new PlayerInfo
|
||||||
|
{
|
||||||
|
ClientUuid = joinedPayload.ClientUuid,
|
||||||
|
DisplayName = joinedPayload.DisplayName,
|
||||||
|
IsOwner = false,
|
||||||
|
IsReady = false,
|
||||||
|
State = PlayerState.Alive
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "PlayerLeft":
|
||||||
|
// Remove player from lobby state
|
||||||
|
var leftPayload = evt.GetPayload<PlayerLeftPayload>();
|
||||||
|
if (leftPayload != null && CurrentLobbyState?.Players != null)
|
||||||
|
{
|
||||||
|
CurrentLobbyState.Players.RemoveAll(p => p.ClientUuid == leftPayload.ClientUuid);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "HostChanged":
|
||||||
|
// Update lobby owner
|
||||||
|
var hostPayload = evt.GetPayload<HostChangedPayload>();
|
||||||
|
if (hostPayload != null && CurrentLobbyState != null)
|
||||||
|
{
|
||||||
|
CurrentLobbyState.OwnerId = hostPayload.NewHostId;
|
||||||
|
// Update IsOwner flag on all players
|
||||||
|
foreach (var player in CurrentLobbyState.Players)
|
||||||
|
{
|
||||||
|
player.IsOwner = player.ClientUuid == hostPayload.NewHostId;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "GameStarting":
|
||||||
|
// Game is entering loading phase - update lobby state if available
|
||||||
|
if (CurrentLobbyState != null)
|
||||||
|
{
|
||||||
|
CurrentLobbyState.Phase = GamePhase.Loading;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "MapDataReady":
|
||||||
|
// Map data received - store it and send confirmation
|
||||||
|
var mapDataPayload = evt.GetPayload<MapDataReadyPayload>();
|
||||||
|
if (mapDataPayload != null && CurrentLobbyState != null)
|
||||||
|
{
|
||||||
|
CurrentLobbyState.MapData = mapDataPayload.MapData;
|
||||||
|
CurrentLobbyState.MapDataReady = true;
|
||||||
|
}
|
||||||
|
// Send confirmation to server
|
||||||
|
Send(new MapDataReceived());
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "GameStarted":
|
||||||
|
// Game officially started - update phase
|
||||||
|
if (CurrentLobbyState != null)
|
||||||
|
{
|
||||||
|
CurrentLobbyState.Phase = GamePhase.Playing;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "RoleAssigned":
|
||||||
|
var rolePayload = evt.GetPayload<RoleAssignedPayload>();
|
||||||
|
if (rolePayload != null && rolePayload.ClientUuid == ClientUuid)
|
||||||
|
{
|
||||||
|
MyRole = rolePayload.Role;
|
||||||
|
MyTasks.Clear();
|
||||||
|
if (rolePayload.Tasks != null)
|
||||||
|
{
|
||||||
|
MyTasks.AddRange(rolePayload.Tasks);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "PlayerKilled":
|
||||||
|
var killPayload = evt.GetPayload<PlayerKilledPayload>();
|
||||||
|
if (killPayload != null)
|
||||||
|
{
|
||||||
|
Bodies.Add(new Body
|
||||||
|
{
|
||||||
|
BodyId = killPayload.BodyId,
|
||||||
|
VictimId = killPayload.VictimId,
|
||||||
|
Location = killPayload.Location
|
||||||
|
});
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "MeetingStarted":
|
||||||
|
if (CurrentLobbyState != null)
|
||||||
|
{
|
||||||
|
CurrentLobbyState.Phase = GamePhase.Meeting;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "VotingClosed":
|
||||||
|
Bodies.Clear(); // Bodies zmizí po meetingu
|
||||||
|
if (CurrentLobbyState != null)
|
||||||
|
{
|
||||||
|
CurrentLobbyState.Phase = GamePhase.Playing;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "GameEnded":
|
||||||
|
if (CurrentLobbyState != null)
|
||||||
|
{
|
||||||
|
CurrentLobbyState.Phase = GamePhase.Ended;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Game Actions
|
||||||
|
|
||||||
|
public void CreateLobby(Position? center = null, int impostorCount = 1, int taskCount = 5, string? password = null, double playAreaRadius = 500)
|
||||||
|
{
|
||||||
|
Send(new CreateLobby
|
||||||
|
{
|
||||||
|
PlayAreaCenter = center,
|
||||||
|
PlayAreaRadius = playAreaRadius,
|
||||||
|
ImpostorCount = impostorCount,
|
||||||
|
TaskCount = taskCount,
|
||||||
|
Password = password
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public void JoinLobby(string joinCode, string? password = null)
|
||||||
|
{
|
||||||
|
Send(new JoinLobby
|
||||||
|
{
|
||||||
|
JoinCode = joinCode.ToUpperInvariant(),
|
||||||
|
Password = password
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public void LeaveLobby()
|
||||||
|
{
|
||||||
|
Send(new LeaveLobby());
|
||||||
|
LobbyId = null;
|
||||||
|
JoinCode = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void StartGame()
|
||||||
|
{
|
||||||
|
Send(new StartGame());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ReturnToLobby()
|
||||||
|
{
|
||||||
|
Send(new ReturnToLobby());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void UpdatePosition(Position position)
|
||||||
|
{
|
||||||
|
MyPosition = position;
|
||||||
|
Send(new UpdatePosition { Position = position });
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Kill(string targetUuid)
|
||||||
|
{
|
||||||
|
Send(new KillAttempt { TargetClientUuid = targetUuid });
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ReportBody(string bodyId)
|
||||||
|
{
|
||||||
|
Send(new ReportBody { BodyId = bodyId });
|
||||||
|
}
|
||||||
|
|
||||||
|
public void CallEmergencyMeeting()
|
||||||
|
{
|
||||||
|
Send(new CallEmergencyMeeting());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Vote(string? targetUuid)
|
||||||
|
{
|
||||||
|
Send(new CastVote { TargetClientUuid = targetUuid });
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Pokus o dokončení tasku. Server ověří že hráč je na správné pozici.
|
||||||
|
/// </summary>
|
||||||
|
public void CompleteTask(string taskId)
|
||||||
|
{
|
||||||
|
Send(new TaskComplete { TaskId = taskId });
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SendPing()
|
||||||
|
{
|
||||||
|
Send(new Ping { ClientTime = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds() });
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Reconnect(string lobbyId)
|
||||||
|
{
|
||||||
|
Send(new Reconnect { LobbyId = lobbyId, LastEventId = LastEventId });
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Helpers
|
||||||
|
|
||||||
|
public Body? FindNearbyBody(double maxDistance)
|
||||||
|
{
|
||||||
|
foreach (var body in Bodies)
|
||||||
|
{
|
||||||
|
if (MyPosition.DistanceTo(body.Location) <= maxDistance)
|
||||||
|
{
|
||||||
|
return body;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string? FindNearbyPlayer(double maxDistance, bool aliveOnly = true)
|
||||||
|
{
|
||||||
|
foreach (var (uuid, info) in PlayerPositions)
|
||||||
|
{
|
||||||
|
if (uuid == ClientUuid) continue;
|
||||||
|
if (aliveOnly && info.State != PlayerState.Alive) continue;
|
||||||
|
|
||||||
|
if (MyPosition.DistanceTo(info.Position) <= maxDistance)
|
||||||
|
{
|
||||||
|
return uuid;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public GameTask? FindNearbyTask(double maxDistance)
|
||||||
|
{
|
||||||
|
foreach (var task in MyTasks)
|
||||||
|
{
|
||||||
|
if (MyPosition.DistanceTo(task.Location) <= maxDistance)
|
||||||
|
{
|
||||||
|
return task;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Volat z Unity Update() pro zpracování callbacků
|
||||||
|
public void Update()
|
||||||
|
{
|
||||||
|
Dispatcher.ProcessPendingActions();
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
public void Dispose()
|
||||||
|
{
|
||||||
|
Disconnect("Disposed");
|
||||||
|
_encryption?.Dispose();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
2
Assets/ClientSDK/GameClient.cs.meta
Normal file
2
Assets/ClientSDK/GameClient.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 91e0f647c37b0b94b83f53bb854db28c
|
||||||
1054
Assets/ClientSDK/Protocol.cs
Normal file
1054
Assets/ClientSDK/Protocol.cs
Normal file
File diff suppressed because it is too large
Load Diff
2
Assets/ClientSDK/Protocol.cs.meta
Normal file
2
Assets/ClientSDK/Protocol.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 14463228dfea2264ebfc36c3a7dc4b99
|
||||||
1992
Assets/ClientSDK/SimulatorClient.cs
Normal file
1992
Assets/ClientSDK/SimulatorClient.cs
Normal file
File diff suppressed because it is too large
Load Diff
2
Assets/ClientSDK/SimulatorClient.cs.meta
Normal file
2
Assets/ClientSDK/SimulatorClient.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 80ef0979df5d1fe489225f3e5edadc5c
|
||||||
8
Assets/ClientSDK/bin.meta
Normal file
8
Assets/ClientSDK/bin.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 3a4035bdb812fee4f96cb1aa1b24c999
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
8
Assets/ClientSDK/bin/Debug.meta
Normal file
8
Assets/ClientSDK/bin/Debug.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 7d9de4c3bce3edb458cde89bd004889b
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
8
Assets/ClientSDK/bin/Debug/netstandard2.1.meta
Normal file
8
Assets/ClientSDK/bin/Debug/netstandard2.1.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: c7a6dde302cf01245974d243ceeba40f
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
{
|
||||||
|
"runtimeTarget": {
|
||||||
|
"name": ".NETStandard,Version=v2.1/",
|
||||||
|
"signature": ""
|
||||||
|
},
|
||||||
|
"compilationOptions": {},
|
||||||
|
"targets": {
|
||||||
|
".NETStandard,Version=v2.1": {},
|
||||||
|
".NETStandard,Version=v2.1/": {
|
||||||
|
"ClientSDK/1.0.0": {
|
||||||
|
"dependencies": {
|
||||||
|
"Newtonsoft.Json": "13.0.3"
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"ClientSDK.dll": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Newtonsoft.Json/13.0.3": {
|
||||||
|
"runtime": {
|
||||||
|
"lib/netstandard2.0/Newtonsoft.Json.dll": {
|
||||||
|
"assemblyVersion": "13.0.0.0",
|
||||||
|
"fileVersion": "13.0.3.27908"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"libraries": {
|
||||||
|
"ClientSDK/1.0.0": {
|
||||||
|
"type": "project",
|
||||||
|
"serviceable": false,
|
||||||
|
"sha512": ""
|
||||||
|
},
|
||||||
|
"Newtonsoft.Json/13.0.3": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==",
|
||||||
|
"path": "newtonsoft.json/13.0.3",
|
||||||
|
"hashPath": "newtonsoft.json.13.0.3.nupkg.sha512"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 110fcc3f27ca804418e17744b419333f
|
||||||
|
TextScriptImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
BIN
Assets/ClientSDK/bin/Debug/netstandard2.1/ClientSDK.dll
Normal file
BIN
Assets/ClientSDK/bin/Debug/netstandard2.1/ClientSDK.dll
Normal file
Binary file not shown.
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 47eeb682cfff82d42906fbccdbd561d8
|
||||||
8
Assets/ClientSDK/obj.meta
Normal file
8
Assets/ClientSDK/obj.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 131d9de257c8edc49991d792c6e702f6
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
80
Assets/ClientSDK/obj/ClientSDK.csproj.nuget.dgspec.json
Normal file
80
Assets/ClientSDK/obj/ClientSDK.csproj.nuget.dgspec.json
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
{
|
||||||
|
"format": 1,
|
||||||
|
"restore": {
|
||||||
|
"C:\\Users\\racek\\Documents\\GeoSus\\ClientSDK\\ClientSDK.csproj": {}
|
||||||
|
},
|
||||||
|
"projects": {
|
||||||
|
"C:\\Users\\racek\\Documents\\GeoSus\\ClientSDK\\ClientSDK.csproj": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"restore": {
|
||||||
|
"projectUniqueName": "C:\\Users\\racek\\Documents\\GeoSus\\ClientSDK\\ClientSDK.csproj",
|
||||||
|
"projectName": "ClientSDK",
|
||||||
|
"projectPath": "C:\\Users\\racek\\Documents\\GeoSus\\ClientSDK\\ClientSDK.csproj",
|
||||||
|
"packagesPath": "C:\\Users\\racek\\.nuget\\packages\\",
|
||||||
|
"outputPath": "C:\\Users\\racek\\Documents\\GeoSus\\ClientSDK\\obj\\",
|
||||||
|
"projectStyle": "PackageReference",
|
||||||
|
"fallbackFolders": [
|
||||||
|
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
|
||||||
|
],
|
||||||
|
"configFilePaths": [
|
||||||
|
"C:\\Users\\racek\\AppData\\Roaming\\NuGet\\NuGet.Config",
|
||||||
|
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
|
||||||
|
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
|
||||||
|
],
|
||||||
|
"originalTargetFrameworks": [
|
||||||
|
"netstandard2.1"
|
||||||
|
],
|
||||||
|
"sources": {
|
||||||
|
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
|
||||||
|
"C:\\Program Files\\dotnet\\library-packs": {},
|
||||||
|
"https://api.nuget.org/v3/index.json": {}
|
||||||
|
},
|
||||||
|
"frameworks": {
|
||||||
|
"netstandard2.1": {
|
||||||
|
"targetAlias": "netstandard2.1",
|
||||||
|
"projectReferences": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"warningProperties": {
|
||||||
|
"warnAsError": [
|
||||||
|
"NU1605"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"restoreAuditProperties": {
|
||||||
|
"enableAudit": "true",
|
||||||
|
"auditLevel": "low",
|
||||||
|
"auditMode": "direct"
|
||||||
|
},
|
||||||
|
"SdkAnalysisLevel": "10.0.100"
|
||||||
|
},
|
||||||
|
"frameworks": {
|
||||||
|
"netstandard2.1": {
|
||||||
|
"targetAlias": "netstandard2.1",
|
||||||
|
"dependencies": {
|
||||||
|
"Newtonsoft.Json": {
|
||||||
|
"target": "Package",
|
||||||
|
"version": "[13.0.3, )"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"imports": [
|
||||||
|
"net461",
|
||||||
|
"net462",
|
||||||
|
"net47",
|
||||||
|
"net471",
|
||||||
|
"net472",
|
||||||
|
"net48",
|
||||||
|
"net481"
|
||||||
|
],
|
||||||
|
"assetTargetFallback": true,
|
||||||
|
"warn": true,
|
||||||
|
"frameworkReferences": {
|
||||||
|
"NETStandard.Library": {
|
||||||
|
"privateAssets": "all"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\10.0.102\\RuntimeIdentifierGraph.json"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: e24090cfcd76d42498d81c9b779bae93
|
||||||
|
TextScriptImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
16
Assets/ClientSDK/obj/ClientSDK.csproj.nuget.g.props
Normal file
16
Assets/ClientSDK/obj/ClientSDK.csproj.nuget.g.props
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||||
|
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||||
|
<RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
|
||||||
|
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
|
||||||
|
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
|
||||||
|
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">$(UserProfile)\.nuget\packages\</NuGetPackageRoot>
|
||||||
|
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">C:\Users\racek\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages</NuGetPackageFolders>
|
||||||
|
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
|
||||||
|
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">7.0.0</NuGetToolVersion>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||||
|
<SourceRoot Include="C:\Users\racek\.nuget\packages\" />
|
||||||
|
<SourceRoot Include="C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages\" />
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|
||||||
7
Assets/ClientSDK/obj/ClientSDK.csproj.nuget.g.props.meta
Normal file
7
Assets/ClientSDK/obj/ClientSDK.csproj.nuget.g.props.meta
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 6967c057762dbec4a80dc0381b9a50fd
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
2
Assets/ClientSDK/obj/ClientSDK.csproj.nuget.g.targets
Normal file
2
Assets/ClientSDK/obj/ClientSDK.csproj.nuget.g.targets
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||||
|
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: fe3bd5ad8f9636d41bde2abb0ebb7530
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
8
Assets/ClientSDK/obj/Debug.meta
Normal file
8
Assets/ClientSDK/obj/Debug.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: fb4cee9375d0f244e8995615ecaab70c
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
8
Assets/ClientSDK/obj/Debug/netstandard2.1.meta
Normal file
8
Assets/ClientSDK/obj/Debug/netstandard2.1.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 664b1b069bb17b84a9566b7c76536173
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
// <autogenerated />
|
||||||
|
using System;
|
||||||
|
using System.Reflection;
|
||||||
|
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by a tool.
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost if
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Reflection;
|
||||||
|
|
||||||
|
[assembly: System.Reflection.AssemblyCompanyAttribute("ClientSDK")]
|
||||||
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||||
|
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||||
|
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+6fe5fff60c8e5c83560302ffb9d5f5db433cb667")]
|
||||||
|
[assembly: System.Reflection.AssemblyProductAttribute("ClientSDK")]
|
||||||
|
[assembly: System.Reflection.AssemblyTitleAttribute("ClientSDK")]
|
||||||
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||||
|
|
||||||
|
// Generated by the MSBuild WriteCodeFragment class.
|
||||||
|
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 317c8ca649884794eace1306da9518f4
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
909f73150fc5400d21d798cce0fdeae4562227aba62b3fefaf41c4ebe3479a28
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 793d203358b179c4d8174f2084b26bf7
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
is_global = true
|
||||||
|
build_property.RootNamespace = GeoSus.Client
|
||||||
|
build_property.ProjectDir = C:\Users\racek\Documents\GeoSus\ClientSDK\
|
||||||
|
build_property.EnableComHosting =
|
||||||
|
build_property.EnableGeneratedComInterfaceComImportInterop =
|
||||||
|
build_property.CsWinRTUseWindowsUIXamlProjections = false
|
||||||
|
build_property.EffectiveAnalysisLevelStyle =
|
||||||
|
build_property.EnableCodeStyleSeverity =
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 9ab4374e13e28254dbd1261542fbfde3
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
BIN
Assets/ClientSDK/obj/Debug/netstandard2.1/ClientSDK.assets.cache
Normal file
BIN
Assets/ClientSDK/obj/Debug/netstandard2.1/ClientSDK.assets.cache
Normal file
Binary file not shown.
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 4e8560c40c30c0a4797e7be274a73c54
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
Binary file not shown.
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 5172f98fca4ee924590563b51439fada
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
d380e7a79749800c241c828bf7749c96ff851a709d793dc2a85f50651e2cc678
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 13c4f3623cba4154ab87a8c2d1b77005
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
C:\Users\racek\Documents\GeoSus\ClientSDK\obj\Debug\netstandard2.1\ClientSDK.GeneratedMSBuildEditorConfig.editorconfig
|
||||||
|
C:\Users\racek\Documents\GeoSus\ClientSDK\obj\Debug\netstandard2.1\ClientSDK.AssemblyInfoInputs.cache
|
||||||
|
C:\Users\racek\Documents\GeoSus\ClientSDK\obj\Debug\netstandard2.1\ClientSDK.AssemblyInfo.cs
|
||||||
|
C:\Users\racek\Documents\GeoSus\ClientSDK\obj\Debug\netstandard2.1\ClientSDK.csproj.CoreCompileInputs.cache
|
||||||
|
C:\Users\racek\Documents\GeoSus\ClientSDK\obj\Debug\netstandard2.1\ClientSDK.csproj.AssemblyReference.cache
|
||||||
|
C:\Users\racek\Documents\GeoSus\ClientSDK\bin\Debug\netstandard2.1\ClientSDK.deps.json
|
||||||
|
C:\Users\racek\Documents\GeoSus\ClientSDK\bin\Debug\netstandard2.1\ClientSDK.dll
|
||||||
|
C:\Users\racek\Documents\GeoSus\ClientSDK\bin\Debug\netstandard2.1\ClientSDK.pdb
|
||||||
|
C:\Users\racek\Documents\GeoSus\ClientSDK\obj\Debug\netstandard2.1\ClientSDK.dll
|
||||||
|
C:\Users\racek\Documents\GeoSus\ClientSDK\obj\Debug\netstandard2.1\ClientSDK.pdb
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 61ddb0a15ce734542b4cabbb8941d1e8
|
||||||
|
TextScriptImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
BIN
Assets/ClientSDK/obj/Debug/netstandard2.1/ClientSDK.dll
Normal file
BIN
Assets/ClientSDK/obj/Debug/netstandard2.1/ClientSDK.dll
Normal file
Binary file not shown.
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 8e41cfc0681c5ee488261b7967cb388a
|
||||||
133
Assets/ClientSDK/obj/project.assets.json
Normal file
133
Assets/ClientSDK/obj/project.assets.json
Normal file
@@ -0,0 +1,133 @@
|
|||||||
|
{
|
||||||
|
"version": 3,
|
||||||
|
"targets": {
|
||||||
|
".NETStandard,Version=v2.1": {
|
||||||
|
"Newtonsoft.Json/13.0.3": {
|
||||||
|
"type": "package",
|
||||||
|
"compile": {
|
||||||
|
"lib/netstandard2.0/Newtonsoft.Json.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/netstandard2.0/Newtonsoft.Json.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"libraries": {
|
||||||
|
"Newtonsoft.Json/13.0.3": {
|
||||||
|
"sha512": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==",
|
||||||
|
"type": "package",
|
||||||
|
"path": "newtonsoft.json/13.0.3",
|
||||||
|
"files": [
|
||||||
|
".nupkg.metadata",
|
||||||
|
".signature.p7s",
|
||||||
|
"LICENSE.md",
|
||||||
|
"README.md",
|
||||||
|
"lib/net20/Newtonsoft.Json.dll",
|
||||||
|
"lib/net20/Newtonsoft.Json.xml",
|
||||||
|
"lib/net35/Newtonsoft.Json.dll",
|
||||||
|
"lib/net35/Newtonsoft.Json.xml",
|
||||||
|
"lib/net40/Newtonsoft.Json.dll",
|
||||||
|
"lib/net40/Newtonsoft.Json.xml",
|
||||||
|
"lib/net45/Newtonsoft.Json.dll",
|
||||||
|
"lib/net45/Newtonsoft.Json.xml",
|
||||||
|
"lib/net6.0/Newtonsoft.Json.dll",
|
||||||
|
"lib/net6.0/Newtonsoft.Json.xml",
|
||||||
|
"lib/netstandard1.0/Newtonsoft.Json.dll",
|
||||||
|
"lib/netstandard1.0/Newtonsoft.Json.xml",
|
||||||
|
"lib/netstandard1.3/Newtonsoft.Json.dll",
|
||||||
|
"lib/netstandard1.3/Newtonsoft.Json.xml",
|
||||||
|
"lib/netstandard2.0/Newtonsoft.Json.dll",
|
||||||
|
"lib/netstandard2.0/Newtonsoft.Json.xml",
|
||||||
|
"newtonsoft.json.13.0.3.nupkg.sha512",
|
||||||
|
"newtonsoft.json.nuspec",
|
||||||
|
"packageIcon.png"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"projectFileDependencyGroups": {
|
||||||
|
".NETStandard,Version=v2.1": [
|
||||||
|
"Newtonsoft.Json >= 13.0.3"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"packageFolders": {
|
||||||
|
"C:\\Users\\racek\\.nuget\\packages\\": {},
|
||||||
|
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages": {}
|
||||||
|
},
|
||||||
|
"project": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"restore": {
|
||||||
|
"projectUniqueName": "C:\\Users\\racek\\Documents\\GeoSus\\ClientSDK\\ClientSDK.csproj",
|
||||||
|
"projectName": "ClientSDK",
|
||||||
|
"projectPath": "C:\\Users\\racek\\Documents\\GeoSus\\ClientSDK\\ClientSDK.csproj",
|
||||||
|
"packagesPath": "C:\\Users\\racek\\.nuget\\packages\\",
|
||||||
|
"outputPath": "C:\\Users\\racek\\Documents\\GeoSus\\ClientSDK\\obj\\",
|
||||||
|
"projectStyle": "PackageReference",
|
||||||
|
"fallbackFolders": [
|
||||||
|
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
|
||||||
|
],
|
||||||
|
"configFilePaths": [
|
||||||
|
"C:\\Users\\racek\\AppData\\Roaming\\NuGet\\NuGet.Config",
|
||||||
|
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
|
||||||
|
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
|
||||||
|
],
|
||||||
|
"originalTargetFrameworks": [
|
||||||
|
"netstandard2.1"
|
||||||
|
],
|
||||||
|
"sources": {
|
||||||
|
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
|
||||||
|
"C:\\Program Files\\dotnet\\library-packs": {},
|
||||||
|
"https://api.nuget.org/v3/index.json": {}
|
||||||
|
},
|
||||||
|
"frameworks": {
|
||||||
|
"netstandard2.1": {
|
||||||
|
"targetAlias": "netstandard2.1",
|
||||||
|
"projectReferences": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"warningProperties": {
|
||||||
|
"warnAsError": [
|
||||||
|
"NU1605"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"restoreAuditProperties": {
|
||||||
|
"enableAudit": "true",
|
||||||
|
"auditLevel": "low",
|
||||||
|
"auditMode": "direct"
|
||||||
|
},
|
||||||
|
"SdkAnalysisLevel": "10.0.100"
|
||||||
|
},
|
||||||
|
"frameworks": {
|
||||||
|
"netstandard2.1": {
|
||||||
|
"targetAlias": "netstandard2.1",
|
||||||
|
"dependencies": {
|
||||||
|
"Newtonsoft.Json": {
|
||||||
|
"target": "Package",
|
||||||
|
"version": "[13.0.3, )"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"imports": [
|
||||||
|
"net461",
|
||||||
|
"net462",
|
||||||
|
"net47",
|
||||||
|
"net471",
|
||||||
|
"net472",
|
||||||
|
"net48",
|
||||||
|
"net481"
|
||||||
|
],
|
||||||
|
"assetTargetFallback": true,
|
||||||
|
"warn": true,
|
||||||
|
"frameworkReferences": {
|
||||||
|
"NETStandard.Library": {
|
||||||
|
"privateAssets": "all"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\10.0.102\\RuntimeIdentifierGraph.json"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
7
Assets/ClientSDK/obj/project.assets.json.meta
Normal file
7
Assets/ClientSDK/obj/project.assets.json.meta
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 02541c1b9976feb498ad976779a14cab
|
||||||
|
TextScriptImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
10
Assets/ClientSDK/obj/project.nuget.cache
Normal file
10
Assets/ClientSDK/obj/project.nuget.cache
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"version": 2,
|
||||||
|
"dgSpecHash": "2Ec22eQ8t2M=",
|
||||||
|
"success": true,
|
||||||
|
"projectFilePath": "C:\\Users\\racek\\Documents\\GeoSus\\ClientSDK\\ClientSDK.csproj",
|
||||||
|
"expectedPackageFiles": [
|
||||||
|
"C:\\Users\\racek\\.nuget\\packages\\newtonsoft.json\\13.0.3\\newtonsoft.json.13.0.3.nupkg.sha512"
|
||||||
|
],
|
||||||
|
"logs": []
|
||||||
|
}
|
||||||
7
Assets/ClientSDK/obj/project.nuget.cache.meta
Normal file
7
Assets/ClientSDK/obj/project.nuget.cache.meta
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 55e25d9881240614a8f797a612adcfb0
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
1057
Assets/InputSystem_Actions.inputactions
Normal file
1057
Assets/InputSystem_Actions.inputactions
Normal file
File diff suppressed because it is too large
Load Diff
14
Assets/InputSystem_Actions.inputactions.meta
Normal file
14
Assets/InputSystem_Actions.inputactions.meta
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 052faaac586de48259a63d0c4782560b
|
||||||
|
ScriptedImporter:
|
||||||
|
internalIDToNameTable: []
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
|
script: {fileID: 11500000, guid: 8404be70184654265930450def6a9037, type: 3}
|
||||||
|
generateWrapperCode: 0
|
||||||
|
wrapperCodePath:
|
||||||
|
wrapperClassName:
|
||||||
|
wrapperCodeNamespace:
|
||||||
34
Assets/Readme.asset
Normal file
34
Assets/Readme.asset
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: fcf7219bab7fe46a1ad266029b2fee19, type: 3}
|
||||||
|
m_Name: Readme
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
icon: {fileID: 2800000, guid: 727a75301c3d24613a3ebcec4a24c2c8, type: 3}
|
||||||
|
title: URP Empty Template
|
||||||
|
sections:
|
||||||
|
- heading: Welcome to the Universal Render Pipeline
|
||||||
|
text: This template includes the settings and assets you need to start creating with the Universal Render Pipeline.
|
||||||
|
linkText:
|
||||||
|
url:
|
||||||
|
- heading: URP Documentation
|
||||||
|
text:
|
||||||
|
linkText: Read more about URP
|
||||||
|
url: https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@latest
|
||||||
|
- heading: Forums
|
||||||
|
text:
|
||||||
|
linkText: Get answers and support
|
||||||
|
url: https://forum.unity.com/forums/universal-render-pipeline.383/
|
||||||
|
- heading: Report bugs
|
||||||
|
text:
|
||||||
|
linkText: Submit a report
|
||||||
|
url: https://unity3d.com/unity/qa/bug-reporting
|
||||||
|
loadedLayout: 1
|
||||||
8
Assets/Readme.asset.meta
Normal file
8
Assets/Readme.asset.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 8105016687592461f977c054a80ce2f2
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
8
Assets/Scenes.meta
Normal file
8
Assets/Scenes.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 9c53962885c2c4f449125a979d6ad240
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
491
Assets/Scenes/SampleScene.unity
Normal file
491
Assets/Scenes/SampleScene.unity
Normal file
@@ -0,0 +1,491 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!29 &1
|
||||||
|
OcclusionCullingSettings:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 2
|
||||||
|
m_OcclusionBakeSettings:
|
||||||
|
smallestOccluder: 5
|
||||||
|
smallestHole: 0.25
|
||||||
|
backfaceThreshold: 100
|
||||||
|
m_SceneGUID: 00000000000000000000000000000000
|
||||||
|
m_OcclusionCullingData: {fileID: 0}
|
||||||
|
--- !u!104 &2
|
||||||
|
RenderSettings:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 10
|
||||||
|
m_Fog: 0
|
||||||
|
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
|
||||||
|
m_FogMode: 3
|
||||||
|
m_FogDensity: 0.01
|
||||||
|
m_LinearFogStart: 0
|
||||||
|
m_LinearFogEnd: 300
|
||||||
|
m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
|
||||||
|
m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
|
||||||
|
m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
|
||||||
|
m_AmbientIntensity: 1
|
||||||
|
m_AmbientMode: 0
|
||||||
|
m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
|
||||||
|
m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
m_HaloStrength: 0.5
|
||||||
|
m_FlareStrength: 1
|
||||||
|
m_FlareFadeSpeed: 3
|
||||||
|
m_HaloTexture: {fileID: 0}
|
||||||
|
m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
|
||||||
|
m_DefaultReflectionMode: 0
|
||||||
|
m_DefaultReflectionResolution: 128
|
||||||
|
m_ReflectionBounces: 1
|
||||||
|
m_ReflectionIntensity: 1
|
||||||
|
m_CustomReflection: {fileID: 0}
|
||||||
|
m_Sun: {fileID: 0}
|
||||||
|
m_UseRadianceAmbientProbe: 0
|
||||||
|
--- !u!157 &3
|
||||||
|
LightmapSettings:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 13
|
||||||
|
m_BakeOnSceneLoad: 0
|
||||||
|
m_GISettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_BounceScale: 1
|
||||||
|
m_IndirectOutputScale: 1
|
||||||
|
m_AlbedoBoost: 1
|
||||||
|
m_EnvironmentLightingMode: 0
|
||||||
|
m_EnableBakedLightmaps: 1
|
||||||
|
m_EnableRealtimeLightmaps: 0
|
||||||
|
m_LightmapEditorSettings:
|
||||||
|
serializedVersion: 12
|
||||||
|
m_Resolution: 2
|
||||||
|
m_BakeResolution: 40
|
||||||
|
m_AtlasSize: 1024
|
||||||
|
m_AO: 0
|
||||||
|
m_AOMaxDistance: 1
|
||||||
|
m_CompAOExponent: 1
|
||||||
|
m_CompAOExponentDirect: 0
|
||||||
|
m_ExtractAmbientOcclusion: 0
|
||||||
|
m_Padding: 2
|
||||||
|
m_LightmapParameters: {fileID: 0}
|
||||||
|
m_LightmapsBakeMode: 1
|
||||||
|
m_TextureCompression: 1
|
||||||
|
m_ReflectionCompression: 2
|
||||||
|
m_MixedBakeMode: 2
|
||||||
|
m_BakeBackend: 1
|
||||||
|
m_PVRSampling: 1
|
||||||
|
m_PVRDirectSampleCount: 32
|
||||||
|
m_PVRSampleCount: 512
|
||||||
|
m_PVRBounces: 2
|
||||||
|
m_PVREnvironmentSampleCount: 256
|
||||||
|
m_PVREnvironmentReferencePointCount: 2048
|
||||||
|
m_PVRFilteringMode: 1
|
||||||
|
m_PVRDenoiserTypeDirect: 1
|
||||||
|
m_PVRDenoiserTypeIndirect: 1
|
||||||
|
m_PVRDenoiserTypeAO: 1
|
||||||
|
m_PVRFilterTypeDirect: 0
|
||||||
|
m_PVRFilterTypeIndirect: 0
|
||||||
|
m_PVRFilterTypeAO: 0
|
||||||
|
m_PVREnvironmentMIS: 1
|
||||||
|
m_PVRCulling: 1
|
||||||
|
m_PVRFilteringGaussRadiusDirect: 1
|
||||||
|
m_PVRFilteringGaussRadiusIndirect: 5
|
||||||
|
m_PVRFilteringGaussRadiusAO: 2
|
||||||
|
m_PVRFilteringAtrousPositionSigmaDirect: 0.5
|
||||||
|
m_PVRFilteringAtrousPositionSigmaIndirect: 2
|
||||||
|
m_PVRFilteringAtrousPositionSigmaAO: 1
|
||||||
|
m_ExportTrainingData: 0
|
||||||
|
m_TrainingDataDestination: TrainingData
|
||||||
|
m_LightProbeSampleCountMultiplier: 4
|
||||||
|
m_LightingDataAsset: {fileID: 20201, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
m_LightingSettings: {fileID: 0}
|
||||||
|
--- !u!196 &4
|
||||||
|
NavMeshSettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_BuildSettings:
|
||||||
|
serializedVersion: 3
|
||||||
|
agentTypeID: 0
|
||||||
|
agentRadius: 0.5
|
||||||
|
agentHeight: 2
|
||||||
|
agentSlope: 45
|
||||||
|
agentClimb: 0.4
|
||||||
|
ledgeDropHeight: 0
|
||||||
|
maxJumpAcrossDistance: 0
|
||||||
|
minRegionArea: 2
|
||||||
|
manualCellSize: 0
|
||||||
|
cellSize: 0.16666667
|
||||||
|
manualTileSize: 0
|
||||||
|
tileSize: 256
|
||||||
|
buildHeightMesh: 0
|
||||||
|
maxJobWorkers: 0
|
||||||
|
preserveTilesOutsideBounds: 0
|
||||||
|
debug:
|
||||||
|
m_Flags: 0
|
||||||
|
m_NavMeshData: {fileID: 0}
|
||||||
|
--- !u!1 &330585543
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 330585546}
|
||||||
|
- component: {fileID: 330585545}
|
||||||
|
- component: {fileID: 330585544}
|
||||||
|
- component: {fileID: 330585547}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Main Camera
|
||||||
|
m_TagString: MainCamera
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!81 &330585544
|
||||||
|
AudioListener:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 330585543}
|
||||||
|
m_Enabled: 1
|
||||||
|
--- !u!20 &330585545
|
||||||
|
Camera:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 330585543}
|
||||||
|
m_Enabled: 1
|
||||||
|
serializedVersion: 2
|
||||||
|
m_ClearFlags: 1
|
||||||
|
m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
|
||||||
|
m_projectionMatrixMode: 1
|
||||||
|
m_GateFitMode: 2
|
||||||
|
m_FOVAxisMode: 0
|
||||||
|
m_Iso: 200
|
||||||
|
m_ShutterSpeed: 0.005
|
||||||
|
m_Aperture: 16
|
||||||
|
m_FocusDistance: 10
|
||||||
|
m_FocalLength: 50
|
||||||
|
m_BladeCount: 5
|
||||||
|
m_Curvature: {x: 2, y: 11}
|
||||||
|
m_BarrelClipping: 0.25
|
||||||
|
m_Anamorphism: 0
|
||||||
|
m_SensorSize: {x: 36, y: 24}
|
||||||
|
m_LensShift: {x: 0, y: 0}
|
||||||
|
m_NormalizedViewPortRect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
width: 1
|
||||||
|
height: 1
|
||||||
|
near clip plane: 0.3
|
||||||
|
far clip plane: 1000
|
||||||
|
field of view: 60
|
||||||
|
orthographic: 0
|
||||||
|
orthographic size: 5
|
||||||
|
m_Depth: -1
|
||||||
|
m_CullingMask:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 4294967295
|
||||||
|
m_RenderingPath: -1
|
||||||
|
m_TargetTexture: {fileID: 0}
|
||||||
|
m_TargetDisplay: 0
|
||||||
|
m_TargetEye: 3
|
||||||
|
m_HDR: 1
|
||||||
|
m_AllowMSAA: 1
|
||||||
|
m_AllowDynamicResolution: 0
|
||||||
|
m_ForceIntoRT: 0
|
||||||
|
m_OcclusionCulling: 1
|
||||||
|
m_StereoConvergence: 10
|
||||||
|
m_StereoSeparation: 0.022
|
||||||
|
--- !u!4 &330585546
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 330585543}
|
||||||
|
serializedVersion: 2
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 1, z: -10}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!114 &330585547
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 330585543}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_RenderShadows: 1
|
||||||
|
m_RequiresDepthTextureOption: 2
|
||||||
|
m_RequiresOpaqueTextureOption: 2
|
||||||
|
m_CameraType: 0
|
||||||
|
m_Cameras: []
|
||||||
|
m_RendererIndex: -1
|
||||||
|
m_VolumeLayerMask:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 1
|
||||||
|
m_VolumeTrigger: {fileID: 0}
|
||||||
|
m_VolumeFrameworkUpdateModeOption: 2
|
||||||
|
m_RenderPostProcessing: 1
|
||||||
|
m_Antialiasing: 0
|
||||||
|
m_AntialiasingQuality: 2
|
||||||
|
m_StopNaN: 0
|
||||||
|
m_Dithering: 0
|
||||||
|
m_ClearDepth: 1
|
||||||
|
m_AllowXRRendering: 1
|
||||||
|
m_AllowHDROutput: 1
|
||||||
|
m_UseScreenCoordOverride: 0
|
||||||
|
m_ScreenSizeOverride: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
m_RequiresDepthTexture: 0
|
||||||
|
m_RequiresColorTexture: 0
|
||||||
|
m_TaaSettings:
|
||||||
|
m_Quality: 3
|
||||||
|
m_FrameInfluence: 0.1
|
||||||
|
m_JitterScale: 1
|
||||||
|
m_MipBias: 0
|
||||||
|
m_VarianceClampScale: 0.9
|
||||||
|
m_ContrastAdaptiveSharpening: 0
|
||||||
|
m_Version: 2
|
||||||
|
--- !u!1 &410087039
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 410087041}
|
||||||
|
- component: {fileID: 410087040}
|
||||||
|
- component: {fileID: 410087042}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Directional Light
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!108 &410087040
|
||||||
|
Light:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 410087039}
|
||||||
|
m_Enabled: 1
|
||||||
|
serializedVersion: 11
|
||||||
|
m_Type: 1
|
||||||
|
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
m_Intensity: 2
|
||||||
|
m_Range: 10
|
||||||
|
m_SpotAngle: 30
|
||||||
|
m_InnerSpotAngle: 21.80208
|
||||||
|
m_CookieSize: 10
|
||||||
|
m_Shadows:
|
||||||
|
m_Type: 2
|
||||||
|
m_Resolution: -1
|
||||||
|
m_CustomResolution: -1
|
||||||
|
m_Strength: 1
|
||||||
|
m_Bias: 0.05
|
||||||
|
m_NormalBias: 0.4
|
||||||
|
m_NearPlane: 0.2
|
||||||
|
m_CullingMatrixOverride:
|
||||||
|
e00: 1
|
||||||
|
e01: 0
|
||||||
|
e02: 0
|
||||||
|
e03: 0
|
||||||
|
e10: 0
|
||||||
|
e11: 1
|
||||||
|
e12: 0
|
||||||
|
e13: 0
|
||||||
|
e20: 0
|
||||||
|
e21: 0
|
||||||
|
e22: 1
|
||||||
|
e23: 0
|
||||||
|
e30: 0
|
||||||
|
e31: 0
|
||||||
|
e32: 0
|
||||||
|
e33: 1
|
||||||
|
m_UseCullingMatrixOverride: 0
|
||||||
|
m_Cookie: {fileID: 0}
|
||||||
|
m_DrawHalo: 0
|
||||||
|
m_Flare: {fileID: 0}
|
||||||
|
m_RenderMode: 0
|
||||||
|
m_CullingMask:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 4294967295
|
||||||
|
m_RenderingLayerMask: 1
|
||||||
|
m_Lightmapping: 4
|
||||||
|
m_LightShadowCasterMode: 0
|
||||||
|
m_AreaSize: {x: 1, y: 1}
|
||||||
|
m_BounceIntensity: 1
|
||||||
|
m_ColorTemperature: 5000
|
||||||
|
m_UseColorTemperature: 1
|
||||||
|
m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
m_UseBoundingSphereOverride: 0
|
||||||
|
m_UseViewFrustumForShadowCasterCull: 1
|
||||||
|
m_ForceVisible: 0
|
||||||
|
m_ShadowRadius: 0
|
||||||
|
m_ShadowAngle: 0
|
||||||
|
m_LightUnit: 1
|
||||||
|
m_LuxAtDistance: 1
|
||||||
|
m_EnableSpotReflector: 1
|
||||||
|
--- !u!4 &410087041
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 410087039}
|
||||||
|
serializedVersion: 2
|
||||||
|
m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
|
||||||
|
m_LocalPosition: {x: 0, y: 3, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
|
||||||
|
--- !u!114 &410087042
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 410087039}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_UsePipelineSettings: 1
|
||||||
|
m_AdditionalLightsShadowResolutionTier: 2
|
||||||
|
m_CustomShadowLayers: 0
|
||||||
|
m_LightCookieSize: {x: 1, y: 1}
|
||||||
|
m_LightCookieOffset: {x: 0, y: 0}
|
||||||
|
m_SoftShadowQuality: 1
|
||||||
|
m_RenderingLayersMask:
|
||||||
|
serializedVersion: 0
|
||||||
|
m_Bits: 1
|
||||||
|
m_ShadowRenderingLayersMask:
|
||||||
|
serializedVersion: 0
|
||||||
|
m_Bits: 1
|
||||||
|
m_Version: 4
|
||||||
|
m_LightLayerMask: 1
|
||||||
|
m_ShadowLayerMask: 1
|
||||||
|
m_RenderingLayers: 1
|
||||||
|
m_ShadowRenderingLayers: 1
|
||||||
|
--- !u!1 &525096926
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 525096928}
|
||||||
|
- component: {fileID: 525096929}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: GameManager
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &525096928
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 525096926}
|
||||||
|
serializedVersion: 2
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!114 &525096929
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 525096926}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 719b1c3bbdc301646b2dbfa653d9a455, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: Assembly-CSharp::UnityTestClient
|
||||||
|
serverHost: geosus.honzuvkod.dev
|
||||||
|
serverPort: 7777
|
||||||
|
httpPort: 8080
|
||||||
|
useHttps: 1
|
||||||
|
currentState: 0
|
||||||
|
--- !u!1 &832575517
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 832575519}
|
||||||
|
- component: {fileID: 832575518}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Global Volume
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!114 &832575518
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 832575517}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 172515602e62fb746b5d573b38a5fe58, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_IsGlobal: 1
|
||||||
|
priority: 0
|
||||||
|
blendDistance: 0
|
||||||
|
weight: 1
|
||||||
|
sharedProfile: {fileID: 11400000, guid: 10fc4df2da32a41aaa32d77bc913491c, type: 2}
|
||||||
|
--- !u!4 &832575519
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 832575517}
|
||||||
|
serializedVersion: 2
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!1660057539 &9223372036854775807
|
||||||
|
SceneRoots:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_Roots:
|
||||||
|
- {fileID: 330585546}
|
||||||
|
- {fileID: 410087041}
|
||||||
|
- {fileID: 832575519}
|
||||||
|
- {fileID: 525096928}
|
||||||
7
Assets/Scenes/SampleScene.unity.meta
Normal file
7
Assets/Scenes/SampleScene.unity.meta
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 99c9720ab356a0642a771bea13969a05
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
8
Assets/Settings.meta
Normal file
8
Assets/Settings.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 709f11a7f3c4041caa4ef136ea32d874
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
983
Assets/Settings/DefaultVolumeProfile.asset
Normal file
983
Assets/Settings/DefaultVolumeProfile.asset
Normal file
@@ -0,0 +1,983 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &-9167874883656233139
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 5485954d14dfb9a4c8ead8edb0ded5b1, type: 3}
|
||||||
|
m_Name: LiftGammaGain
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
active: 1
|
||||||
|
lift:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: {x: 1, y: 1, z: 1, w: 0}
|
||||||
|
gamma:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: {x: 1, y: 1, z: 1, w: 0}
|
||||||
|
gain:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: {x: 1, y: 1, z: 1, w: 0}
|
||||||
|
--- !u!114 &-8270506406425502121
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 70afe9e12c7a7ed47911bb608a23a8ff, type: 3}
|
||||||
|
m_Name: SplitToning
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
active: 1
|
||||||
|
shadows:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: {r: 0.5, g: 0.5, b: 0.5, a: 1}
|
||||||
|
highlights:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: {r: 0.5, g: 0.5, b: 0.5, a: 1}
|
||||||
|
balance:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
--- !u!114 &-8104416584915340131
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 0}
|
||||||
|
m_Name: CopyPasteTestComponent2
|
||||||
|
m_EditorClassIdentifier: Unity.RenderPipelines.Core.Editor.Tests:UnityEditor.Rendering.Tests:VolumeComponentCopyPasteTests/CopyPasteTestComponent2
|
||||||
|
active: 1
|
||||||
|
p1:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
p2:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
p21:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
--- !u!114 &-7750755424749557576
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 60f3b30c03e6ba64d9a27dc9dba8f28d, type: 3}
|
||||||
|
m_Name: OutlineVolumeComponent
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
active: 1
|
||||||
|
Enabled:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
--- !u!114 &-7743500325797982168
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: ccf1aba9553839d41ae37dd52e9ebcce, type: 3}
|
||||||
|
m_Name: MotionBlur
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
active: 1
|
||||||
|
mode:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
quality:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
intensity:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
clamp:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0.05
|
||||||
|
--- !u!114 &-7274224791359825572
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 0fd9ee276a1023e439cf7a9c393195fa, type: 3}
|
||||||
|
m_Name: TestAnimationCurveVolumeComponent
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
active: 1
|
||||||
|
testParameter:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0.5
|
||||||
|
value: 10
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 10
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 1
|
||||||
|
value: 15
|
||||||
|
inSlope: 10
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
--- !u!114 &-6335409530604852063
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 66f335fb1ffd8684294ad653bf1c7564, type: 3}
|
||||||
|
m_Name: ColorAdjustments
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
active: 1
|
||||||
|
postExposure:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
contrast:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
colorFilter:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
hueShift:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
saturation:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
--- !u!114 &-6288072647309666549
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 29fa0085f50d5e54f8144f766051a691, type: 3}
|
||||||
|
m_Name: FilmGrain
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
active: 1
|
||||||
|
type:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
intensity:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
response:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0.8
|
||||||
|
texture:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: {fileID: 0}
|
||||||
|
--- !u!114 &-5520245016509672950
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 97c23e3b12dc18c42a140437e53d3951, type: 3}
|
||||||
|
m_Name: Tonemapping
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
active: 1
|
||||||
|
mode:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
neutralHDRRangeReductionMode:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 2
|
||||||
|
acesPreset:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 3
|
||||||
|
hueShiftAmount:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
detectPaperWhite:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
paperWhite:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 300
|
||||||
|
detectBrightnessLimits:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 1
|
||||||
|
minNits:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0.005
|
||||||
|
maxNits:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 1000
|
||||||
|
--- !u!114 &-5360449096862653589
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 0}
|
||||||
|
m_Name: VolumeComponentSupportedEverywhere
|
||||||
|
m_EditorClassIdentifier: Unity.RenderPipelines.Core.Editor.Tests:UnityEngine.Rendering.Tests:VolumeComponentEditorSupportedOnTests/VolumeComponentSupportedEverywhere
|
||||||
|
active: 1
|
||||||
|
--- !u!114 &-5139089513906902183
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 5a00a63fdd6bd2a45ab1f2d869305ffd, type: 3}
|
||||||
|
m_Name: OasisFogVolumeComponent
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
active: 1
|
||||||
|
Density:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
StartDistance:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
HeightRange:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: {x: 0, y: 50}
|
||||||
|
Tint:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
SunScatteringIntensity:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 2
|
||||||
|
--- !u!114 &-4463884970436517307
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: fb60a22f311433c4c962b888d1393f88, type: 3}
|
||||||
|
m_Name: PaniniProjection
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
active: 1
|
||||||
|
distance:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
cropToFit:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 1
|
||||||
|
--- !u!114 &-1410297666881709256
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 6bd486065ce11414fa40e631affc4900, type: 3}
|
||||||
|
m_Name: ProbeVolumesOptions
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
active: 1
|
||||||
|
normalBias:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0.33
|
||||||
|
viewBias:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
scaleBiasWithMinProbeDistance:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
samplingNoise:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0.1
|
||||||
|
animateSamplingNoise:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 1
|
||||||
|
leakReductionMode:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 1
|
||||||
|
minValidDotProductValue:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0.1
|
||||||
|
occlusionOnlyReflectionNormalization:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 1
|
||||||
|
intensityMultiplier:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 1
|
||||||
|
skyOcclusionIntensityMultiplier:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 1
|
||||||
|
worldOffset:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!114 &-1216621516061285780
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 0b2db86121404754db890f4c8dfe81b2, type: 3}
|
||||||
|
m_Name: Bloom
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
active: 1
|
||||||
|
skipIterations:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 1
|
||||||
|
threshold:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0.9
|
||||||
|
intensity:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
scatter:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0.7
|
||||||
|
clamp:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 65472
|
||||||
|
tint:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
highQualityFiltering:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
downscale:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
maxIterations:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 6
|
||||||
|
dirtTexture:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: {fileID: 0}
|
||||||
|
dimension: 1
|
||||||
|
dirtIntensity:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
--- !u!114 &-1170528603972255243
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 221518ef91623a7438a71fef23660601, type: 3}
|
||||||
|
m_Name: WhiteBalance
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
active: 1
|
||||||
|
temperature:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
tint:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
--- !u!114 &-581120513425526550
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 0}
|
||||||
|
m_Name: CopyPasteTestComponent3
|
||||||
|
m_EditorClassIdentifier: Unity.RenderPipelines.Core.Editor.Tests:UnityEditor.Rendering.Tests:VolumeComponentCopyPasteTests/CopyPasteTestComponent3
|
||||||
|
active: 1
|
||||||
|
p1:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
p2:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
p31:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: {r: 0, g: 0, b: 0, a: 1}
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: d7fd9488000d3734a9e00ee676215985, type: 3}
|
||||||
|
m_Name: DefaultVolumeProfile
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
components:
|
||||||
|
- {fileID: -9167874883656233139}
|
||||||
|
- {fileID: 1918650496244738858}
|
||||||
|
- {fileID: 853819529557874667}
|
||||||
|
- {fileID: 1052315754049611418}
|
||||||
|
- {fileID: -1170528603972255243}
|
||||||
|
- {fileID: -8270506406425502121}
|
||||||
|
- {fileID: -5520245016509672950}
|
||||||
|
- {fileID: 7173750748008157695}
|
||||||
|
- {fileID: 1666464333004379222}
|
||||||
|
- {fileID: 9001657382290151224}
|
||||||
|
- {fileID: -6335409530604852063}
|
||||||
|
- {fileID: -1216621516061285780}
|
||||||
|
- {fileID: 3959858460715838825}
|
||||||
|
- {fileID: -7743500325797982168}
|
||||||
|
- {fileID: 4644742534064026673}
|
||||||
|
- {fileID: -4463884970436517307}
|
||||||
|
- {fileID: -6288072647309666549}
|
||||||
|
- {fileID: 7518938298396184218}
|
||||||
|
- {fileID: -1410297666881709256}
|
||||||
|
--- !u!114 &853819529557874667
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 06437c1ff663d574d9447842ba0a72e4, type: 3}
|
||||||
|
m_Name: ScreenSpaceLensFlare
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
active: 1
|
||||||
|
intensity:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
tintColor:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
bloomMip:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 1
|
||||||
|
firstFlareIntensity:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 1
|
||||||
|
secondaryFlareIntensity:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 1
|
||||||
|
warpedFlareIntensity:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 1
|
||||||
|
warpedFlareScale:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: {x: 1, y: 1}
|
||||||
|
samples:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 1
|
||||||
|
sampleDimmer:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0.5
|
||||||
|
vignetteEffect:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 1
|
||||||
|
startingPosition:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 1.25
|
||||||
|
scale:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 1.5
|
||||||
|
streaksIntensity:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
streaksLength:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0.5
|
||||||
|
streaksOrientation:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
streaksThreshold:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0.25
|
||||||
|
resolution:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 4
|
||||||
|
chromaticAbberationIntensity:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0.5
|
||||||
|
--- !u!114 &1052315754049611418
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 558a8e2b6826cf840aae193990ba9f2e, type: 3}
|
||||||
|
m_Name: ShadowsMidtonesHighlights
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
active: 1
|
||||||
|
shadows:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: {x: 1, y: 1, z: 1, w: 0}
|
||||||
|
midtones:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: {x: 1, y: 1, z: 1, w: 0}
|
||||||
|
highlights:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: {x: 1, y: 1, z: 1, w: 0}
|
||||||
|
shadowsStart:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
shadowsEnd:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0.3
|
||||||
|
highlightsStart:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0.55
|
||||||
|
highlightsEnd:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 1
|
||||||
|
--- !u!114 &1666464333004379222
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 3eb4b772797da9440885e8bd939e9560, type: 3}
|
||||||
|
m_Name: ColorCurves
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
active: 1
|
||||||
|
master:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value:
|
||||||
|
<length>k__BackingField: 2
|
||||||
|
m_Loop: 0
|
||||||
|
m_ZeroValue: 0
|
||||||
|
m_Range: 1
|
||||||
|
m_Curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 0
|
||||||
|
inSlope: 1
|
||||||
|
outSlope: 1
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 1
|
||||||
|
value: 1
|
||||||
|
inSlope: 1
|
||||||
|
outSlope: 1
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
red:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value:
|
||||||
|
<length>k__BackingField: 2
|
||||||
|
m_Loop: 0
|
||||||
|
m_ZeroValue: 0
|
||||||
|
m_Range: 1
|
||||||
|
m_Curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 0
|
||||||
|
inSlope: 1
|
||||||
|
outSlope: 1
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 1
|
||||||
|
value: 1
|
||||||
|
inSlope: 1
|
||||||
|
outSlope: 1
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
green:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value:
|
||||||
|
<length>k__BackingField: 2
|
||||||
|
m_Loop: 0
|
||||||
|
m_ZeroValue: 0
|
||||||
|
m_Range: 1
|
||||||
|
m_Curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 0
|
||||||
|
inSlope: 1
|
||||||
|
outSlope: 1
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 1
|
||||||
|
value: 1
|
||||||
|
inSlope: 1
|
||||||
|
outSlope: 1
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
blue:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value:
|
||||||
|
<length>k__BackingField: 2
|
||||||
|
m_Loop: 0
|
||||||
|
m_ZeroValue: 0
|
||||||
|
m_Range: 1
|
||||||
|
m_Curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 0
|
||||||
|
inSlope: 1
|
||||||
|
outSlope: 1
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 1
|
||||||
|
value: 1
|
||||||
|
inSlope: 1
|
||||||
|
outSlope: 1
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
hueVsHue:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value:
|
||||||
|
<length>k__BackingField: 0
|
||||||
|
m_Loop: 1
|
||||||
|
m_ZeroValue: 0.5
|
||||||
|
m_Range: 1
|
||||||
|
m_Curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve: []
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
hueVsSat:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value:
|
||||||
|
<length>k__BackingField: 0
|
||||||
|
m_Loop: 1
|
||||||
|
m_ZeroValue: 0.5
|
||||||
|
m_Range: 1
|
||||||
|
m_Curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve: []
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
satVsSat:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value:
|
||||||
|
<length>k__BackingField: 0
|
||||||
|
m_Loop: 0
|
||||||
|
m_ZeroValue: 0.5
|
||||||
|
m_Range: 1
|
||||||
|
m_Curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve: []
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
lumVsSat:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value:
|
||||||
|
<length>k__BackingField: 0
|
||||||
|
m_Loop: 0
|
||||||
|
m_ZeroValue: 0.5
|
||||||
|
m_Range: 1
|
||||||
|
m_Curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve: []
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
--- !u!114 &1918650496244738858
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: e021b4c809a781e468c2988c016ebbea, type: 3}
|
||||||
|
m_Name: ColorLookup
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
active: 1
|
||||||
|
texture:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: {fileID: 0}
|
||||||
|
dimension: 1
|
||||||
|
contribution:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
--- !u!114 &3959858460715838825
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: c01700fd266d6914ababb731e09af2eb, type: 3}
|
||||||
|
m_Name: DepthOfField
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
active: 1
|
||||||
|
mode:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
gaussianStart:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 10
|
||||||
|
gaussianEnd:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 30
|
||||||
|
gaussianMaxRadius:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 1
|
||||||
|
highQualitySampling:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
focusDistance:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 10
|
||||||
|
aperture:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 5.6
|
||||||
|
focalLength:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 50
|
||||||
|
bladeCount:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 5
|
||||||
|
bladeCurvature:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 1
|
||||||
|
bladeRotation:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
--- !u!114 &4251301726029935498
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 74955a4b0b4243bc87231e8b59ed9140, type: 3}
|
||||||
|
m_Name: TestVolume
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
active: 1
|
||||||
|
param:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 123
|
||||||
|
--- !u!114 &4644742534064026673
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 81180773991d8724ab7f2d216912b564, type: 3}
|
||||||
|
m_Name: ChromaticAberration
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
active: 1
|
||||||
|
intensity:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
--- !u!114 &6940869943325143175
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 0}
|
||||||
|
m_Name: VolumeComponentSupportedOnAnySRP
|
||||||
|
m_EditorClassIdentifier: Unity.RenderPipelines.Core.Editor.Tests:UnityEngine.Rendering.Tests:VolumeComponentEditorSupportedOnTests/VolumeComponentSupportedOnAnySRP
|
||||||
|
active: 1
|
||||||
|
--- !u!114 &7173750748008157695
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 899c54efeace73346a0a16faa3afe726, type: 3}
|
||||||
|
m_Name: Vignette
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
active: 1
|
||||||
|
color:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: {r: 0, g: 0, b: 0, a: 1}
|
||||||
|
center:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: {x: 0.5, y: 0.5}
|
||||||
|
intensity:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
smoothness:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0.2
|
||||||
|
rounded:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
--- !u!114 &7518938298396184218
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: c5e1dc532bcb41949b58bc4f2abfbb7e, type: 3}
|
||||||
|
m_Name: LensDistortion
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
active: 1
|
||||||
|
intensity:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
xMultiplier:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 1
|
||||||
|
yMultiplier:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 1
|
||||||
|
center:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: {x: 0.5, y: 0.5}
|
||||||
|
scale:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 1
|
||||||
|
--- !u!114 &9001657382290151224
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: cdfbdbb87d3286943a057f7791b43141, type: 3}
|
||||||
|
m_Name: ChannelMixer
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
active: 1
|
||||||
|
redOutRedIn:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 100
|
||||||
|
redOutGreenIn:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
redOutBlueIn:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
greenOutRedIn:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
greenOutGreenIn:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 100
|
||||||
|
greenOutBlueIn:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
blueOutRedIn:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
blueOutGreenIn:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
blueOutBlueIn:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 100
|
||||||
|
--- !u!114 &9122958982931076880
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 0}
|
||||||
|
m_Name: CopyPasteTestComponent1
|
||||||
|
m_EditorClassIdentifier: Unity.RenderPipelines.Core.Editor.Tests:UnityEditor.Rendering.Tests:VolumeComponentCopyPasteTests/CopyPasteTestComponent1
|
||||||
|
active: 1
|
||||||
|
p1:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
p2:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
8
Assets/Settings/DefaultVolumeProfile.asset.meta
Normal file
8
Assets/Settings/DefaultVolumeProfile.asset.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: ab09877e2e707104187f6f83e2f62510
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
135
Assets/Settings/Mobile_RPAsset.asset
Normal file
135
Assets/Settings/Mobile_RPAsset.asset
Normal file
@@ -0,0 +1,135 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: bf2edee5c58d82540a51f03df9d42094, type: 3}
|
||||||
|
m_Name: Mobile_RPAsset
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
k_AssetVersion: 12
|
||||||
|
k_AssetPreviousVersion: 12
|
||||||
|
m_RendererType: 1
|
||||||
|
m_RendererData: {fileID: 0}
|
||||||
|
m_RendererDataList:
|
||||||
|
- {fileID: 11400000, guid: 65bc7dbf4170f435aa868c779acfb082, type: 2}
|
||||||
|
m_DefaultRendererIndex: 0
|
||||||
|
m_RequireDepthTexture: 0
|
||||||
|
m_RequireOpaqueTexture: 0
|
||||||
|
m_OpaqueDownsampling: 0
|
||||||
|
m_SupportsTerrainHoles: 1
|
||||||
|
m_SupportsHDR: 1
|
||||||
|
m_HDRColorBufferPrecision: 0
|
||||||
|
m_MSAA: 1
|
||||||
|
m_RenderScale: 0.8
|
||||||
|
m_UpscalingFilter: 0
|
||||||
|
m_FsrOverrideSharpness: 0
|
||||||
|
m_FsrSharpness: 0.92
|
||||||
|
m_EnableLODCrossFade: 1
|
||||||
|
m_LODCrossFadeDitheringType: 1
|
||||||
|
m_ShEvalMode: 0
|
||||||
|
m_LightProbeSystem: 0
|
||||||
|
m_ProbeVolumeMemoryBudget: 1024
|
||||||
|
m_ProbeVolumeBlendingMemoryBudget: 256
|
||||||
|
m_SupportProbeVolumeGPUStreaming: 0
|
||||||
|
m_SupportProbeVolumeDiskStreaming: 0
|
||||||
|
m_SupportProbeVolumeScenarios: 0
|
||||||
|
m_SupportProbeVolumeScenarioBlending: 0
|
||||||
|
m_ProbeVolumeSHBands: 1
|
||||||
|
m_MainLightRenderingMode: 1
|
||||||
|
m_MainLightShadowsSupported: 1
|
||||||
|
m_MainLightShadowmapResolution: 1024
|
||||||
|
m_AdditionalLightsRenderingMode: 1
|
||||||
|
m_AdditionalLightsPerObjectLimit: 4
|
||||||
|
m_AdditionalLightShadowsSupported: 0
|
||||||
|
m_AdditionalLightsShadowmapResolution: 2048
|
||||||
|
m_AdditionalLightsShadowResolutionTierLow: 256
|
||||||
|
m_AdditionalLightsShadowResolutionTierMedium: 512
|
||||||
|
m_AdditionalLightsShadowResolutionTierHigh: 1024
|
||||||
|
m_ReflectionProbeBlending: 1
|
||||||
|
m_ReflectionProbeBoxProjection: 1
|
||||||
|
m_ShadowDistance: 50
|
||||||
|
m_ShadowCascadeCount: 1
|
||||||
|
m_Cascade2Split: 0.25
|
||||||
|
m_Cascade3Split: {x: 0.1, y: 0.3}
|
||||||
|
m_Cascade4Split: {x: 0.067, y: 0.2, z: 0.467}
|
||||||
|
m_CascadeBorder: 0.2
|
||||||
|
m_ShadowDepthBias: 1
|
||||||
|
m_ShadowNormalBias: 1
|
||||||
|
m_AnyShadowsSupported: 1
|
||||||
|
m_SoftShadowsSupported: 0
|
||||||
|
m_ConservativeEnclosingSphere: 1
|
||||||
|
m_NumIterationsEnclosingSphere: 64
|
||||||
|
m_SoftShadowQuality: 2
|
||||||
|
m_AdditionalLightsCookieResolution: 1024
|
||||||
|
m_AdditionalLightsCookieFormat: 1
|
||||||
|
m_UseSRPBatcher: 1
|
||||||
|
m_SupportsDynamicBatching: 0
|
||||||
|
m_MixedLightingSupported: 1
|
||||||
|
m_SupportsLightCookies: 1
|
||||||
|
m_SupportsLightLayers: 1
|
||||||
|
m_DebugLevel: 0
|
||||||
|
m_StoreActionsOptimization: 0
|
||||||
|
m_UseAdaptivePerformance: 1
|
||||||
|
m_ColorGradingMode: 0
|
||||||
|
m_ColorGradingLutSize: 32
|
||||||
|
m_UseFastSRGBLinearConversion: 1
|
||||||
|
m_SupportDataDrivenLensFlare: 1
|
||||||
|
m_SupportScreenSpaceLensFlare: 1
|
||||||
|
m_GPUResidentDrawerMode: 0
|
||||||
|
m_UseLegacyLightmaps: 0
|
||||||
|
m_SmallMeshScreenPercentage: 0
|
||||||
|
m_GPUResidentDrawerEnableOcclusionCullingInCameras: 0
|
||||||
|
m_ShadowType: 1
|
||||||
|
m_LocalShadowsSupported: 0
|
||||||
|
m_LocalShadowsAtlasResolution: 256
|
||||||
|
m_MaxPixelLights: 0
|
||||||
|
m_ShadowAtlasResolution: 256
|
||||||
|
m_VolumeFrameworkUpdateMode: 0
|
||||||
|
m_VolumeProfile: {fileID: 11400000, guid: 10fc4df2da32a41aaa32d77bc913491c, type: 2}
|
||||||
|
apvScenesData:
|
||||||
|
obsoleteSceneBounds:
|
||||||
|
m_Keys: []
|
||||||
|
m_Values: []
|
||||||
|
obsoleteHasProbeVolumes:
|
||||||
|
m_Keys: []
|
||||||
|
m_Values:
|
||||||
|
m_PrefilteringModeMainLightShadows: 3
|
||||||
|
m_PrefilteringModeAdditionalLight: 4
|
||||||
|
m_PrefilteringModeAdditionalLightShadows: 0
|
||||||
|
m_PrefilterXRKeywords: 1
|
||||||
|
m_PrefilteringModeForwardPlus: 1
|
||||||
|
m_PrefilteringModeDeferredRendering: 0
|
||||||
|
m_PrefilteringModeScreenSpaceOcclusion: 0
|
||||||
|
m_PrefilterDebugKeywords: 1
|
||||||
|
m_PrefilterWriteRenderingLayers: 1
|
||||||
|
m_PrefilterHDROutput: 1
|
||||||
|
m_PrefilterSSAODepthNormals: 1
|
||||||
|
m_PrefilterSSAOSourceDepthLow: 1
|
||||||
|
m_PrefilterSSAOSourceDepthMedium: 0
|
||||||
|
m_PrefilterSSAOSourceDepthHigh: 1
|
||||||
|
m_PrefilterSSAOInterleaved: 0
|
||||||
|
m_PrefilterSSAOBlueNoise: 1
|
||||||
|
m_PrefilterSSAOSampleCountLow: 1
|
||||||
|
m_PrefilterSSAOSampleCountMedium: 0
|
||||||
|
m_PrefilterSSAOSampleCountHigh: 1
|
||||||
|
m_PrefilterDBufferMRT1: 1
|
||||||
|
m_PrefilterDBufferMRT2: 1
|
||||||
|
m_PrefilterDBufferMRT3: 1
|
||||||
|
m_PrefilterSoftShadowsQualityLow: 1
|
||||||
|
m_PrefilterSoftShadowsQualityMedium: 1
|
||||||
|
m_PrefilterSoftShadowsQualityHigh: 1
|
||||||
|
m_PrefilterSoftShadows: 0
|
||||||
|
m_PrefilterScreenCoord: 1
|
||||||
|
m_PrefilterNativeRenderPass: 1
|
||||||
|
m_PrefilterUseLegacyLightmaps: 0
|
||||||
|
m_ShaderVariantLogLevel: 0
|
||||||
|
m_ShadowCascades: 0
|
||||||
|
m_Textures:
|
||||||
|
blueNoise64LTex: {fileID: 2800000, guid: e3d24661c1e055f45a7560c033dbb837, type: 3}
|
||||||
|
bayerMatrixTex: {fileID: 2800000, guid: f9ee4ed84c1d10c49aabb9b210b0fc44, type: 3}
|
||||||
8
Assets/Settings/Mobile_RPAsset.asset.meta
Normal file
8
Assets/Settings/Mobile_RPAsset.asset.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 5e6cbd92db86f4b18aec3ed561671858
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
52
Assets/Settings/Mobile_Renderer.asset
Normal file
52
Assets/Settings/Mobile_Renderer.asset
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: de640fe3d0db1804a85f9fc8f5cadab6, type: 3}
|
||||||
|
m_Name: Mobile_Renderer
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
debugShaders:
|
||||||
|
debugReplacementPS: {fileID: 4800000, guid: cf852408f2e174538bcd9b7fda1c5ae7,
|
||||||
|
type: 3}
|
||||||
|
hdrDebugViewPS: {fileID: 4800000, guid: 573620ae32aec764abd4d728906d2587, type: 3}
|
||||||
|
probeVolumeSamplingDebugComputeShader: {fileID: 7200000, guid: 53626a513ea68ce47b59dc1299fe3959,
|
||||||
|
type: 3}
|
||||||
|
probeVolumeResources:
|
||||||
|
probeVolumeDebugShader: {fileID: 0}
|
||||||
|
probeVolumeFragmentationDebugShader: {fileID: 0}
|
||||||
|
probeVolumeOffsetDebugShader: {fileID: 0}
|
||||||
|
probeVolumeSamplingDebugShader: {fileID: 0}
|
||||||
|
probeSamplingDebugMesh: {fileID: 0}
|
||||||
|
probeSamplingDebugTexture: {fileID: 0}
|
||||||
|
probeVolumeBlendStatesCS: {fileID: 0}
|
||||||
|
m_RendererFeatures: []
|
||||||
|
m_RendererFeatureMap:
|
||||||
|
m_UseNativeRenderPass: 1
|
||||||
|
postProcessData: {fileID: 11400000, guid: 41439944d30ece34e96484bdb6645b55, type: 2}
|
||||||
|
m_AssetVersion: 2
|
||||||
|
m_OpaqueLayerMask:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 4294967295
|
||||||
|
m_TransparentLayerMask:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 4294967295
|
||||||
|
m_DefaultStencilState:
|
||||||
|
overrideStencilState: 0
|
||||||
|
stencilReference: 0
|
||||||
|
stencilCompareFunction: 8
|
||||||
|
passOperation: 2
|
||||||
|
failOperation: 0
|
||||||
|
zFailOperation: 0
|
||||||
|
m_ShadowTransparentReceive: 0
|
||||||
|
m_RenderingMode: 0
|
||||||
|
m_DepthPrimingMode: 0
|
||||||
|
m_CopyDepthMode: 0
|
||||||
|
m_AccurateGbufferNormals: 0
|
||||||
|
m_IntermediateTextureMode: 0
|
||||||
8
Assets/Settings/Mobile_Renderer.asset.meta
Normal file
8
Assets/Settings/Mobile_Renderer.asset.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 65bc7dbf4170f435aa868c779acfb082
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
141
Assets/Settings/PC_RPAsset.asset
Normal file
141
Assets/Settings/PC_RPAsset.asset
Normal file
@@ -0,0 +1,141 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: bf2edee5c58d82540a51f03df9d42094, type: 3}
|
||||||
|
m_Name: PC_RPAsset
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
k_AssetVersion: 12
|
||||||
|
k_AssetPreviousVersion: 12
|
||||||
|
m_RendererType: 1
|
||||||
|
m_RendererData: {fileID: 0}
|
||||||
|
m_RendererDataList:
|
||||||
|
- {fileID: 11400000, guid: f288ae1f4751b564a96ac7587541f7a2, type: 2}
|
||||||
|
m_DefaultRendererIndex: 0
|
||||||
|
m_RequireDepthTexture: 1
|
||||||
|
m_RequireOpaqueTexture: 1
|
||||||
|
m_OpaqueDownsampling: 1
|
||||||
|
m_SupportsTerrainHoles: 1
|
||||||
|
m_SupportsHDR: 1
|
||||||
|
m_HDRColorBufferPrecision: 0
|
||||||
|
m_MSAA: 1
|
||||||
|
m_RenderScale: 1
|
||||||
|
m_UpscalingFilter: 0
|
||||||
|
m_FsrOverrideSharpness: 0
|
||||||
|
m_FsrSharpness: 0.92
|
||||||
|
m_EnableLODCrossFade: 1
|
||||||
|
m_LODCrossFadeDitheringType: 1
|
||||||
|
m_ShEvalMode: 0
|
||||||
|
m_LightProbeSystem: 0
|
||||||
|
m_ProbeVolumeMemoryBudget: 1024
|
||||||
|
m_ProbeVolumeBlendingMemoryBudget: 256
|
||||||
|
m_SupportProbeVolumeGPUStreaming: 0
|
||||||
|
m_SupportProbeVolumeDiskStreaming: 0
|
||||||
|
m_SupportProbeVolumeScenarios: 0
|
||||||
|
m_SupportProbeVolumeScenarioBlending: 0
|
||||||
|
m_ProbeVolumeSHBands: 1
|
||||||
|
m_MainLightRenderingMode: 1
|
||||||
|
m_MainLightShadowsSupported: 1
|
||||||
|
m_MainLightShadowmapResolution: 2048
|
||||||
|
m_AdditionalLightsRenderingMode: 1
|
||||||
|
m_AdditionalLightsPerObjectLimit: 4
|
||||||
|
m_AdditionalLightShadowsSupported: 1
|
||||||
|
m_AdditionalLightsShadowmapResolution: 2048
|
||||||
|
m_AdditionalLightsShadowResolutionTierLow: 256
|
||||||
|
m_AdditionalLightsShadowResolutionTierMedium: 512
|
||||||
|
m_AdditionalLightsShadowResolutionTierHigh: 1024
|
||||||
|
m_ReflectionProbeBlending: 1
|
||||||
|
m_ReflectionProbeBoxProjection: 1
|
||||||
|
m_ReflectionProbeAtlas: 1
|
||||||
|
m_ShadowDistance: 50
|
||||||
|
m_ShadowCascadeCount: 4
|
||||||
|
m_Cascade2Split: 0.25
|
||||||
|
m_Cascade3Split: {x: 0.1, y: 0.3}
|
||||||
|
m_Cascade4Split: {x: 0.12299999, y: 0.2926, z: 0.53599995}
|
||||||
|
m_CascadeBorder: 0.107758604
|
||||||
|
m_ShadowDepthBias: 0.1
|
||||||
|
m_ShadowNormalBias: 0.5
|
||||||
|
m_AnyShadowsSupported: 1
|
||||||
|
m_SoftShadowsSupported: 1
|
||||||
|
m_ConservativeEnclosingSphere: 1
|
||||||
|
m_NumIterationsEnclosingSphere: 64
|
||||||
|
m_SoftShadowQuality: 3
|
||||||
|
m_AdditionalLightsCookieResolution: 2048
|
||||||
|
m_AdditionalLightsCookieFormat: 3
|
||||||
|
m_UseSRPBatcher: 1
|
||||||
|
m_SupportsDynamicBatching: 0
|
||||||
|
m_MixedLightingSupported: 1
|
||||||
|
m_SupportsLightCookies: 1
|
||||||
|
m_SupportsLightLayers: 1
|
||||||
|
m_DebugLevel: 0
|
||||||
|
m_StoreActionsOptimization: 0
|
||||||
|
m_UseAdaptivePerformance: 1
|
||||||
|
m_ColorGradingMode: 0
|
||||||
|
m_ColorGradingLutSize: 32
|
||||||
|
m_AllowPostProcessAlphaOutput: 0
|
||||||
|
m_UseFastSRGBLinearConversion: 0
|
||||||
|
m_SupportDataDrivenLensFlare: 1
|
||||||
|
m_SupportScreenSpaceLensFlare: 1
|
||||||
|
m_GPUResidentDrawerMode: 0
|
||||||
|
m_SmallMeshScreenPercentage: 0
|
||||||
|
m_GPUResidentDrawerEnableOcclusionCullingInCameras: 0
|
||||||
|
m_ShadowType: 1
|
||||||
|
m_LocalShadowsSupported: 0
|
||||||
|
m_LocalShadowsAtlasResolution: 256
|
||||||
|
m_MaxPixelLights: 0
|
||||||
|
m_ShadowAtlasResolution: 256
|
||||||
|
m_VolumeFrameworkUpdateMode: 0
|
||||||
|
m_VolumeProfile: {fileID: 11400000, guid: 10fc4df2da32a41aaa32d77bc913491c, type: 2}
|
||||||
|
apvScenesData:
|
||||||
|
obsoleteSceneBounds:
|
||||||
|
m_Keys: []
|
||||||
|
m_Values: []
|
||||||
|
obsoleteHasProbeVolumes:
|
||||||
|
m_Keys: []
|
||||||
|
m_Values:
|
||||||
|
m_PrefilteringModeMainLightShadows: 3
|
||||||
|
m_PrefilteringModeAdditionalLight: 0
|
||||||
|
m_PrefilteringModeAdditionalLightShadows: 2
|
||||||
|
m_PrefilterXRKeywords: 1
|
||||||
|
m_PrefilteringModeForwardPlus: 2
|
||||||
|
m_PrefilteringModeDeferredRendering: 0
|
||||||
|
m_PrefilteringModeScreenSpaceOcclusion: 2
|
||||||
|
m_PrefilterDebugKeywords: 1
|
||||||
|
m_PrefilterWriteRenderingLayers: 1
|
||||||
|
m_PrefilterHDROutput: 1
|
||||||
|
m_PrefilterAlphaOutput: 1
|
||||||
|
m_PrefilterSSAODepthNormals: 0
|
||||||
|
m_PrefilterSSAOSourceDepthLow: 1
|
||||||
|
m_PrefilterSSAOSourceDepthMedium: 1
|
||||||
|
m_PrefilterSSAOSourceDepthHigh: 1
|
||||||
|
m_PrefilterSSAOInterleaved: 1
|
||||||
|
m_PrefilterSSAOBlueNoise: 0
|
||||||
|
m_PrefilterSSAOSampleCountLow: 1
|
||||||
|
m_PrefilterSSAOSampleCountMedium: 0
|
||||||
|
m_PrefilterSSAOSampleCountHigh: 1
|
||||||
|
m_PrefilterDBufferMRT1: 1
|
||||||
|
m_PrefilterDBufferMRT2: 1
|
||||||
|
m_PrefilterDBufferMRT3: 1
|
||||||
|
m_PrefilterSoftShadowsQualityLow: 1
|
||||||
|
m_PrefilterSoftShadowsQualityMedium: 1
|
||||||
|
m_PrefilterSoftShadowsQualityHigh: 1
|
||||||
|
m_PrefilterSoftShadows: 0
|
||||||
|
m_PrefilterScreenCoord: 1
|
||||||
|
m_PrefilterNativeRenderPass: 1
|
||||||
|
m_PrefilterUseLegacyLightmaps: 0
|
||||||
|
m_PrefilterBicubicLightmapSampling: 1
|
||||||
|
m_PrefilterReflectionProbeBlending: 0
|
||||||
|
m_PrefilterReflectionProbeBoxProjection: 0
|
||||||
|
m_PrefilterReflectionProbeAtlas: 0
|
||||||
|
m_ShaderVariantLogLevel: 0
|
||||||
|
m_ShadowCascades: 0
|
||||||
|
m_Textures:
|
||||||
|
blueNoise64LTex: {fileID: 2800000, guid: e3d24661c1e055f45a7560c033dbb837, type: 3}
|
||||||
|
bayerMatrixTex: {fileID: 2800000, guid: f9ee4ed84c1d10c49aabb9b210b0fc44, type: 3}
|
||||||
8
Assets/Settings/PC_RPAsset.asset.meta
Normal file
8
Assets/Settings/PC_RPAsset.asset.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 4b83569d67af61e458304325a23e5dfd
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
95
Assets/Settings/PC_Renderer.asset
Normal file
95
Assets/Settings/PC_Renderer.asset
Normal file
@@ -0,0 +1,95 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: de640fe3d0db1804a85f9fc8f5cadab6, type: 3}
|
||||||
|
m_Name: PC_Renderer
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
debugShaders:
|
||||||
|
debugReplacementPS: {fileID: 4800000, guid: cf852408f2e174538bcd9b7fda1c5ae7,
|
||||||
|
type: 3}
|
||||||
|
hdrDebugViewPS: {fileID: 4800000, guid: 573620ae32aec764abd4d728906d2587, type: 3}
|
||||||
|
probeVolumeSamplingDebugComputeShader: {fileID: 7200000, guid: 53626a513ea68ce47b59dc1299fe3959,
|
||||||
|
type: 3}
|
||||||
|
probeVolumeResources:
|
||||||
|
probeVolumeDebugShader: {fileID: 4800000, guid: e5c6678ed2aaa91408dd3df699057aae,
|
||||||
|
type: 3}
|
||||||
|
probeVolumeFragmentationDebugShader: {fileID: 4800000, guid: 03cfc4915c15d504a9ed85ecc404e607,
|
||||||
|
type: 3}
|
||||||
|
probeVolumeOffsetDebugShader: {fileID: 4800000, guid: 53a11f4ebaebf4049b3638ef78dc9664,
|
||||||
|
type: 3}
|
||||||
|
probeVolumeSamplingDebugShader: {fileID: 4800000, guid: 8f96cd657dc40064aa21efcc7e50a2e7,
|
||||||
|
type: 3}
|
||||||
|
probeSamplingDebugMesh: {fileID: -3555484719484374845, guid: 57d7c4c16e2765b47a4d2069b311bffe,
|
||||||
|
type: 3}
|
||||||
|
probeSamplingDebugTexture: {fileID: 2800000, guid: 24ec0e140fb444a44ab96ee80844e18e,
|
||||||
|
type: 3}
|
||||||
|
probeVolumeBlendStatesCS: {fileID: 7200000, guid: b9a23f869c4fd45f19c5ada54dd82176,
|
||||||
|
type: 3}
|
||||||
|
m_RendererFeatures:
|
||||||
|
- {fileID: 7833122117494664109}
|
||||||
|
m_RendererFeatureMap: ad6b866f10d7b46c
|
||||||
|
m_UseNativeRenderPass: 1
|
||||||
|
postProcessData: {fileID: 11400000, guid: 41439944d30ece34e96484bdb6645b55, type: 2}
|
||||||
|
m_AssetVersion: 2
|
||||||
|
m_OpaqueLayerMask:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 4294967295
|
||||||
|
m_TransparentLayerMask:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 4294967295
|
||||||
|
m_DefaultStencilState:
|
||||||
|
overrideStencilState: 0
|
||||||
|
stencilReference: 1
|
||||||
|
stencilCompareFunction: 3
|
||||||
|
passOperation: 2
|
||||||
|
failOperation: 0
|
||||||
|
zFailOperation: 0
|
||||||
|
m_ShadowTransparentReceive: 1
|
||||||
|
m_RenderingMode: 2
|
||||||
|
m_DepthPrimingMode: 0
|
||||||
|
m_CopyDepthMode: 0
|
||||||
|
m_AccurateGbufferNormals: 0
|
||||||
|
m_IntermediateTextureMode: 0
|
||||||
|
--- !u!114 &7833122117494664109
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: f62c9c65cf3354c93be831c8bc075510, type: 3}
|
||||||
|
m_Name: ScreenSpaceAmbientOcclusion
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Active: 1
|
||||||
|
m_Settings:
|
||||||
|
AOMethod: 0
|
||||||
|
Downsample: 0
|
||||||
|
AfterOpaque: 0
|
||||||
|
Source: 1
|
||||||
|
NormalSamples: 1
|
||||||
|
Intensity: 0.4
|
||||||
|
DirectLightingStrength: 0.25
|
||||||
|
Radius: 0.3
|
||||||
|
Samples: 1
|
||||||
|
BlurQuality: 0
|
||||||
|
Falloff: 100
|
||||||
|
SampleCount: -1
|
||||||
|
m_BlueNoise256Textures:
|
||||||
|
- {fileID: 2800000, guid: 36f118343fc974119bee3d09e2111500, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 4b7b083e6b6734e8bb2838b0b50a0bc8, type: 3}
|
||||||
|
- {fileID: 2800000, guid: c06cc21c692f94f5fb5206247191eeee, type: 3}
|
||||||
|
- {fileID: 2800000, guid: cb76dd40fa7654f9587f6a344f125c9a, type: 3}
|
||||||
|
- {fileID: 2800000, guid: e32226222ff144b24bf3a5a451de54bc, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 3302065f671a8450b82c9ddf07426f3a, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 56a77a3e8d64f47b6afe9e3c95cb57d5, type: 3}
|
||||||
|
m_Shader: {fileID: 4800000, guid: 0849e84e3d62649e8882e9d6f056a017, type: 3}
|
||||||
8
Assets/Settings/PC_Renderer.asset.meta
Normal file
8
Assets/Settings/PC_Renderer.asset.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: f288ae1f4751b564a96ac7587541f7a2
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
159
Assets/Settings/SampleSceneProfile.asset
Normal file
159
Assets/Settings/SampleSceneProfile.asset
Normal file
@@ -0,0 +1,159 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &-7893295128165547882
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 0b2db86121404754db890f4c8dfe81b2, type: 3}
|
||||||
|
m_Name: Bloom
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
active: 1
|
||||||
|
skipIterations:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
threshold:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 1
|
||||||
|
intensity:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0.25
|
||||||
|
scatter:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0.5
|
||||||
|
clamp:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: 65472
|
||||||
|
tint:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
highQualityFiltering:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 1
|
||||||
|
downscale:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: 0
|
||||||
|
maxIterations:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: 6
|
||||||
|
dirtTexture:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: {fileID: 0}
|
||||||
|
dimension: 1
|
||||||
|
dirtIntensity:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: 0
|
||||||
|
--- !u!114 &-3357603926938260329
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 899c54efeace73346a0a16faa3afe726, type: 3}
|
||||||
|
m_Name: Vignette
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
active: 1
|
||||||
|
color:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: {r: 0, g: 0, b: 0, a: 1}
|
||||||
|
center:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: {x: 0.5, y: 0.5}
|
||||||
|
intensity:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0.2
|
||||||
|
smoothness:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: 0.2
|
||||||
|
rounded:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: 0
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: d7fd9488000d3734a9e00ee676215985, type: 3}
|
||||||
|
m_Name: SampleSceneProfile
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
components:
|
||||||
|
- {fileID: 849379129802519247}
|
||||||
|
- {fileID: -7893295128165547882}
|
||||||
|
- {fileID: 7391319092446245454}
|
||||||
|
- {fileID: -3357603926938260329}
|
||||||
|
--- !u!114 &849379129802519247
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 97c23e3b12dc18c42a140437e53d3951, type: 3}
|
||||||
|
m_Name: Tonemapping
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
active: 1
|
||||||
|
mode:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 1
|
||||||
|
neutralHDRRangeReductionMode:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: 2
|
||||||
|
acesPreset:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: 3
|
||||||
|
hueShiftAmount:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: 0
|
||||||
|
detectPaperWhite:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0
|
||||||
|
paperWhite:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 234
|
||||||
|
detectBrightnessLimits:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 1
|
||||||
|
minNits:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0.005
|
||||||
|
maxNits:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 647
|
||||||
|
--- !u!114 &7391319092446245454
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: ccf1aba9553839d41ae37dd52e9ebcce, type: 3}
|
||||||
|
m_Name: MotionBlur
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
active: 0
|
||||||
|
mode:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: 0
|
||||||
|
quality:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 2
|
||||||
|
intensity:
|
||||||
|
m_OverrideState: 1
|
||||||
|
m_Value: 0.6
|
||||||
|
clamp:
|
||||||
|
m_OverrideState: 0
|
||||||
|
m_Value: 0.05
|
||||||
8
Assets/Settings/SampleSceneProfile.asset.meta
Normal file
8
Assets/Settings/SampleSceneProfile.asset.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 10fc4df2da32a41aaa32d77bc913491c
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
407
Assets/Settings/UniversalRenderPipelineGlobalSettings.asset
Normal file
407
Assets/Settings/UniversalRenderPipelineGlobalSettings.asset
Normal file
@@ -0,0 +1,407 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 2ec995e51a6e251468d2a3fd8a686257, type: 3}
|
||||||
|
m_Name: UniversalRenderPipelineGlobalSettings
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_ShaderStrippingSetting:
|
||||||
|
m_Version: 0
|
||||||
|
m_ExportShaderVariants: 1
|
||||||
|
m_ShaderVariantLogLevel: 0
|
||||||
|
m_StripRuntimeDebugShaders: 1
|
||||||
|
m_URPShaderStrippingSetting:
|
||||||
|
m_Version: 0
|
||||||
|
m_StripUnusedPostProcessingVariants: 1
|
||||||
|
m_StripUnusedVariants: 1
|
||||||
|
m_StripScreenCoordOverrideVariants: 1
|
||||||
|
m_ShaderVariantLogLevel: 0
|
||||||
|
m_ExportShaderVariants: 1
|
||||||
|
m_StripDebugVariants: 1
|
||||||
|
m_StripUnusedPostProcessingVariants: 1
|
||||||
|
m_StripUnusedVariants: 1
|
||||||
|
m_StripScreenCoordOverrideVariants: 1
|
||||||
|
supportRuntimeDebugDisplay: 0
|
||||||
|
m_EnableRenderGraph: 0
|
||||||
|
m_Settings:
|
||||||
|
m_SettingsList:
|
||||||
|
m_List:
|
||||||
|
- rid: 6852985685364965376
|
||||||
|
- rid: 6852985685364965377
|
||||||
|
- rid: 6852985685364965378
|
||||||
|
- rid: 6852985685364965379
|
||||||
|
- rid: 6852985685364965380
|
||||||
|
- rid: 6852985685364965381
|
||||||
|
- rid: 6852985685364965382
|
||||||
|
- rid: 6852985685364965383
|
||||||
|
- rid: 6852985685364965384
|
||||||
|
- rid: 6852985685364965385
|
||||||
|
- rid: 6852985685364965386
|
||||||
|
- rid: 6852985685364965387
|
||||||
|
- rid: 6852985685364965388
|
||||||
|
- rid: 6852985685364965389
|
||||||
|
- rid: 6852985685364965390
|
||||||
|
- rid: 6852985685364965391
|
||||||
|
- rid: 6852985685364965392
|
||||||
|
- rid: 6852985685364965393
|
||||||
|
- rid: 6852985685364965394
|
||||||
|
- rid: 8712630790384254976
|
||||||
|
- rid: 6474872856636817408
|
||||||
|
- rid: 6474872856636817409
|
||||||
|
- rid: 6474872856636817410
|
||||||
|
- rid: 6474872856636817411
|
||||||
|
- rid: 6474872856636817412
|
||||||
|
- rid: 6474872856636817413
|
||||||
|
- rid: 6474872856636817414
|
||||||
|
- rid: 6474872856636817415
|
||||||
|
- rid: 6474872856636817416
|
||||||
|
m_RuntimeSettings:
|
||||||
|
m_List:
|
||||||
|
- rid: 6852985685364965378
|
||||||
|
- rid: 6852985685364965379
|
||||||
|
- rid: 6852985685364965380
|
||||||
|
- rid: 6852985685364965381
|
||||||
|
- rid: 6852985685364965384
|
||||||
|
- rid: 6852985685364965385
|
||||||
|
- rid: 6852985685364965392
|
||||||
|
- rid: 6852985685364965394
|
||||||
|
- rid: 8712630790384254976
|
||||||
|
- rid: 6474872856636817409
|
||||||
|
- rid: 6474872856636817411
|
||||||
|
- rid: 6474872856636817412
|
||||||
|
- rid: 6474872856636817415
|
||||||
|
- rid: 6474872856636817416
|
||||||
|
m_AssetVersion: 8
|
||||||
|
m_ObsoleteDefaultVolumeProfile: {fileID: 0}
|
||||||
|
m_RenderingLayerNames:
|
||||||
|
- Light Layer default
|
||||||
|
- Light Layer 1
|
||||||
|
- Light Layer 2
|
||||||
|
- Light Layer 3
|
||||||
|
- Light Layer 4
|
||||||
|
- Light Layer 5
|
||||||
|
- Light Layer 6
|
||||||
|
- Light Layer 7
|
||||||
|
m_ValidRenderingLayers: 0
|
||||||
|
lightLayerName0: Light Layer default
|
||||||
|
lightLayerName1: Light Layer 1
|
||||||
|
lightLayerName2: Light Layer 2
|
||||||
|
lightLayerName3: Light Layer 3
|
||||||
|
lightLayerName4: Light Layer 4
|
||||||
|
lightLayerName5: Light Layer 5
|
||||||
|
lightLayerName6: Light Layer 6
|
||||||
|
lightLayerName7: Light Layer 7
|
||||||
|
apvScenesData:
|
||||||
|
obsoleteSceneBounds:
|
||||||
|
m_Keys: []
|
||||||
|
m_Values: []
|
||||||
|
obsoleteHasProbeVolumes:
|
||||||
|
m_Keys: []
|
||||||
|
m_Values:
|
||||||
|
references:
|
||||||
|
version: 2
|
||||||
|
RefIds:
|
||||||
|
- rid: 6474872856636817408
|
||||||
|
type: {class: PostProcessData/ShaderResources, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
|
||||||
|
data:
|
||||||
|
stopNanPS: {fileID: 4800000, guid: 1121bb4e615ca3c48b214e79e841e823, type: 3}
|
||||||
|
subpixelMorphologicalAntialiasingPS: {fileID: 4800000, guid: 63eaba0ebfb82cc43bde059b4a8c65f6, type: 3}
|
||||||
|
gaussianDepthOfFieldPS: {fileID: 4800000, guid: 5e7134d6e63e0bc47a1dd2669cedb379, type: 3}
|
||||||
|
bokehDepthOfFieldPS: {fileID: 4800000, guid: 2aed67ad60045d54ba3a00c91e2d2631, type: 3}
|
||||||
|
cameraMotionBlurPS: {fileID: 4800000, guid: 1edcd131364091c46a17cbff0b1de97a, type: 3}
|
||||||
|
paniniProjectionPS: {fileID: 4800000, guid: a15b78cf8ca26ca4fb2090293153c62c, type: 3}
|
||||||
|
lutBuilderLdrPS: {fileID: 4800000, guid: 65df88701913c224d95fc554db28381a, type: 3}
|
||||||
|
lutBuilderHdrPS: {fileID: 4800000, guid: ec9fec698a3456d4fb18cf8bacb7a2bc, type: 3}
|
||||||
|
bloomPS: {fileID: 4800000, guid: 5f1864addb451f54bae8c86d230f736e, type: 3}
|
||||||
|
temporalAntialiasingPS: {fileID: 4800000, guid: 9c70c1a35ff15f340b38ea84842358bf, type: 3}
|
||||||
|
LensFlareDataDrivenPS: {fileID: 4800000, guid: 6cda457ac28612740adb23da5d39ea92, type: 3}
|
||||||
|
LensFlareScreenSpacePS: {fileID: 4800000, guid: 701880fecb344ea4c9cd0db3407ab287, type: 3}
|
||||||
|
scalingSetupPS: {fileID: 4800000, guid: e8ee25143a34b8c4388709ea947055d1, type: 3}
|
||||||
|
easuPS: {fileID: 4800000, guid: 562b7ae4f629f144aa97780546fce7c6, type: 3}
|
||||||
|
uberPostPS: {fileID: 4800000, guid: e7857e9d0c934dc4f83f270f8447b006, type: 3}
|
||||||
|
finalPostPassPS: {fileID: 4800000, guid: c49e63ed1bbcb334780a3bd19dfed403, type: 3}
|
||||||
|
m_ShaderResourcesVersion: 0
|
||||||
|
- rid: 6474872856636817409
|
||||||
|
type: {class: ScreenSpaceAmbientOcclusionPersistentResources, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
|
||||||
|
data:
|
||||||
|
m_Shader: {fileID: 4800000, guid: 0849e84e3d62649e8882e9d6f056a017, type: 3}
|
||||||
|
m_Version: 0
|
||||||
|
- rid: 6474872856636817410
|
||||||
|
type: {class: UniversalRenderPipelineEditorAssets, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
|
||||||
|
data:
|
||||||
|
m_DefaultSettingsVolumeProfile: {fileID: 11400000, guid: eda47df5b85f4f249abf7abd73db2cb2, type: 2}
|
||||||
|
- rid: 6474872856636817411
|
||||||
|
type: {class: ScreenSpaceAmbientOcclusionDynamicResources, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
|
||||||
|
data:
|
||||||
|
m_BlueNoise256Textures:
|
||||||
|
- {fileID: 2800000, guid: 36f118343fc974119bee3d09e2111500, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 4b7b083e6b6734e8bb2838b0b50a0bc8, type: 3}
|
||||||
|
- {fileID: 2800000, guid: c06cc21c692f94f5fb5206247191eeee, type: 3}
|
||||||
|
- {fileID: 2800000, guid: cb76dd40fa7654f9587f6a344f125c9a, type: 3}
|
||||||
|
- {fileID: 2800000, guid: e32226222ff144b24bf3a5a451de54bc, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 3302065f671a8450b82c9ddf07426f3a, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 56a77a3e8d64f47b6afe9e3c95cb57d5, type: 3}
|
||||||
|
m_Version: 0
|
||||||
|
- rid: 6474872856636817412
|
||||||
|
type: {class: UniversalRenderPipelineRuntimeXRResources, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
|
||||||
|
data:
|
||||||
|
m_xrOcclusionMeshPS: {fileID: 4800000, guid: 4431b1f1f743fbf4eb310a967890cbea, type: 3}
|
||||||
|
m_xrMirrorViewPS: {fileID: 4800000, guid: d5a307c014552314b9f560906d708772, type: 3}
|
||||||
|
m_xrMotionVector: {fileID: 4800000, guid: f89aac1e4f84468418fe30e611dff395, type: 3}
|
||||||
|
- rid: 6474872856636817413
|
||||||
|
type: {class: PostProcessData/TextureResources, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
|
||||||
|
data:
|
||||||
|
blueNoise16LTex:
|
||||||
|
- {fileID: 2800000, guid: 81200413a40918d4d8702e94db29911c, type: 3}
|
||||||
|
- {fileID: 2800000, guid: d50c5e07c9911a74982bddf7f3075e7b, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 1134690bf9216164dbc75050e35b7900, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 7ce2118f74614a94aa8a0cdf2e6062c3, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 2ca97df9d1801e84a8a8f2c53cb744f0, type: 3}
|
||||||
|
- {fileID: 2800000, guid: e63eef8f54aa9dc4da9a5ac094b503b5, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 39451254daebd6d40b52899c1f1c0c1b, type: 3}
|
||||||
|
- {fileID: 2800000, guid: c94ad916058dff743b0f1c969ddbe660, type: 3}
|
||||||
|
- {fileID: 2800000, guid: ed5ea7ce59ca8ec4f9f14bf470a30f35, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 071e954febf155243a6c81e48f452644, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 96aaab9cc247d0b4c98132159688c1af, type: 3}
|
||||||
|
- {fileID: 2800000, guid: fc3fa8f108657e14486697c9a84ccfc5, type: 3}
|
||||||
|
- {fileID: 2800000, guid: bfed3e498947fcb4890b7f40f54d85b9, type: 3}
|
||||||
|
- {fileID: 2800000, guid: d512512f4af60a442ab3458489412954, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 47a45908f6db0cb44a0d5e961143afec, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 4dcc0502f8586f941b5c4a66717205e8, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 9d92991794bb5864c8085468b97aa067, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 14381521ff11cb74abe3fe65401c23be, type: 3}
|
||||||
|
- {fileID: 2800000, guid: d36f0fe53425e08499a2333cf423634c, type: 3}
|
||||||
|
- {fileID: 2800000, guid: d4044ea2490d63b43aa1765f8efbf8a9, type: 3}
|
||||||
|
- {fileID: 2800000, guid: c9bd74624d8070f429e3f46d161f9204, type: 3}
|
||||||
|
- {fileID: 2800000, guid: d5c9b274310e5524ebe32a4e4da3df1f, type: 3}
|
||||||
|
- {fileID: 2800000, guid: f69770e54f2823f43badf77916acad83, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 10b6c6d22e73dea46a8ab36b6eebd629, type: 3}
|
||||||
|
- {fileID: 2800000, guid: a2ec5cbf5a9b64345ad3fab0912ddf7b, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 1c3c6d69a645b804fa232004b96b7ad3, type: 3}
|
||||||
|
- {fileID: 2800000, guid: d18a24d7b4ed50f4387993566d9d3ae2, type: 3}
|
||||||
|
- {fileID: 2800000, guid: c989e1ed85cf7154caa922fec53e6af6, type: 3}
|
||||||
|
- {fileID: 2800000, guid: ff47e5a0f105eb34883b973e51f4db62, type: 3}
|
||||||
|
- {fileID: 2800000, guid: fa042edbfc40fbd4bad0ab9d505b1223, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 896d9004736809c4fb5973b7c12eb8b9, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 179f794063d2a66478e6e726f84a65bc, type: 3}
|
||||||
|
filmGrainTex:
|
||||||
|
- {fileID: 2800000, guid: 654c582f7f8a5a14dbd7d119cbde215d, type: 3}
|
||||||
|
- {fileID: 2800000, guid: dd77ffd079630404e879388999033049, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 1097e90e1306e26439701489f391a6c0, type: 3}
|
||||||
|
- {fileID: 2800000, guid: f0b67500f7fad3b4c9f2b13e8f41ba6e, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 9930fb4528622b34687b00bbe6883de7, type: 3}
|
||||||
|
- {fileID: 2800000, guid: bd9e8c758250ef449a4b4bfaad7a2133, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 510a2f57334933e4a8dbabe4c30204e4, type: 3}
|
||||||
|
- {fileID: 2800000, guid: b4db8180660810945bf8d55ab44352ad, type: 3}
|
||||||
|
- {fileID: 2800000, guid: fd2fd78b392986e42a12df2177d3b89c, type: 3}
|
||||||
|
- {fileID: 2800000, guid: 5cdee82a77d13994f83b8fdabed7c301, type: 3}
|
||||||
|
smaaAreaTex: {fileID: 2800000, guid: d1f1048909d55cd4fa1126ab998f617e, type: 3}
|
||||||
|
smaaSearchTex: {fileID: 2800000, guid: 51eee22c2a633ef4aada830eed57c3fd, type: 3}
|
||||||
|
m_TexturesResourcesVersion: 0
|
||||||
|
- rid: 6474872856636817414
|
||||||
|
type: {class: RenderingDebuggerRuntimeResources, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Core.Runtime}
|
||||||
|
data:
|
||||||
|
m_version: 0
|
||||||
|
- rid: 6474872856636817415
|
||||||
|
type: {class: VrsRenderPipelineRuntimeResources, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Core.Runtime}
|
||||||
|
data:
|
||||||
|
m_TextureComputeShader: {fileID: 7200000, guid: cacb30de6c40c7444bbc78cb0a81fd2a, type: 3}
|
||||||
|
m_VisualizationShader: {fileID: 4800000, guid: 620b55b8040a88d468e94abe55bed5ba, type: 3}
|
||||||
|
m_VisualizationLookupTable:
|
||||||
|
m_Data:
|
||||||
|
- {r: 1, g: 0, b: 0, a: 1}
|
||||||
|
- {r: 1, g: 0.92156863, b: 0.015686275, a: 1}
|
||||||
|
- {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
- {r: 0, g: 1, b: 0, a: 1}
|
||||||
|
- {r: 0.75, g: 0.75, b: 0, a: 1}
|
||||||
|
- {r: 0, g: 0.75, b: 0.55, a: 1}
|
||||||
|
- {r: 0.5, g: 0, b: 0.5, a: 1}
|
||||||
|
- {r: 0.5, g: 0.5, b: 0.5, a: 1}
|
||||||
|
- {r: 0, g: 0, b: 1, a: 1}
|
||||||
|
m_ConversionLookupTable:
|
||||||
|
m_Data:
|
||||||
|
- {r: 1, g: 0, b: 0, a: 1}
|
||||||
|
- {r: 1, g: 0.92156863, b: 0.015686275, a: 1}
|
||||||
|
- {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
- {r: 0, g: 1, b: 0, a: 1}
|
||||||
|
- {r: 0.75, g: 0.75, b: 0, a: 1}
|
||||||
|
- {r: 0, g: 0.75, b: 0.55, a: 1}
|
||||||
|
- {r: 0.5, g: 0, b: 0.5, a: 1}
|
||||||
|
- {r: 0.5, g: 0.5, b: 0.5, a: 1}
|
||||||
|
- {r: 0, g: 0, b: 1, a: 1}
|
||||||
|
- rid: 6474872856636817416
|
||||||
|
type: {class: LightmapSamplingSettings, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Core.Runtime}
|
||||||
|
data:
|
||||||
|
m_Version: 1
|
||||||
|
m_UseBicubicLightmapSampling: 0
|
||||||
|
- rid: 6852985685364965376
|
||||||
|
type: {class: URPShaderStrippingSetting, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
|
||||||
|
data:
|
||||||
|
m_Version: 0
|
||||||
|
m_StripUnusedPostProcessingVariants: 1
|
||||||
|
m_StripUnusedVariants: 1
|
||||||
|
m_StripScreenCoordOverrideVariants: 1
|
||||||
|
- rid: 6852985685364965377
|
||||||
|
type: {class: UniversalRenderPipelineEditorShaders, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
|
||||||
|
data:
|
||||||
|
m_AutodeskInteractive: {fileID: 4800000, guid: 0e9d5a909a1f7e84882a534d0d11e49f, type: 3}
|
||||||
|
m_AutodeskInteractiveTransparent: {fileID: 4800000, guid: 5c81372d981403744adbdda4433c9c11, type: 3}
|
||||||
|
m_AutodeskInteractiveMasked: {fileID: 4800000, guid: 80aa867ac363ac043847b06ad71604cd, type: 3}
|
||||||
|
m_DefaultSpeedTree7Shader: {fileID: 4800000, guid: 0f4122b9a743b744abe2fb6a0a88868b, type: 3}
|
||||||
|
m_DefaultSpeedTree8Shader: {fileID: -6465566751694194690, guid: 9920c1f1781549a46ba081a2a15a16ec, type: 3}
|
||||||
|
m_DefaultSpeedTree9Shader: {fileID: -6465566751694194690, guid: cbd3e1cc4ae141c42a30e33b4d666a61, type: 3}
|
||||||
|
- rid: 6852985685364965378
|
||||||
|
type: {class: UniversalRendererResources, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
|
||||||
|
data:
|
||||||
|
m_Version: 0
|
||||||
|
m_CopyDepthPS: {fileID: 4800000, guid: d6dae50ee9e1bfa4db75f19f99355220, type: 3}
|
||||||
|
m_CameraMotionVector: {fileID: 4800000, guid: c56b7e0d4c7cb484e959caeeedae9bbf, type: 3}
|
||||||
|
m_StencilDeferredPS: {fileID: 4800000, guid: e9155b26e1bc55942a41e518703fe304, type: 3}
|
||||||
|
m_ClusterDeferred: {fileID: 4800000, guid: 222cce62363a44a380c36bf03b392608, type: 3}
|
||||||
|
m_StencilDitherMaskSeedPS: {fileID: 4800000, guid: 8c3ee818f2efa514c889881ccb2e95a2, type: 3}
|
||||||
|
m_DBufferClear: {fileID: 4800000, guid: f056d8bd2a1c7e44e9729144b4c70395, type: 3}
|
||||||
|
- rid: 6852985685364965379
|
||||||
|
type: {class: UniversalRenderPipelineDebugShaders, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
|
||||||
|
data:
|
||||||
|
m_DebugReplacementPS: {fileID: 4800000, guid: cf852408f2e174538bcd9b7fda1c5ae7, type: 3}
|
||||||
|
m_HdrDebugViewPS: {fileID: 4800000, guid: 573620ae32aec764abd4d728906d2587, type: 3}
|
||||||
|
m_ProbeVolumeSamplingDebugComputeShader: {fileID: 7200000, guid: 53626a513ea68ce47b59dc1299fe3959, type: 3}
|
||||||
|
- rid: 6852985685364965380
|
||||||
|
type: {class: UniversalRenderPipelineRuntimeShaders, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
|
||||||
|
data:
|
||||||
|
m_Version: 0
|
||||||
|
m_FallbackErrorShader: {fileID: 4800000, guid: e6e9a19c3678ded42a3bc431ebef7dbd, type: 3}
|
||||||
|
m_BlitHDROverlay: {fileID: 4800000, guid: a89bee29cffa951418fc1e2da94d1959, type: 3}
|
||||||
|
m_CoreBlitPS: {fileID: 4800000, guid: 93446b5c5339d4f00b85c159e1159b7c, type: 3}
|
||||||
|
m_CoreBlitColorAndDepthPS: {fileID: 4800000, guid: d104b2fc1ca6445babb8e90b0758136b, type: 3}
|
||||||
|
m_SamplingPS: {fileID: 4800000, guid: 04c410c9937594faa893a11dceb85f7e, type: 3}
|
||||||
|
m_TerrainDetailLit: {fileID: 4800000, guid: f6783ab646d374f94b199774402a5144, type: 3}
|
||||||
|
m_TerrainDetailGrassBillboard: {fileID: 4800000, guid: 29868e73b638e48ca99a19ea58c48d90, type: 3}
|
||||||
|
m_TerrainDetailGrass: {fileID: 4800000, guid: e507fdfead5ca47e8b9a768b51c291a1, type: 3}
|
||||||
|
- rid: 6852985685364965381
|
||||||
|
type: {class: UniversalRenderPipelineRuntimeTextures, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
|
||||||
|
data:
|
||||||
|
m_Version: 1
|
||||||
|
m_BlueNoise64LTex: {fileID: 2800000, guid: e3d24661c1e055f45a7560c033dbb837, type: 3}
|
||||||
|
m_BayerMatrixTex: {fileID: 2800000, guid: f9ee4ed84c1d10c49aabb9b210b0fc44, type: 3}
|
||||||
|
m_DebugFontTex: {fileID: 2800000, guid: 26a413214480ef144b2915d6ff4d0beb, type: 3}
|
||||||
|
- rid: 6852985685364965382
|
||||||
|
type: {class: Renderer2DResources, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
|
||||||
|
data:
|
||||||
|
m_Version: 0
|
||||||
|
m_LightShader: {fileID: 4800000, guid: 3f6c848ca3d7bca4bbe846546ac701a1, type: 3}
|
||||||
|
m_ProjectedShadowShader: {fileID: 4800000, guid: ce09d4a80b88c5a4eb9768fab4f1ee00, type: 3}
|
||||||
|
m_SpriteShadowShader: {fileID: 4800000, guid: 44fc62292b65ab04eabcf310e799ccf6, type: 3}
|
||||||
|
m_SpriteUnshadowShader: {fileID: 4800000, guid: de02b375720b5c445afe83cd483bedf3, type: 3}
|
||||||
|
m_GeometryShadowShader: {fileID: 4800000, guid: 19349a0f9a7ed4c48a27445bcf92e5e1, type: 3}
|
||||||
|
m_GeometryUnshadowShader: {fileID: 4800000, guid: 77774d9009bb81447b048c907d4c6273, type: 3}
|
||||||
|
m_FallOffLookup: {fileID: 2800000, guid: 5688ab254e4c0634f8d6c8e0792331ca, type: 3}
|
||||||
|
m_CopyDepthPS: {fileID: 4800000, guid: d6dae50ee9e1bfa4db75f19f99355220, type: 3}
|
||||||
|
m_DefaultLitMaterial: {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2}
|
||||||
|
m_DefaultUnlitMaterial: {fileID: 2100000, guid: 9dfc825aed78fcd4ba02077103263b40, type: 2}
|
||||||
|
m_DefaultMaskMaterial: {fileID: 2100000, guid: 15d0c3709176029428a0da2f8cecf0b5, type: 2}
|
||||||
|
- rid: 6852985685364965383
|
||||||
|
type: {class: UniversalRenderPipelineEditorMaterials, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
|
||||||
|
data:
|
||||||
|
m_DefaultMaterial: {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2}
|
||||||
|
m_DefaultParticleMaterial: {fileID: 2100000, guid: e823cd5b5d27c0f4b8256e7c12ee3e6d, type: 2}
|
||||||
|
m_DefaultLineMaterial: {fileID: 2100000, guid: e823cd5b5d27c0f4b8256e7c12ee3e6d, type: 2}
|
||||||
|
m_DefaultTerrainMaterial: {fileID: 2100000, guid: 594ea882c5a793440b60ff72d896021e, type: 2}
|
||||||
|
m_DefaultDecalMaterial: {fileID: 2100000, guid: 31d0dcc6f2dd4e4408d18036a2c93862, type: 2}
|
||||||
|
m_DefaultSpriteMaterial: {fileID: 2100000, guid: 9dfc825aed78fcd4ba02077103263b40, type: 2}
|
||||||
|
- rid: 6852985685364965384
|
||||||
|
type: {class: URPDefaultVolumeProfileSettings, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
|
||||||
|
data:
|
||||||
|
m_Version: 0
|
||||||
|
m_VolumeProfile: {fileID: 11400000, guid: ab09877e2e707104187f6f83e2f62510, type: 2}
|
||||||
|
- rid: 6852985685364965385
|
||||||
|
type: {class: RenderGraphSettings, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
|
||||||
|
data:
|
||||||
|
m_Version: 0
|
||||||
|
m_EnableRenderCompatibilityMode: 0
|
||||||
|
- rid: 6852985685364965386
|
||||||
|
type: {class: GPUResidentDrawerResources, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.GPUDriven.Runtime}
|
||||||
|
data:
|
||||||
|
m_Version: 0
|
||||||
|
m_InstanceDataBufferCopyKernels: {fileID: 7200000, guid: f984aeb540ded8b4fbb8a2047ab5b2e2, type: 3}
|
||||||
|
m_InstanceDataBufferUploadKernels: {fileID: 7200000, guid: 53864816eb00f2343b60e1a2c5a262ef, type: 3}
|
||||||
|
m_TransformUpdaterKernels: {fileID: 7200000, guid: 2a567b9b2733f8d47a700c3c85bed75b, type: 3}
|
||||||
|
m_WindDataUpdaterKernels: {fileID: 7200000, guid: fde76746e4fd0ed418c224f6b4084114, type: 3}
|
||||||
|
m_OccluderDepthPyramidKernels: {fileID: 7200000, guid: 08b2b5fb307b0d249860612774a987da, type: 3}
|
||||||
|
m_InstanceOcclusionCullingKernels: {fileID: 7200000, guid: f6d223acabc2f974795a5a7864b50e6c, type: 3}
|
||||||
|
m_OcclusionCullingDebugKernels: {fileID: 7200000, guid: b23e766bcf50ca4438ef186b174557df, type: 3}
|
||||||
|
m_DebugOcclusionTestPS: {fileID: 4800000, guid: d3f0849180c2d0944bc71060693df100, type: 3}
|
||||||
|
m_DebugOccluderPS: {fileID: 4800000, guid: b3c92426a88625841ab15ca6a7917248, type: 3}
|
||||||
|
- rid: 6852985685364965387
|
||||||
|
type: {class: STP/RuntimeResources, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Core.Runtime}
|
||||||
|
data:
|
||||||
|
m_setupCS: {fileID: 7200000, guid: 33be2e9a5506b2843bdb2bdff9cad5e1, type: 3}
|
||||||
|
m_preTaaCS: {fileID: 7200000, guid: a679dba8ec4d9ce45884a270b0e22dda, type: 3}
|
||||||
|
m_taaCS: {fileID: 7200000, guid: 3923900e2b41b5e47bc25bfdcbcdc9e6, type: 3}
|
||||||
|
- rid: 6852985685364965388
|
||||||
|
type: {class: ProbeVolumeBakingResources, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Core.Runtime}
|
||||||
|
data:
|
||||||
|
m_Version: 1
|
||||||
|
dilationShader: {fileID: 7200000, guid: 6bb382f7de370af41b775f54182e491d, type: 3}
|
||||||
|
subdivideSceneCS: {fileID: 7200000, guid: bb86f1f0af829fd45b2ebddda1245c22, type: 3}
|
||||||
|
voxelizeSceneShader: {fileID: 4800000, guid: c8b6a681c7b4e2e4785ffab093907f9e, type: 3}
|
||||||
|
traceVirtualOffsetCS: {fileID: -6772857160820960102, guid: ff2cbab5da58bf04d82c5f34037ed123, type: 3}
|
||||||
|
traceVirtualOffsetRT: {fileID: -5126288278712620388, guid: ff2cbab5da58bf04d82c5f34037ed123, type: 3}
|
||||||
|
skyOcclusionCS: {fileID: -6772857160820960102, guid: 5a2a534753fbdb44e96c3c78b5a6999d, type: 3}
|
||||||
|
skyOcclusionRT: {fileID: -5126288278712620388, guid: 5a2a534753fbdb44e96c3c78b5a6999d, type: 3}
|
||||||
|
renderingLayerCS: {fileID: -6772857160820960102, guid: 94a070d33e408384bafc1dea4a565df9, type: 3}
|
||||||
|
renderingLayerRT: {fileID: -5126288278712620388, guid: 94a070d33e408384bafc1dea4a565df9, type: 3}
|
||||||
|
- rid: 6852985685364965389
|
||||||
|
type: {class: ProbeVolumeGlobalSettings, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Core.Runtime}
|
||||||
|
data:
|
||||||
|
m_Version: 1
|
||||||
|
m_ProbeVolumeDisableStreamingAssets: 0
|
||||||
|
- rid: 6852985685364965390
|
||||||
|
type: {class: ProbeVolumeDebugResources, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Core.Runtime}
|
||||||
|
data:
|
||||||
|
m_Version: 1
|
||||||
|
probeVolumeDebugShader: {fileID: 4800000, guid: 3b21275fd12d65f49babb5286f040f2d, type: 3}
|
||||||
|
probeVolumeFragmentationDebugShader: {fileID: 4800000, guid: 3a80877c579b9144ebdcc6d923bca303, type: 3}
|
||||||
|
probeVolumeSamplingDebugShader: {fileID: 4800000, guid: bf54e6528c79a224e96346799064c393, type: 3}
|
||||||
|
probeVolumeOffsetDebugShader: {fileID: 4800000, guid: db8bd7436dc2c5f4c92655307d198381, type: 3}
|
||||||
|
probeSamplingDebugMesh: {fileID: -3555484719484374845, guid: 20be25aac4e22ee49a7db76fb3df6de2, type: 3}
|
||||||
|
numbersDisplayTex: {fileID: 2800000, guid: 73fe53b428c5b3440b7e87ee830b608a, type: 3}
|
||||||
|
- rid: 6852985685364965391
|
||||||
|
type: {class: IncludeAdditionalRPAssets, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Core.Runtime}
|
||||||
|
data:
|
||||||
|
m_version: 0
|
||||||
|
m_IncludeReferencedInScenes: 0
|
||||||
|
m_IncludeAssetsByLabel: 0
|
||||||
|
m_LabelToInclude:
|
||||||
|
- rid: 6852985685364965392
|
||||||
|
type: {class: ShaderStrippingSetting, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Core.Runtime}
|
||||||
|
data:
|
||||||
|
m_Version: 0
|
||||||
|
m_ExportShaderVariants: 1
|
||||||
|
m_ShaderVariantLogLevel: 0
|
||||||
|
m_StripRuntimeDebugShaders: 1
|
||||||
|
- rid: 6852985685364965393
|
||||||
|
type: {class: ProbeVolumeRuntimeResources, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Core.Runtime}
|
||||||
|
data:
|
||||||
|
m_Version: 1
|
||||||
|
probeVolumeBlendStatesCS: {fileID: 7200000, guid: a3f7b8c99de28a94684cb1daebeccf5d, type: 3}
|
||||||
|
probeVolumeUploadDataCS: {fileID: 7200000, guid: 0951de5992461754fa73650732c4954c, type: 3}
|
||||||
|
probeVolumeUploadDataL2CS: {fileID: 7200000, guid: 6196f34ed825db14b81fb3eb0ea8d931, type: 3}
|
||||||
|
- rid: 6852985685364965394
|
||||||
|
type: {class: RenderGraphGlobalSettings, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Core.Runtime}
|
||||||
|
data:
|
||||||
|
m_version: 0
|
||||||
|
m_EnableCompilationCaching: 1
|
||||||
|
m_EnableValidityChecks: 1
|
||||||
|
- rid: 8712630790384254976
|
||||||
|
type: {class: RenderGraphUtilsResources, ns: UnityEngine.Rendering.RenderGraphModule.Util, asm: Unity.RenderPipelines.Core.Runtime}
|
||||||
|
data:
|
||||||
|
m_Version: 0
|
||||||
|
m_CoreCopyPS: {fileID: 4800000, guid: 12dc59547ea167a4ab435097dd0f9add, type: 3}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 18dc0cd2c080841dea60987a38ce93fa
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
8
Assets/TutorialInfo.meta
Normal file
8
Assets/TutorialInfo.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: ba062aa6c92b140379dbc06b43dd3b9b
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
9
Assets/TutorialInfo/Icons.meta
Normal file
9
Assets/TutorialInfo/Icons.meta
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 8a0c9218a650547d98138cd835033977
|
||||||
|
folderAsset: yes
|
||||||
|
timeCreated: 1484670163
|
||||||
|
licenseType: Store
|
||||||
|
DefaultImporter:
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
BIN
Assets/TutorialInfo/Icons/URP.png
Normal file
BIN
Assets/TutorialInfo/Icons/URP.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 24 KiB |
134
Assets/TutorialInfo/Icons/URP.png.meta
Normal file
134
Assets/TutorialInfo/Icons/URP.png.meta
Normal file
@@ -0,0 +1,134 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 727a75301c3d24613a3ebcec4a24c2c8
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable: []
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 11
|
||||||
|
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
|
||||||
|
isReadable: 0
|
||||||
|
streamingMipmaps: 0
|
||||||
|
streamingMipmapsPriority: 0
|
||||||
|
vTOnly: 0
|
||||||
|
ignoreMasterTextureLimit: 0
|
||||||
|
grayScaleToAlpha: 0
|
||||||
|
generateCubemap: 6
|
||||||
|
cubemapConvolution: 0
|
||||||
|
seamlessCubemap: 0
|
||||||
|
textureFormat: 1
|
||||||
|
maxTextureSize: 2048
|
||||||
|
textureSettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
filterMode: 0
|
||||||
|
aniso: 1
|
||||||
|
mipBias: 0
|
||||||
|
wrapU: 1
|
||||||
|
wrapV: 1
|
||||||
|
wrapW: 0
|
||||||
|
nPOTScale: 0
|
||||||
|
lightmap: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
spriteMode: 0
|
||||||
|
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: 2
|
||||||
|
textureShape: 1
|
||||||
|
singleChannelComponent: 0
|
||||||
|
flipbookRows: 1
|
||||||
|
flipbookColumns: 1
|
||||||
|
maxTextureSizeSet: 0
|
||||||
|
compressionQualitySet: 0
|
||||||
|
textureFormatSet: 0
|
||||||
|
ignorePngGamma: 0
|
||||||
|
applyGammaDecoding: 0
|
||||||
|
platformSettings:
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: DefaultTexturePlatform
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: Standalone
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: Android
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: iPhone
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
spriteSheet:
|
||||||
|
serializedVersion: 2
|
||||||
|
sprites: []
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID:
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
nameFileIdTable: {}
|
||||||
|
spritePackingTag:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
pSDShowRemoveMatteOption: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
654
Assets/TutorialInfo/Layout.wlt
Normal file
654
Assets/TutorialInfo/Layout.wlt
Normal file
@@ -0,0 +1,654 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &1
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 52
|
||||||
|
m_PrefabParentObject: {fileID: 0}
|
||||||
|
m_PrefabInternal: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 1
|
||||||
|
m_Script: {fileID: 12004, guid: 0000000000000000e000000000000000, type: 0}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_PixelRect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 0
|
||||||
|
y: 45
|
||||||
|
width: 1666
|
||||||
|
height: 958
|
||||||
|
m_ShowMode: 4
|
||||||
|
m_Title:
|
||||||
|
m_RootView: {fileID: 6}
|
||||||
|
m_MinSize: {x: 950, y: 542}
|
||||||
|
m_MaxSize: {x: 10000, y: 10000}
|
||||||
|
--- !u!114 &2
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 52
|
||||||
|
m_PrefabParentObject: {fileID: 0}
|
||||||
|
m_PrefabInternal: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 1
|
||||||
|
m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Children: []
|
||||||
|
m_Position:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 0
|
||||||
|
y: 466
|
||||||
|
width: 290
|
||||||
|
height: 442
|
||||||
|
m_MinSize: {x: 234, y: 271}
|
||||||
|
m_MaxSize: {x: 10004, y: 10021}
|
||||||
|
m_ActualView: {fileID: 14}
|
||||||
|
m_Panes:
|
||||||
|
- {fileID: 14}
|
||||||
|
m_Selected: 0
|
||||||
|
m_LastSelected: 0
|
||||||
|
--- !u!114 &3
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 52
|
||||||
|
m_PrefabParentObject: {fileID: 0}
|
||||||
|
m_PrefabInternal: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 1
|
||||||
|
m_Script: {fileID: 12010, guid: 0000000000000000e000000000000000, type: 0}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Children:
|
||||||
|
- {fileID: 4}
|
||||||
|
- {fileID: 2}
|
||||||
|
m_Position:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 973
|
||||||
|
y: 0
|
||||||
|
width: 290
|
||||||
|
height: 908
|
||||||
|
m_MinSize: {x: 234, y: 492}
|
||||||
|
m_MaxSize: {x: 10004, y: 14042}
|
||||||
|
vertical: 1
|
||||||
|
controlID: 226
|
||||||
|
--- !u!114 &4
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 52
|
||||||
|
m_PrefabParentObject: {fileID: 0}
|
||||||
|
m_PrefabInternal: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 1
|
||||||
|
m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Children: []
|
||||||
|
m_Position:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
width: 290
|
||||||
|
height: 466
|
||||||
|
m_MinSize: {x: 204, y: 221}
|
||||||
|
m_MaxSize: {x: 4004, y: 4021}
|
||||||
|
m_ActualView: {fileID: 17}
|
||||||
|
m_Panes:
|
||||||
|
- {fileID: 17}
|
||||||
|
m_Selected: 0
|
||||||
|
m_LastSelected: 0
|
||||||
|
--- !u!114 &5
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 52
|
||||||
|
m_PrefabParentObject: {fileID: 0}
|
||||||
|
m_PrefabInternal: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 1
|
||||||
|
m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Children: []
|
||||||
|
m_Position:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 0
|
||||||
|
y: 466
|
||||||
|
width: 973
|
||||||
|
height: 442
|
||||||
|
m_MinSize: {x: 202, y: 221}
|
||||||
|
m_MaxSize: {x: 4002, y: 4021}
|
||||||
|
m_ActualView: {fileID: 15}
|
||||||
|
m_Panes:
|
||||||
|
- {fileID: 15}
|
||||||
|
m_Selected: 0
|
||||||
|
m_LastSelected: 0
|
||||||
|
--- !u!114 &6
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 52
|
||||||
|
m_PrefabParentObject: {fileID: 0}
|
||||||
|
m_PrefabInternal: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 1
|
||||||
|
m_Script: {fileID: 12008, guid: 0000000000000000e000000000000000, type: 0}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Children:
|
||||||
|
- {fileID: 7}
|
||||||
|
- {fileID: 8}
|
||||||
|
- {fileID: 9}
|
||||||
|
m_Position:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
width: 1666
|
||||||
|
height: 958
|
||||||
|
m_MinSize: {x: 950, y: 542}
|
||||||
|
m_MaxSize: {x: 10000, y: 10000}
|
||||||
|
--- !u!114 &7
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 52
|
||||||
|
m_PrefabParentObject: {fileID: 0}
|
||||||
|
m_PrefabInternal: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 1
|
||||||
|
m_Script: {fileID: 12011, guid: 0000000000000000e000000000000000, type: 0}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Children: []
|
||||||
|
m_Position:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
width: 1666
|
||||||
|
height: 30
|
||||||
|
m_MinSize: {x: 0, y: 0}
|
||||||
|
m_MaxSize: {x: 0, y: 0}
|
||||||
|
m_LastLoadedLayoutName: Tutorial
|
||||||
|
--- !u!114 &8
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 52
|
||||||
|
m_PrefabParentObject: {fileID: 0}
|
||||||
|
m_PrefabInternal: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 1
|
||||||
|
m_Script: {fileID: 12010, guid: 0000000000000000e000000000000000, type: 0}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Children:
|
||||||
|
- {fileID: 10}
|
||||||
|
- {fileID: 3}
|
||||||
|
- {fileID: 11}
|
||||||
|
m_Position:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 0
|
||||||
|
y: 30
|
||||||
|
width: 1666
|
||||||
|
height: 908
|
||||||
|
m_MinSize: {x: 713, y: 492}
|
||||||
|
m_MaxSize: {x: 18008, y: 14042}
|
||||||
|
vertical: 0
|
||||||
|
controlID: 74
|
||||||
|
--- !u!114 &9
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 52
|
||||||
|
m_PrefabParentObject: {fileID: 0}
|
||||||
|
m_PrefabInternal: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 1
|
||||||
|
m_Script: {fileID: 12042, guid: 0000000000000000e000000000000000, type: 0}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Children: []
|
||||||
|
m_Position:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 0
|
||||||
|
y: 938
|
||||||
|
width: 1666
|
||||||
|
height: 20
|
||||||
|
m_MinSize: {x: 0, y: 0}
|
||||||
|
m_MaxSize: {x: 0, y: 0}
|
||||||
|
--- !u!114 &10
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 52
|
||||||
|
m_PrefabParentObject: {fileID: 0}
|
||||||
|
m_PrefabInternal: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 1
|
||||||
|
m_Script: {fileID: 12010, guid: 0000000000000000e000000000000000, type: 0}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Children:
|
||||||
|
- {fileID: 12}
|
||||||
|
- {fileID: 5}
|
||||||
|
m_Position:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
width: 973
|
||||||
|
height: 908
|
||||||
|
m_MinSize: {x: 202, y: 442}
|
||||||
|
m_MaxSize: {x: 4002, y: 8042}
|
||||||
|
vertical: 1
|
||||||
|
controlID: 75
|
||||||
|
--- !u!114 &11
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 52
|
||||||
|
m_PrefabParentObject: {fileID: 0}
|
||||||
|
m_PrefabInternal: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 1
|
||||||
|
m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Children: []
|
||||||
|
m_Position:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 1263
|
||||||
|
y: 0
|
||||||
|
width: 403
|
||||||
|
height: 908
|
||||||
|
m_MinSize: {x: 277, y: 71}
|
||||||
|
m_MaxSize: {x: 4002, y: 4021}
|
||||||
|
m_ActualView: {fileID: 13}
|
||||||
|
m_Panes:
|
||||||
|
- {fileID: 13}
|
||||||
|
m_Selected: 0
|
||||||
|
m_LastSelected: 0
|
||||||
|
--- !u!114 &12
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 52
|
||||||
|
m_PrefabParentObject: {fileID: 0}
|
||||||
|
m_PrefabInternal: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 1
|
||||||
|
m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Children: []
|
||||||
|
m_Position:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
width: 973
|
||||||
|
height: 466
|
||||||
|
m_MinSize: {x: 202, y: 221}
|
||||||
|
m_MaxSize: {x: 4002, y: 4021}
|
||||||
|
m_ActualView: {fileID: 16}
|
||||||
|
m_Panes:
|
||||||
|
- {fileID: 16}
|
||||||
|
m_Selected: 0
|
||||||
|
m_LastSelected: 0
|
||||||
|
--- !u!114 &13
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 52
|
||||||
|
m_PrefabParentObject: {fileID: 0}
|
||||||
|
m_PrefabInternal: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 1
|
||||||
|
m_Script: {fileID: 12019, guid: 0000000000000000e000000000000000, type: 0}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_AutoRepaintOnSceneChange: 0
|
||||||
|
m_MinSize: {x: 275, y: 50}
|
||||||
|
m_MaxSize: {x: 4000, y: 4000}
|
||||||
|
m_TitleContent:
|
||||||
|
m_Text: Inspector
|
||||||
|
m_Image: {fileID: -6905738622615590433, guid: 0000000000000000d000000000000000,
|
||||||
|
type: 0}
|
||||||
|
m_Tooltip:
|
||||||
|
m_DepthBufferBits: 0
|
||||||
|
m_Pos:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 2
|
||||||
|
y: 19
|
||||||
|
width: 401
|
||||||
|
height: 887
|
||||||
|
m_ScrollPosition: {x: 0, y: 0}
|
||||||
|
m_InspectorMode: 0
|
||||||
|
m_PreviewResizer:
|
||||||
|
m_CachedPref: -160
|
||||||
|
m_ControlHash: -371814159
|
||||||
|
m_PrefName: Preview_InspectorPreview
|
||||||
|
m_PreviewWindow: {fileID: 0}
|
||||||
|
--- !u!114 &14
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 52
|
||||||
|
m_PrefabParentObject: {fileID: 0}
|
||||||
|
m_PrefabInternal: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 1
|
||||||
|
m_Script: {fileID: 12014, guid: 0000000000000000e000000000000000, type: 0}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_AutoRepaintOnSceneChange: 0
|
||||||
|
m_MinSize: {x: 230, y: 250}
|
||||||
|
m_MaxSize: {x: 10000, y: 10000}
|
||||||
|
m_TitleContent:
|
||||||
|
m_Text: Project
|
||||||
|
m_Image: {fileID: -7501376956915960154, guid: 0000000000000000d000000000000000,
|
||||||
|
type: 0}
|
||||||
|
m_Tooltip:
|
||||||
|
m_DepthBufferBits: 0
|
||||||
|
m_Pos:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 2
|
||||||
|
y: 19
|
||||||
|
width: 286
|
||||||
|
height: 421
|
||||||
|
m_SearchFilter:
|
||||||
|
m_NameFilter:
|
||||||
|
m_ClassNames: []
|
||||||
|
m_AssetLabels: []
|
||||||
|
m_AssetBundleNames: []
|
||||||
|
m_VersionControlStates: []
|
||||||
|
m_ReferencingInstanceIDs:
|
||||||
|
m_ScenePaths: []
|
||||||
|
m_ShowAllHits: 0
|
||||||
|
m_SearchArea: 0
|
||||||
|
m_Folders:
|
||||||
|
- Assets
|
||||||
|
m_ViewMode: 0
|
||||||
|
m_StartGridSize: 64
|
||||||
|
m_LastFolders:
|
||||||
|
- Assets
|
||||||
|
m_LastFoldersGridSize: -1
|
||||||
|
m_LastProjectPath: /Users/danielbrauer/Unity Projects/New Unity Project 47
|
||||||
|
m_IsLocked: 0
|
||||||
|
m_FolderTreeState:
|
||||||
|
scrollPos: {x: 0, y: 0}
|
||||||
|
m_SelectedIDs: ee240000
|
||||||
|
m_LastClickedID: 9454
|
||||||
|
m_ExpandedIDs: ee24000000ca9a3bffffff7f
|
||||||
|
m_RenameOverlay:
|
||||||
|
m_UserAcceptedRename: 0
|
||||||
|
m_Name:
|
||||||
|
m_OriginalName:
|
||||||
|
m_EditFieldRect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
width: 0
|
||||||
|
height: 0
|
||||||
|
m_UserData: 0
|
||||||
|
m_IsWaitingForDelay: 0
|
||||||
|
m_IsRenaming: 0
|
||||||
|
m_OriginalEventType: 11
|
||||||
|
m_IsRenamingFilename: 1
|
||||||
|
m_ClientGUIView: {fileID: 0}
|
||||||
|
m_SearchString:
|
||||||
|
m_CreateAssetUtility:
|
||||||
|
m_EndAction: {fileID: 0}
|
||||||
|
m_InstanceID: 0
|
||||||
|
m_Path:
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_ResourceFile:
|
||||||
|
m_AssetTreeState:
|
||||||
|
scrollPos: {x: 0, y: 0}
|
||||||
|
m_SelectedIDs: 68fbffff
|
||||||
|
m_LastClickedID: 0
|
||||||
|
m_ExpandedIDs: ee240000
|
||||||
|
m_RenameOverlay:
|
||||||
|
m_UserAcceptedRename: 0
|
||||||
|
m_Name:
|
||||||
|
m_OriginalName:
|
||||||
|
m_EditFieldRect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
width: 0
|
||||||
|
height: 0
|
||||||
|
m_UserData: 0
|
||||||
|
m_IsWaitingForDelay: 0
|
||||||
|
m_IsRenaming: 0
|
||||||
|
m_OriginalEventType: 11
|
||||||
|
m_IsRenamingFilename: 1
|
||||||
|
m_ClientGUIView: {fileID: 0}
|
||||||
|
m_SearchString:
|
||||||
|
m_CreateAssetUtility:
|
||||||
|
m_EndAction: {fileID: 0}
|
||||||
|
m_InstanceID: 0
|
||||||
|
m_Path:
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_ResourceFile:
|
||||||
|
m_ListAreaState:
|
||||||
|
m_SelectedInstanceIDs: 68fbffff
|
||||||
|
m_LastClickedInstanceID: -1176
|
||||||
|
m_HadKeyboardFocusLastEvent: 0
|
||||||
|
m_ExpandedInstanceIDs: c6230000
|
||||||
|
m_RenameOverlay:
|
||||||
|
m_UserAcceptedRename: 0
|
||||||
|
m_Name:
|
||||||
|
m_OriginalName:
|
||||||
|
m_EditFieldRect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
width: 0
|
||||||
|
height: 0
|
||||||
|
m_UserData: 0
|
||||||
|
m_IsWaitingForDelay: 0
|
||||||
|
m_IsRenaming: 0
|
||||||
|
m_OriginalEventType: 11
|
||||||
|
m_IsRenamingFilename: 1
|
||||||
|
m_ClientGUIView: {fileID: 0}
|
||||||
|
m_CreateAssetUtility:
|
||||||
|
m_EndAction: {fileID: 0}
|
||||||
|
m_InstanceID: 0
|
||||||
|
m_Path:
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_ResourceFile:
|
||||||
|
m_NewAssetIndexInList: -1
|
||||||
|
m_ScrollPosition: {x: 0, y: 0}
|
||||||
|
m_GridSize: 64
|
||||||
|
m_DirectoriesAreaWidth: 110
|
||||||
|
--- !u!114 &15
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 52
|
||||||
|
m_PrefabParentObject: {fileID: 0}
|
||||||
|
m_PrefabInternal: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 1
|
||||||
|
m_Script: {fileID: 12015, guid: 0000000000000000e000000000000000, type: 0}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_AutoRepaintOnSceneChange: 1
|
||||||
|
m_MinSize: {x: 200, y: 200}
|
||||||
|
m_MaxSize: {x: 4000, y: 4000}
|
||||||
|
m_TitleContent:
|
||||||
|
m_Text: Game
|
||||||
|
m_Image: {fileID: -2087823869225018852, guid: 0000000000000000d000000000000000,
|
||||||
|
type: 0}
|
||||||
|
m_Tooltip:
|
||||||
|
m_DepthBufferBits: 32
|
||||||
|
m_Pos:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 0
|
||||||
|
y: 19
|
||||||
|
width: 971
|
||||||
|
height: 421
|
||||||
|
m_MaximizeOnPlay: 0
|
||||||
|
m_Gizmos: 0
|
||||||
|
m_Stats: 0
|
||||||
|
m_SelectedSizes: 00000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
m_TargetDisplay: 0
|
||||||
|
m_ZoomArea:
|
||||||
|
m_HRangeLocked: 0
|
||||||
|
m_VRangeLocked: 0
|
||||||
|
m_HBaseRangeMin: -242.75
|
||||||
|
m_HBaseRangeMax: 242.75
|
||||||
|
m_VBaseRangeMin: -101
|
||||||
|
m_VBaseRangeMax: 101
|
||||||
|
m_HAllowExceedBaseRangeMin: 1
|
||||||
|
m_HAllowExceedBaseRangeMax: 1
|
||||||
|
m_VAllowExceedBaseRangeMin: 1
|
||||||
|
m_VAllowExceedBaseRangeMax: 1
|
||||||
|
m_ScaleWithWindow: 0
|
||||||
|
m_HSlider: 0
|
||||||
|
m_VSlider: 0
|
||||||
|
m_IgnoreScrollWheelUntilClicked: 0
|
||||||
|
m_EnableMouseInput: 1
|
||||||
|
m_EnableSliderZoom: 0
|
||||||
|
m_UniformScale: 1
|
||||||
|
m_UpDirection: 1
|
||||||
|
m_DrawArea:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 0
|
||||||
|
y: 17
|
||||||
|
width: 971
|
||||||
|
height: 404
|
||||||
|
m_Scale: {x: 2, y: 2}
|
||||||
|
m_Translation: {x: 485.5, y: 202}
|
||||||
|
m_MarginLeft: 0
|
||||||
|
m_MarginRight: 0
|
||||||
|
m_MarginTop: 0
|
||||||
|
m_MarginBottom: 0
|
||||||
|
m_LastShownAreaInsideMargins:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: -242.75
|
||||||
|
y: -101
|
||||||
|
width: 485.5
|
||||||
|
height: 202
|
||||||
|
m_MinimalGUI: 1
|
||||||
|
m_defaultScale: 2
|
||||||
|
m_TargetTexture: {fileID: 0}
|
||||||
|
m_CurrentColorSpace: 0
|
||||||
|
m_LastWindowPixelSize: {x: 1942, y: 842}
|
||||||
|
m_ClearInEditMode: 1
|
||||||
|
m_NoCameraWarning: 1
|
||||||
|
m_LowResolutionForAspectRatios: 01000000000100000100
|
||||||
|
--- !u!114 &16
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 52
|
||||||
|
m_PrefabParentObject: {fileID: 0}
|
||||||
|
m_PrefabInternal: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 1
|
||||||
|
m_Script: {fileID: 12013, guid: 0000000000000000e000000000000000, type: 0}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_AutoRepaintOnSceneChange: 1
|
||||||
|
m_MinSize: {x: 200, y: 200}
|
||||||
|
m_MaxSize: {x: 4000, y: 4000}
|
||||||
|
m_TitleContent:
|
||||||
|
m_Text: Scene
|
||||||
|
m_Image: {fileID: 2318424515335265636, guid: 0000000000000000d000000000000000,
|
||||||
|
type: 0}
|
||||||
|
m_Tooltip:
|
||||||
|
m_DepthBufferBits: 32
|
||||||
|
m_Pos:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 0
|
||||||
|
y: 19
|
||||||
|
width: 971
|
||||||
|
height: 445
|
||||||
|
m_SceneLighting: 1
|
||||||
|
lastFramingTime: 0
|
||||||
|
m_2DMode: 0
|
||||||
|
m_isRotationLocked: 0
|
||||||
|
m_AudioPlay: 0
|
||||||
|
m_Position:
|
||||||
|
m_Target: {x: 0, y: 0, z: 0}
|
||||||
|
speed: 2
|
||||||
|
m_Value: {x: 0, y: 0, z: 0}
|
||||||
|
m_RenderMode: 0
|
||||||
|
m_ValidateTrueMetals: 0
|
||||||
|
m_SceneViewState:
|
||||||
|
showFog: 1
|
||||||
|
showMaterialUpdate: 0
|
||||||
|
showSkybox: 1
|
||||||
|
showFlares: 1
|
||||||
|
showImageEffects: 1
|
||||||
|
grid:
|
||||||
|
xGrid:
|
||||||
|
m_Target: 0
|
||||||
|
speed: 2
|
||||||
|
m_Value: 0
|
||||||
|
yGrid:
|
||||||
|
m_Target: 1
|
||||||
|
speed: 2
|
||||||
|
m_Value: 1
|
||||||
|
zGrid:
|
||||||
|
m_Target: 0
|
||||||
|
speed: 2
|
||||||
|
m_Value: 0
|
||||||
|
m_Rotation:
|
||||||
|
m_Target: {x: -0.08717229, y: 0.89959055, z: -0.21045254, w: -0.3726226}
|
||||||
|
speed: 2
|
||||||
|
m_Value: {x: -0.08717229, y: 0.89959055, z: -0.21045254, w: -0.3726226}
|
||||||
|
m_Size:
|
||||||
|
m_Target: 10
|
||||||
|
speed: 2
|
||||||
|
m_Value: 10
|
||||||
|
m_Ortho:
|
||||||
|
m_Target: 0
|
||||||
|
speed: 2
|
||||||
|
m_Value: 0
|
||||||
|
m_LastSceneViewRotation: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
m_LastSceneViewOrtho: 0
|
||||||
|
m_ReplacementShader: {fileID: 0}
|
||||||
|
m_ReplacementString:
|
||||||
|
m_LastLockedObject: {fileID: 0}
|
||||||
|
m_ViewIsLockedToObject: 0
|
||||||
|
--- !u!114 &17
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 52
|
||||||
|
m_PrefabParentObject: {fileID: 0}
|
||||||
|
m_PrefabInternal: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 1
|
||||||
|
m_Script: {fileID: 12061, guid: 0000000000000000e000000000000000, type: 0}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_AutoRepaintOnSceneChange: 0
|
||||||
|
m_MinSize: {x: 200, y: 200}
|
||||||
|
m_MaxSize: {x: 4000, y: 4000}
|
||||||
|
m_TitleContent:
|
||||||
|
m_Text: Hierarchy
|
||||||
|
m_Image: {fileID: -590624980919486359, guid: 0000000000000000d000000000000000,
|
||||||
|
type: 0}
|
||||||
|
m_Tooltip:
|
||||||
|
m_DepthBufferBits: 0
|
||||||
|
m_Pos:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 2
|
||||||
|
y: 19
|
||||||
|
width: 286
|
||||||
|
height: 445
|
||||||
|
m_TreeViewState:
|
||||||
|
scrollPos: {x: 0, y: 0}
|
||||||
|
m_SelectedIDs: 68fbffff
|
||||||
|
m_LastClickedID: -1176
|
||||||
|
m_ExpandedIDs: 7efbffff00000000
|
||||||
|
m_RenameOverlay:
|
||||||
|
m_UserAcceptedRename: 0
|
||||||
|
m_Name:
|
||||||
|
m_OriginalName:
|
||||||
|
m_EditFieldRect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
width: 0
|
||||||
|
height: 0
|
||||||
|
m_UserData: 0
|
||||||
|
m_IsWaitingForDelay: 0
|
||||||
|
m_IsRenaming: 0
|
||||||
|
m_OriginalEventType: 11
|
||||||
|
m_IsRenamingFilename: 0
|
||||||
|
m_ClientGUIView: {fileID: 0}
|
||||||
|
m_SearchString:
|
||||||
|
m_ExpandedScenes:
|
||||||
|
-
|
||||||
|
m_CurrenRootInstanceID: 0
|
||||||
|
m_Locked: 0
|
||||||
|
m_CurrentSortingName: TransformSorting
|
||||||
8
Assets/TutorialInfo/Layout.wlt.meta
Normal file
8
Assets/TutorialInfo/Layout.wlt.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: eabc9546105bf4accac1fd62a63e88e6
|
||||||
|
timeCreated: 1487337779
|
||||||
|
licenseType: Store
|
||||||
|
DefaultImporter:
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
9
Assets/TutorialInfo/Scripts.meta
Normal file
9
Assets/TutorialInfo/Scripts.meta
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 5a9bcd70e6a4b4b05badaa72e827d8e0
|
||||||
|
folderAsset: yes
|
||||||
|
timeCreated: 1475835190
|
||||||
|
licenseType: Store
|
||||||
|
DefaultImporter:
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
9
Assets/TutorialInfo/Scripts/Editor.meta
Normal file
9
Assets/TutorialInfo/Scripts/Editor.meta
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 3ad9b87dffba344c89909c6d1b1c17e1
|
||||||
|
folderAsset: yes
|
||||||
|
timeCreated: 1475593892
|
||||||
|
licenseType: Store
|
||||||
|
DefaultImporter:
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
242
Assets/TutorialInfo/Scripts/Editor/ReadmeEditor.cs
Normal file
242
Assets/TutorialInfo/Scripts/Editor/ReadmeEditor.cs
Normal file
@@ -0,0 +1,242 @@
|
|||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEditor;
|
||||||
|
using System;
|
||||||
|
using System.IO;
|
||||||
|
using System.Reflection;
|
||||||
|
|
||||||
|
[CustomEditor(typeof(Readme))]
|
||||||
|
[InitializeOnLoad]
|
||||||
|
public class ReadmeEditor : Editor
|
||||||
|
{
|
||||||
|
static string s_ShowedReadmeSessionStateName = "ReadmeEditor.showedReadme";
|
||||||
|
|
||||||
|
static string s_ReadmeSourceDirectory = "Assets/TutorialInfo";
|
||||||
|
|
||||||
|
const float k_Space = 16f;
|
||||||
|
|
||||||
|
static ReadmeEditor()
|
||||||
|
{
|
||||||
|
EditorApplication.delayCall += SelectReadmeAutomatically;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void RemoveTutorial()
|
||||||
|
{
|
||||||
|
if (EditorUtility.DisplayDialog("Remove Readme Assets",
|
||||||
|
|
||||||
|
$"All contents under {s_ReadmeSourceDirectory} will be removed, are you sure you want to proceed?",
|
||||||
|
"Proceed",
|
||||||
|
"Cancel"))
|
||||||
|
{
|
||||||
|
if (Directory.Exists(s_ReadmeSourceDirectory))
|
||||||
|
{
|
||||||
|
FileUtil.DeleteFileOrDirectory(s_ReadmeSourceDirectory);
|
||||||
|
FileUtil.DeleteFileOrDirectory(s_ReadmeSourceDirectory + ".meta");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Debug.Log($"Could not find the Readme folder at {s_ReadmeSourceDirectory}");
|
||||||
|
}
|
||||||
|
|
||||||
|
var readmeAsset = SelectReadme();
|
||||||
|
if (readmeAsset != null)
|
||||||
|
{
|
||||||
|
var path = AssetDatabase.GetAssetPath(readmeAsset);
|
||||||
|
FileUtil.DeleteFileOrDirectory(path + ".meta");
|
||||||
|
FileUtil.DeleteFileOrDirectory(path);
|
||||||
|
}
|
||||||
|
|
||||||
|
AssetDatabase.Refresh();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void SelectReadmeAutomatically()
|
||||||
|
{
|
||||||
|
if (!SessionState.GetBool(s_ShowedReadmeSessionStateName, false))
|
||||||
|
{
|
||||||
|
var readme = SelectReadme();
|
||||||
|
SessionState.SetBool(s_ShowedReadmeSessionStateName, true);
|
||||||
|
|
||||||
|
if (readme && !readme.loadedLayout)
|
||||||
|
{
|
||||||
|
LoadLayout();
|
||||||
|
readme.loadedLayout = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void LoadLayout()
|
||||||
|
{
|
||||||
|
var assembly = typeof(EditorApplication).Assembly;
|
||||||
|
var windowLayoutType = assembly.GetType("UnityEditor.WindowLayout", true);
|
||||||
|
var method = windowLayoutType.GetMethod("LoadWindowLayout", BindingFlags.Public | BindingFlags.Static);
|
||||||
|
method.Invoke(null, new object[] { Path.Combine(Application.dataPath, "TutorialInfo/Layout.wlt"), false });
|
||||||
|
}
|
||||||
|
|
||||||
|
static Readme SelectReadme()
|
||||||
|
{
|
||||||
|
var ids = AssetDatabase.FindAssets("Readme t:Readme");
|
||||||
|
if (ids.Length == 1)
|
||||||
|
{
|
||||||
|
var readmeObject = AssetDatabase.LoadMainAssetAtPath(AssetDatabase.GUIDToAssetPath(ids[0]));
|
||||||
|
|
||||||
|
Selection.objects = new UnityEngine.Object[] { readmeObject };
|
||||||
|
|
||||||
|
return (Readme)readmeObject;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Debug.Log("Couldn't find a readme");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void OnHeaderGUI()
|
||||||
|
{
|
||||||
|
var readme = (Readme)target;
|
||||||
|
Init();
|
||||||
|
|
||||||
|
var iconWidth = Mathf.Min(EditorGUIUtility.currentViewWidth / 3f - 20f, 128f);
|
||||||
|
|
||||||
|
GUILayout.BeginHorizontal("In BigTitle");
|
||||||
|
{
|
||||||
|
if (readme.icon != null)
|
||||||
|
{
|
||||||
|
GUILayout.Space(k_Space);
|
||||||
|
GUILayout.Label(readme.icon, GUILayout.Width(iconWidth), GUILayout.Height(iconWidth));
|
||||||
|
}
|
||||||
|
GUILayout.Space(k_Space);
|
||||||
|
GUILayout.BeginVertical();
|
||||||
|
{
|
||||||
|
|
||||||
|
GUILayout.FlexibleSpace();
|
||||||
|
GUILayout.Label(readme.title, TitleStyle);
|
||||||
|
GUILayout.FlexibleSpace();
|
||||||
|
}
|
||||||
|
GUILayout.EndVertical();
|
||||||
|
GUILayout.FlexibleSpace();
|
||||||
|
}
|
||||||
|
GUILayout.EndHorizontal();
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void OnInspectorGUI()
|
||||||
|
{
|
||||||
|
var readme = (Readme)target;
|
||||||
|
Init();
|
||||||
|
|
||||||
|
foreach (var section in readme.sections)
|
||||||
|
{
|
||||||
|
if (!string.IsNullOrEmpty(section.heading))
|
||||||
|
{
|
||||||
|
GUILayout.Label(section.heading, HeadingStyle);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(section.text))
|
||||||
|
{
|
||||||
|
GUILayout.Label(section.text, BodyStyle);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(section.linkText))
|
||||||
|
{
|
||||||
|
if (LinkLabel(new GUIContent(section.linkText)))
|
||||||
|
{
|
||||||
|
Application.OpenURL(section.url);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
GUILayout.Space(k_Space);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (GUILayout.Button("Remove Readme Assets", ButtonStyle))
|
||||||
|
{
|
||||||
|
RemoveTutorial();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool m_Initialized;
|
||||||
|
|
||||||
|
GUIStyle LinkStyle
|
||||||
|
{
|
||||||
|
get { return m_LinkStyle; }
|
||||||
|
}
|
||||||
|
|
||||||
|
[SerializeField]
|
||||||
|
GUIStyle m_LinkStyle;
|
||||||
|
|
||||||
|
GUIStyle TitleStyle
|
||||||
|
{
|
||||||
|
get { return m_TitleStyle; }
|
||||||
|
}
|
||||||
|
|
||||||
|
[SerializeField]
|
||||||
|
GUIStyle m_TitleStyle;
|
||||||
|
|
||||||
|
GUIStyle HeadingStyle
|
||||||
|
{
|
||||||
|
get { return m_HeadingStyle; }
|
||||||
|
}
|
||||||
|
|
||||||
|
[SerializeField]
|
||||||
|
GUIStyle m_HeadingStyle;
|
||||||
|
|
||||||
|
GUIStyle BodyStyle
|
||||||
|
{
|
||||||
|
get { return m_BodyStyle; }
|
||||||
|
}
|
||||||
|
|
||||||
|
[SerializeField]
|
||||||
|
GUIStyle m_BodyStyle;
|
||||||
|
|
||||||
|
GUIStyle ButtonStyle
|
||||||
|
{
|
||||||
|
get { return m_ButtonStyle; }
|
||||||
|
}
|
||||||
|
|
||||||
|
[SerializeField]
|
||||||
|
GUIStyle m_ButtonStyle;
|
||||||
|
|
||||||
|
void Init()
|
||||||
|
{
|
||||||
|
if (m_Initialized)
|
||||||
|
return;
|
||||||
|
m_BodyStyle = new GUIStyle(EditorStyles.label);
|
||||||
|
m_BodyStyle.wordWrap = true;
|
||||||
|
m_BodyStyle.fontSize = 14;
|
||||||
|
m_BodyStyle.richText = true;
|
||||||
|
|
||||||
|
m_TitleStyle = new GUIStyle(m_BodyStyle);
|
||||||
|
m_TitleStyle.fontSize = 26;
|
||||||
|
|
||||||
|
m_HeadingStyle = new GUIStyle(m_BodyStyle);
|
||||||
|
m_HeadingStyle.fontStyle = FontStyle.Bold;
|
||||||
|
m_HeadingStyle.fontSize = 18;
|
||||||
|
|
||||||
|
m_LinkStyle = new GUIStyle(m_BodyStyle);
|
||||||
|
m_LinkStyle.wordWrap = false;
|
||||||
|
|
||||||
|
// Match selection color which works nicely for both light and dark skins
|
||||||
|
m_LinkStyle.normal.textColor = new Color(0x00 / 255f, 0x78 / 255f, 0xDA / 255f, 1f);
|
||||||
|
m_LinkStyle.stretchWidth = false;
|
||||||
|
|
||||||
|
m_ButtonStyle = new GUIStyle(EditorStyles.miniButton);
|
||||||
|
m_ButtonStyle.fontStyle = FontStyle.Bold;
|
||||||
|
|
||||||
|
m_Initialized = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool LinkLabel(GUIContent label, params GUILayoutOption[] options)
|
||||||
|
{
|
||||||
|
var position = GUILayoutUtility.GetRect(label, LinkStyle, options);
|
||||||
|
|
||||||
|
Handles.BeginGUI();
|
||||||
|
Handles.color = LinkStyle.normal.textColor;
|
||||||
|
Handles.DrawLine(new Vector3(position.xMin, position.yMax), new Vector3(position.xMax, position.yMax));
|
||||||
|
Handles.color = Color.white;
|
||||||
|
Handles.EndGUI();
|
||||||
|
|
||||||
|
EditorGUIUtility.AddCursorRect(position, MouseCursor.Link);
|
||||||
|
|
||||||
|
return GUI.Button(position, label, LinkStyle);
|
||||||
|
}
|
||||||
|
}
|
||||||
12
Assets/TutorialInfo/Scripts/Editor/ReadmeEditor.cs.meta
Normal file
12
Assets/TutorialInfo/Scripts/Editor/ReadmeEditor.cs.meta
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 476cc7d7cd9874016adc216baab94a0a
|
||||||
|
timeCreated: 1484146680
|
||||||
|
licenseType: Store
|
||||||
|
MonoImporter:
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
16
Assets/TutorialInfo/Scripts/Readme.cs
Normal file
16
Assets/TutorialInfo/Scripts/Readme.cs
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
using System;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
public class Readme : ScriptableObject
|
||||||
|
{
|
||||||
|
public Texture2D icon;
|
||||||
|
public string title;
|
||||||
|
public Section[] sections;
|
||||||
|
public bool loadedLayout;
|
||||||
|
|
||||||
|
[Serializable]
|
||||||
|
public class Section
|
||||||
|
{
|
||||||
|
public string heading, text, linkText, url;
|
||||||
|
}
|
||||||
|
}
|
||||||
12
Assets/TutorialInfo/Scripts/Readme.cs.meta
Normal file
12
Assets/TutorialInfo/Scripts/Readme.cs.meta
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: fcf7219bab7fe46a1ad266029b2fee19
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences:
|
||||||
|
- icon: {instanceID: 0}
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {fileID: 2800000, guid: a186f8a87ca4f4d3aa864638ad5dfb65, type: 3}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
8
Assets/UnityTestClient.meta
Normal file
8
Assets/UnityTestClient.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 73fe4270e4fe45e4595beed20ffade02
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
675
Assets/UnityTestClient/UnityTestClient.cs
Normal file
675
Assets/UnityTestClient/UnityTestClient.cs
Normal file
@@ -0,0 +1,675 @@
|
|||||||
|
/*
|
||||||
|
╔══════════════════════════════════════════════════════════════════════════════════════════════════════════════╗
|
||||||
|
║ ║
|
||||||
|
║ GEOSUS UNITY TEST CLIENT - KOMPLETNÍ PRŮVODCE ║
|
||||||
|
║ ║
|
||||||
|
║ Tento soubor je součástí testovacího klienta pro hru GeoSus - multiplayer GPS hru inspirovanou ║
|
||||||
|
║ hrou Among Us. Tento klient slouží jako referenční implementace pro studenty, kteří chtějí ║
|
||||||
|
║ postavit vlastní hru na základě GeoSus serveru. ║
|
||||||
|
║ ║
|
||||||
|
╠══════════════════════════════════════════════════════════════════════════════════════════════════════════════╣
|
||||||
|
║ ║
|
||||||
|
║ 📚 OBSAH DOKUMENTACE: ║
|
||||||
|
║ ═══════════════════ ║
|
||||||
|
║ ║
|
||||||
|
║ 1. ARCHITEKTURA APLIKACE ║
|
||||||
|
║ 2. SÍŤOVÁ KOMUNIKACE ║
|
||||||
|
║ 3. HERNÍ LOGIKA ║
|
||||||
|
║ 4. UŽIVATELSKÉ ROZHRANÍ ║
|
||||||
|
║ 5. VYKRESLOVÁNÍ MAPY ║
|
||||||
|
║ 6. STATISTIKY HRÁČŮ ║
|
||||||
|
║ ║
|
||||||
|
╠══════════════════════════════════════════════════════════════════════════════════════════════════════════════╣
|
||||||
|
║ ║
|
||||||
|
║ 📁 STRUKTURA SOUBORŮ: ║
|
||||||
|
║ ═════════════════════ ║
|
||||||
|
║ ║
|
||||||
|
║ UnityTestClient_Main.cs - Hlavní třída, inicializace, herní smyčka ║
|
||||||
|
║ UnityTestClient_Network.cs - Síťová komunikace, zpracování zpráv ║
|
||||||
|
║ UnityTestClient_UI.cs - Veškeré uživatelské rozhraní (IMGUI) ║
|
||||||
|
║ UnityTestClient_Map.cs - Vykreslování mapy pomocí 3D objektů ║
|
||||||
|
║ UnityTestClient_Game.cs - Herní mechaniky (pohyb, tasky, sabotáže) ║
|
||||||
|
║ UnityTestClient_Stats.cs - HTTP API pro statistiky hráčů ║
|
||||||
|
║ ║
|
||||||
|
╠══════════════════════════════════════════════════════════════════════════════════════════════════════════════╣
|
||||||
|
║ ║
|
||||||
|
║ 🎮 1. ARCHITEKTURA APLIKACE ║
|
||||||
|
║ ═══════════════════════════ ║
|
||||||
|
║ ║
|
||||||
|
║ Aplikace používá PARTIAL CLASS pattern - všechny soubory definují stejnou třídu ║
|
||||||
|
║ UnityTestClient, která dědí z MonoBehaviour. Unity je automaticky spojí dohromady. ║
|
||||||
|
║ ║
|
||||||
|
║ Hlavní herní stavy (AppState): ║
|
||||||
|
║ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ║
|
||||||
|
║ │ MainMenu │───▶│ Lobby │───▶│ Loading │───▶│ InGame │ ║
|
||||||
|
║ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘ ║
|
||||||
|
║ │ │ │ ║
|
||||||
|
║ │ │ ▼ ║
|
||||||
|
║ │ │ ┌─────────────┐ ║
|
||||||
|
║ │ │ │ Meeting │ ║
|
||||||
|
║ │ │ └─────────────┘ ║
|
||||||
|
║ │ │ │ ║
|
||||||
|
║ ▼ ▼ ▼ ║
|
||||||
|
║ ┌─────────────────────────────────────────────────────────────────────┐ ║
|
||||||
|
║ │ GameEnded │ ║
|
||||||
|
║ └─────────────────────────────────────────────────────────────────────┘ ║
|
||||||
|
║ ║
|
||||||
|
╠══════════════════════════════════════════════════════════════════════════════════════════════════════════════╣
|
||||||
|
║ ║
|
||||||
|
║ 🌐 2. SÍŤOVÁ KOMUNIKACE ║
|
||||||
|
║ ═══════════════════════ ║
|
||||||
|
║ ║
|
||||||
|
║ Komunikace probíhá přes TCP socket s AES-256 šifrováním. ║
|
||||||
|
║ ║
|
||||||
|
║ Handshake proces: ║
|
||||||
|
║ 1. Klient posílá ClientHello s UUID a jménem ║
|
||||||
|
║ 2. Server odpovídá ServerHello s RSA veřejným klíčem ║
|
||||||
|
║ 3. Klient generuje AES klíč, zašifruje ho RSA a pošle KeyExchange ║
|
||||||
|
║ 4. Server potvrdí KeyExchangeAck - od teď je vše šifrované AES ║
|
||||||
|
║ ║
|
||||||
|
║ Formát zpráv: ║
|
||||||
|
║ ┌────────────┬──────────────────────────────────────────┐ ║
|
||||||
|
║ │ 4 bajty │ N bajtů │ ║
|
||||||
|
║ │ (délka) │ (JSON data, po handshake šifrovaná AES) │ ║
|
||||||
|
║ └────────────┴──────────────────────────────────────────┘ ║
|
||||||
|
║ ║
|
||||||
|
║ Důležité typy zpráv: ║
|
||||||
|
║ • CreateLobby/JoinLobby - vytvoření/připojení do lobby ║
|
||||||
|
║ • StartGame - spuštění hry (pouze owner) ║
|
||||||
|
║ • UpdatePosition - aktualizace pozice hráče ║
|
||||||
|
║ • KillAttempt - pokus o zabití (pouze impostor) ║
|
||||||
|
║ • ReportBody/CallEmergencyMeeting - svolání schůze ║
|
||||||
|
║ • CastVote - hlasování ║
|
||||||
|
║ • CompleteTask - dokončení úkolu (server validuje pozici) ║
|
||||||
|
║ • StartSabotage - spuštění sabotáže (pouze impostor) ║
|
||||||
|
║ • ActivateRepairStation - oprava sabotáže ║
|
||||||
|
║ ║
|
||||||
|
╠══════════════════════════════════════════════════════════════════════════════════════════════════════════════╣
|
||||||
|
║ ║
|
||||||
|
║ 🎯 3. HERNÍ LOGIKA ║
|
||||||
|
║ ═════════════════ ║
|
||||||
|
║ ║
|
||||||
|
║ Role hráčů: ║
|
||||||
|
║ • Crew (posádka) - plní úkoly, hlasuje, reportuje těla ║
|
||||||
|
║ • Impostor - zabíjí, sabotuje, předstírá plnění úkolů ║
|
||||||
|
║ ║
|
||||||
|
║ Herní fáze (GamePhase): ║
|
||||||
|
║ • Lobby - čekání na hráče, nastavení hry ║
|
||||||
|
║ • Loading - načítání mapových dat z Overpass API ║
|
||||||
|
║ • Playing - hlavní herní fáze ║
|
||||||
|
║ • Meeting - diskuze před hlasováním ║
|
||||||
|
║ • Voting - hlasování o vyloučení ║
|
||||||
|
║ • Ended - konec hry ║
|
||||||
|
║ ║
|
||||||
|
║ Typy úkolů: ║
|
||||||
|
║ • Všechny úkoly jsou INSTANT - stačí přijít na místo a stisknout USE ║
|
||||||
|
║ • Server validuje pozici hráče (musí být do 5m od úkolu) ║
|
||||||
|
║ • Duchové (mrtví crew) mohou také plnit úkoly ║
|
||||||
|
║ ║
|
||||||
|
║ Sabotáže (SabotageType): ║
|
||||||
|
║ • CommsBlackout - blokuje reporty a emergency meetings, 1 opravná stanice ║
|
||||||
|
║ • CriticalMeltdown - časový limit, 2 stanice musí opravovat současně ║
|
||||||
|
║ ║
|
||||||
|
╠══════════════════════════════════════════════════════════════════════════════════════════════════════════════╣
|
||||||
|
║ ║
|
||||||
|
║ 🖥️ 4. UŽIVATELSKÉ ROZHRANÍ ║
|
||||||
|
║ ═══════════════════════════ ║
|
||||||
|
║ ║
|
||||||
|
║ UI používá Unity IMGUI (OnGUI) pro jednoduchost a přenositelnost. ║
|
||||||
|
║ Pro produkční hru doporučujeme použít Unity UI (Canvas) nebo UI Toolkit. ║
|
||||||
|
║ ║
|
||||||
|
║ Škálování UI: ║
|
||||||
|
║ • Používáme relativní jednotky (procenta obrazovky) ║
|
||||||
|
║ • GUI.matrix pro globální škálování ║
|
||||||
|
║ • Responzivní layout pomocí GUILayout ║
|
||||||
|
║ ║
|
||||||
|
║ Hlavní obrazovky: ║
|
||||||
|
║ • MainMenu - připojení, vytvoření lobby, statistiky ║
|
||||||
|
║ • Lobby - seznam hráčů, nastavení, chat ║
|
||||||
|
║ • HUD - role, úkoly, minimap, sabotáže ║
|
||||||
|
║ • Meeting - hlasovací panel, timer ║
|
||||||
|
║ • GameEnd - výsledky, statistiky ║
|
||||||
|
║ ║
|
||||||
|
╠══════════════════════════════════════════════════════════════════════════════════════════════════════════════╣
|
||||||
|
║ ║
|
||||||
|
║ 🗺️ 5. VYKRESLOVÁNÍ MAPY ║
|
||||||
|
║ ═══════════════════════ ║
|
||||||
|
║ ║
|
||||||
|
║ Mapa se vykresluje pomocí 3D GameObjects v prostoru Unity: ║
|
||||||
|
║ ║
|
||||||
|
║ Převod GPS → Unity souřadnice: ║
|
||||||
|
║ • Střed mapy (playAreaCenter) = Vector3(0, 0, 0) ║
|
||||||
|
║ • 1 metr reálně = 1 Unity jednotka ║
|
||||||
|
║ • Latitude → Z osa, Longitude → X osa ║
|
||||||
|
║ ║
|
||||||
|
║ Vrstvy mapy (od spodu): ║
|
||||||
|
║ 1. Podklad (zelená plocha) - Y = 0 ║
|
||||||
|
║ 2. Oblasti (parky, voda) - Y = 0.01 ║
|
||||||
|
║ 3. Cesty - Y = 0.02 ║
|
||||||
|
║ 4. Budovy - Y = 0 až výška budovy ║
|
||||||
|
║ 5. POI markery - Y = 0.5 ║
|
||||||
|
║ 6. Hráči - Y = 1 ║
|
||||||
|
║ 7. Markery (úkoly, těla) - Y = 0.3 ║
|
||||||
|
║ ║
|
||||||
|
║ Dynamické objekty: ║
|
||||||
|
║ • Hráči - capsule s barvou podle stavu ║
|
||||||
|
║ • Těla - ležící kapsle ║
|
||||||
|
║ • Úkoly - žluté diamanty ║
|
||||||
|
║ • Opravné stanice - červené/zelené krychle ║
|
||||||
|
║ ║
|
||||||
|
╠══════════════════════════════════════════════════════════════════════════════════════════════════════════════╣
|
||||||
|
║ ║
|
||||||
|
║ 📊 6. STATISTIKY HRÁČŮ ║
|
||||||
|
║ ═══════════════════════ ║
|
||||||
|
║ ║
|
||||||
|
║ Server poskytuje HTTP REST API na portu 8088: ║
|
||||||
|
║ ║
|
||||||
|
║ GET /stats/{playerId} - statistiky konkrétního hráče ║
|
||||||
|
║ GET /leaderboard - žebříček hráčů ║
|
||||||
|
║ GET /health - stav serveru ║
|
||||||
|
║ ║
|
||||||
|
║ Statistiky zahrnují: ║
|
||||||
|
║ • Počet her, výher, proher ║
|
||||||
|
║ • Zabití, smrti, K/D ratio ║
|
||||||
|
║ • Dokončené úkoly ║
|
||||||
|
║ • Win rate jako impostor/crew ║
|
||||||
|
║ • Přesnost hlasování ║
|
||||||
|
║ ║
|
||||||
|
╠══════════════════════════════════════════════════════════════════════════════════════════════════════════════╣
|
||||||
|
║ ║
|
||||||
|
║ 🚀 JAK ZAČÍT: ║
|
||||||
|
║ ═════════════ ║
|
||||||
|
║ ║
|
||||||
|
║ 1. Přidejte VŠECHNY soubory UnityTestClient_*.cs do Unity projektu ║
|
||||||
|
║ 2. Přidejte ClientSDK (Protocol.cs, Encryption.cs, EventDispatcher.cs, GameClient.cs) ║
|
||||||
|
║ 3. Vytvořte prázdný GameObject a přidejte komponentu UnityTestClient ║
|
||||||
|
║ 4. Nastavte v Inspectoru serverHost a serverPort ║
|
||||||
|
║ 5. Spusťte server (dotnet run v Server/) ║
|
||||||
|
║ 6. Spusťte hru v Unity ║
|
||||||
|
║ ║
|
||||||
|
║ Pro vlastní hru: ║
|
||||||
|
║ • Nahraďte IMGUI za Unity UI Canvas ║
|
||||||
|
║ • Přidejte vlastní 3D modely místo primitivních tvarů ║
|
||||||
|
║ • Implementujte GPS pohyb místo WASD (Input.location) ║
|
||||||
|
║ • Přidejte zvuky, particle efekty, animace ║
|
||||||
|
║ ║
|
||||||
|
╠══════════════════════════════════════════════════════════════════════════════════════════════════════════════╣
|
||||||
|
║ ║
|
||||||
|
║ ⚠️ DŮLEŽITÉ POZNÁMKY: ║
|
||||||
|
║ ═════════════════════ ║
|
||||||
|
║ ║
|
||||||
|
║ • GameClient.Update() MUSÍ být volán každý frame pro zpracování síťových událostí ║
|
||||||
|
║ • Pozice hráče se odesílá automaticky každých 100ms ║
|
||||||
|
║ • Server má anti-cheat - příliš rychlý pohyb způsobí varování/kick ║
|
||||||
|
║ • Všechny herní akce (zabití, hlasování) validuje server ║
|
||||||
|
║ • MapData může být null pokud Overpass API není dostupné ║
|
||||||
|
║ ║
|
||||||
|
╚══════════════════════════════════════════════════════════════════════════════════════════════════════════════╝
|
||||||
|
*/
|
||||||
|
|
||||||
|
using UnityEngine;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using GeoSus.Client;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Hlavní třída Unity testovacího klienta pro GeoSus.
|
||||||
|
/// Tato partial třída obsahuje inicializaci, herní smyčku a správu stavů.
|
||||||
|
///
|
||||||
|
/// POUŽITÍ:
|
||||||
|
/// 1. Přidejte tento skript na prázdný GameObject
|
||||||
|
/// 2. Nastavte serverHost a serverPort v Inspectoru
|
||||||
|
/// 3. Spusťte hru
|
||||||
|
/// </summary>
|
||||||
|
public partial class UnityTestClient : MonoBehaviour
|
||||||
|
{
|
||||||
|
#region ═══════════════════════════════════════════════════════════════════
|
||||||
|
// KONFIGURACE SERVERU
|
||||||
|
// ════════════════════════════════════════════════════════════════════════
|
||||||
|
// Tyto hodnoty nastavte v Unity Inspectoru nebo zde přímo v kódu.
|
||||||
|
// ServerHost je IP adresa nebo hostname serveru.
|
||||||
|
// ServerPort je TCP port pro herní komunikaci (výchozí 7777).
|
||||||
|
// HttpPort je port pro REST API statistik (výchozí 8088).
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
[Header("Nastavení serveru")]
|
||||||
|
[Tooltip("IP adresa nebo hostname GeoSus serveru")]
|
||||||
|
public string serverHost = "127.0.0.1";
|
||||||
|
|
||||||
|
[Tooltip("TCP port pro herní komunikaci")]
|
||||||
|
public int serverPort = 7777;
|
||||||
|
|
||||||
|
[Tooltip("HTTP port pro statistiky API (ignorováno pokud useHttps=true)")]
|
||||||
|
public int httpPort = 8088;
|
||||||
|
|
||||||
|
[Tooltip("Použít HTTPS pro Stats API (pro produkční server)")]
|
||||||
|
public bool useHttps = false;
|
||||||
|
|
||||||
|
#region ═══════════════════════════════════════════════════════════════════
|
||||||
|
// HERNÍ STAVY
|
||||||
|
// ════════════════════════════════════════════════════════════════════════
|
||||||
|
// AppState určuje, která obrazovka se zobrazuje a jaká logika běží.
|
||||||
|
// Toto je KLIENTSKÝ stav, nezaměňovat s GamePhase ze serveru.
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Stav aplikace určující aktuální obrazovku.
|
||||||
|
/// MainMenu -> Lobby -> Loading -> InGame -> GameEnded
|
||||||
|
/// </summary>
|
||||||
|
public enum AppState
|
||||||
|
{
|
||||||
|
/// <summary>Hlavní menu - připojení, vytvoření/vstup do lobby</summary>
|
||||||
|
MainMenu,
|
||||||
|
/// <summary>V lobby - čekání na hráče, nastavení hry</summary>
|
||||||
|
Lobby,
|
||||||
|
/// <summary>Načítání - stahování mapových dat</summary>
|
||||||
|
Loading,
|
||||||
|
/// <summary>Ve hře - hlavní gameplay</summary>
|
||||||
|
InGame,
|
||||||
|
/// <summary>Konec hry - zobrazení výsledků</summary>
|
||||||
|
GameEnded
|
||||||
|
}
|
||||||
|
|
||||||
|
#region ═══════════════════════════════════════════════════════════════════
|
||||||
|
// HLAVNÍ PROMĚNNÉ
|
||||||
|
// ════════════════════════════════════════════════════════════════════════
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Aktuální stav aplikace (která obrazovka je aktivní)
|
||||||
|
/// </summary>
|
||||||
|
[HideInInspector]
|
||||||
|
public AppState currentState = AppState.MainMenu;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Instance herního klienta z ClientSDK.
|
||||||
|
/// Obsahuje veškerou síťovou logiku a herní data.
|
||||||
|
/// </summary>
|
||||||
|
protected GameClient client;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Unikátní ID tohoto klienta (generuje se při startu)
|
||||||
|
/// </summary>
|
||||||
|
protected string clientUuid;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Zobrazované jméno hráče
|
||||||
|
/// </summary>
|
||||||
|
protected string displayName = "Hráč";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Fronta notifikací k zobrazení na obrazovce
|
||||||
|
/// </summary>
|
||||||
|
protected Queue<NotificationData> notifications = new Queue<NotificationData>();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Aktuálně zobrazená notifikace (null = žádná)
|
||||||
|
/// </summary>
|
||||||
|
protected NotificationData currentNotification;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Čas konce zobrazení aktuální notifikace
|
||||||
|
/// </summary>
|
||||||
|
protected float notificationEndTime;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Chybová zpráva k zobrazení (null = žádná chyba)
|
||||||
|
/// </summary>
|
||||||
|
protected string errorMessage;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Čas zmizení chybové zprávy
|
||||||
|
/// </summary>
|
||||||
|
protected float errorMessageEndTime;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Hlavní herní kamera
|
||||||
|
/// </summary>
|
||||||
|
protected Camera playerCamera;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Výška kamery nad mapou
|
||||||
|
/// </summary>
|
||||||
|
protected float cameraHeight = 100f;
|
||||||
|
|
||||||
|
#region ═══════════════════════════════════════════════════════════════════
|
||||||
|
// DATOVÉ STRUKTURY
|
||||||
|
// ════════════════════════════════════════════════════════════════════════
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Struktura pro notifikaci na obrazovce
|
||||||
|
/// </summary>
|
||||||
|
protected struct NotificationData
|
||||||
|
{
|
||||||
|
/// <summary>Text notifikace</summary>
|
||||||
|
public string message;
|
||||||
|
/// <summary>Barva pozadí</summary>
|
||||||
|
public Color color;
|
||||||
|
/// <summary>Doba zobrazení v sekundách</summary>
|
||||||
|
public float duration;
|
||||||
|
/// <summary>Ikona (emoji nebo text)</summary>
|
||||||
|
public string icon;
|
||||||
|
}
|
||||||
|
|
||||||
|
#region ═══════════════════════════════════════════════════════════════════
|
||||||
|
// UNITY LIFECYCLE
|
||||||
|
// ════════════════════════════════════════════════════════════════════════
|
||||||
|
// Unity volá tyto metody automaticky:
|
||||||
|
// Awake() - při vytvoření objektu (před Start)
|
||||||
|
// Start() - před prvním Update
|
||||||
|
// Update() - každý frame
|
||||||
|
// OnDestroy() - při zničení objektu
|
||||||
|
// OnGUI() - pro vykreslení IMGUI (může být vícekrát za frame)
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Inicializace při vytvoření objektu.
|
||||||
|
/// Generujeme unikátní UUID pro tohoto klienta.
|
||||||
|
/// </summary>
|
||||||
|
void Awake()
|
||||||
|
{
|
||||||
|
// Generujeme unikátní ID klienta
|
||||||
|
// V produkční hře byste toto ukládali do PlayerPrefs
|
||||||
|
clientUuid = Guid.NewGuid().ToString("N").Substring(0, 8);
|
||||||
|
|
||||||
|
// Načteme uložené jméno hráče (pokud existuje)
|
||||||
|
displayName = PlayerPrefs.GetString("PlayerName", "Hráč" + UnityEngine.Random.Range(1, 999));
|
||||||
|
|
||||||
|
Debug.Log($"[GeoSus] Klient inicializován s UUID: {clientUuid}");
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Inicializace před prvním frame.
|
||||||
|
/// </summary>
|
||||||
|
void Start()
|
||||||
|
{
|
||||||
|
// Nastavení kamery pro top-down pohled
|
||||||
|
SetupCamera();
|
||||||
|
|
||||||
|
Debug.Log("[GeoSus] Test klient připraven");
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Hlavní herní smyčka - volá se každý frame.
|
||||||
|
/// DŮLEŽITÉ: Zde musíme volat client.Update() pro zpracování síťových událostí!
|
||||||
|
/// </summary>
|
||||||
|
void Update()
|
||||||
|
{
|
||||||
|
// ═══════════════════════════════════════════════════════════════════
|
||||||
|
// KRITICKÉ: Zpracování síťových událostí
|
||||||
|
// ═══════════════════════════════════════════════════════════════════
|
||||||
|
// GameClient používá EventDispatcher pro thread-safe přenos událostí
|
||||||
|
// ze síťového vlákna do hlavního Unity vlákna.
|
||||||
|
// BEZ TOHOTO VOLÁNÍ nebudete dostávat žádné události ze serveru!
|
||||||
|
if (client != null)
|
||||||
|
{
|
||||||
|
client.Update();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Zpracování vstupu podle aktuálního stavu
|
||||||
|
switch (currentState)
|
||||||
|
{
|
||||||
|
case AppState.InGame:
|
||||||
|
// Herní logika - pohyb, akce
|
||||||
|
HandlePlayerInput();
|
||||||
|
UpdateGameLogic();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Aktualizace notifikací
|
||||||
|
UpdateNotifications();
|
||||||
|
|
||||||
|
// Aktualizace herních objektů na mapě
|
||||||
|
if (currentState == AppState.InGame || currentState == AppState.Loading)
|
||||||
|
{
|
||||||
|
UpdateMapObjects();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Automatické obnovování statistik
|
||||||
|
UpdateStatsAutoRefresh();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Úklid při zničení objektu.
|
||||||
|
/// DŮLEŽITÉ: Vždy se odpojte od serveru při ukončení!
|
||||||
|
/// </summary>
|
||||||
|
void OnDestroy()
|
||||||
|
{
|
||||||
|
// Odpojení od serveru
|
||||||
|
if (client != null)
|
||||||
|
{
|
||||||
|
client.Disconnect("Aplikace ukončena");
|
||||||
|
client.Dispose();
|
||||||
|
client = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Úklid mapových objektů
|
||||||
|
CleanupMapObjects();
|
||||||
|
|
||||||
|
Debug.Log("[GeoSus] Klient ukončen");
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>Příznak, zda jsou GUI styly inicializované</summary>
|
||||||
|
private bool stylesInitialized = false;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Vykreslení IMGUI - volá se každý frame (může i vícekrát).
|
||||||
|
/// Veškeré UI se vykresluje zde.
|
||||||
|
/// </summary>
|
||||||
|
void OnGUI()
|
||||||
|
{
|
||||||
|
// Inicializace stylů při prvním volání OnGUI
|
||||||
|
if (!stylesInitialized)
|
||||||
|
{
|
||||||
|
InitializeUIStyles();
|
||||||
|
stylesInitialized = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Aplikace škálování UI pro různé rozlišení
|
||||||
|
ApplyUIScaling();
|
||||||
|
|
||||||
|
// Vykreslení UI podle aktuálního stavu
|
||||||
|
switch (currentState)
|
||||||
|
{
|
||||||
|
case AppState.MainMenu:
|
||||||
|
DrawMainMenu();
|
||||||
|
break;
|
||||||
|
case AppState.Lobby:
|
||||||
|
DrawLobbyScreen();
|
||||||
|
break;
|
||||||
|
case AppState.Loading:
|
||||||
|
DrawLoadingScreen();
|
||||||
|
break;
|
||||||
|
case AppState.InGame:
|
||||||
|
DrawGameHUD();
|
||||||
|
DrawMeetingPanel(); // Zobrazí se jen pokud je meeting aktivní
|
||||||
|
break;
|
||||||
|
case AppState.GameEnded:
|
||||||
|
DrawGameEndScreen();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Overlay prvky (notifikace, chyby) - vždy navrchu
|
||||||
|
DrawNotifications();
|
||||||
|
DrawErrorMessage();
|
||||||
|
|
||||||
|
// Debug panel (pouze v editoru)
|
||||||
|
#if UNITY_EDITOR
|
||||||
|
DrawDebugPanel();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
#region ═══════════════════════════════════════════════════════════════════
|
||||||
|
// POMOCNÉ METODY
|
||||||
|
// ════════════════════════════════════════════════════════════════════════
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Zobrazí notifikaci na obrazovce.
|
||||||
|
/// Notifikace se řadí do fronty a zobrazují postupně.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="message">Text zprávy</param>
|
||||||
|
/// <param name="color">Barva pozadí</param>
|
||||||
|
/// <param name="icon">Ikona/emoji (volitelné)</param>
|
||||||
|
protected void ShowNotification(string message, Color color, string icon)
|
||||||
|
{
|
||||||
|
ShowNotification(message, color, 3f, icon);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Zobrazí notifikaci na obrazovce.
|
||||||
|
/// Notifikace se řadí do fronty a zobrazují postupně.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="message">Text zprávy</param>
|
||||||
|
/// <param name="color">Barva pozadí</param>
|
||||||
|
/// <param name="duration">Doba zobrazení v sekundách</param>
|
||||||
|
/// <param name="icon">Ikona/emoji (volitelné)</param>
|
||||||
|
protected void ShowNotification(string message, Color color, float duration = 3f, string icon = "")
|
||||||
|
{
|
||||||
|
notifications.Enqueue(new NotificationData
|
||||||
|
{
|
||||||
|
message = message,
|
||||||
|
color = color,
|
||||||
|
duration = duration,
|
||||||
|
icon = icon
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Aktualizace fronty notifikací
|
||||||
|
/// </summary>
|
||||||
|
private void UpdateNotifications()
|
||||||
|
{
|
||||||
|
// Pokud aktuální notifikace vypršela, zobrazíme další
|
||||||
|
if (currentNotification.message != null && Time.time > notificationEndTime)
|
||||||
|
{
|
||||||
|
currentNotification = default;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Pokud není žádná notifikace a fronta není prázdná, zobrazíme další
|
||||||
|
if (currentNotification.message == null && notifications.Count > 0)
|
||||||
|
{
|
||||||
|
currentNotification = notifications.Dequeue();
|
||||||
|
notificationEndTime = Time.time + currentNotification.duration;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Zobrazí chybovou zprávu
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="message">Text chyby</param>
|
||||||
|
/// <param name="duration">Doba zobrazení</param>
|
||||||
|
protected void ShowError(string message, float duration = 5f)
|
||||||
|
{
|
||||||
|
errorMessage = message;
|
||||||
|
errorMessageEndTime = Time.time + duration;
|
||||||
|
Debug.LogError($"[GeoSus] {message}");
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Nastavení kamery pro top-down pohled
|
||||||
|
/// </summary>
|
||||||
|
private void SetupCamera()
|
||||||
|
{
|
||||||
|
// Najdeme nebo vytvoříme hlavní kameru
|
||||||
|
playerCamera = Camera.main;
|
||||||
|
if (playerCamera == null)
|
||||||
|
{
|
||||||
|
GameObject camObj = new GameObject("MainCamera");
|
||||||
|
playerCamera = camObj.AddComponent<Camera>();
|
||||||
|
camObj.tag = "MainCamera";
|
||||||
|
}
|
||||||
|
|
||||||
|
// Nastavení pro top-down pohled
|
||||||
|
playerCamera.orthographic = true;
|
||||||
|
playerCamera.orthographicSize = 50f; // Výchozí zoom (50 metrů od středu)
|
||||||
|
playerCamera.transform.position = new Vector3(0, cameraHeight, 0);
|
||||||
|
playerCamera.transform.rotation = Quaternion.Euler(90, 0, 0);
|
||||||
|
playerCamera.backgroundColor = new Color(0.2f, 0.3f, 0.2f); // Tmavě zelená
|
||||||
|
playerCamera.clearFlags = CameraClearFlags.SolidColor;
|
||||||
|
|
||||||
|
// Přidáme naši komponentu pro ovládání kamery
|
||||||
|
if (playerCamera.GetComponent<CameraController>() == null)
|
||||||
|
{
|
||||||
|
playerCamera.gameObject.AddComponent<CameraController>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#region ═══════════════════════════════════════════════════════════════════
|
||||||
|
// DEBUG PANEL
|
||||||
|
// ════════════════════════════════════════════════════════════════════════
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Debug panel - zobrazuje interní stav klienta
|
||||||
|
/// Pouze v Unity Editoru
|
||||||
|
/// </summary>
|
||||||
|
private void DrawDebugPanel()
|
||||||
|
{
|
||||||
|
GUILayout.BeginArea(new Rect(10, Screen.height - 150, 300, 140));
|
||||||
|
GUI.Box(new Rect(0, 0, 300, 140), "");
|
||||||
|
|
||||||
|
GUILayout.Label($"<color=yellow><b>DEBUG</b></color>", richTextStyle);
|
||||||
|
GUILayout.Label($"State: {currentState}");
|
||||||
|
GUILayout.Label($"Connected: {client?.IsConnected ?? false}");
|
||||||
|
GUILayout.Label($"LobbyId: {client?.LobbyId ?? "null"}");
|
||||||
|
GUILayout.Label($"Phase: {client?.CurrentLobbyState?.Phase.ToString() ?? "null"}");
|
||||||
|
GUILayout.Label($"Role: {client?.MyRole?.ToString() ?? "null"}");
|
||||||
|
GUILayout.Label($"Ping: {client?.Ping ?? 0}ms");
|
||||||
|
|
||||||
|
GUILayout.EndArea();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Jednoduchý kontroler kamery pro top-down pohled.
|
||||||
|
/// Umožňuje pohyb pomocí WASD/šipek a zoom pomocí kolečka myši.
|
||||||
|
///
|
||||||
|
/// POZNÁMKA: V produkční hře byste toto pravděpodobně spojili
|
||||||
|
/// s pohybem hráče - kamera sleduje hráče.
|
||||||
|
/// </summary>
|
||||||
|
public class CameraController : MonoBehaviour
|
||||||
|
{
|
||||||
|
[Header("Nastavení kamery")]
|
||||||
|
[Tooltip("Rychlost pohybu kamery")]
|
||||||
|
public float moveSpeed = 50f;
|
||||||
|
|
||||||
|
[Tooltip("Rychlost zoomu")]
|
||||||
|
public float zoomSpeed = 10f;
|
||||||
|
|
||||||
|
[Tooltip("Minimální zoom (orthographic size)")]
|
||||||
|
public float minZoom = 10f;
|
||||||
|
|
||||||
|
[Tooltip("Maximální zoom (orthographic size)")]
|
||||||
|
public float maxZoom = 200f;
|
||||||
|
|
||||||
|
private Camera cam;
|
||||||
|
|
||||||
|
void Start()
|
||||||
|
{
|
||||||
|
cam = GetComponent<Camera>();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Update()
|
||||||
|
{
|
||||||
|
// Pohyb kamery - WASD nebo šipky
|
||||||
|
// POZNÁMKA: V plné hře se kamera obvykle pohybuje s hráčem
|
||||||
|
float h = Input.GetAxis("Horizontal");
|
||||||
|
float v = Input.GetAxis("Vertical");
|
||||||
|
|
||||||
|
Vector3 movement = new Vector3(h, 0, v) * moveSpeed * Time.deltaTime;
|
||||||
|
transform.position += movement;
|
||||||
|
|
||||||
|
// Zoom - kolečko myši
|
||||||
|
float scroll = Input.GetAxis("Mouse ScrollWheel");
|
||||||
|
if (scroll != 0 && cam.orthographic)
|
||||||
|
{
|
||||||
|
cam.orthographicSize = Mathf.Clamp(
|
||||||
|
cam.orthographicSize - scroll * zoomSpeed,
|
||||||
|
minZoom,
|
||||||
|
maxZoom
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
2
Assets/UnityTestClient/UnityTestClient.cs.meta
Normal file
2
Assets/UnityTestClient/UnityTestClient.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 719b1c3bbdc301646b2dbfa653d9a455
|
||||||
673
Assets/UnityTestClient/UnityTestClient_Game.cs
Normal file
673
Assets/UnityTestClient/UnityTestClient_Game.cs
Normal file
@@ -0,0 +1,673 @@
|
|||||||
|
/*
|
||||||
|
╔══════════════════════════════════════════════════════════════════════════════════════════════════════════════╗
|
||||||
|
║ ║
|
||||||
|
║ HERNÍ MECHANIKY - UnityTestClient_Game.cs ║
|
||||||
|
║ ║
|
||||||
|
║ Tento soubor obsahuje veškeré herní mechaniky: ║
|
||||||
|
║ • Pohyb hráče (WASD + myš) ║
|
||||||
|
║ • Interakce (úkoly, reporty, opravy) ║
|
||||||
|
║ • Kill mechanika (pro impostory) ║
|
||||||
|
║ • Sabotáže a jejich opravy ║
|
||||||
|
║ • Emergency meeting ║
|
||||||
|
║ • Hlasování ║
|
||||||
|
║ ║
|
||||||
|
║ OVLÁDÁNÍ: ║
|
||||||
|
║ • WASD - pohyb hráče ║
|
||||||
|
║ • Myš - otáčení kamery (volitelné) ║
|
||||||
|
║ • E - interakce (úkoly, report, oprava) ║
|
||||||
|
║ • Q - kill (pouze impostor) ║
|
||||||
|
║ • Tab - mapa/statistiky ║
|
||||||
|
║ • Escape - menu ║
|
||||||
|
║ ║
|
||||||
|
║ SYSTÉM ÚKOLŮ: ║
|
||||||
|
║ • Všechny úkoly jsou INSTANT - stačí přijít na místo (do 5m) a stisknout E ║
|
||||||
|
║ • Server validuje pozici hráče - nemůžete dokončit úkol na dálku ║
|
||||||
|
║ • Duchové (mrtví crew) mohou dokončovat úkoly - pomáhají týmu vyhrát ║
|
||||||
|
║ • Impostoři NEMOHOU dokončovat úkoly ║
|
||||||
|
║ ║
|
||||||
|
║ SABOTÁŽE: ║
|
||||||
|
║ • CommsBlackout - blokuje reporty a emergency meetings ║
|
||||||
|
║ - 1 opravná stanice, libovolný hráč opraví sám ║
|
||||||
|
║ • CriticalMeltdown - časový limit na opravu! ║
|
||||||
|
║ - 2 stanice musí být opravovány SOUČASNĚ dvěma hráči ║
|
||||||
|
║ - Pokud čas vyprší, impostoři vyhrávají ║
|
||||||
|
║ ║
|
||||||
|
║ POZNÁMKA: ║
|
||||||
|
║ V reálné mobilní hře by se pozice hráče aktualizovala podle GPS (Input.location). ║
|
||||||
|
║ Tento test klient umožňuje simulovat pohyb pomocí WASD pro testování. ║
|
||||||
|
║ ║
|
||||||
|
╚══════════════════════════════════════════════════════════════════════════════════════════════════════════════╝
|
||||||
|
*/
|
||||||
|
|
||||||
|
using UnityEngine;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using GeoSus.Client;
|
||||||
|
|
||||||
|
// ═══════════════════════════════════════════════════════════════════════════════
|
||||||
|
// LOKÁLNÍ TYPY PRO UNITY (kopie z Protocol.cs pro kompatibilitu)
|
||||||
|
// ═══════════════════════════════════════════════════════════════════════════════
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Reprezentace úkolu hráče
|
||||||
|
/// </summary>
|
||||||
|
[System.Serializable]
|
||||||
|
public class PlayerTask
|
||||||
|
{
|
||||||
|
public string Id;
|
||||||
|
public string Name;
|
||||||
|
public string Description;
|
||||||
|
public TaskType Type;
|
||||||
|
public Position Location;
|
||||||
|
public bool IsCompleted;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Opravná stanice pro sabotáže
|
||||||
|
/// </summary>
|
||||||
|
[System.Serializable]
|
||||||
|
public class RepairStation
|
||||||
|
{
|
||||||
|
public string Id;
|
||||||
|
public string Name;
|
||||||
|
public Position Position;
|
||||||
|
public bool IsActive;
|
||||||
|
}
|
||||||
|
|
||||||
|
public partial class UnityTestClient
|
||||||
|
{
|
||||||
|
#region ═══════════════════════════════════════════════════════════════════
|
||||||
|
// GAME PROMĚNNÉ
|
||||||
|
// ════════════════════════════════════════════════════════════════════════
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
// ─────────────────────────────────────────────────────────────────────────
|
||||||
|
// Pohyb
|
||||||
|
// ─────────────────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
/// <summary>Rychlost pohybu hráče (Unity jednotky/s)</summary>
|
||||||
|
protected float moveSpeed = 10f;
|
||||||
|
|
||||||
|
/// <summary>Aktuální pozice hráče v Unity souřadnicích</summary>
|
||||||
|
protected Vector3 currentPlayerPosition;
|
||||||
|
|
||||||
|
/// <summary>Interval odesílání pozice na server (sekundy)</summary>
|
||||||
|
protected float positionUpdateInterval = 0.5f;
|
||||||
|
|
||||||
|
/// <summary>Čas posledního odeslání pozice</summary>
|
||||||
|
protected float lastPositionUpdate;
|
||||||
|
|
||||||
|
// ─────────────────────────────────────────────────────────────────────────
|
||||||
|
// Opravy
|
||||||
|
// ─────────────────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
/// <summary>Právě opravujeme?</summary>
|
||||||
|
protected bool isRepairing = false;
|
||||||
|
|
||||||
|
/// <summary>ID aktivní opravné stanice</summary>
|
||||||
|
protected string activeRepairStation = null;
|
||||||
|
|
||||||
|
/// <summary>Progress opravy (0-1)</summary>
|
||||||
|
protected float repairProgress = 0f;
|
||||||
|
|
||||||
|
// ─────────────────────────────────────────────────────────────────────────
|
||||||
|
// Sabotáže
|
||||||
|
// ─────────────────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
/// <summary>Aktuální sabotáž (null = žádná)</summary>
|
||||||
|
protected SabotageStartedPayload currentSabotage = null;
|
||||||
|
|
||||||
|
// ─────────────────────────────────────────────────────────────────────────
|
||||||
|
// Kill
|
||||||
|
// ─────────────────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
/// <summary>Cooldown killu (sekundy)</summary>
|
||||||
|
protected float killCooldown = 25f;
|
||||||
|
|
||||||
|
/// <summary>Čas posledního killu</summary>
|
||||||
|
protected float lastKillTime = -100f;
|
||||||
|
|
||||||
|
// ─────────────────────────────────────────────────────────────────────────
|
||||||
|
// Konec hry
|
||||||
|
// ─────────────────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
/// <summary>Data o konci hry</summary>
|
||||||
|
protected GameEndedPayload gameEndData = null;
|
||||||
|
|
||||||
|
#region ═══════════════════════════════════════════════════════════════════
|
||||||
|
// POHYB HRÁČE
|
||||||
|
// ════════════════════════════════════════════════════════════════════════
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Zpracování vstupu hráče.
|
||||||
|
/// Volá se každý frame v Update().
|
||||||
|
///
|
||||||
|
/// POZNÁMKA PRO STUDENTY:
|
||||||
|
/// Input.GetAxis vrací hodnotu -1 až 1 pro plynulý pohyb.
|
||||||
|
/// "Horizontal" = A/D nebo šipky vlevo/vpravo
|
||||||
|
/// "Vertical" = W/S nebo šipky nahoru/dolů
|
||||||
|
/// </summary>
|
||||||
|
protected void HandlePlayerInput()
|
||||||
|
{
|
||||||
|
// Pohyb pouze během hraní
|
||||||
|
if (currentState != AppState.InGame) return;
|
||||||
|
|
||||||
|
// Kontrola, zda jsme naživu - bezpečný přístup
|
||||||
|
if (client?.PlayerPositions != null &&
|
||||||
|
client.PlayerPositions.TryGetValue(clientUuid, out var myInfo))
|
||||||
|
{
|
||||||
|
if (myInfo.State != PlayerState.Alive)
|
||||||
|
{
|
||||||
|
// Duch může létat, ale neposílá pozici
|
||||||
|
HandleGhostMovement();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Kontrola, zda není meeting - ale během arrival fáze se můžeme hýbat
|
||||||
|
var phase = client?.CurrentLobbyState?.Phase;
|
||||||
|
if (phase == GamePhase.Meeting)
|
||||||
|
{
|
||||||
|
// Během arrival fáze (před ArrivalDeadline) se můžeme hýbat
|
||||||
|
if (currentMeeting != null && DateTime.UtcNow < currentMeeting.ArrivalDeadline)
|
||||||
|
{
|
||||||
|
// OK - můžeme se hýbat k meeting pointu
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return; // Po arrival deadline se nehýbeme
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ═══════════════════════════════════════════════════════════════════
|
||||||
|
// WASD POHYB
|
||||||
|
// ═══════════════════════════════════════════════════════════════════
|
||||||
|
|
||||||
|
float horizontal = Input.GetAxis("Horizontal"); // A/D
|
||||||
|
float vertical = Input.GetAxis("Vertical"); // W/S
|
||||||
|
|
||||||
|
if (horizontal != 0 || vertical != 0)
|
||||||
|
{
|
||||||
|
// Směr pohybu
|
||||||
|
Vector3 movement = new Vector3(horizontal, 0, vertical).normalized;
|
||||||
|
|
||||||
|
// Aplikace rychlosti a delta time
|
||||||
|
Vector3 newPosition = currentPlayerPosition + movement * moveSpeed * Time.deltaTime;
|
||||||
|
|
||||||
|
// Kontrola hranic herní oblasti
|
||||||
|
if (IsPositionInPlayArea(newPosition))
|
||||||
|
{
|
||||||
|
currentPlayerPosition = newPosition;
|
||||||
|
UpdateCameraPosition();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ═══════════════════════════════════════════════════════════════════
|
||||||
|
// ODESÍLÁNÍ POZICE NA SERVER
|
||||||
|
// ═══════════════════════════════════════════════════════════════════
|
||||||
|
|
||||||
|
if (Time.time - lastPositionUpdate >= positionUpdateInterval)
|
||||||
|
{
|
||||||
|
SendPositionToServer();
|
||||||
|
lastPositionUpdate = Time.time;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ═══════════════════════════════════════════════════════════════════
|
||||||
|
// KLÁVESOVÉ ZKRATKY PRO AKCE
|
||||||
|
// ═══════════════════════════════════════════════════════════════════
|
||||||
|
|
||||||
|
// E - Interakce (USE)
|
||||||
|
if (Input.GetKeyDown(KeyCode.E))
|
||||||
|
{
|
||||||
|
PerformPrimaryAction();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Q - Kill (pouze impostor)
|
||||||
|
if (Input.GetKeyDown(KeyCode.Q) && client?.MyRole == PlayerRole.Impostor)
|
||||||
|
{
|
||||||
|
TryKillNearbyPlayer();
|
||||||
|
}
|
||||||
|
|
||||||
|
// R - Emergency meeting
|
||||||
|
if (Input.GetKeyDown(KeyCode.R))
|
||||||
|
{
|
||||||
|
CallEmergencyMeeting();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Escape - Menu
|
||||||
|
if (Input.GetKeyDown(KeyCode.Escape))
|
||||||
|
{
|
||||||
|
// TODO: Toggle pause menu
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Pohyb ducha (mrtvý hráč)
|
||||||
|
/// </summary>
|
||||||
|
private void HandleGhostMovement()
|
||||||
|
{
|
||||||
|
float horizontal = Input.GetAxis("Horizontal");
|
||||||
|
float vertical = Input.GetAxis("Vertical");
|
||||||
|
|
||||||
|
if (horizontal != 0 || vertical != 0)
|
||||||
|
{
|
||||||
|
Vector3 movement = new Vector3(horizontal, 0, vertical).normalized;
|
||||||
|
currentPlayerPosition += movement * moveSpeed * 1.5f * Time.deltaTime; // Duch je rychlejší
|
||||||
|
UpdateCameraPosition();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Kontrola, zda je pozice v hrací oblasti
|
||||||
|
/// </summary>
|
||||||
|
private bool IsPositionInPlayArea(Vector3 position)
|
||||||
|
{
|
||||||
|
// Vzdálenost od středu
|
||||||
|
float distance = Vector3.Distance(position, Vector3.zero);
|
||||||
|
return distance <= (float)mapRadius;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Aktualizace pozice kamery podle hráče
|
||||||
|
/// </summary>
|
||||||
|
private void UpdateCameraPosition()
|
||||||
|
{
|
||||||
|
if (playerCamera == null) return;
|
||||||
|
|
||||||
|
// Top-down kamera následuje hráče
|
||||||
|
Vector3 cameraPos = currentPlayerPosition;
|
||||||
|
cameraPos.y = cameraHeight;
|
||||||
|
playerCamera.transform.position = cameraPos;
|
||||||
|
|
||||||
|
// Aktualizace lokálního hráče vizuálu
|
||||||
|
UpdateLocalPlayerVisual();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Inicializace pozice hráče při startu hry
|
||||||
|
/// </summary>
|
||||||
|
protected void InitializePlayerPosition()
|
||||||
|
{
|
||||||
|
// Nastavíme hráče na střed mapy
|
||||||
|
currentPlayerPosition = Vector3.zero;
|
||||||
|
UpdateCameraPosition();
|
||||||
|
Debug.Log("[GeoSus] Pozice hráče inicializována na střed mapy");
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Odeslání pozice hráče na server
|
||||||
|
/// </summary>
|
||||||
|
private void SendPositionToServer()
|
||||||
|
{
|
||||||
|
if (client == null || !client.IsConnected) return;
|
||||||
|
|
||||||
|
// Převod na GPS
|
||||||
|
Position gpsPosition = UnityToGPS(currentPlayerPosition);
|
||||||
|
|
||||||
|
// Odeslání
|
||||||
|
client.UpdatePosition(gpsPosition);
|
||||||
|
}
|
||||||
|
|
||||||
|
#region ═══════════════════════════════════════════════════════════════════
|
||||||
|
// INTERAKCE
|
||||||
|
// ════════════════════════════════════════════════════════════════════════
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Provede primární akci (USE/REPORT/REPAIR)
|
||||||
|
/// </summary>
|
||||||
|
protected void PerformPrimaryAction()
|
||||||
|
{
|
||||||
|
if (client == null) return;
|
||||||
|
|
||||||
|
// Kontrola stavu hráče - bezpečný přístup
|
||||||
|
if (client.PlayerPositions != null && client.PlayerPositions.TryGetValue(clientUuid, out var myState))
|
||||||
|
{
|
||||||
|
if (myState.State != PlayerState.Alive)
|
||||||
|
{
|
||||||
|
ShowNotification("Jsi mrtvý!", Color.gray, 2f, "💀");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ═══════════════════════════════════════════════════════════════════
|
||||||
|
// PRIORITA 1: Report těla
|
||||||
|
// ═══════════════════════════════════════════════════════════════════
|
||||||
|
|
||||||
|
var body = client.FindNearbyBody(5.0);
|
||||||
|
if (body != null)
|
||||||
|
{
|
||||||
|
// Použijeme přímo BodyId property
|
||||||
|
ReportBody(body.BodyId);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ═══════════════════════════════════════════════════════════════════
|
||||||
|
// PRIORITA 2: Oprava stanice
|
||||||
|
// ═══════════════════════════════════════════════════════════════════
|
||||||
|
|
||||||
|
if (currentSabotage != null)
|
||||||
|
{
|
||||||
|
var station = FindNearbyRepairStation(5.0);
|
||||||
|
if (station != null)
|
||||||
|
{
|
||||||
|
if (!isRepairing)
|
||||||
|
{
|
||||||
|
StartRepair(station.StationId);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ═══════════════════════════════════════════════════════════════════
|
||||||
|
// PRIORITA 3: Úkol (pouze crew)
|
||||||
|
// ═══════════════════════════════════════════════════════════════════
|
||||||
|
|
||||||
|
if (client.MyRole == PlayerRole.Crew)
|
||||||
|
{
|
||||||
|
var task = client.FindNearbyTask(5.0);
|
||||||
|
if (task != null)
|
||||||
|
{
|
||||||
|
TryCompleteTask(task);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ShowNotification("Nic v dosahu!", Color.yellow, "❓");
|
||||||
|
}
|
||||||
|
|
||||||
|
#region ═══════════════════════════════════════════════════════════════════
|
||||||
|
// ÚKOLY
|
||||||
|
// ════════════════════════════════════════════════════════════════════════
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Pokus o dokončení úkolu - pošle CompleteTask na server.
|
||||||
|
/// Server ověří pozici a označí jako dokončený.
|
||||||
|
/// </summary>
|
||||||
|
private void TryCompleteTask(object taskObj)
|
||||||
|
{
|
||||||
|
if (client == null) return;
|
||||||
|
|
||||||
|
// Dynamicky získáme vlastnosti úkolu přes reflexi
|
||||||
|
var taskType = taskObj.GetType();
|
||||||
|
string taskId = taskType.GetField("TaskId")?.GetValue(taskObj) as string ??
|
||||||
|
taskType.GetProperty("TaskId")?.GetValue(taskObj) as string ?? "unknown";
|
||||||
|
string taskName = taskType.GetField("Name")?.GetValue(taskObj) as string ??
|
||||||
|
taskType.GetProperty("Name")?.GetValue(taskObj) as string ?? "Úkol";
|
||||||
|
|
||||||
|
// Pošleme CompleteTask na server
|
||||||
|
client.CompleteTask(taskId);
|
||||||
|
|
||||||
|
ShowNotification($"Provádím: {taskName}...", Color.cyan, "📋");
|
||||||
|
}
|
||||||
|
|
||||||
|
#region ═══════════════════════════════════════════════════════════════════
|
||||||
|
// REPORT TĚLA
|
||||||
|
// ════════════════════════════════════════════════════════════════════════
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Nahlášení těla
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="bodyId">ID těla</param>
|
||||||
|
protected void ReportBody(string bodyId)
|
||||||
|
{
|
||||||
|
if (client == null) return;
|
||||||
|
|
||||||
|
client.ReportBody(bodyId);
|
||||||
|
|
||||||
|
ShowNotification("Tělo nahlášeno!", Color.red, "🚨");
|
||||||
|
}
|
||||||
|
|
||||||
|
#region ═══════════════════════════════════════════════════════════════════
|
||||||
|
// KILL
|
||||||
|
// ════════════════════════════════════════════════════════════════════════
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Pokus o zabití blízkého hráče
|
||||||
|
/// </summary>
|
||||||
|
private void TryKillNearbyPlayer()
|
||||||
|
{
|
||||||
|
if (client?.MyRole != PlayerRole.Impostor) return;
|
||||||
|
|
||||||
|
// Kontrola cooldownu
|
||||||
|
if (Time.time - lastKillTime < killCooldown)
|
||||||
|
{
|
||||||
|
float remaining = killCooldown - (Time.time - lastKillTime);
|
||||||
|
ShowNotification($"Cooldown: {remaining:F0}s", Color.yellow, "⏳");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Najdi blízkého hráče
|
||||||
|
string targetId = client.FindNearbyPlayer(5.0, true);
|
||||||
|
|
||||||
|
if (targetId != null)
|
||||||
|
{
|
||||||
|
AttemptKill(targetId);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ShowNotification("Nikdo v dosahu!", Color.yellow, "🔪");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Pokus o zabití konkrétního hráče
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="targetId">UUID cíle</param>
|
||||||
|
protected void AttemptKill(string targetId)
|
||||||
|
{
|
||||||
|
if (client == null) return;
|
||||||
|
|
||||||
|
client.Kill(targetId);
|
||||||
|
lastKillTime = Time.time;
|
||||||
|
|
||||||
|
string targetName = GetPlayerName(targetId);
|
||||||
|
ShowNotification($"Útočíš na {targetName}!", Color.red, "🔪");
|
||||||
|
}
|
||||||
|
|
||||||
|
#region ═══════════════════════════════════════════════════════════════════
|
||||||
|
// SABOTÁŽE
|
||||||
|
// ════════════════════════════════════════════════════════════════════════
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Spuštění sabotáže
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="type">Typ sabotáže</param>
|
||||||
|
protected void StartSabotage(SabotageType type)
|
||||||
|
{
|
||||||
|
if (client?.MyRole != PlayerRole.Impostor) return;
|
||||||
|
if (currentSabotage != null) return; // Již běží sabotáž
|
||||||
|
|
||||||
|
client.Send(new StartSabotage { SabotageType = type });
|
||||||
|
|
||||||
|
string sabName = type == SabotageType.CommsBlackout ? "Comms Blackout" : "Critical Meltdown";
|
||||||
|
ShowNotification($"Sabotáž: {sabName}!", new Color(1f, 0.5f, 0f), "⚠");
|
||||||
|
}
|
||||||
|
|
||||||
|
#region ═══════════════════════════════════════════════════════════════════
|
||||||
|
// OPRAVY
|
||||||
|
// ════════════════════════════════════════════════════════════════════════
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Oprava stanice - INSTANT
|
||||||
|
/// Server opraví stanici okamžitě při přijetí ActivateRepairStation.
|
||||||
|
/// Budoucí pokročilý klient může simulovat progress bar a poslat request až po uplynutí času.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="stationId">ID opravné stanice</param>
|
||||||
|
private void StartRepair(string stationId)
|
||||||
|
{
|
||||||
|
if (currentSabotage == null) return;
|
||||||
|
|
||||||
|
// Pošleme serveru - ten opraví INSTANT
|
||||||
|
client.Send(new ActivateRepairStation { StationId = stationId });
|
||||||
|
|
||||||
|
ShowNotification("Stanice opravena!", Color.green, "✅");
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Aktualizace průběhu opravy - NEPOUŽÍVÁ SE (oprava je instant)
|
||||||
|
/// Ponecháno pro budoucí implementaci s progress barem.
|
||||||
|
/// </summary>
|
||||||
|
protected void UpdateRepairProgress()
|
||||||
|
{
|
||||||
|
// Oprava je nyní instant - tato metoda není potřeba
|
||||||
|
// Budoucí klient může implementovat lokální progress bar:
|
||||||
|
// if (!isRepairing) return;
|
||||||
|
// repairProgress += Time.deltaTime / 3f; // 3 sekundy
|
||||||
|
// if (repairProgress >= 1f) {
|
||||||
|
// client.Send(new ActivateRepairStation { StationId = activeRepairStation });
|
||||||
|
// isRepairing = false;
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Ukončení opravy (úspěšné) - NEPOUŽÍVÁ SE (oprava je instant)
|
||||||
|
/// </summary>
|
||||||
|
private void StopRepair()
|
||||||
|
{
|
||||||
|
// Oprava je instant - tato metoda není potřeba
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Zrušení opravy - NEPOUŽÍVÁ SE (oprava je instant)
|
||||||
|
/// </summary>
|
||||||
|
private void CancelRepair()
|
||||||
|
{
|
||||||
|
// Oprava je instant - tato metoda není potřeba
|
||||||
|
}
|
||||||
|
|
||||||
|
#region ═══════════════════════════════════════════════════════════════════
|
||||||
|
// EMERGENCY MEETING
|
||||||
|
// ════════════════════════════════════════════════════════════════════════
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Svolání emergency meetingu
|
||||||
|
/// </summary>
|
||||||
|
protected void CallEmergencyMeeting()
|
||||||
|
{
|
||||||
|
if (client == null) return;
|
||||||
|
|
||||||
|
// Kontrola sabotáže - nelze volat během comms blackout
|
||||||
|
if (currentSabotage?.Type == SabotageType.CommsBlackout)
|
||||||
|
{
|
||||||
|
ShowNotification("Komunikace odpojeny!", Color.red, "📡");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
client.CallEmergencyMeeting();
|
||||||
|
|
||||||
|
ShowNotification("Emergency Meeting!", Color.red, "🔔");
|
||||||
|
}
|
||||||
|
|
||||||
|
#region ═══════════════════════════════════════════════════════════════════
|
||||||
|
// HLASOVÁNÍ
|
||||||
|
// ════════════════════════════════════════════════════════════════════════
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Odeslání hlasu
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="targetId">UUID hráče nebo null pro skip</param>
|
||||||
|
protected void CastVote(string targetId)
|
||||||
|
{
|
||||||
|
if (client == null)
|
||||||
|
{
|
||||||
|
Debug.LogError("[GeoSus] CastVote: client je null!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!canVote)
|
||||||
|
{
|
||||||
|
Debug.LogWarning("[GeoSus] CastVote: canVote je false!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
string voteText = targetId == null ? "SKIP" : GetPlayerName(targetId);
|
||||||
|
Debug.Log($"[GeoSus] Hlasování: {voteText} (targetId: {targetId ?? "null"})");
|
||||||
|
|
||||||
|
client.Vote(targetId);
|
||||||
|
myVote = targetId ?? "skip";
|
||||||
|
canVote = false;
|
||||||
|
|
||||||
|
ShowNotification($"Hlasoval jsi: {voteText}", Color.cyan, 2f, "🗳");
|
||||||
|
}
|
||||||
|
|
||||||
|
#region ═══════════════════════════════════════════════════════════════════
|
||||||
|
// POMOCNÉ METODY
|
||||||
|
// ════════════════════════════════════════════════════════════════════════
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Získání jména hráče podle UUID
|
||||||
|
/// </summary>
|
||||||
|
protected string GetPlayerName(string playerId)
|
||||||
|
{
|
||||||
|
if (client?.CurrentLobbyState?.Players == null) return playerId;
|
||||||
|
|
||||||
|
foreach (var player in client.CurrentLobbyState.Players)
|
||||||
|
{
|
||||||
|
if (player.ClientUuid == playerId)
|
||||||
|
{
|
||||||
|
return player.DisplayName;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return playerId.Substring(0, 8) + "...";
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Inicializace herního stavu při startu hry
|
||||||
|
/// </summary>
|
||||||
|
protected void InitializeGameState()
|
||||||
|
{
|
||||||
|
// Reset pozice na střed
|
||||||
|
currentPlayerPosition = Vector3.zero;
|
||||||
|
|
||||||
|
// Reset úkolů
|
||||||
|
totalTasksCompleted = 0;
|
||||||
|
totalTasksRequired = client?.MyTasks?.Count ?? 0;
|
||||||
|
myCompletedTaskIds.Clear();
|
||||||
|
|
||||||
|
// Reset oprav
|
||||||
|
isRepairing = false;
|
||||||
|
activeRepairStation = null;
|
||||||
|
repairProgress = 0f;
|
||||||
|
|
||||||
|
// Reset kill cooldownu
|
||||||
|
lastKillTime = Time.time; // Cooldown na začátku
|
||||||
|
|
||||||
|
// Reset sabotáže
|
||||||
|
currentSabotage = null;
|
||||||
|
|
||||||
|
// Reset meetingu
|
||||||
|
currentMeeting = null;
|
||||||
|
meetingVotes.Clear();
|
||||||
|
myVote = null;
|
||||||
|
canVote = false;
|
||||||
|
|
||||||
|
// Reset konce hry
|
||||||
|
gameEndData = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Game loop - aktualizace herní logiky.
|
||||||
|
/// Volá se v Update().
|
||||||
|
/// </summary>
|
||||||
|
protected void UpdateGameLogic()
|
||||||
|
{
|
||||||
|
if (currentState != AppState.InGame) return;
|
||||||
|
|
||||||
|
// Aktualizace opravy
|
||||||
|
UpdateRepairProgress();
|
||||||
|
|
||||||
|
// Aktualizace mapových objektů
|
||||||
|
UpdateMapObjects();
|
||||||
|
}
|
||||||
|
}
|
||||||
2
Assets/UnityTestClient/UnityTestClient_Game.cs.meta
Normal file
2
Assets/UnityTestClient/UnityTestClient_Game.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 829e2eaa53b86d347912031dba7711da
|
||||||
1532
Assets/UnityTestClient/UnityTestClient_Map.cs
Normal file
1532
Assets/UnityTestClient/UnityTestClient_Map.cs
Normal file
File diff suppressed because it is too large
Load Diff
2
Assets/UnityTestClient/UnityTestClient_Map.cs.meta
Normal file
2
Assets/UnityTestClient/UnityTestClient_Map.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 2d9f27ae239808c44b27975df7eefd38
|
||||||
1196
Assets/UnityTestClient/UnityTestClient_Network.cs
Normal file
1196
Assets/UnityTestClient/UnityTestClient_Network.cs
Normal file
File diff suppressed because it is too large
Load Diff
2
Assets/UnityTestClient/UnityTestClient_Network.cs.meta
Normal file
2
Assets/UnityTestClient/UnityTestClient_Network.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: cdc71cfbe967d754189f3382fee78c6c
|
||||||
589
Assets/UnityTestClient/UnityTestClient_Stats.cs
Normal file
589
Assets/UnityTestClient/UnityTestClient_Stats.cs
Normal file
@@ -0,0 +1,589 @@
|
|||||||
|
/*
|
||||||
|
╔══════════════════════════════════════════════════════════════════════════════════════════════════════════════╗
|
||||||
|
║ ║
|
||||||
|
║ STATISTIKY A HTTP API - UnityTestClient_Stats.cs ║
|
||||||
|
║ ║
|
||||||
|
║ Tento soubor obsahuje komunikaci s HTTP Stats API serveru: ║
|
||||||
|
║ • Načítání statistik hráče ║
|
||||||
|
║ • Načítání leaderboardu ║
|
||||||
|
║ • Health check serveru ║
|
||||||
|
║ ║
|
||||||
|
║ API ENDPOINTY (port 8088): ║
|
||||||
|
║ • GET /stats/{playerId} - statistiky konkrétního hráče ║
|
||||||
|
║ • GET /leaderboard?limit=N - top N hráčů podle win rate ║
|
||||||
|
║ • GET /health - stav serveru (aktivní lobby, hráči) ║
|
||||||
|
║ ║
|
||||||
|
║ STATISTIKY ZAHRNUJÍ: ║
|
||||||
|
║ • Počet her, výher, proher ║
|
||||||
|
║ • Win rate celkově, jako impostor, jako crew ║
|
||||||
|
║ • Počet zabití, smrtí, K/D ratio ║
|
||||||
|
║ • Dokončené úkoly ║
|
||||||
|
║ • Přesnost hlasování (správně odhalení impostoři) ║
|
||||||
|
║ ║
|
||||||
|
║ POZNÁMKA PRO STUDENTY: ║
|
||||||
|
║ Unity používá UnityWebRequest pro HTTP komunikaci. ║
|
||||||
|
║ Všechny requesty musí běžet jako coroutiny (StartCoroutine). ║
|
||||||
|
║ JSON parsing: JsonUtility (jednodušší) nebo Newtonsoft.Json (flexibilnější). ║
|
||||||
|
║ ║
|
||||||
|
║ Pro vlastní hru můžete rozšířit statistiky o: ║
|
||||||
|
║ • Achievements/Badges ║
|
||||||
|
║ • Sezónní ranky ║
|
||||||
|
║ • Historii her ║
|
||||||
|
║ ║
|
||||||
|
╚══════════════════════════════════════════════════════════════════════════════════════════════════════════════╝
|
||||||
|
*/
|
||||||
|
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.Networking;
|
||||||
|
using System;
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
public partial class UnityTestClient
|
||||||
|
{
|
||||||
|
#region ═══════════════════════════════════════════════════════════════════
|
||||||
|
// STATS PROMĚNNÉ
|
||||||
|
// ════════════════════════════════════════════════════════════════════════
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
/// <summary>Port pro Stats HTTP API</summary>
|
||||||
|
protected int statsApiPort = 8088;
|
||||||
|
|
||||||
|
/// <summary>URL pro Stats API (automaticky používá HTTPS pokud je povoleno)</summary>
|
||||||
|
protected string StatsApiUrl => useHttps
|
||||||
|
? $"https://{serverHost}"
|
||||||
|
: $"http://{serverHost}:{statsApiPort}";
|
||||||
|
|
||||||
|
/// <summary>Načtené statistiky hráče</summary>
|
||||||
|
protected PlayerStatistics playerStats = null;
|
||||||
|
|
||||||
|
/// <summary>Načtený leaderboard</summary>
|
||||||
|
protected List<LeaderboardEntry> leaderboard = null;
|
||||||
|
|
||||||
|
/// <summary>Stav zdraví serveru</summary>
|
||||||
|
protected ServerHealthStatus healthStatus = null;
|
||||||
|
|
||||||
|
/// <summary>Probíhá načítání statistik?</summary>
|
||||||
|
protected bool isLoadingStats = false;
|
||||||
|
|
||||||
|
/// <summary>Probíhá načítání leaderboardu?</summary>
|
||||||
|
protected bool isLoadingLeaderboard = false;
|
||||||
|
|
||||||
|
#region ═══════════════════════════════════════════════════════════════════
|
||||||
|
// DATOVÉ STRUKTURY
|
||||||
|
// ════════════════════════════════════════════════════════════════════════
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Statistiky hráče.
|
||||||
|
/// Mapuje se z JSON response z /stats/{playerId}.
|
||||||
|
/// POZOR: Názvy polí musí přesně odpovídat JSON z serveru!
|
||||||
|
/// </summary>
|
||||||
|
[System.Serializable]
|
||||||
|
public class PlayerStatistics
|
||||||
|
{
|
||||||
|
/// <summary>UUID hráče</summary>
|
||||||
|
public string clientUuid;
|
||||||
|
|
||||||
|
/// <summary>Zobrazované jméno</summary>
|
||||||
|
public string displayName;
|
||||||
|
|
||||||
|
/// <summary>Celkový počet odehraných her</summary>
|
||||||
|
public int totalGames;
|
||||||
|
|
||||||
|
/// <summary>Počet her jako crew</summary>
|
||||||
|
public int gamesAsCrew;
|
||||||
|
|
||||||
|
/// <summary>Počet her jako impostor</summary>
|
||||||
|
public int gamesAsImpostor;
|
||||||
|
|
||||||
|
/// <summary>Počet výher jako crew</summary>
|
||||||
|
public int crewWins;
|
||||||
|
|
||||||
|
/// <summary>Počet výher jako impostor</summary>
|
||||||
|
public int impostorWins;
|
||||||
|
|
||||||
|
/// <summary>Win rate jako crew (0-1)</summary>
|
||||||
|
public float crewWinRate;
|
||||||
|
|
||||||
|
/// <summary>Win rate jako impostor (0-1)</summary>
|
||||||
|
public float impostorWinRate;
|
||||||
|
|
||||||
|
/// <summary>Počet zabití (jako impostor)</summary>
|
||||||
|
public int totalKills;
|
||||||
|
|
||||||
|
/// <summary>Počet smrtí</summary>
|
||||||
|
public int totalDeaths;
|
||||||
|
|
||||||
|
/// <summary>Kill/Death ratio</summary>
|
||||||
|
public float killDeathRatio;
|
||||||
|
|
||||||
|
/// <summary>Počet dokončených úkolů</summary>
|
||||||
|
public int tasksCompleted;
|
||||||
|
|
||||||
|
/// <summary>Průměrný počet tasků za hru</summary>
|
||||||
|
public float averageTasksPerGame;
|
||||||
|
|
||||||
|
/// <summary>Počet nahlášených těl</summary>
|
||||||
|
public int bodiesReported;
|
||||||
|
|
||||||
|
/// <summary>Počet svolaných emergency meetingů</summary>
|
||||||
|
public int emergencyMeetingsCalled;
|
||||||
|
|
||||||
|
/// <summary>Kolikrát byl vyhozen hlasováním</summary>
|
||||||
|
public int timesVotedOut;
|
||||||
|
|
||||||
|
/// <summary>Počet úspěšných hlasů (správně identifikovaný impostor)</summary>
|
||||||
|
public int successfulVotes;
|
||||||
|
|
||||||
|
/// <summary>Celkový čas hraní v sekundách</summary>
|
||||||
|
public long totalPlaytimeSeconds;
|
||||||
|
|
||||||
|
/// <summary>Počet cheat incidentů</summary>
|
||||||
|
public int cheatIncidents;
|
||||||
|
|
||||||
|
/// <summary>Kdy byl naposledy viděn</summary>
|
||||||
|
public string lastSeen;
|
||||||
|
|
||||||
|
// Pomocné vlastnosti pro zobrazení v UI
|
||||||
|
public int GamesWon => crewWins + impostorWins;
|
||||||
|
public float WinRate => totalGames > 0 ? (float)GamesWon / totalGames : 0f;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Položka leaderboardu.
|
||||||
|
/// POZOR: Názvy polí musí přesně odpovídat JSON z serveru!
|
||||||
|
/// </summary>
|
||||||
|
[System.Serializable]
|
||||||
|
public class LeaderboardEntry
|
||||||
|
{
|
||||||
|
/// <summary>UUID hráče</summary>
|
||||||
|
public string clientUuid;
|
||||||
|
|
||||||
|
/// <summary>Zobrazované jméno</summary>
|
||||||
|
public string displayName;
|
||||||
|
|
||||||
|
/// <summary>Celkový počet her</summary>
|
||||||
|
public int totalGames;
|
||||||
|
|
||||||
|
/// <summary>Výhry jako crew</summary>
|
||||||
|
public int crewWins;
|
||||||
|
|
||||||
|
/// <summary>Výhry jako impostor</summary>
|
||||||
|
public int impostorWins;
|
||||||
|
|
||||||
|
/// <summary>Počet zabití</summary>
|
||||||
|
public int totalKills;
|
||||||
|
|
||||||
|
/// <summary>Počet dokončených tasků</summary>
|
||||||
|
public int tasksCompleted;
|
||||||
|
|
||||||
|
// Pomocné vlastnosti
|
||||||
|
public int TotalWins => crewWins + impostorWins;
|
||||||
|
public float WinRate => totalGames > 0 ? (float)TotalWins / totalGames : 0f;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Wrapper pro leaderboard response (JSON array).
|
||||||
|
/// </summary>
|
||||||
|
[System.Serializable]
|
||||||
|
public class LeaderboardResponse
|
||||||
|
{
|
||||||
|
public List<LeaderboardEntry> entries;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Stav serveru.
|
||||||
|
/// </summary>
|
||||||
|
[System.Serializable]
|
||||||
|
public class ServerHealthStatus
|
||||||
|
{
|
||||||
|
/// <summary>Stav: "healthy" nebo "unhealthy"</summary>
|
||||||
|
public string status;
|
||||||
|
|
||||||
|
/// <summary>Verze serveru</summary>
|
||||||
|
public string version;
|
||||||
|
|
||||||
|
/// <summary>Uptime v sekundách</summary>
|
||||||
|
public long uptimeSeconds;
|
||||||
|
|
||||||
|
/// <summary>Počet aktivních lobby</summary>
|
||||||
|
public int activeLobbies;
|
||||||
|
|
||||||
|
/// <summary>Počet připojených hráčů</summary>
|
||||||
|
public int connectedPlayers;
|
||||||
|
}
|
||||||
|
|
||||||
|
#region ═══════════════════════════════════════════════════════════════════
|
||||||
|
// NAČÍTÁNÍ STATISTIK
|
||||||
|
// ════════════════════════════════════════════════════════════════════════
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Spustí načítání statistik hráče.
|
||||||
|
/// Výsledek bude v playerStats.
|
||||||
|
/// </summary>
|
||||||
|
protected void FetchPlayerStats()
|
||||||
|
{
|
||||||
|
Debug.Log($"[Stats] FetchPlayerStats called. isLoadingStats={isLoadingStats}, clientUuid={clientUuid}");
|
||||||
|
|
||||||
|
if (isLoadingStats)
|
||||||
|
{
|
||||||
|
Debug.Log("[Stats] Already loading, skipping");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (string.IsNullOrEmpty(clientUuid))
|
||||||
|
{
|
||||||
|
Debug.Log("[Stats] clientUuid is empty, skipping");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Debug.Log($"[Stats] Starting coroutine for player {clientUuid}");
|
||||||
|
StartCoroutine(FetchPlayerStatsCoroutine(clientUuid));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Coroutine pro načtení statistik hráče.
|
||||||
|
///
|
||||||
|
/// POZNÁMKA PRO STUDENTY:
|
||||||
|
/// Coroutiny v Unity umožňují asynchronní operace.
|
||||||
|
/// yield return čeká na dokončení operace před pokračováním.
|
||||||
|
/// UnityWebRequest.Get vytváří HTTP GET request.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="playerId">UUID hráče</param>
|
||||||
|
private IEnumerator FetchPlayerStatsCoroutine(string playerId)
|
||||||
|
{
|
||||||
|
isLoadingStats = true;
|
||||||
|
|
||||||
|
string url = $"{StatsApiUrl}/stats/{playerId}";
|
||||||
|
Debug.Log($"[Stats] Fetching from: {url}");
|
||||||
|
|
||||||
|
using (UnityWebRequest request = UnityWebRequest.Get(url))
|
||||||
|
{
|
||||||
|
// Nastavení timeoutu
|
||||||
|
request.timeout = 10;
|
||||||
|
|
||||||
|
// Odeslání requestu a čekání na odpověď
|
||||||
|
yield return request.SendWebRequest();
|
||||||
|
|
||||||
|
Debug.Log($"[Stats] Request completed. Result: {request.result}, Code: {request.responseCode}");
|
||||||
|
|
||||||
|
// Kontrola chyb
|
||||||
|
if (request.result == UnityWebRequest.Result.Success)
|
||||||
|
{
|
||||||
|
// Parsování JSON
|
||||||
|
try
|
||||||
|
{
|
||||||
|
string json = request.downloadHandler.text;
|
||||||
|
playerStats = JsonUtility.FromJson<PlayerStatistics>(json);
|
||||||
|
|
||||||
|
Debug.Log($"[Stats] Loaded stats for {playerStats.displayName}");
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
Debug.LogError($"[Stats] Failed to parse stats: {e.Message}");
|
||||||
|
playerStats = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Chyba při requestu
|
||||||
|
Debug.LogWarning($"[Stats] Failed to fetch stats: {request.error}");
|
||||||
|
|
||||||
|
// Pokud hráč neexistuje (404), vytvoříme prázdné statistiky
|
||||||
|
if (request.responseCode == 404)
|
||||||
|
{
|
||||||
|
playerStats = new PlayerStatistics
|
||||||
|
{
|
||||||
|
clientUuid = playerId,
|
||||||
|
displayName = displayName,
|
||||||
|
totalGames = 0,
|
||||||
|
gamesAsCrew = 0,
|
||||||
|
gamesAsImpostor = 0,
|
||||||
|
crewWins = 0,
|
||||||
|
impostorWins = 0,
|
||||||
|
crewWinRate = 0,
|
||||||
|
impostorWinRate = 0,
|
||||||
|
totalKills = 0,
|
||||||
|
totalDeaths = 0,
|
||||||
|
killDeathRatio = 0,
|
||||||
|
tasksCompleted = 0
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
isLoadingStats = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
#region ═══════════════════════════════════════════════════════════════════
|
||||||
|
// LEADERBOARD
|
||||||
|
// ════════════════════════════════════════════════════════════════════════
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Spustí načítání leaderboardu.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="limit">Počet hráčů k načtení (max 100)</param>
|
||||||
|
protected void FetchLeaderboard(int limit = 10)
|
||||||
|
{
|
||||||
|
if (isLoadingLeaderboard) return;
|
||||||
|
|
||||||
|
StartCoroutine(FetchLeaderboardCoroutine(limit));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Coroutine pro načtení leaderboardu.
|
||||||
|
/// </summary>
|
||||||
|
private IEnumerator FetchLeaderboardCoroutine(int limit)
|
||||||
|
{
|
||||||
|
isLoadingLeaderboard = true;
|
||||||
|
|
||||||
|
string url = $"{StatsApiUrl}/leaderboard?limit={limit}";
|
||||||
|
|
||||||
|
using (UnityWebRequest request = UnityWebRequest.Get(url))
|
||||||
|
{
|
||||||
|
request.timeout = 10;
|
||||||
|
|
||||||
|
yield return request.SendWebRequest();
|
||||||
|
|
||||||
|
if (request.result == UnityWebRequest.Result.Success)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
string json = request.downloadHandler.text;
|
||||||
|
|
||||||
|
// JsonUtility nemá přímou podporu pro arrays, potřebujeme wrapper
|
||||||
|
// nebo použijeme jednoduchý workaround
|
||||||
|
string wrappedJson = "{\"entries\":" + json + "}";
|
||||||
|
LeaderboardResponse response = JsonUtility.FromJson<LeaderboardResponse>(wrappedJson);
|
||||||
|
leaderboard = response.entries;
|
||||||
|
|
||||||
|
Debug.Log($"[Stats] Loaded leaderboard with {leaderboard.Count} entries");
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
Debug.LogError($"[Stats] Failed to parse leaderboard: {e.Message}");
|
||||||
|
leaderboard = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Debug.LogWarning($"[Stats] Failed to fetch leaderboard: {request.error}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
isLoadingLeaderboard = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
#region ═══════════════════════════════════════════════════════════════════
|
||||||
|
// HEALTH CHECK
|
||||||
|
// ════════════════════════════════════════════════════════════════════════
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Spustí health check serveru.
|
||||||
|
/// </summary>
|
||||||
|
protected void CheckServerHealth()
|
||||||
|
{
|
||||||
|
StartCoroutine(CheckServerHealthCoroutine());
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Coroutine pro health check.
|
||||||
|
/// </summary>
|
||||||
|
private IEnumerator CheckServerHealthCoroutine()
|
||||||
|
{
|
||||||
|
string url = $"{StatsApiUrl}/health";
|
||||||
|
|
||||||
|
using (UnityWebRequest request = UnityWebRequest.Get(url))
|
||||||
|
{
|
||||||
|
request.timeout = 5;
|
||||||
|
|
||||||
|
yield return request.SendWebRequest();
|
||||||
|
|
||||||
|
if (request.result == UnityWebRequest.Result.Success)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
string json = request.downloadHandler.text;
|
||||||
|
healthStatus = JsonUtility.FromJson<ServerHealthStatus>(json);
|
||||||
|
|
||||||
|
Debug.Log($"[Stats] Server health: {healthStatus.status}, " +
|
||||||
|
$"uptime: {healthStatus.uptimeSeconds}s, " +
|
||||||
|
$"lobbies: {healthStatus.activeLobbies}, " +
|
||||||
|
$"players: {healthStatus.connectedPlayers}");
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
Debug.LogError($"[Stats] Failed to parse health: {e.Message}");
|
||||||
|
healthStatus = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Debug.LogWarning($"[Stats] Health check failed: {request.error}");
|
||||||
|
healthStatus = new ServerHealthStatus
|
||||||
|
{
|
||||||
|
status = "unreachable",
|
||||||
|
version = "unknown"
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#region ═══════════════════════════════════════════════════════════════════
|
||||||
|
// UI PRO LEADERBOARD
|
||||||
|
// ════════════════════════════════════════════════════════════════════════
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Vykreslení leaderboard panelu.
|
||||||
|
/// Volá se z DrawStatsTab().
|
||||||
|
/// </summary>
|
||||||
|
protected void DrawLeaderboardPanel()
|
||||||
|
{
|
||||||
|
if (leaderboard == null)
|
||||||
|
{
|
||||||
|
GUILayout.Label("Načítám leaderboard...", labelStyle);
|
||||||
|
|
||||||
|
if (GUILayout.Button("Načíst", buttonStyle))
|
||||||
|
{
|
||||||
|
FetchLeaderboard(10);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
GUILayout.Label("TOP HRÁČI", subtitleStyle);
|
||||||
|
GUILayout.Space(5);
|
||||||
|
|
||||||
|
// Hlavička
|
||||||
|
GUILayout.BeginHorizontal();
|
||||||
|
GUILayout.Label("#", GUILayout.Width(30));
|
||||||
|
GUILayout.Label("Jméno", GUILayout.Width(150));
|
||||||
|
GUILayout.Label("Skóre", GUILayout.Width(80));
|
||||||
|
GUILayout.Label("Win%", GUILayout.Width(60));
|
||||||
|
GUILayout.EndHorizontal();
|
||||||
|
|
||||||
|
// Položky
|
||||||
|
int rank = 1;
|
||||||
|
foreach (var entry in leaderboard)
|
||||||
|
{
|
||||||
|
GUILayout.BeginHorizontal();
|
||||||
|
|
||||||
|
// Speciální barvy pro top 3
|
||||||
|
if (rank == 1) GUI.color = Color.yellow;
|
||||||
|
else if (rank == 2) GUI.color = new Color(0.8f, 0.8f, 0.8f);
|
||||||
|
else if (rank == 3) GUI.color = new Color(0.8f, 0.5f, 0.2f);
|
||||||
|
else GUI.color = Color.white;
|
||||||
|
|
||||||
|
GUILayout.Label($"{rank}.", GUILayout.Width(30));
|
||||||
|
GUILayout.Label(entry.displayName, GUILayout.Width(150));
|
||||||
|
GUILayout.Label(entry.TotalWins.ToString(), GUILayout.Width(80));
|
||||||
|
GUILayout.Label($"{entry.WinRate * 100:F0}%", GUILayout.Width(60));
|
||||||
|
|
||||||
|
GUI.color = Color.white;
|
||||||
|
GUILayout.EndHorizontal();
|
||||||
|
rank++;
|
||||||
|
}
|
||||||
|
|
||||||
|
GUILayout.Space(10);
|
||||||
|
|
||||||
|
if (GUILayout.Button("Obnovit", buttonStyle))
|
||||||
|
{
|
||||||
|
leaderboard = null;
|
||||||
|
FetchLeaderboard(10);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#region ═══════════════════════════════════════════════════════════════════
|
||||||
|
// UI PRO SERVER HEALTH
|
||||||
|
// ════════════════════════════════════════════════════════════════════════
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Vykreslení panelu stavu serveru.
|
||||||
|
/// </summary>
|
||||||
|
protected void DrawServerHealthPanel()
|
||||||
|
{
|
||||||
|
GUILayout.BeginVertical(boxStyle);
|
||||||
|
|
||||||
|
GUILayout.Label("STAV SERVERU", subtitleStyle);
|
||||||
|
|
||||||
|
if (healthStatus == null)
|
||||||
|
{
|
||||||
|
GUILayout.Label("Neznámý", labelStyle);
|
||||||
|
|
||||||
|
if (GUILayout.Button("Zkontrolovat", buttonStyle))
|
||||||
|
{
|
||||||
|
CheckServerHealth();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Status
|
||||||
|
if (healthStatus.status == "healthy")
|
||||||
|
{
|
||||||
|
GUI.color = Color.green;
|
||||||
|
GUILayout.Label("● Online", labelStyle);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
GUI.color = Color.red;
|
||||||
|
GUILayout.Label("● Offline", labelStyle);
|
||||||
|
}
|
||||||
|
GUI.color = Color.white;
|
||||||
|
|
||||||
|
// Detaily
|
||||||
|
GUILayout.Label($"Verze: {healthStatus.version}", labelStyle);
|
||||||
|
|
||||||
|
// Uptime
|
||||||
|
TimeSpan uptime = TimeSpan.FromSeconds(healthStatus.uptimeSeconds);
|
||||||
|
GUILayout.Label($"Uptime: {uptime.Days}d {uptime.Hours}h {uptime.Minutes}m", labelStyle);
|
||||||
|
|
||||||
|
// Aktivita
|
||||||
|
GUILayout.Label($"Lobby: {healthStatus.activeLobbies}", labelStyle);
|
||||||
|
GUILayout.Label($"Hráči: {healthStatus.connectedPlayers}", labelStyle);
|
||||||
|
|
||||||
|
GUILayout.Space(5);
|
||||||
|
|
||||||
|
if (GUILayout.Button("Obnovit", buttonStyle))
|
||||||
|
{
|
||||||
|
healthStatus = null;
|
||||||
|
CheckServerHealth();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
GUILayout.EndVertical();
|
||||||
|
}
|
||||||
|
|
||||||
|
#region ═══════════════════════════════════════════════════════════════════
|
||||||
|
// AUTOMATICKÉ NAČÍTÁNÍ
|
||||||
|
// ════════════════════════════════════════════════════════════════════════
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Interval automatického obnovení statistik (sekundy)
|
||||||
|
/// </summary>
|
||||||
|
protected float statsRefreshInterval = 60f;
|
||||||
|
|
||||||
|
/// <summary>Čas posledního obnovení</summary>
|
||||||
|
protected float lastStatsRefresh = 0f;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Automatické načítání statistik.
|
||||||
|
/// Volá se v Update().
|
||||||
|
/// </summary>
|
||||||
|
protected void UpdateStatsAutoRefresh()
|
||||||
|
{
|
||||||
|
if (currentState != AppState.MainMenu) return;
|
||||||
|
if (string.IsNullOrEmpty(clientUuid)) return;
|
||||||
|
|
||||||
|
if (Time.time - lastStatsRefresh >= statsRefreshInterval)
|
||||||
|
{
|
||||||
|
FetchPlayerStats();
|
||||||
|
CheckServerHealth();
|
||||||
|
lastStatsRefresh = Time.time;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
2
Assets/UnityTestClient/UnityTestClient_Stats.cs.meta
Normal file
2
Assets/UnityTestClient/UnityTestClient_Stats.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 8b7bb01435f46b842b79fe4836d1b44e
|
||||||
1642
Assets/UnityTestClient/UnityTestClient_UI.cs
Normal file
1642
Assets/UnityTestClient/UnityTestClient_UI.cs
Normal file
File diff suppressed because it is too large
Load Diff
2
Assets/UnityTestClient/UnityTestClient_UI.cs.meta
Normal file
2
Assets/UnityTestClient/UnityTestClient_UI.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: ebca6f90ee582ea448b7a028626d8636
|
||||||
48
Packages/manifest.json
Normal file
48
Packages/manifest.json
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
{
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.ai.navigation": "2.0.9",
|
||||||
|
"com.unity.collab-proxy": "2.9.3",
|
||||||
|
"com.unity.ide.rider": "3.0.38",
|
||||||
|
"com.unity.ide.visualstudio": "2.0.23",
|
||||||
|
"com.unity.inputsystem": "1.14.2",
|
||||||
|
"com.unity.multiplayer.center": "1.0.0",
|
||||||
|
"com.unity.nuget.newtonsoft-json": "3.2.2",
|
||||||
|
"com.unity.render-pipelines.universal": "17.2.0",
|
||||||
|
"com.unity.test-framework": "1.6.0",
|
||||||
|
"com.unity.timeline": "1.8.9",
|
||||||
|
"com.unity.ugui": "2.0.0",
|
||||||
|
"com.unity.visualscripting": "1.9.7",
|
||||||
|
"com.unity.modules.accessibility": "1.0.0",
|
||||||
|
"com.unity.modules.ai": "1.0.0",
|
||||||
|
"com.unity.modules.androidjni": "1.0.0",
|
||||||
|
"com.unity.modules.animation": "1.0.0",
|
||||||
|
"com.unity.modules.assetbundle": "1.0.0",
|
||||||
|
"com.unity.modules.audio": "1.0.0",
|
||||||
|
"com.unity.modules.cloth": "1.0.0",
|
||||||
|
"com.unity.modules.director": "1.0.0",
|
||||||
|
"com.unity.modules.imageconversion": "1.0.0",
|
||||||
|
"com.unity.modules.imgui": "1.0.0",
|
||||||
|
"com.unity.modules.jsonserialize": "1.0.0",
|
||||||
|
"com.unity.modules.particlesystem": "1.0.0",
|
||||||
|
"com.unity.modules.physics": "1.0.0",
|
||||||
|
"com.unity.modules.physics2d": "1.0.0",
|
||||||
|
"com.unity.modules.screencapture": "1.0.0",
|
||||||
|
"com.unity.modules.terrain": "1.0.0",
|
||||||
|
"com.unity.modules.terrainphysics": "1.0.0",
|
||||||
|
"com.unity.modules.tilemap": "1.0.0",
|
||||||
|
"com.unity.modules.ui": "1.0.0",
|
||||||
|
"com.unity.modules.uielements": "1.0.0",
|
||||||
|
"com.unity.modules.umbra": "1.0.0",
|
||||||
|
"com.unity.modules.unityanalytics": "1.0.0",
|
||||||
|
"com.unity.modules.unitywebrequest": "1.0.0",
|
||||||
|
"com.unity.modules.unitywebrequestassetbundle": "1.0.0",
|
||||||
|
"com.unity.modules.unitywebrequestaudio": "1.0.0",
|
||||||
|
"com.unity.modules.unitywebrequesttexture": "1.0.0",
|
||||||
|
"com.unity.modules.unitywebrequestwww": "1.0.0",
|
||||||
|
"com.unity.modules.vehicles": "1.0.0",
|
||||||
|
"com.unity.modules.video": "1.0.0",
|
||||||
|
"com.unity.modules.vr": "1.0.0",
|
||||||
|
"com.unity.modules.wind": "1.0.0",
|
||||||
|
"com.unity.modules.xr": "1.0.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
472
Packages/packages-lock.json
Normal file
472
Packages/packages-lock.json
Normal file
@@ -0,0 +1,472 @@
|
|||||||
|
{
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.ai.navigation": {
|
||||||
|
"version": "2.0.9",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "registry",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.modules.ai": "1.0.0"
|
||||||
|
},
|
||||||
|
"url": "https://packages.unity.com"
|
||||||
|
},
|
||||||
|
"com.unity.burst": {
|
||||||
|
"version": "1.8.25",
|
||||||
|
"depth": 2,
|
||||||
|
"source": "registry",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.mathematics": "1.2.1",
|
||||||
|
"com.unity.modules.jsonserialize": "1.0.0"
|
||||||
|
},
|
||||||
|
"url": "https://packages.unity.com"
|
||||||
|
},
|
||||||
|
"com.unity.collab-proxy": {
|
||||||
|
"version": "2.9.3",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "registry",
|
||||||
|
"dependencies": {},
|
||||||
|
"url": "https://packages.unity.com"
|
||||||
|
},
|
||||||
|
"com.unity.collections": {
|
||||||
|
"version": "2.5.7",
|
||||||
|
"depth": 2,
|
||||||
|
"source": "registry",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.burst": "1.8.19",
|
||||||
|
"com.unity.mathematics": "1.3.2",
|
||||||
|
"com.unity.test-framework": "1.4.6",
|
||||||
|
"com.unity.nuget.mono-cecil": "1.11.5",
|
||||||
|
"com.unity.test-framework.performance": "3.0.3"
|
||||||
|
},
|
||||||
|
"url": "https://packages.unity.com"
|
||||||
|
},
|
||||||
|
"com.unity.ext.nunit": {
|
||||||
|
"version": "2.0.5",
|
||||||
|
"depth": 1,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
|
"com.unity.ide.rider": {
|
||||||
|
"version": "3.0.38",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "registry",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.ext.nunit": "1.0.6"
|
||||||
|
},
|
||||||
|
"url": "https://packages.unity.com"
|
||||||
|
},
|
||||||
|
"com.unity.ide.visualstudio": {
|
||||||
|
"version": "2.0.23",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "registry",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.test-framework": "1.1.9"
|
||||||
|
},
|
||||||
|
"url": "https://packages.unity.com"
|
||||||
|
},
|
||||||
|
"com.unity.inputsystem": {
|
||||||
|
"version": "1.14.2",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "registry",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.modules.uielements": "1.0.0"
|
||||||
|
},
|
||||||
|
"url": "https://packages.unity.com"
|
||||||
|
},
|
||||||
|
"com.unity.mathematics": {
|
||||||
|
"version": "1.3.2",
|
||||||
|
"depth": 2,
|
||||||
|
"source": "registry",
|
||||||
|
"dependencies": {},
|
||||||
|
"url": "https://packages.unity.com"
|
||||||
|
},
|
||||||
|
"com.unity.multiplayer.center": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.modules.uielements": "1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"com.unity.nuget.mono-cecil": {
|
||||||
|
"version": "1.11.5",
|
||||||
|
"depth": 3,
|
||||||
|
"source": "registry",
|
||||||
|
"dependencies": {},
|
||||||
|
"url": "https://packages.unity.com"
|
||||||
|
},
|
||||||
|
"com.unity.nuget.newtonsoft-json": {
|
||||||
|
"version": "3.2.2",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "registry",
|
||||||
|
"dependencies": {},
|
||||||
|
"url": "https://packages.unity.com"
|
||||||
|
},
|
||||||
|
"com.unity.render-pipelines.core": {
|
||||||
|
"version": "17.2.0",
|
||||||
|
"depth": 1,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.burst": "1.8.14",
|
||||||
|
"com.unity.mathematics": "1.3.2",
|
||||||
|
"com.unity.ugui": "2.0.0",
|
||||||
|
"com.unity.collections": "2.4.3",
|
||||||
|
"com.unity.modules.physics": "1.0.0",
|
||||||
|
"com.unity.modules.terrain": "1.0.0",
|
||||||
|
"com.unity.modules.jsonserialize": "1.0.0",
|
||||||
|
"com.unity.rendering.light-transport": "1.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"com.unity.render-pipelines.universal": {
|
||||||
|
"version": "17.2.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.render-pipelines.core": "17.2.0",
|
||||||
|
"com.unity.shadergraph": "17.2.0",
|
||||||
|
"com.unity.render-pipelines.universal-config": "17.0.3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"com.unity.render-pipelines.universal-config": {
|
||||||
|
"version": "17.0.3",
|
||||||
|
"depth": 1,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.render-pipelines.core": "17.0.3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"com.unity.rendering.light-transport": {
|
||||||
|
"version": "1.0.1",
|
||||||
|
"depth": 2,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.collections": "2.2.0",
|
||||||
|
"com.unity.mathematics": "1.2.4",
|
||||||
|
"com.unity.modules.terrain": "1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"com.unity.searcher": {
|
||||||
|
"version": "4.9.3",
|
||||||
|
"depth": 2,
|
||||||
|
"source": "registry",
|
||||||
|
"dependencies": {},
|
||||||
|
"url": "https://packages.unity.com"
|
||||||
|
},
|
||||||
|
"com.unity.shadergraph": {
|
||||||
|
"version": "17.2.0",
|
||||||
|
"depth": 1,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.render-pipelines.core": "17.2.0",
|
||||||
|
"com.unity.searcher": "4.9.3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"com.unity.test-framework": {
|
||||||
|
"version": "1.6.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.ext.nunit": "2.0.3",
|
||||||
|
"com.unity.modules.imgui": "1.0.0",
|
||||||
|
"com.unity.modules.jsonserialize": "1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"com.unity.test-framework.performance": {
|
||||||
|
"version": "3.2.0",
|
||||||
|
"depth": 3,
|
||||||
|
"source": "registry",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.test-framework": "1.1.33",
|
||||||
|
"com.unity.modules.jsonserialize": "1.0.0"
|
||||||
|
},
|
||||||
|
"url": "https://packages.unity.com"
|
||||||
|
},
|
||||||
|
"com.unity.timeline": {
|
||||||
|
"version": "1.8.9",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "registry",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.modules.audio": "1.0.0",
|
||||||
|
"com.unity.modules.director": "1.0.0",
|
||||||
|
"com.unity.modules.animation": "1.0.0",
|
||||||
|
"com.unity.modules.particlesystem": "1.0.0"
|
||||||
|
},
|
||||||
|
"url": "https://packages.unity.com"
|
||||||
|
},
|
||||||
|
"com.unity.ugui": {
|
||||||
|
"version": "2.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.modules.ui": "1.0.0",
|
||||||
|
"com.unity.modules.imgui": "1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"com.unity.visualscripting": {
|
||||||
|
"version": "1.9.7",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "registry",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.ugui": "1.0.0",
|
||||||
|
"com.unity.modules.jsonserialize": "1.0.0"
|
||||||
|
},
|
||||||
|
"url": "https://packages.unity.com"
|
||||||
|
},
|
||||||
|
"com.unity.modules.accessibility": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
|
"com.unity.modules.ai": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
|
"com.unity.modules.androidjni": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
|
"com.unity.modules.animation": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
|
"com.unity.modules.assetbundle": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
|
"com.unity.modules.audio": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
|
"com.unity.modules.cloth": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.modules.physics": "1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"com.unity.modules.director": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.modules.audio": "1.0.0",
|
||||||
|
"com.unity.modules.animation": "1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"com.unity.modules.hierarchycore": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 1,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
|
"com.unity.modules.imageconversion": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
|
"com.unity.modules.imgui": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
|
"com.unity.modules.jsonserialize": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
|
"com.unity.modules.particlesystem": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
|
"com.unity.modules.physics": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
|
"com.unity.modules.physics2d": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
|
"com.unity.modules.screencapture": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.modules.imageconversion": "1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"com.unity.modules.subsystems": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 1,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.modules.jsonserialize": "1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"com.unity.modules.terrain": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
|
"com.unity.modules.terrainphysics": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.modules.physics": "1.0.0",
|
||||||
|
"com.unity.modules.terrain": "1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"com.unity.modules.tilemap": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.modules.physics2d": "1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"com.unity.modules.ui": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
|
"com.unity.modules.uielements": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.modules.ui": "1.0.0",
|
||||||
|
"com.unity.modules.imgui": "1.0.0",
|
||||||
|
"com.unity.modules.jsonserialize": "1.0.0",
|
||||||
|
"com.unity.modules.hierarchycore": "1.0.0",
|
||||||
|
"com.unity.modules.physics": "1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"com.unity.modules.umbra": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
|
"com.unity.modules.unityanalytics": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.modules.unitywebrequest": "1.0.0",
|
||||||
|
"com.unity.modules.jsonserialize": "1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"com.unity.modules.unitywebrequest": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
|
"com.unity.modules.unitywebrequestassetbundle": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.modules.assetbundle": "1.0.0",
|
||||||
|
"com.unity.modules.unitywebrequest": "1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"com.unity.modules.unitywebrequestaudio": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.modules.unitywebrequest": "1.0.0",
|
||||||
|
"com.unity.modules.audio": "1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"com.unity.modules.unitywebrequesttexture": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.modules.unitywebrequest": "1.0.0",
|
||||||
|
"com.unity.modules.imageconversion": "1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"com.unity.modules.unitywebrequestwww": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.modules.unitywebrequest": "1.0.0",
|
||||||
|
"com.unity.modules.unitywebrequestassetbundle": "1.0.0",
|
||||||
|
"com.unity.modules.unitywebrequestaudio": "1.0.0",
|
||||||
|
"com.unity.modules.audio": "1.0.0",
|
||||||
|
"com.unity.modules.assetbundle": "1.0.0",
|
||||||
|
"com.unity.modules.imageconversion": "1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"com.unity.modules.vehicles": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.modules.physics": "1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"com.unity.modules.video": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.modules.audio": "1.0.0",
|
||||||
|
"com.unity.modules.ui": "1.0.0",
|
||||||
|
"com.unity.modules.unitywebrequest": "1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"com.unity.modules.vr": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.modules.jsonserialize": "1.0.0",
|
||||||
|
"com.unity.modules.physics": "1.0.0",
|
||||||
|
"com.unity.modules.xr": "1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"com.unity.modules.wind": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
|
"com.unity.modules.xr": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.modules.physics": "1.0.0",
|
||||||
|
"com.unity.modules.jsonserialize": "1.0.0",
|
||||||
|
"com.unity.modules.subsystems": "1.0.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user