Move client to 3D scenes with SceneFlow
CI / test (push) Successful in 2m33s
Details
CI / test (push) Successful in 2m33s
Details
This commit is contained in:
parent
f618b69ae4
commit
6ed0998078
|
|
@ -234,8 +234,9 @@
|
||||||
|
|
||||||
- [x] Unity 6 LTS, URP, Addressables, Input System, Localization.
|
- [x] Unity 6 LTS, URP, Addressables, Input System, Localization.
|
||||||
DOTween — следующим шагом (пока UI без внешних твинов).
|
DOTween — следующим шагом (пока UI без внешних твинов).
|
||||||
- [ ] 3D-сцены `Login`, `Lobby`, `Collection`, `DeckBuilder`, `Battle`
|
- [x] 3D-сцены `Login`, `Lobby`, `Collection`, `DeckBuilder`, `Battle`
|
||||||
и `SceneFlow`; `Boot` уже есть как служебный bootstrap.
|
и `SceneFlow`; `Boot` — стартовая служебная сцена. 3D-окружение пока
|
||||||
|
из примитивов, UI — code-generated uGUI.
|
||||||
- [x] Composition root + DI (VContainer), без синглтон-свалок.
|
- [x] Composition root + DI (VContainer), без синглтон-свалок.
|
||||||
- [x] `ApiClient` (HTTP/JSON), `PlayerState`, таймауты и разбор `ApiError`.
|
- [x] `ApiClient` (HTTP/JSON), `PlayerState`, таймауты и разбор `ApiError`.
|
||||||
- [x] `GameConnection` (WebSocket + MessagePack), snapshot/events,
|
- [x] `GameConnection` (WebSocket + MessagePack), snapshot/events,
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@
|
||||||
| CI (Forgejo Actions) | готово: `ci.yml` проходит на `home-runner` |
|
| CI (Forgejo Actions) | готово: `ci.yml` проходит на `home-runner` |
|
||||||
| EF-миграции | готово (`InitialCreate`) |
|
| EF-миграции | готово (`InitialCreate`) |
|
||||||
| Orleans | готово: silo + `MatchActorGrain`, включается `Orleans:Enabled` |
|
| Orleans | готово: silo + `MatchActorGrain`, включается `Orleans:Enabled` |
|
||||||
| Клиент | Unity 6.6: 3D-сцены Login/Lobby/Collection/DeckBuilder/Battle; сейчас gray-box на одном Canvas |
|
| Клиент | Unity 6.6: 3D-сцены Login/Lobby/Collection/DeckBuilder/Battle + SceneFlow; UI gray-box |
|
||||||
| Лаунчер | не начато |
|
| Лаунчер | не начато |
|
||||||
|
|
||||||
## Требования
|
## Требования
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 7fb54fe32f66fc44fac44b13550d9cc9
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
|
|
@ -0,0 +1,83 @@
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using UnityEditor;
|
||||||
|
using UnityEditor.SceneManagement;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.SceneManagement;
|
||||||
|
using Vanguard.App;
|
||||||
|
|
||||||
|
namespace Vanguard.Editor
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Создаёт сцены-экраны и прописывает их в Build Settings.
|
||||||
|
/// Запуск: меню Vanguard → Rebuild Client Scenes или
|
||||||
|
/// Unity -batchmode -quit -executeMethod Vanguard.Editor.SceneBuilder.BuildAll.
|
||||||
|
/// </summary>
|
||||||
|
public static class SceneBuilder
|
||||||
|
{
|
||||||
|
private const string SceneDir = "Assets/Vanguard/Scenes";
|
||||||
|
private const string BootPath = "Assets/Scenes/Boot.unity";
|
||||||
|
|
||||||
|
[MenuItem("Vanguard/Rebuild Client Scenes")]
|
||||||
|
public static void BuildAll()
|
||||||
|
{
|
||||||
|
if (!Directory.Exists(SceneDir))
|
||||||
|
{
|
||||||
|
Directory.CreateDirectory(SceneDir);
|
||||||
|
AssetDatabase.Refresh();
|
||||||
|
}
|
||||||
|
|
||||||
|
Create<LoginSceneController>("Login");
|
||||||
|
Create<LobbySceneController>("Lobby");
|
||||||
|
Create<CollectionSceneController>("Collection");
|
||||||
|
Create<DeckBuilderSceneController>("DeckBuilder");
|
||||||
|
Create<BattleSceneController>("Battle");
|
||||||
|
|
||||||
|
var scenes = new List<EditorBuildSettingsScene>();
|
||||||
|
Add(scenes, BootPath);
|
||||||
|
Add(scenes, SceneDir + "/Login.unity");
|
||||||
|
Add(scenes, SceneDir + "/Lobby.unity");
|
||||||
|
Add(scenes, SceneDir + "/Collection.unity");
|
||||||
|
Add(scenes, SceneDir + "/DeckBuilder.unity");
|
||||||
|
Add(scenes, SceneDir + "/Battle.unity");
|
||||||
|
|
||||||
|
EditorBuildSettings.scenes = scenes.ToArray();
|
||||||
|
AssetDatabase.SaveAssets();
|
||||||
|
AssetDatabase.Refresh();
|
||||||
|
|
||||||
|
Debug.Log("Vanguard scenes rebuilt: " + scenes.Count);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void Create<T>(string sceneName) where T : MonoBehaviour
|
||||||
|
{
|
||||||
|
var scene = EditorSceneManager.NewScene(NewSceneSetup.EmptyScene, NewSceneMode.Single);
|
||||||
|
|
||||||
|
var root = new GameObject(sceneName + " Scene");
|
||||||
|
root.AddComponent<T>();
|
||||||
|
|
||||||
|
var cameraGo = new GameObject("Main Camera");
|
||||||
|
cameraGo.tag = "MainCamera";
|
||||||
|
var camera = cameraGo.AddComponent<Camera>();
|
||||||
|
camera.clearFlags = CameraClearFlags.SolidColor;
|
||||||
|
camera.backgroundColor = new Color(0.02f, 0.03f, 0.055f);
|
||||||
|
camera.transform.position = new Vector3(0f, 3.2f, -10f);
|
||||||
|
camera.transform.rotation = Quaternion.Euler(12f, 0f, 0f);
|
||||||
|
|
||||||
|
var lightGo = new GameObject("Directional Light");
|
||||||
|
var light = lightGo.AddComponent<Light>();
|
||||||
|
light.type = LightType.Directional;
|
||||||
|
light.color = new Color(0.82f, 0.88f, 1f);
|
||||||
|
light.intensity = 0.9f;
|
||||||
|
light.shadows = LightShadows.Soft;
|
||||||
|
light.transform.rotation = Quaternion.Euler(48f, -32f, 0f);
|
||||||
|
|
||||||
|
EditorSceneManager.SaveScene(scene, SceneDir + "/" + sceneName + ".unity");
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void Add(ICollection<EditorBuildSettingsScene> scenes, string path)
|
||||||
|
{
|
||||||
|
if (File.Exists(path))
|
||||||
|
scenes.Add(new EditorBuildSettingsScene(path, true));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: c24d38169d69d16429c902bae594a19d
|
||||||
|
|
@ -0,0 +1,62 @@
|
||||||
|
using System;
|
||||||
|
using UnityEditor;
|
||||||
|
using UnityEditor.SceneManagement;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.SceneManagement;
|
||||||
|
using Vanguard.App;
|
||||||
|
|
||||||
|
namespace Vanguard.Editor
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Быстрый smoke-запуск сцен из командной строки:
|
||||||
|
/// Unity -batchmode -nographics -executeMethod Vanguard.Editor.SceneSmoke.Run.
|
||||||
|
/// Открывает Boot, входит в Play Mode, ждёт загрузку Login/Lobby и выходит.
|
||||||
|
/// </summary>
|
||||||
|
public static class SceneSmoke
|
||||||
|
{
|
||||||
|
private static double _started;
|
||||||
|
private static int _checks;
|
||||||
|
|
||||||
|
[MenuItem("Vanguard/Play Scene Smoke")]
|
||||||
|
public static void Run()
|
||||||
|
{
|
||||||
|
EditorSceneManager.OpenScene("Assets/Scenes/Boot.unity");
|
||||||
|
_started = EditorApplication.timeSinceStartup;
|
||||||
|
_checks = 0;
|
||||||
|
EditorApplication.update += Tick;
|
||||||
|
EditorApplication.EnterPlaymode();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void Tick()
|
||||||
|
{
|
||||||
|
if (!EditorApplication.isPlaying)
|
||||||
|
return;
|
||||||
|
|
||||||
|
_checks++;
|
||||||
|
if (EditorApplication.timeSinceStartup - _started < 6.0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
EditorApplication.update -= Tick;
|
||||||
|
|
||||||
|
var active = SceneManager.GetActiveScene().name;
|
||||||
|
var environment = GameObject.Find("Vanguard 3D Environment");
|
||||||
|
var login = GameObject.Find("LoginScreen");
|
||||||
|
var lobby = GameObject.Find("MetaScreen");
|
||||||
|
var onboarding = GameObject.Find("OnboardingScreen");
|
||||||
|
var success = environment != null
|
||||||
|
&& (active == SceneFlow.Login || active == SceneFlow.Lobby)
|
||||||
|
&& (login != null || lobby != null || onboarding != null);
|
||||||
|
|
||||||
|
Debug.Log(
|
||||||
|
"SCENE_SMOKE success=" + success
|
||||||
|
+ " active=" + active
|
||||||
|
+ " env=" + (environment != null)
|
||||||
|
+ " login=" + (login != null)
|
||||||
|
+ " lobby=" + (lobby != null)
|
||||||
|
+ " onboarding=" + (onboarding != null)
|
||||||
|
+ " error=" + VanguardApp.LastInitializationError);
|
||||||
|
|
||||||
|
EditorApplication.Exit(success ? 0 : 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: dfcd15474d289f848b7fa616f9b1d4e2
|
||||||
|
|
@ -1,19 +1,18 @@
|
||||||
{
|
{
|
||||||
"name": "Vanguard.Tests.PlayMode",
|
"name": "Vanguard.Editor",
|
||||||
"rootNamespace": "Vanguard.Tests",
|
"rootNamespace": "Vanguard.Editor",
|
||||||
"references": [
|
"references": [
|
||||||
"Vanguard.Runtime"
|
"Vanguard.Runtime"
|
||||||
],
|
],
|
||||||
"includePlatforms": [],
|
"includePlatforms": [
|
||||||
|
"Editor"
|
||||||
|
],
|
||||||
"excludePlatforms": [],
|
"excludePlatforms": [],
|
||||||
"allowUnsafeCode": false,
|
"allowUnsafeCode": false,
|
||||||
"overrideReferences": false,
|
"overrideReferences": false,
|
||||||
"precompiledReferences": [],
|
"precompiledReferences": [],
|
||||||
"autoReferenced": false,
|
"autoReferenced": true,
|
||||||
"defineConstraints": [],
|
"defineConstraints": [],
|
||||||
"versionDefines": [],
|
"versionDefines": [],
|
||||||
"noEngineReferences": false,
|
"noEngineReferences": false
|
||||||
"optionalUnityReferences": [
|
|
||||||
"TestAssemblies"
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 199ad6dea713aef4cb50a4d8d01c9ca4
|
guid: f65969750402d974c8bc90b95a61ae96
|
||||||
AssemblyDefinitionImporter:
|
AssemblyDefinitionImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
userData:
|
userData:
|
||||||
|
|
@ -0,0 +1,35 @@
|
||||||
|
using UnityEngine;
|
||||||
|
using Vanguard.Meta;
|
||||||
|
using Vanguard.UI;
|
||||||
|
|
||||||
|
namespace Vanguard.App
|
||||||
|
{
|
||||||
|
public sealed class BattleSceneController : SceneControllerBase
|
||||||
|
{
|
||||||
|
private BattleView _view;
|
||||||
|
|
||||||
|
private void Start()
|
||||||
|
{
|
||||||
|
SceneEnvironment.Build(SceneTheme.Battle);
|
||||||
|
|
||||||
|
var info = Flow.ConsumePendingMatch();
|
||||||
|
if (info == null)
|
||||||
|
{
|
||||||
|
_ = Flow.LoadLobbyAsync();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var canvas = CreateCanvas("Battle Canvas");
|
||||||
|
_view = new BattleView(
|
||||||
|
canvas.transform,
|
||||||
|
Resolve<MetaService>(),
|
||||||
|
() => _ = Flow.LoadLobbyAsync());
|
||||||
|
_view.Show(info);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Update()
|
||||||
|
{
|
||||||
|
_view?.Tick();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 9a62d9e570dfb024d96981ddfffdf2ad
|
||||||
|
|
@ -0,0 +1,23 @@
|
||||||
|
using UnityEngine;
|
||||||
|
using Vanguard.Meta;
|
||||||
|
using Vanguard.State;
|
||||||
|
using Vanguard.UI;
|
||||||
|
|
||||||
|
namespace Vanguard.App
|
||||||
|
{
|
||||||
|
public sealed class CollectionSceneController : SceneControllerBase
|
||||||
|
{
|
||||||
|
private CollectionView _view;
|
||||||
|
|
||||||
|
private void Start()
|
||||||
|
{
|
||||||
|
SceneEnvironment.Build(SceneTheme.Collection);
|
||||||
|
var canvas = CreateCanvas("Collection Canvas");
|
||||||
|
_view = new CollectionView(
|
||||||
|
canvas.transform,
|
||||||
|
Resolve<MetaService>(),
|
||||||
|
Resolve<PlayerState>(),
|
||||||
|
() => _ = Flow.LoadLobbyAsync());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 8ccb09cec5c89814493fae05cf2d6051
|
||||||
|
|
@ -0,0 +1,25 @@
|
||||||
|
using UnityEngine;
|
||||||
|
using Vanguard.Api.Contracts;
|
||||||
|
using Vanguard.Meta;
|
||||||
|
using Vanguard.State;
|
||||||
|
using Vanguard.UI;
|
||||||
|
|
||||||
|
namespace Vanguard.App
|
||||||
|
{
|
||||||
|
public sealed class DeckBuilderSceneController : SceneControllerBase
|
||||||
|
{
|
||||||
|
private DecksView _view;
|
||||||
|
|
||||||
|
private void Start()
|
||||||
|
{
|
||||||
|
SceneEnvironment.Build(SceneTheme.DeckBuilder);
|
||||||
|
var canvas = CreateCanvas("DeckBuilder Canvas");
|
||||||
|
_view = new DecksView(
|
||||||
|
canvas.transform,
|
||||||
|
Resolve<MetaService>(),
|
||||||
|
Resolve<PlayerState>(),
|
||||||
|
() => _ = Flow.LoadLobbyAsync(),
|
||||||
|
deck => _ = Flow.OpenLobbyWithQueueAsync(deck));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: c87789aeb7d84cc438babc89db55d1fc
|
||||||
|
|
@ -0,0 +1,98 @@
|
||||||
|
using UnityEngine;
|
||||||
|
using Vanguard.Api.Contracts;
|
||||||
|
using Vanguard.Auth;
|
||||||
|
using Vanguard.Battle;
|
||||||
|
using Vanguard.Meta;
|
||||||
|
using Vanguard.State;
|
||||||
|
using Vanguard.UI;
|
||||||
|
|
||||||
|
namespace Vanguard.App
|
||||||
|
{
|
||||||
|
public sealed class LobbySceneController : SceneControllerBase
|
||||||
|
{
|
||||||
|
private AuthService _auth;
|
||||||
|
private MetaService _meta;
|
||||||
|
private PlayerState _player;
|
||||||
|
private MetaView _metaView;
|
||||||
|
private OnboardingView _onboarding;
|
||||||
|
private QueueView _queue;
|
||||||
|
|
||||||
|
private void Start()
|
||||||
|
{
|
||||||
|
SceneEnvironment.Build(SceneTheme.Lobby);
|
||||||
|
|
||||||
|
_auth = Resolve<AuthService>();
|
||||||
|
_meta = Resolve<MetaService>();
|
||||||
|
_player = Resolve<PlayerState>();
|
||||||
|
var canvas = CreateCanvas("Lobby Canvas");
|
||||||
|
|
||||||
|
_metaView = new MetaView(
|
||||||
|
canvas.transform,
|
||||||
|
_auth,
|
||||||
|
_player,
|
||||||
|
OnLogout,
|
||||||
|
() => _ = Flow.LoadCollectionAsync(),
|
||||||
|
() => _ = Flow.LoadDeckBuilderAsync(),
|
||||||
|
() => _ = Flow.LoadDeckBuilderAsync(),
|
||||||
|
ShowOnboarding);
|
||||||
|
_onboarding = new OnboardingView(
|
||||||
|
canvas.transform, _auth, _meta, OnOnboarded, OnLogout);
|
||||||
|
_queue = new QueueView(
|
||||||
|
canvas.transform, _meta, _auth, OnQueueBack, OnMatched);
|
||||||
|
|
||||||
|
ShowDefault();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ShowDefault()
|
||||||
|
{
|
||||||
|
var pendingDeck = Flow.ConsumePendingQueueDeck();
|
||||||
|
if (pendingDeck != null)
|
||||||
|
{
|
||||||
|
HideAll();
|
||||||
|
_queue.Show(pendingDeck);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
HideAll();
|
||||||
|
if (_player.OnboardingCompleted)
|
||||||
|
_metaView.Show();
|
||||||
|
else
|
||||||
|
_onboarding.Show();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ShowOnboarding()
|
||||||
|
{
|
||||||
|
HideAll();
|
||||||
|
_onboarding.Show();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnOnboarded()
|
||||||
|
{
|
||||||
|
HideAll();
|
||||||
|
_metaView.Show();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnQueueBack()
|
||||||
|
{
|
||||||
|
_queue.Hide();
|
||||||
|
_metaView.Show();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnMatched(MatchConnectionInfo info)
|
||||||
|
{
|
||||||
|
_ = Flow.LoadBattleAsync(info);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnLogout()
|
||||||
|
{
|
||||||
|
_ = Flow.LoadLoginAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void HideAll()
|
||||||
|
{
|
||||||
|
_metaView.Hide();
|
||||||
|
_onboarding.Hide();
|
||||||
|
_queue.Hide();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: a1fe2c339c891e849a96ecc6a5c22748
|
||||||
|
|
@ -0,0 +1,48 @@
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using UnityEngine;
|
||||||
|
using Vanguard.Auth;
|
||||||
|
using Vanguard.UI;
|
||||||
|
|
||||||
|
namespace Vanguard.App
|
||||||
|
{
|
||||||
|
public sealed class LoginSceneController : SceneControllerBase
|
||||||
|
{
|
||||||
|
private AuthService _auth;
|
||||||
|
private LoginView _view;
|
||||||
|
|
||||||
|
private void Start()
|
||||||
|
{
|
||||||
|
SceneEnvironment.Build(SceneTheme.Login);
|
||||||
|
_auth = Resolve<AuthService>();
|
||||||
|
var config = Resolve<AppConfig>();
|
||||||
|
|
||||||
|
var canvas = CreateCanvas("Login Canvas");
|
||||||
|
_view = new LoginView(canvas.transform, config, _auth, OnAuthenticated);
|
||||||
|
_view.Show("Проверяем сессию…");
|
||||||
|
_ = RestoreAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task RestoreAsync()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (await _auth.TryRestoreAsync())
|
||||||
|
{
|
||||||
|
await Flow.LoadLobbyAsync();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (System.Exception exception)
|
||||||
|
{
|
||||||
|
Debug.LogException(exception);
|
||||||
|
}
|
||||||
|
|
||||||
|
_view.Show("Введите данные игрока.");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnAuthenticated()
|
||||||
|
{
|
||||||
|
_ = Flow.LoadLobbyAsync();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: dc0007ae5cfaa2647a674301f0042159
|
||||||
|
|
@ -0,0 +1,31 @@
|
||||||
|
using UnityEngine;
|
||||||
|
using VContainer;
|
||||||
|
using Vanguard.UI;
|
||||||
|
|
||||||
|
namespace Vanguard.App
|
||||||
|
{
|
||||||
|
/// <summary>База контроллера сцены: доступ к персистентным сервисам и Canvas.</summary>
|
||||||
|
public abstract class SceneControllerBase : MonoBehaviour
|
||||||
|
{
|
||||||
|
protected VanguardApp App { get; private set; }
|
||||||
|
protected IObjectResolver Container => App.Container;
|
||||||
|
protected SceneFlow Flow => App.Flow;
|
||||||
|
|
||||||
|
protected virtual void Awake()
|
||||||
|
{
|
||||||
|
App = VanguardApp.Instance;
|
||||||
|
if (App == null)
|
||||||
|
{
|
||||||
|
Debug.LogError("VanguardApp не создан. Запусти игру из Boot или через Play в любой сцене клиента.");
|
||||||
|
enabled = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected Canvas CreateCanvas(string name)
|
||||||
|
{
|
||||||
|
return UiKit.CreateCanvas(name, persistent: false);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected T Resolve<T>() where T : class => Container.Resolve<T>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 861c568d3c51e8a4e9997279e60fee32
|
||||||
|
|
@ -0,0 +1,251 @@
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace Vanguard.App
|
||||||
|
{
|
||||||
|
public enum SceneTheme
|
||||||
|
{
|
||||||
|
Login,
|
||||||
|
Lobby,
|
||||||
|
Collection,
|
||||||
|
DeckBuilder,
|
||||||
|
Battle,
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Простой 3D-фон для экранов: камера, свет, пол и тематические
|
||||||
|
/// примитивы. Это заготовка под будущие модели и арт; UI остаётся
|
||||||
|
/// отдельным Canvas-слоем.
|
||||||
|
/// </summary>
|
||||||
|
public static class SceneEnvironment
|
||||||
|
{
|
||||||
|
private const string RootName = "Vanguard 3D Environment";
|
||||||
|
|
||||||
|
public static void Build(SceneTheme theme)
|
||||||
|
{
|
||||||
|
if (GameObject.Find(RootName) != null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
var root = new GameObject(RootName);
|
||||||
|
var palette = GetPalette(theme);
|
||||||
|
|
||||||
|
SetCamera(theme, palette);
|
||||||
|
SetLight(theme, palette);
|
||||||
|
RenderSettings.ambientLight = palette.Ambient;
|
||||||
|
RenderSettings.fog = true;
|
||||||
|
RenderSettings.fogMode = FogMode.Exponential;
|
||||||
|
RenderSettings.fogColor = palette.Background;
|
||||||
|
RenderSettings.fogDensity = 0.012f;
|
||||||
|
|
||||||
|
CreateFloor(root.transform, palette);
|
||||||
|
Decorate(theme, root.transform, palette);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void SetCamera(SceneTheme theme, ScenePalette palette)
|
||||||
|
{
|
||||||
|
var camera = Camera.main;
|
||||||
|
if (camera == null)
|
||||||
|
{
|
||||||
|
var go = new GameObject("Main Camera");
|
||||||
|
go.tag = "MainCamera";
|
||||||
|
camera = go.AddComponent<Camera>();
|
||||||
|
}
|
||||||
|
|
||||||
|
camera.clearFlags = CameraClearFlags.SolidColor;
|
||||||
|
camera.backgroundColor = palette.Background;
|
||||||
|
camera.fieldOfView = 52f;
|
||||||
|
camera.transform.position = theme == SceneTheme.Battle
|
||||||
|
? new Vector3(0f, 7.5f, -13f)
|
||||||
|
: new Vector3(0f, 3.2f, -10f);
|
||||||
|
camera.transform.rotation = theme == SceneTheme.Battle
|
||||||
|
? Quaternion.Euler(28f, 0f, 0f)
|
||||||
|
: Quaternion.Euler(12f, 0f, 0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void SetLight(SceneTheme theme, ScenePalette palette)
|
||||||
|
{
|
||||||
|
var light = Object.FindAnyObjectByType<Light>();
|
||||||
|
if (light == null)
|
||||||
|
{
|
||||||
|
var go = new GameObject("Directional Light");
|
||||||
|
light = go.AddComponent<Light>();
|
||||||
|
light.type = LightType.Directional;
|
||||||
|
}
|
||||||
|
|
||||||
|
light.color = palette.Light;
|
||||||
|
light.intensity = theme == SceneTheme.Battle ? 1.15f : 0.9f;
|
||||||
|
light.transform.rotation = Quaternion.Euler(48f, -32f, 0f);
|
||||||
|
light.shadows = LightShadows.Soft;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void CreateFloor(Transform root, ScenePalette palette)
|
||||||
|
{
|
||||||
|
var floor = GameObject.CreatePrimitive(PrimitiveType.Plane);
|
||||||
|
floor.name = "Floor";
|
||||||
|
floor.transform.SetParent(root, false);
|
||||||
|
floor.transform.localScale = new Vector3(4f, 1f, 4f);
|
||||||
|
floor.transform.position = new Vector3(0f, -0.02f, 2f);
|
||||||
|
Paint(floor, palette.Floor, 0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void Decorate(SceneTheme theme, Transform root, ScenePalette palette)
|
||||||
|
{
|
||||||
|
switch (theme)
|
||||||
|
{
|
||||||
|
case SceneTheme.Login:
|
||||||
|
Cube(root, "Column L", new Vector3(-5.5f, 2.4f, 2f), new Vector3(1f, 5f, 1f), palette.Structure);
|
||||||
|
Cube(root, "Column R", new Vector3(5.5f, 2.4f, 2f), new Vector3(1f, 5f, 1f), palette.Structure);
|
||||||
|
Cube(root, "Backdrop", new Vector3(0f, 3.2f, 8f), new Vector3(16f, 7f, 0.4f), palette.Structure);
|
||||||
|
Cube(root, "Emblem", new Vector3(0f, 3.4f, 7.7f), new Vector3(2.4f, 2.4f, 0.2f), palette.Accent, 1.6f);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SceneTheme.Lobby:
|
||||||
|
for (var i = -1; i <= 1; i += 2)
|
||||||
|
{
|
||||||
|
Cube(root, "Pillar " + i, new Vector3(i * 7f, 2.5f, 3f), new Vector3(1.2f, 5f, 1.2f), palette.Structure);
|
||||||
|
Cube(root, "Table " + i, new Vector3(i * 3.6f, 0.55f, 0.5f), new Vector3(3f, 1f, 3f), palette.Structure);
|
||||||
|
}
|
||||||
|
Cube(root, "Back Wall", new Vector3(0f, 3f, 9f), new Vector3(18f, 6f, 0.5f), palette.Structure);
|
||||||
|
Cube(root, "Lobby Light", new Vector3(0f, 5.2f, 4f), new Vector3(6f, 0.2f, 1f), palette.Accent, 1.8f);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SceneTheme.Collection:
|
||||||
|
for (var i = -2; i <= 2; i++)
|
||||||
|
{
|
||||||
|
Cube(root, "Shelf " + i, new Vector3(i * 3.2f, 1.6f, 6.5f), new Vector3(2.2f, 3.2f, 0.5f), palette.Structure);
|
||||||
|
Cube(root, "Shelf Glow " + i, new Vector3(i * 3.2f, 3.35f, 6.2f), new Vector3(2.2f, 0.1f, 0.5f), palette.Accent, 1.2f);
|
||||||
|
}
|
||||||
|
Cube(root, "Table", new Vector3(0f, 0.4f, 1.5f), new Vector3(7f, 0.8f, 4f), palette.Structure);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SceneTheme.DeckBuilder:
|
||||||
|
Cube(root, "Table", new Vector3(0f, 0.5f, 2f), new Vector3(11f, 1f, 6f), palette.Structure);
|
||||||
|
Cube(root, "Deck Stack", new Vector3(-3.8f, 1.3f, 3.2f), new Vector3(1.5f, 1.4f, 2.2f), palette.Accent, 0.8f);
|
||||||
|
Cube(root, "Mat", new Vector3(1.5f, 1.06f, 3f), new Vector3(5f, 0.08f, 3.5f), palette.Floor);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SceneTheme.Battle:
|
||||||
|
Cube(root, "Battle Table", new Vector3(0f, 0.2f, 1.5f), new Vector3(13f, 0.4f, 7f), palette.Structure);
|
||||||
|
Cube(root, "Center Line", new Vector3(0f, 0.44f, 1.5f), new Vector3(13f, 0.04f, 0.12f), palette.Accent, 1.2f);
|
||||||
|
for (var i = 0; i < 5; i++)
|
||||||
|
{
|
||||||
|
var x = (i - 2) * 2.2f;
|
||||||
|
Cube(root, "Zone " + i, new Vector3(x, 0.44f, 3.1f), new Vector3(1.8f, 0.04f, 2.2f), palette.Zone, 0.5f);
|
||||||
|
Cube(root, "Enemy Zone " + i, new Vector3(x, 0.44f, -0.1f), new Vector3(1.8f, 0.04f, 2.2f), palette.EnemyZone, 0.5f);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void Cube(
|
||||||
|
Transform parent,
|
||||||
|
string name,
|
||||||
|
Vector3 position,
|
||||||
|
Vector3 scale,
|
||||||
|
Color color,
|
||||||
|
float emission = 0f)
|
||||||
|
{
|
||||||
|
var cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
|
||||||
|
cube.name = name;
|
||||||
|
cube.transform.SetParent(parent, false);
|
||||||
|
cube.transform.position = position;
|
||||||
|
cube.transform.localScale = scale;
|
||||||
|
Paint(cube, color, emission);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void Paint(GameObject target, Color color, float emission)
|
||||||
|
{
|
||||||
|
var renderer = target.GetComponent<Renderer>();
|
||||||
|
if (renderer == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
var shader = Shader.Find("Universal Render Pipeline/Lit");
|
||||||
|
if (shader == null)
|
||||||
|
shader = Shader.Find("Standard");
|
||||||
|
|
||||||
|
var material = new Material(shader);
|
||||||
|
if (material.HasProperty("_BaseColor"))
|
||||||
|
material.SetColor("_BaseColor", color);
|
||||||
|
else if (material.HasProperty("_Color"))
|
||||||
|
material.color = color;
|
||||||
|
|
||||||
|
if (emission > 0f)
|
||||||
|
{
|
||||||
|
material.EnableKeyword("_EMISSION");
|
||||||
|
material.SetColor("_EmissionColor", color * emission);
|
||||||
|
}
|
||||||
|
|
||||||
|
renderer.material = material;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static ScenePalette GetPalette(SceneTheme theme)
|
||||||
|
{
|
||||||
|
switch (theme)
|
||||||
|
{
|
||||||
|
case SceneTheme.Login:
|
||||||
|
return new ScenePalette(
|
||||||
|
new Color(0.015f, 0.02f, 0.045f),
|
||||||
|
new Color(0.035f, 0.045f, 0.075f),
|
||||||
|
new Color(0.10f, 0.12f, 0.18f),
|
||||||
|
new Color(0.20f, 0.42f, 0.95f),
|
||||||
|
new Color(0.75f, 0.82f, 1f),
|
||||||
|
new Color(0.04f, 0.05f, 0.09f),
|
||||||
|
new Color(0.10f, 0.20f, 0.40f),
|
||||||
|
new Color(0.40f, 0.12f, 0.10f));
|
||||||
|
|
||||||
|
case SceneTheme.Battle:
|
||||||
|
return new ScenePalette(
|
||||||
|
new Color(0.035f, 0.025f, 0.03f),
|
||||||
|
new Color(0.08f, 0.06f, 0.07f),
|
||||||
|
new Color(0.18f, 0.12f, 0.12f),
|
||||||
|
new Color(0.85f, 0.55f, 0.24f),
|
||||||
|
new Color(1f, 0.88f, 0.66f),
|
||||||
|
new Color(0.05f, 0.08f, 0.14f),
|
||||||
|
new Color(0.10f, 0.22f, 0.42f),
|
||||||
|
new Color(0.42f, 0.10f, 0.10f));
|
||||||
|
|
||||||
|
default:
|
||||||
|
return new ScenePalette(
|
||||||
|
new Color(0.02f, 0.03f, 0.055f),
|
||||||
|
new Color(0.06f, 0.075f, 0.11f),
|
||||||
|
new Color(0.12f, 0.15f, 0.20f),
|
||||||
|
new Color(0.30f, 0.55f, 0.85f),
|
||||||
|
new Color(0.82f, 0.88f, 1f),
|
||||||
|
new Color(0.08f, 0.11f, 0.17f),
|
||||||
|
new Color(0.16f, 0.30f, 0.52f),
|
||||||
|
new Color(0.38f, 0.12f, 0.12f));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private sealed class ScenePalette
|
||||||
|
{
|
||||||
|
public ScenePalette(
|
||||||
|
Color background,
|
||||||
|
Color floor,
|
||||||
|
Color structure,
|
||||||
|
Color accent,
|
||||||
|
Color light,
|
||||||
|
Color ambient,
|
||||||
|
Color zone,
|
||||||
|
Color enemyZone)
|
||||||
|
{
|
||||||
|
Background = background;
|
||||||
|
Floor = floor;
|
||||||
|
Structure = structure;
|
||||||
|
Accent = accent;
|
||||||
|
Light = light;
|
||||||
|
Ambient = ambient;
|
||||||
|
Zone = zone;
|
||||||
|
EnemyZone = enemyZone;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Color Background { get; }
|
||||||
|
public Color Floor { get; }
|
||||||
|
public Color Structure { get; }
|
||||||
|
public Color Accent { get; }
|
||||||
|
public Color Light { get; }
|
||||||
|
public Color Ambient { get; }
|
||||||
|
public Color Zone { get; }
|
||||||
|
public Color EnemyZone { get; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: d1a7a96d0d591fe458e5ec20dfebeb73
|
||||||
|
|
@ -0,0 +1,84 @@
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.SceneManagement;
|
||||||
|
using Vanguard.Api.Contracts;
|
||||||
|
using Vanguard.Battle;
|
||||||
|
|
||||||
|
namespace Vanguard.App
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Переходы между сценами-экранами. Boot и VanguardApp остаются
|
||||||
|
/// персистентными; данные перехода (выбранная колода, тикет) временно
|
||||||
|
/// лежат здесь и забираются целевой сценой.
|
||||||
|
/// </summary>
|
||||||
|
public sealed class SceneFlow
|
||||||
|
{
|
||||||
|
public const string Boot = "Boot";
|
||||||
|
public const string Login = "Login";
|
||||||
|
public const string Lobby = "Lobby";
|
||||||
|
public const string Collection = "Collection";
|
||||||
|
public const string DeckBuilder = "DeckBuilder";
|
||||||
|
public const string Battle = "Battle";
|
||||||
|
|
||||||
|
public DeckDto PendingQueueDeck { get; private set; }
|
||||||
|
public MatchConnectionInfo PendingMatch { get; private set; }
|
||||||
|
|
||||||
|
public Task LoadLoginAsync()
|
||||||
|
{
|
||||||
|
PendingQueueDeck = null;
|
||||||
|
PendingMatch = null;
|
||||||
|
return LoadAsync(Login);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Task LoadLobbyAsync() => LoadAsync(Lobby);
|
||||||
|
|
||||||
|
public Task LoadCollectionAsync() => LoadAsync(Collection);
|
||||||
|
|
||||||
|
public Task LoadDeckBuilderAsync() => LoadAsync(DeckBuilder);
|
||||||
|
|
||||||
|
public Task OpenLobbyWithQueueAsync(DeckDto deck)
|
||||||
|
{
|
||||||
|
PendingQueueDeck = deck;
|
||||||
|
return LoadAsync(Lobby);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Task LoadBattleAsync(MatchConnectionInfo info)
|
||||||
|
{
|
||||||
|
PendingMatch = info;
|
||||||
|
return LoadAsync(Battle);
|
||||||
|
}
|
||||||
|
|
||||||
|
public DeckDto ConsumePendingQueueDeck()
|
||||||
|
{
|
||||||
|
var deck = PendingQueueDeck;
|
||||||
|
PendingQueueDeck = null;
|
||||||
|
return deck;
|
||||||
|
}
|
||||||
|
|
||||||
|
public MatchConnectionInfo ConsumePendingMatch()
|
||||||
|
{
|
||||||
|
var match = PendingMatch;
|
||||||
|
PendingMatch = null;
|
||||||
|
return match;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task LoadAsync(string sceneName)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(sceneName))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (SceneManager.GetActiveScene().name == sceneName)
|
||||||
|
return;
|
||||||
|
|
||||||
|
var operation = SceneManager.LoadSceneAsync(sceneName, LoadSceneMode.Single);
|
||||||
|
if (operation == null)
|
||||||
|
{
|
||||||
|
Debug.LogError("Сцена не добавлена в Build Settings: " + sceneName);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
while (!operation.isDone)
|
||||||
|
await Task.Yield();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: c543dd07e75d9c948a29d8a429860c95
|
||||||
|
|
@ -1,30 +1,32 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Threading.Tasks;
|
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using VContainer;
|
using VContainer;
|
||||||
using Vanguard.Api;
|
using Vanguard.Api;
|
||||||
using Vanguard.Auth;
|
using Vanguard.Auth;
|
||||||
using Vanguard.Meta;
|
using Vanguard.Meta;
|
||||||
using Vanguard.State;
|
using Vanguard.State;
|
||||||
using Vanguard.UI;
|
|
||||||
|
|
||||||
namespace Vanguard.App
|
namespace Vanguard.App
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Composition root клиента. Создаётся из runtime-инициализатора, поэтому
|
/// Composition root клиента. Живёт между сценами, хранит DI-контейнер и
|
||||||
/// не зависит от содержимого сцены; сцены появятся позже.
|
/// общие сервисы; сцены отвечают только за 3D-вид и свой UI.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public sealed class VanguardApp : MonoBehaviour
|
public sealed class VanguardApp : MonoBehaviour
|
||||||
{
|
{
|
||||||
|
public static VanguardApp Instance { get; private set; }
|
||||||
public static string LastInitializationError { get; private set; }
|
public static string LastInitializationError { get; private set; }
|
||||||
|
|
||||||
private IObjectResolver _container;
|
private IObjectResolver _container;
|
||||||
private AppRootView _root;
|
|
||||||
|
public IObjectResolver Container => _container;
|
||||||
|
public SceneFlow Flow { get; private set; }
|
||||||
|
|
||||||
private void Awake()
|
private void Awake()
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
Instance = this;
|
||||||
DontDestroyOnLoad(gameObject);
|
DontDestroyOnLoad(gameObject);
|
||||||
Application.targetFrameRate = 60;
|
Application.targetFrameRate = 60;
|
||||||
|
|
||||||
|
|
@ -38,13 +40,10 @@ namespace Vanguard.App
|
||||||
builder.Register<ApiClient>(Lifetime.Singleton);
|
builder.Register<ApiClient>(Lifetime.Singleton);
|
||||||
builder.Register<AuthService>(Lifetime.Singleton);
|
builder.Register<AuthService>(Lifetime.Singleton);
|
||||||
builder.Register<MetaService>(Lifetime.Singleton);
|
builder.Register<MetaService>(Lifetime.Singleton);
|
||||||
builder.Register<AppRootView>(Lifetime.Singleton);
|
builder.Register<SceneFlow>(Lifetime.Singleton);
|
||||||
|
|
||||||
_container = builder.Build();
|
_container = builder.Build();
|
||||||
_root = _container.Resolve<AppRootView>();
|
Flow = _container.Resolve<SceneFlow>();
|
||||||
_root.Initialize();
|
|
||||||
|
|
||||||
_ = RestoreSessionAsync();
|
|
||||||
}
|
}
|
||||||
catch (Exception exception)
|
catch (Exception exception)
|
||||||
{
|
{
|
||||||
|
|
@ -53,33 +52,17 @@ namespace Vanguard.App
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task RestoreSessionAsync()
|
private void Start()
|
||||||
{
|
{
|
||||||
var auth = _container.Resolve<AuthService>();
|
if (Flow != null)
|
||||||
|
_ = Flow.LoadLoginAsync();
|
||||||
try
|
|
||||||
{
|
|
||||||
if (await auth.TryRestoreAsync())
|
|
||||||
{
|
|
||||||
_root.ShowAfterLogin();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (Exception exception)
|
|
||||||
{
|
|
||||||
Debug.LogException(exception);
|
|
||||||
}
|
|
||||||
|
|
||||||
_root.ShowLogin("Введите данные игрока.");
|
|
||||||
}
|
|
||||||
|
|
||||||
private void Update()
|
|
||||||
{
|
|
||||||
_root?.Tick();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnDestroy()
|
private void OnDestroy()
|
||||||
{
|
{
|
||||||
|
if (Instance == this)
|
||||||
|
Instance = null;
|
||||||
|
|
||||||
if (_container is IDisposable disposable)
|
if (_container is IDisposable disposable)
|
||||||
disposable.Dispose();
|
disposable.Dispose();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,148 +0,0 @@
|
||||||
using UnityEngine;
|
|
||||||
using Vanguard.Api.Contracts;
|
|
||||||
using Vanguard.App;
|
|
||||||
using Vanguard.Auth;
|
|
||||||
using Vanguard.Battle;
|
|
||||||
using Vanguard.Meta;
|
|
||||||
using Vanguard.State;
|
|
||||||
|
|
||||||
namespace Vanguard.UI
|
|
||||||
{
|
|
||||||
/// <summary>Владелец Canvas и переключения экранов.</summary>
|
|
||||||
public sealed class AppRootView
|
|
||||||
{
|
|
||||||
private readonly AppConfig _config;
|
|
||||||
private readonly AuthService _auth;
|
|
||||||
private readonly PlayerState _player;
|
|
||||||
private readonly MetaService _metaService;
|
|
||||||
|
|
||||||
private LoginView _login;
|
|
||||||
private MetaView _metaView;
|
|
||||||
private OnboardingView _onboarding;
|
|
||||||
private CollectionView _collection;
|
|
||||||
private DecksView _decks;
|
|
||||||
private QueueView _queue;
|
|
||||||
private BattleView _battle;
|
|
||||||
|
|
||||||
public AppRootView(
|
|
||||||
AppConfig config,
|
|
||||||
AuthService auth,
|
|
||||||
PlayerState player,
|
|
||||||
MetaService metaService)
|
|
||||||
{
|
|
||||||
_config = config;
|
|
||||||
_auth = auth;
|
|
||||||
_player = player;
|
|
||||||
_metaService = metaService;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Initialize()
|
|
||||||
{
|
|
||||||
var canvas = UiKit.CreateCanvas("Vanguard Canvas");
|
|
||||||
|
|
||||||
_login = new LoginView(canvas.transform, _config, _auth, OnAuthenticated);
|
|
||||||
_metaView = new MetaView(
|
|
||||||
canvas.transform,
|
|
||||||
_auth,
|
|
||||||
_player,
|
|
||||||
OnLoggedOut,
|
|
||||||
ShowCollection,
|
|
||||||
ShowDecks,
|
|
||||||
ShowDecks,
|
|
||||||
ShowOnboarding);
|
|
||||||
_onboarding = new OnboardingView(
|
|
||||||
canvas.transform, _auth, _metaService, OnOnboarded, OnLoggedOut);
|
|
||||||
_collection = new CollectionView(
|
|
||||||
canvas.transform, _metaService, _player, ShowMeta);
|
|
||||||
_decks = new DecksView(
|
|
||||||
canvas.transform, _metaService, _player, ShowMeta, ShowQueue);
|
|
||||||
_queue = new QueueView(
|
|
||||||
canvas.transform, _metaService, _auth, ShowDecks, ShowBattle);
|
|
||||||
_battle = new BattleView(
|
|
||||||
canvas.transform, _metaService, ShowMeta);
|
|
||||||
|
|
||||||
ShowLogin("Проверяем сессию…");
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Tick()
|
|
||||||
{
|
|
||||||
_battle?.Tick();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ShowLogin(string status = null)
|
|
||||||
{
|
|
||||||
HideAll();
|
|
||||||
_login.Show(status);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ShowAfterLogin()
|
|
||||||
{
|
|
||||||
if (_player.OnboardingCompleted)
|
|
||||||
ShowMeta();
|
|
||||||
else
|
|
||||||
ShowOnboarding();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ShowMeta()
|
|
||||||
{
|
|
||||||
HideAll();
|
|
||||||
_metaView.Show();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ShowOnboarding()
|
|
||||||
{
|
|
||||||
HideAll();
|
|
||||||
_onboarding.Show();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ShowCollection()
|
|
||||||
{
|
|
||||||
HideAll();
|
|
||||||
_collection.Show();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ShowDecks()
|
|
||||||
{
|
|
||||||
HideAll();
|
|
||||||
_decks.Show();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ShowQueue(DeckDto deck)
|
|
||||||
{
|
|
||||||
HideAll();
|
|
||||||
_queue.Show(deck);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ShowBattle(MatchConnectionInfo info)
|
|
||||||
{
|
|
||||||
HideAll();
|
|
||||||
_battle.Show(info);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void HideAll()
|
|
||||||
{
|
|
||||||
_login.Hide();
|
|
||||||
_metaView.Hide();
|
|
||||||
_onboarding.Hide();
|
|
||||||
_collection.Hide();
|
|
||||||
_decks.Hide();
|
|
||||||
_queue.Hide();
|
|
||||||
_battle.Hide();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void OnAuthenticated()
|
|
||||||
{
|
|
||||||
ShowAfterLogin();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void OnOnboarded()
|
|
||||||
{
|
|
||||||
ShowMeta();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void OnLoggedOut()
|
|
||||||
{
|
|
||||||
ShowLogin("Сессия завершена. Войдите снова.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,2 +0,0 @@
|
||||||
fileFormatVersion: 2
|
|
||||||
guid: ff1fdb94bf828d64099d3458f8e34b12
|
|
||||||
|
|
@ -29,12 +29,12 @@ namespace Vanguard.UI
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Canvas CreateCanvas(string name)
|
public static Canvas CreateCanvas(string name, bool persistent = false)
|
||||||
{
|
{
|
||||||
EnsureEventSystem();
|
EnsureEventSystem();
|
||||||
|
|
||||||
var go = new GameObject(name, typeof(Canvas), typeof(CanvasScaler), typeof(GraphicRaycaster));
|
var go = new GameObject(name, typeof(Canvas), typeof(CanvasScaler), typeof(GraphicRaycaster));
|
||||||
if (Application.isPlaying)
|
if (Application.isPlaying && persistent)
|
||||||
Object.DontDestroyOnLoad(go);
|
Object.DontDestroyOnLoad(go);
|
||||||
|
|
||||||
var canvas = go.GetComponent<Canvas>();
|
var canvas = go.GetComponent<Canvas>();
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: e59af53696c9cac4499af3e46be58991
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
|
|
@ -0,0 +1,352 @@
|
||||||
|
%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: 2
|
||||||
|
m_PVRSampling: 1
|
||||||
|
m_PVRDirectSampleCount: 32
|
||||||
|
m_PVRSampleCount: 512
|
||||||
|
m_PVRBounces: 2
|
||||||
|
m_PVREnvironmentSampleCount: 256
|
||||||
|
m_PVREnvironmentReferencePointCount: 2048
|
||||||
|
m_PVRFilteringMode: 1
|
||||||
|
m_PVRDenoiserTypeDirect: 2
|
||||||
|
m_PVRDenoiserTypeIndirect: 2
|
||||||
|
m_PVRDenoiserTypeAO: 2
|
||||||
|
m_PVRFilterTypeDirect: 0
|
||||||
|
m_PVRFilterTypeIndirect: 0
|
||||||
|
m_PVRFilterTypeAO: 0
|
||||||
|
m_PVREnvironmentMIS: 1
|
||||||
|
m_PVRCulling: 1
|
||||||
|
m_PVRFilteringGaussRadiusDirect: 1
|
||||||
|
m_PVRFilteringGaussRadiusIndirect: 1
|
||||||
|
m_PVRFilteringGaussRadiusAO: 1
|
||||||
|
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 &490282527
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 490282529}
|
||||||
|
- component: {fileID: 490282528}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Battle Scene
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!114 &490282528
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 490282527}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 9a62d9e570dfb024d96981ddfffdf2ad, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: Vanguard.Runtime::Vanguard.App.BattleSceneController
|
||||||
|
--- !u!4 &490282529
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 490282527}
|
||||||
|
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!1 &1697705437
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 1697705439}
|
||||||
|
- component: {fileID: 1697705438}
|
||||||
|
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 &1697705438
|
||||||
|
Light:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1697705437}
|
||||||
|
m_Enabled: 1
|
||||||
|
serializedVersion: 13
|
||||||
|
m_Type: 1
|
||||||
|
m_Color: {r: 0.82, g: 0.88, b: 1, a: 1}
|
||||||
|
m_Intensity: 0.9
|
||||||
|
m_Range: 10
|
||||||
|
m_SpotAngle: 30
|
||||||
|
m_InnerSpotAngle: 21.80208
|
||||||
|
m_CookieSize2D: {x: 0.5, y: 0.5}
|
||||||
|
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: 6570
|
||||||
|
m_UseColorTemperature: 0
|
||||||
|
m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
m_UseBoundingSphereOverride: 0
|
||||||
|
m_UseViewFrustumForShadowCasterCull: 1
|
||||||
|
m_ForceVisible: 0
|
||||||
|
m_ShapeRadius: 0.025
|
||||||
|
m_ShadowAngle: 0
|
||||||
|
m_LightUnit: 1
|
||||||
|
m_LuxAtDistance: 1
|
||||||
|
m_EnableSpotReflector: 1
|
||||||
|
--- !u!4 &1697705439
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1697705437}
|
||||||
|
serializedVersion: 2
|
||||||
|
m_LocalRotation: {x: 0.39098036, y: -0.25180724, z: 0.112111814, w: 0.87815624}
|
||||||
|
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!1 &1894381784
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 1894381786}
|
||||||
|
- component: {fileID: 1894381785}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Main Camera
|
||||||
|
m_TagString: MainCamera
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!20 &1894381785
|
||||||
|
Camera:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1894381784}
|
||||||
|
m_Enabled: 1
|
||||||
|
serializedVersion: 2
|
||||||
|
m_ClearFlags: 2
|
||||||
|
m_BackGroundColor: {r: 0.02, g: 0.03, b: 0.055, a: 1}
|
||||||
|
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: 0
|
||||||
|
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 &1894381786
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1894381784}
|
||||||
|
serializedVersion: 2
|
||||||
|
m_LocalRotation: {x: 0.104528464, y: 0, z: 0, w: 0.9945219}
|
||||||
|
m_LocalPosition: {x: 0, y: 3.2, 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!1660057539 &9223372036854775807
|
||||||
|
SceneRoots:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_Roots:
|
||||||
|
- {fileID: 490282529}
|
||||||
|
- {fileID: 1894381786}
|
||||||
|
- {fileID: 1697705439}
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 410b134e05d389242af202ca07840dec
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
|
|
@ -0,0 +1,352 @@
|
||||||
|
%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: 2
|
||||||
|
m_PVRSampling: 1
|
||||||
|
m_PVRDirectSampleCount: 32
|
||||||
|
m_PVRSampleCount: 512
|
||||||
|
m_PVRBounces: 2
|
||||||
|
m_PVREnvironmentSampleCount: 256
|
||||||
|
m_PVREnvironmentReferencePointCount: 2048
|
||||||
|
m_PVRFilteringMode: 1
|
||||||
|
m_PVRDenoiserTypeDirect: 2
|
||||||
|
m_PVRDenoiserTypeIndirect: 2
|
||||||
|
m_PVRDenoiserTypeAO: 2
|
||||||
|
m_PVRFilterTypeDirect: 0
|
||||||
|
m_PVRFilterTypeIndirect: 0
|
||||||
|
m_PVRFilterTypeAO: 0
|
||||||
|
m_PVREnvironmentMIS: 1
|
||||||
|
m_PVRCulling: 1
|
||||||
|
m_PVRFilteringGaussRadiusDirect: 1
|
||||||
|
m_PVRFilteringGaussRadiusIndirect: 1
|
||||||
|
m_PVRFilteringGaussRadiusAO: 1
|
||||||
|
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 &490282527
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 490282529}
|
||||||
|
- component: {fileID: 490282528}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Collection Scene
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!114 &490282528
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 490282527}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 8ccb09cec5c89814493fae05cf2d6051, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: Vanguard.Runtime::Vanguard.App.CollectionSceneController
|
||||||
|
--- !u!4 &490282529
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 490282527}
|
||||||
|
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!1 &1697705437
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 1697705439}
|
||||||
|
- component: {fileID: 1697705438}
|
||||||
|
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 &1697705438
|
||||||
|
Light:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1697705437}
|
||||||
|
m_Enabled: 1
|
||||||
|
serializedVersion: 13
|
||||||
|
m_Type: 1
|
||||||
|
m_Color: {r: 0.82, g: 0.88, b: 1, a: 1}
|
||||||
|
m_Intensity: 0.9
|
||||||
|
m_Range: 10
|
||||||
|
m_SpotAngle: 30
|
||||||
|
m_InnerSpotAngle: 21.80208
|
||||||
|
m_CookieSize2D: {x: 0.5, y: 0.5}
|
||||||
|
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: 6570
|
||||||
|
m_UseColorTemperature: 0
|
||||||
|
m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
m_UseBoundingSphereOverride: 0
|
||||||
|
m_UseViewFrustumForShadowCasterCull: 1
|
||||||
|
m_ForceVisible: 0
|
||||||
|
m_ShapeRadius: 0.025
|
||||||
|
m_ShadowAngle: 0
|
||||||
|
m_LightUnit: 1
|
||||||
|
m_LuxAtDistance: 1
|
||||||
|
m_EnableSpotReflector: 1
|
||||||
|
--- !u!4 &1697705439
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1697705437}
|
||||||
|
serializedVersion: 2
|
||||||
|
m_LocalRotation: {x: 0.39098036, y: -0.25180724, z: 0.112111814, w: 0.87815624}
|
||||||
|
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!1 &1894381784
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 1894381786}
|
||||||
|
- component: {fileID: 1894381785}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Main Camera
|
||||||
|
m_TagString: MainCamera
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!20 &1894381785
|
||||||
|
Camera:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1894381784}
|
||||||
|
m_Enabled: 1
|
||||||
|
serializedVersion: 2
|
||||||
|
m_ClearFlags: 2
|
||||||
|
m_BackGroundColor: {r: 0.02, g: 0.03, b: 0.055, a: 1}
|
||||||
|
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: 0
|
||||||
|
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 &1894381786
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1894381784}
|
||||||
|
serializedVersion: 2
|
||||||
|
m_LocalRotation: {x: 0.104528464, y: 0, z: 0, w: 0.9945219}
|
||||||
|
m_LocalPosition: {x: 0, y: 3.2, 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!1660057539 &9223372036854775807
|
||||||
|
SceneRoots:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_Roots:
|
||||||
|
- {fileID: 490282529}
|
||||||
|
- {fileID: 1894381786}
|
||||||
|
- {fileID: 1697705439}
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: cd8d654fe14bfb0419574bc6d2820591
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
|
|
@ -0,0 +1,352 @@
|
||||||
|
%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: 2
|
||||||
|
m_PVRSampling: 1
|
||||||
|
m_PVRDirectSampleCount: 32
|
||||||
|
m_PVRSampleCount: 512
|
||||||
|
m_PVRBounces: 2
|
||||||
|
m_PVREnvironmentSampleCount: 256
|
||||||
|
m_PVREnvironmentReferencePointCount: 2048
|
||||||
|
m_PVRFilteringMode: 1
|
||||||
|
m_PVRDenoiserTypeDirect: 2
|
||||||
|
m_PVRDenoiserTypeIndirect: 2
|
||||||
|
m_PVRDenoiserTypeAO: 2
|
||||||
|
m_PVRFilterTypeDirect: 0
|
||||||
|
m_PVRFilterTypeIndirect: 0
|
||||||
|
m_PVRFilterTypeAO: 0
|
||||||
|
m_PVREnvironmentMIS: 1
|
||||||
|
m_PVRCulling: 1
|
||||||
|
m_PVRFilteringGaussRadiusDirect: 1
|
||||||
|
m_PVRFilteringGaussRadiusIndirect: 1
|
||||||
|
m_PVRFilteringGaussRadiusAO: 1
|
||||||
|
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 &490282527
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 490282529}
|
||||||
|
- component: {fileID: 490282528}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: DeckBuilder Scene
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!114 &490282528
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 490282527}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: c87789aeb7d84cc438babc89db55d1fc, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: Vanguard.Runtime::Vanguard.App.DeckBuilderSceneController
|
||||||
|
--- !u!4 &490282529
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 490282527}
|
||||||
|
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!1 &1697705437
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 1697705439}
|
||||||
|
- component: {fileID: 1697705438}
|
||||||
|
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 &1697705438
|
||||||
|
Light:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1697705437}
|
||||||
|
m_Enabled: 1
|
||||||
|
serializedVersion: 13
|
||||||
|
m_Type: 1
|
||||||
|
m_Color: {r: 0.82, g: 0.88, b: 1, a: 1}
|
||||||
|
m_Intensity: 0.9
|
||||||
|
m_Range: 10
|
||||||
|
m_SpotAngle: 30
|
||||||
|
m_InnerSpotAngle: 21.80208
|
||||||
|
m_CookieSize2D: {x: 0.5, y: 0.5}
|
||||||
|
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: 6570
|
||||||
|
m_UseColorTemperature: 0
|
||||||
|
m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
m_UseBoundingSphereOverride: 0
|
||||||
|
m_UseViewFrustumForShadowCasterCull: 1
|
||||||
|
m_ForceVisible: 0
|
||||||
|
m_ShapeRadius: 0.025
|
||||||
|
m_ShadowAngle: 0
|
||||||
|
m_LightUnit: 1
|
||||||
|
m_LuxAtDistance: 1
|
||||||
|
m_EnableSpotReflector: 1
|
||||||
|
--- !u!4 &1697705439
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1697705437}
|
||||||
|
serializedVersion: 2
|
||||||
|
m_LocalRotation: {x: 0.39098036, y: -0.25180724, z: 0.112111814, w: 0.87815624}
|
||||||
|
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!1 &1894381784
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 1894381786}
|
||||||
|
- component: {fileID: 1894381785}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Main Camera
|
||||||
|
m_TagString: MainCamera
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!20 &1894381785
|
||||||
|
Camera:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1894381784}
|
||||||
|
m_Enabled: 1
|
||||||
|
serializedVersion: 2
|
||||||
|
m_ClearFlags: 2
|
||||||
|
m_BackGroundColor: {r: 0.02, g: 0.03, b: 0.055, a: 1}
|
||||||
|
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: 0
|
||||||
|
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 &1894381786
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1894381784}
|
||||||
|
serializedVersion: 2
|
||||||
|
m_LocalRotation: {x: 0.104528464, y: 0, z: 0, w: 0.9945219}
|
||||||
|
m_LocalPosition: {x: 0, y: 3.2, 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!1660057539 &9223372036854775807
|
||||||
|
SceneRoots:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_Roots:
|
||||||
|
- {fileID: 490282529}
|
||||||
|
- {fileID: 1894381786}
|
||||||
|
- {fileID: 1697705439}
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: b8567d3f2f60dcc4f85794bdbaf95b45
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
|
|
@ -0,0 +1,352 @@
|
||||||
|
%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: 2
|
||||||
|
m_PVRSampling: 1
|
||||||
|
m_PVRDirectSampleCount: 32
|
||||||
|
m_PVRSampleCount: 512
|
||||||
|
m_PVRBounces: 2
|
||||||
|
m_PVREnvironmentSampleCount: 256
|
||||||
|
m_PVREnvironmentReferencePointCount: 2048
|
||||||
|
m_PVRFilteringMode: 1
|
||||||
|
m_PVRDenoiserTypeDirect: 2
|
||||||
|
m_PVRDenoiserTypeIndirect: 2
|
||||||
|
m_PVRDenoiserTypeAO: 2
|
||||||
|
m_PVRFilterTypeDirect: 0
|
||||||
|
m_PVRFilterTypeIndirect: 0
|
||||||
|
m_PVRFilterTypeAO: 0
|
||||||
|
m_PVREnvironmentMIS: 1
|
||||||
|
m_PVRCulling: 1
|
||||||
|
m_PVRFilteringGaussRadiusDirect: 1
|
||||||
|
m_PVRFilteringGaussRadiusIndirect: 1
|
||||||
|
m_PVRFilteringGaussRadiusAO: 1
|
||||||
|
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 &490282527
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 490282529}
|
||||||
|
- component: {fileID: 490282528}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Lobby Scene
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!114 &490282528
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 490282527}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: a1fe2c339c891e849a96ecc6a5c22748, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: Vanguard.Runtime::Vanguard.App.LobbySceneController
|
||||||
|
--- !u!4 &490282529
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 490282527}
|
||||||
|
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!1 &1697705437
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 1697705439}
|
||||||
|
- component: {fileID: 1697705438}
|
||||||
|
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 &1697705438
|
||||||
|
Light:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1697705437}
|
||||||
|
m_Enabled: 1
|
||||||
|
serializedVersion: 13
|
||||||
|
m_Type: 1
|
||||||
|
m_Color: {r: 0.82, g: 0.88, b: 1, a: 1}
|
||||||
|
m_Intensity: 0.9
|
||||||
|
m_Range: 10
|
||||||
|
m_SpotAngle: 30
|
||||||
|
m_InnerSpotAngle: 21.80208
|
||||||
|
m_CookieSize2D: {x: 0.5, y: 0.5}
|
||||||
|
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: 6570
|
||||||
|
m_UseColorTemperature: 0
|
||||||
|
m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
m_UseBoundingSphereOverride: 0
|
||||||
|
m_UseViewFrustumForShadowCasterCull: 1
|
||||||
|
m_ForceVisible: 0
|
||||||
|
m_ShapeRadius: 0.025
|
||||||
|
m_ShadowAngle: 0
|
||||||
|
m_LightUnit: 1
|
||||||
|
m_LuxAtDistance: 1
|
||||||
|
m_EnableSpotReflector: 1
|
||||||
|
--- !u!4 &1697705439
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1697705437}
|
||||||
|
serializedVersion: 2
|
||||||
|
m_LocalRotation: {x: 0.39098036, y: -0.25180724, z: 0.112111814, w: 0.87815624}
|
||||||
|
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!1 &1894381784
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 1894381786}
|
||||||
|
- component: {fileID: 1894381785}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Main Camera
|
||||||
|
m_TagString: MainCamera
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!20 &1894381785
|
||||||
|
Camera:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1894381784}
|
||||||
|
m_Enabled: 1
|
||||||
|
serializedVersion: 2
|
||||||
|
m_ClearFlags: 2
|
||||||
|
m_BackGroundColor: {r: 0.02, g: 0.03, b: 0.055, a: 1}
|
||||||
|
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: 0
|
||||||
|
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 &1894381786
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1894381784}
|
||||||
|
serializedVersion: 2
|
||||||
|
m_LocalRotation: {x: 0.104528464, y: 0, z: 0, w: 0.9945219}
|
||||||
|
m_LocalPosition: {x: 0, y: 3.2, 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!1660057539 &9223372036854775807
|
||||||
|
SceneRoots:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_Roots:
|
||||||
|
- {fileID: 490282529}
|
||||||
|
- {fileID: 1894381786}
|
||||||
|
- {fileID: 1697705439}
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 59a25f3bae0ec7c489d2a139d7eea285
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
|
|
@ -0,0 +1,352 @@
|
||||||
|
%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: 2
|
||||||
|
m_PVRSampling: 1
|
||||||
|
m_PVRDirectSampleCount: 32
|
||||||
|
m_PVRSampleCount: 512
|
||||||
|
m_PVRBounces: 2
|
||||||
|
m_PVREnvironmentSampleCount: 256
|
||||||
|
m_PVREnvironmentReferencePointCount: 2048
|
||||||
|
m_PVRFilteringMode: 1
|
||||||
|
m_PVRDenoiserTypeDirect: 2
|
||||||
|
m_PVRDenoiserTypeIndirect: 2
|
||||||
|
m_PVRDenoiserTypeAO: 2
|
||||||
|
m_PVRFilterTypeDirect: 0
|
||||||
|
m_PVRFilterTypeIndirect: 0
|
||||||
|
m_PVRFilterTypeAO: 0
|
||||||
|
m_PVREnvironmentMIS: 1
|
||||||
|
m_PVRCulling: 1
|
||||||
|
m_PVRFilteringGaussRadiusDirect: 1
|
||||||
|
m_PVRFilteringGaussRadiusIndirect: 1
|
||||||
|
m_PVRFilteringGaussRadiusAO: 1
|
||||||
|
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 &490282527
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 490282529}
|
||||||
|
- component: {fileID: 490282528}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Login Scene
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!114 &490282528
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 490282527}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: dc0007ae5cfaa2647a674301f0042159, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: Vanguard.Runtime::Vanguard.App.LoginSceneController
|
||||||
|
--- !u!4 &490282529
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 490282527}
|
||||||
|
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!1 &1697705437
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 1697705439}
|
||||||
|
- component: {fileID: 1697705438}
|
||||||
|
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 &1697705438
|
||||||
|
Light:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1697705437}
|
||||||
|
m_Enabled: 1
|
||||||
|
serializedVersion: 13
|
||||||
|
m_Type: 1
|
||||||
|
m_Color: {r: 0.82, g: 0.88, b: 1, a: 1}
|
||||||
|
m_Intensity: 0.9
|
||||||
|
m_Range: 10
|
||||||
|
m_SpotAngle: 30
|
||||||
|
m_InnerSpotAngle: 21.80208
|
||||||
|
m_CookieSize2D: {x: 0.5, y: 0.5}
|
||||||
|
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: 6570
|
||||||
|
m_UseColorTemperature: 0
|
||||||
|
m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
m_UseBoundingSphereOverride: 0
|
||||||
|
m_UseViewFrustumForShadowCasterCull: 1
|
||||||
|
m_ForceVisible: 0
|
||||||
|
m_ShapeRadius: 0.025
|
||||||
|
m_ShadowAngle: 0
|
||||||
|
m_LightUnit: 1
|
||||||
|
m_LuxAtDistance: 1
|
||||||
|
m_EnableSpotReflector: 1
|
||||||
|
--- !u!4 &1697705439
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1697705437}
|
||||||
|
serializedVersion: 2
|
||||||
|
m_LocalRotation: {x: 0.39098036, y: -0.25180724, z: 0.112111814, w: 0.87815624}
|
||||||
|
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!1 &1894381784
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 1894381786}
|
||||||
|
- component: {fileID: 1894381785}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Main Camera
|
||||||
|
m_TagString: MainCamera
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!20 &1894381785
|
||||||
|
Camera:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1894381784}
|
||||||
|
m_Enabled: 1
|
||||||
|
serializedVersion: 2
|
||||||
|
m_ClearFlags: 2
|
||||||
|
m_BackGroundColor: {r: 0.02, g: 0.03, b: 0.055, a: 1}
|
||||||
|
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: 0
|
||||||
|
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 &1894381786
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1894381784}
|
||||||
|
serializedVersion: 2
|
||||||
|
m_LocalRotation: {x: 0.104528464, y: 0, z: 0, w: 0.9945219}
|
||||||
|
m_LocalPosition: {x: 0, y: 3.2, 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!1660057539 &9223372036854775807
|
||||||
|
SceneRoots:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_Roots:
|
||||||
|
- {fileID: 490282529}
|
||||||
|
- {fileID: 1894381786}
|
||||||
|
- {fileID: 1697705439}
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 63d2c59dfa0801c4ab7a27406481f94c
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
|
|
@ -14,7 +14,7 @@ namespace Vanguard.Tests
|
||||||
public sealed class ClientSmokeTests
|
public sealed class ClientSmokeTests
|
||||||
{
|
{
|
||||||
[Test]
|
[Test]
|
||||||
public void AppRootView_Builds_Login_And_Meta_Screens()
|
public void Client_Views_Build()
|
||||||
{
|
{
|
||||||
var config = new AppConfig();
|
var config = new AppConfig();
|
||||||
config.Load();
|
config.Load();
|
||||||
|
|
@ -24,26 +24,43 @@ namespace Vanguard.Tests
|
||||||
var player = new PlayerState();
|
var player = new PlayerState();
|
||||||
var auth = new AuthService(api, tokens, player);
|
var auth = new AuthService(api, tokens, player);
|
||||||
var meta = new MetaService(api, player);
|
var meta = new MetaService(api, player);
|
||||||
var root = new AppRootView(config, auth, player, meta);
|
|
||||||
|
|
||||||
root.Initialize();
|
var canvas = UiKit.CreateCanvas("Test Canvas");
|
||||||
root.ShowLogin("smoke");
|
|
||||||
|
var login = new LoginView(canvas.transform, config, auth, () => { });
|
||||||
|
login.Show("smoke");
|
||||||
|
|
||||||
|
var lobby = new MetaView(
|
||||||
|
canvas.transform, auth, player, () => { },
|
||||||
|
() => { }, () => { }, () => { }, () => { });
|
||||||
|
var onboarding = new OnboardingView(
|
||||||
|
canvas.transform, auth, meta, () => { }, () => { });
|
||||||
|
var collection = new CollectionView(
|
||||||
|
canvas.transform, meta, player, () => { });
|
||||||
|
var decks = new DecksView(
|
||||||
|
canvas.transform, meta, player, () => { }, _ => { });
|
||||||
|
var queue = new QueueView(
|
||||||
|
canvas.transform, meta, auth, () => { }, _ => { });
|
||||||
|
var battle = new BattleView(
|
||||||
|
canvas.transform, meta, () => { });
|
||||||
|
|
||||||
Assert.IsNotNull(GameObject.Find("Vanguard Canvas"));
|
|
||||||
Assert.IsNotNull(GameObject.Find("LoginScreen"));
|
Assert.IsNotNull(GameObject.Find("LoginScreen"));
|
||||||
Assert.IsTrue(Resources.FindObjectsOfTypeAll<GameObject>().Any(go => go.name == "MetaScreen"));
|
Assert.IsTrue(Exists("MetaScreen"));
|
||||||
Assert.IsTrue(Resources.FindObjectsOfTypeAll<GameObject>().Any(go => go.name == "OnboardingScreen"));
|
Assert.IsTrue(Exists("OnboardingScreen"));
|
||||||
Assert.IsTrue(Resources.FindObjectsOfTypeAll<GameObject>().Any(go => go.name == "CollectionScreen"));
|
Assert.IsTrue(Exists("CollectionScreen"));
|
||||||
Assert.IsTrue(Resources.FindObjectsOfTypeAll<GameObject>().Any(go => go.name == "DecksScreen"));
|
Assert.IsTrue(Exists("DecksScreen"));
|
||||||
Assert.IsTrue(Resources.FindObjectsOfTypeAll<GameObject>().Any(go => go.name == "QueueScreen"));
|
Assert.IsTrue(Exists("QueueScreen"));
|
||||||
Assert.IsTrue(Resources.FindObjectsOfTypeAll<GameObject>().Any(go => go.name == "BattleScreen"));
|
Assert.IsTrue(Exists("BattleScreen"));
|
||||||
|
|
||||||
Cleanup();
|
Cleanup();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static bool Exists(string name) =>
|
||||||
|
Resources.FindObjectsOfTypeAll<GameObject>().Any(go => go.name == name);
|
||||||
|
|
||||||
private static void Cleanup()
|
private static void Cleanup()
|
||||||
{
|
{
|
||||||
var canvas = GameObject.Find("Vanguard Canvas");
|
var canvas = GameObject.Find("Test Canvas");
|
||||||
if (canvas != null)
|
if (canvas != null)
|
||||||
Object.DestroyImmediate(canvas);
|
Object.DestroyImmediate(canvas);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,68 +0,0 @@
|
||||||
using System.Collections;
|
|
||||||
using System.Linq;
|
|
||||||
using NUnit.Framework;
|
|
||||||
using UnityEngine;
|
|
||||||
using UnityEngine.EventSystems;
|
|
||||||
using UnityEngine.TestTools;
|
|
||||||
using Vanguard.App;
|
|
||||||
|
|
||||||
namespace Vanguard.Tests
|
|
||||||
{
|
|
||||||
public sealed class AppBootstrapPlayModeTests
|
|
||||||
{
|
|
||||||
[UnityTest]
|
|
||||||
public IEnumerator App_Bootstraps_And_Shows_A_Screen()
|
|
||||||
{
|
|
||||||
if (Object.FindAnyObjectByType<VanguardApp>() == null)
|
|
||||||
{
|
|
||||||
var go = new GameObject("Test App");
|
|
||||||
go.AddComponent<VanguardApp>();
|
|
||||||
}
|
|
||||||
|
|
||||||
yield return null;
|
|
||||||
yield return null;
|
|
||||||
|
|
||||||
Assert.IsNotNull(Object.FindAnyObjectByType<VanguardApp>());
|
|
||||||
Assert.IsNotNull(GameObject.Find("Vanguard Canvas"));
|
|
||||||
|
|
||||||
var login = Resources.FindObjectsOfTypeAll<GameObject>()
|
|
||||||
.FirstOrDefault(go => go.name == "LoginScreen");
|
|
||||||
var onboarding = Resources.FindObjectsOfTypeAll<GameObject>()
|
|
||||||
.FirstOrDefault(go => go.name == "OnboardingScreen");
|
|
||||||
var meta = Resources.FindObjectsOfTypeAll<GameObject>()
|
|
||||||
.FirstOrDefault(go => go.name == "MetaScreen");
|
|
||||||
var hierarchy = string.Join(
|
|
||||||
"\n",
|
|
||||||
Resources.FindObjectsOfTypeAll<GameObject>()
|
|
||||||
.Where(go => go.name.EndsWith("Screen") || go.name == "Vanguard Canvas")
|
|
||||||
.Select(go => go.name + ": activeSelf=" + go.activeSelf + ", activeInHierarchy=" + go.activeInHierarchy));
|
|
||||||
|
|
||||||
var hasStartScreen = (login != null && login.activeInHierarchy)
|
|
||||||
|| (onboarding != null && onboarding.activeInHierarchy)
|
|
||||||
|| (meta != null && meta.activeInHierarchy);
|
|
||||||
|
|
||||||
Assert.IsTrue(
|
|
||||||
hasStartScreen,
|
|
||||||
"Ни LoginScreen, ни OnboardingScreen, ни MetaScreen не активны.\nInitError: "
|
|
||||||
+ VanguardApp.LastInitializationError + "\n" + hierarchy);
|
|
||||||
|
|
||||||
Cleanup();
|
|
||||||
yield return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void Cleanup()
|
|
||||||
{
|
|
||||||
var app = Object.FindAnyObjectByType<VanguardApp>();
|
|
||||||
if (app != null)
|
|
||||||
Object.Destroy(app.gameObject);
|
|
||||||
|
|
||||||
var canvas = GameObject.Find("Vanguard Canvas");
|
|
||||||
if (canvas != null)
|
|
||||||
Object.Destroy(canvas);
|
|
||||||
|
|
||||||
var eventSystem = Object.FindAnyObjectByType<EventSystem>();
|
|
||||||
if (eventSystem != null)
|
|
||||||
Object.Destroy(eventSystem.gameObject);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,2 +0,0 @@
|
||||||
fileFormatVersion: 2
|
|
||||||
guid: b8e1375853da4264f80f4fd944176ac4
|
|
||||||
|
|
@ -8,5 +8,20 @@ EditorBuildSettings:
|
||||||
- enabled: 1
|
- enabled: 1
|
||||||
path: Assets/Scenes/Boot.unity
|
path: Assets/Scenes/Boot.unity
|
||||||
guid: 99c9720ab356a0642a771bea13969a05
|
guid: 99c9720ab356a0642a771bea13969a05
|
||||||
|
- enabled: 1
|
||||||
|
path: Assets/Vanguard/Scenes/Login.unity
|
||||||
|
guid: 63d2c59dfa0801c4ab7a27406481f94c
|
||||||
|
- enabled: 1
|
||||||
|
path: Assets/Vanguard/Scenes/Lobby.unity
|
||||||
|
guid: 59a25f3bae0ec7c489d2a139d7eea285
|
||||||
|
- enabled: 1
|
||||||
|
path: Assets/Vanguard/Scenes/Collection.unity
|
||||||
|
guid: cd8d654fe14bfb0419574bc6d2820591
|
||||||
|
- enabled: 1
|
||||||
|
path: Assets/Vanguard/Scenes/DeckBuilder.unity
|
||||||
|
guid: b8567d3f2f60dcc4f85794bdbaf95b45
|
||||||
|
- enabled: 1
|
||||||
|
path: Assets/Vanguard/Scenes/Battle.unity
|
||||||
|
guid: 410b134e05d389242af202ca07840dec
|
||||||
m_configObjects:
|
m_configObjects:
|
||||||
com.unity.input.settings.actions: {fileID: -944628639613478452, guid: 052faaac586de48259a63d0c4782560b, type: 3}
|
com.unity.input.settings.actions: {fileID: -944628639613478452, guid: 052faaac586de48259a63d0c4782560b, type: 3}
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,7 @@ http://localhost:5080
|
||||||
|
|
||||||
- `ClientBootstrap` — запуск без привязки к сцене.
|
- `ClientBootstrap` — запуск без привязки к сцене.
|
||||||
- DI на VContainer: `AppConfig`, `TokenStore`, `ApiClient`, `AuthService`,
|
- DI на VContainer: `AppConfig`, `TokenStore`, `ApiClient`, `AuthService`,
|
||||||
`MetaService`, `PlayerState`, `AppRootView`.
|
`MetaService`, `PlayerState`, `SceneFlow`.
|
||||||
- HTTP-клиент на `UnityWebRequest` + Newtonsoft.Json, разбор `ApiError`.
|
- HTTP-клиент на `UnityWebRequest` + Newtonsoft.Json, разбор `ApiError`.
|
||||||
- Логин, регистрация, refresh, `/me`, выход.
|
- Логин, регистрация, refresh, `/me`, выход.
|
||||||
- Восстановление сессии по refresh-токену при старте.
|
- Восстановление сессии по refresh-токену при старте.
|
||||||
|
|
@ -89,9 +89,8 @@ MessagePack-сериализатор и юнион-кадры.
|
||||||
это значение вернуть в «Not allowed».
|
это значение вернуть в «Not allowed».
|
||||||
- Токены лежат в `PlayerPrefs` — только для разработки; для релиза нужно
|
- Токены лежат в `PlayerPrefs` — только для разработки; для релиза нужно
|
||||||
защищённое хранилище.
|
защищённое хранилище.
|
||||||
- Текущий UI собран кодом на uGUI и одном Canvas — это временный gray-box.
|
- Текущий UI собран кодом на uGUI; каждая сцена имеет свой Canvas.
|
||||||
Финальные экраны — отдельные 3D-сцены; UI-слой может быть uGUI или
|
Префабы/UI Toolkit подключим, когда появятся макеты.
|
||||||
UI Toolkit в зависимости от сцены.
|
|
||||||
- DOTween пока не добавлен; анимации UI — после перехода на сцены.
|
- DOTween пока не добавлен; анимации UI — после перехода на сцены.
|
||||||
- Мета-экраны — заглушки: сеть и авторизация настоящие, разделы следующие.
|
- Мета-экраны — заглушки: сеть и авторизация настоящие, разделы следующие.
|
||||||
- Бой — gray-box: карты показываются по `printingId`, без артов и анимаций;
|
- Бой — gray-box: карты показываются по `printingId`, без артов и анимаций;
|
||||||
|
|
@ -111,5 +110,14 @@ EditMode:
|
||||||
-testResults client\TestResults.xml
|
-testResults client\TestResults.xml
|
||||||
```
|
```
|
||||||
|
|
||||||
PlayMode — то же с `-testPlatform PlayMode`. Тесты не ходят в сеть:
|
Smoke сцен (входит в Play Mode, открывает Boot → Login, проверяет 3D-фон
|
||||||
проверяются composition root, создание Canvas и обоих экранов.
|
и экран):
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
& 'C:\Program Files\Unity\Hub\Editor\6000.6.6f1\Editor\Unity.exe' `
|
||||||
|
-batchmode -nographics -projectPath client `
|
||||||
|
-executeMethod Vanguard.Editor.SceneSmoke.Run
|
||||||
|
```
|
||||||
|
|
||||||
|
Тесты не ходят в сеть: проверяются composition root, создание Canvas,
|
||||||
|
экранов и 3D-окружения.
|
||||||
|
|
|
||||||
|
|
@ -514,7 +514,7 @@ CI подключён и проходит; серверный блок закр
|
||||||
- сцена `Boot` + runtime-инициализатор, поэтому клиент стартует и в пустой
|
- сцена `Boot` + runtime-инициализатор, поэтому клиент стартует и в пустой
|
||||||
сцене;
|
сцене;
|
||||||
- composition root на VContainer: `AppConfig`, `TokenStore`, `ApiClient`,
|
- composition root на VContainer: `AppConfig`, `TokenStore`, `ApiClient`,
|
||||||
`AuthService`, `PlayerState`, `AppRootView`;
|
`AuthService`, `MetaService`, `PlayerState`, `SceneFlow`;
|
||||||
- HTTP-клиент на `UnityWebRequest` + Newtonsoft.Json, разбор `ApiError`,
|
- HTTP-клиент на `UnityWebRequest` + Newtonsoft.Json, разбор `ApiError`,
|
||||||
таймаут 20 с;
|
таймаут 20 с;
|
||||||
- login/register/refresh/me/logout, восстановление сессии по refresh,
|
- login/register/refresh/me/logout, восстановление сессии по refresh,
|
||||||
|
|
@ -534,16 +534,21 @@ CI подключён и проходит; серверный блок закр
|
||||||
сдача с подтверждением, результат;
|
сдача с подтверждением, результат;
|
||||||
- `Vanguard.Shared.dll` (netstandard2.1) и MessagePack 3.1.12 подключены
|
- `Vanguard.Shared.dll` (netstandard2.1) и MessagePack 3.1.12 подключены
|
||||||
как плагины; `client/README.md` описывает запуск и ограничения;
|
как плагины; `client/README.md` описывает запуск и ограничения;
|
||||||
- EditMode и PlayMode smoke-тесты `Vanguard.Tests.Editor` /
|
- сцены `Login`, `Lobby`, `Collection`, `DeckBuilder`, `Battle` и
|
||||||
`Vanguard.Tests.PlayMode` собирают все экраны и проверяют запуск
|
`SceneFlow`; `Boot` — стартовая служебная сцена, `VanguardApp` и сервисы
|
||||||
приложения; live-probe (не входит в набор) проверил онбординг,
|
живут между сценами;
|
||||||
коллекцию, создание/удаление колоды, а также два WebSocket-подключения,
|
- 3D-фон на каждой сцене: камера, свет, пол и тематические примитивы;
|
||||||
маллиган, сдачу и `GameFinished` против стенда.
|
UI пока code-generated uGUI;
|
||||||
|
- EditMode smoke `Vanguard.Tests.Editor` и `Vanguard.Editor.SceneSmoke`
|
||||||
|
проверяют запуск Boot → Login и создание экранов/3D-окружения;
|
||||||
|
live-probe (не входит в набор) проверил онбординг, коллекцию,
|
||||||
|
создание/удаление колоды, а также два WebSocket-подключения, маллиган,
|
||||||
|
сдачу и `GameFinished` против стенда.
|
||||||
|
|
||||||
Дальше по клиенту:
|
Дальше по клиенту:
|
||||||
|
|
||||||
1. Перейти к **3D-визуалу**: отдельные сцены **Login**, **Lobby**,
|
1. Наполнить 3D-сцены артом и перевести Login/Lobby на полноценные
|
||||||
**Collection**, **DeckBuilder**, **Battle**; `Boot` — служебная сцена.
|
prefab/UI; сейчас это 3D-каркас с code-generated uGUI.
|
||||||
2. Довести боевой UI: арты, зоны, анимации, скип/ускорение.
|
2. Довести боевой UI: арты, зоны, анимации, скип/ускорение.
|
||||||
3. Реконнект на всех шагах и аккуратная обработка таймаутов.
|
3. Реконнект на всех шагах и аккуратная обработка таймаутов.
|
||||||
4. Полный декбилдер с фильтрами и счётчиками.
|
4. Полный декбилдер с фильтрами и счётчиками.
|
||||||
|
|
|
||||||
|
|
@ -33,30 +33,30 @@
|
||||||
Сцены отвечают за 3D-презентацию и свой UI. Сервисы не должны зависеть от
|
Сцены отвечают за 3D-презентацию и свой UI. Сервисы не должны зависеть от
|
||||||
конкретной сцены.
|
конкретной сцены.
|
||||||
|
|
||||||
## План миграции с текущего gray-box
|
## Статус миграции
|
||||||
|
|
||||||
Сейчас работает один runtime-Canvas (`AppRootView`) со всеми экранами —
|
Сцены `Login`, `Lobby`, `Collection`, `DeckBuilder`, `Battle` созданы;
|
||||||
это функциональный каркас. Его сохраняем как основу логики и постепенно
|
`VanguardApp` и общие сервисы персистентны, `SceneFlow` загружает сцены.
|
||||||
разносим:
|
Сейчас 3D-окружение собрано из примитивов, UI — code-generated uGUI.
|
||||||
|
Дальше: арт/модели, prefab-экраны, анимации и наполнение сцен.
|
||||||
|
|
||||||
|
Уже перенесено:
|
||||||
|
|
||||||
- `LoginView` → сцена **Login** (3D-фон/стол, форма поверх);
|
- `LoginView` → сцена **Login** (3D-фон/стол, форма поверх);
|
||||||
- `MetaView` → сцена **Lobby** (3D-холл, панель профиля и входы в разделы);
|
- `MetaView`/`OnboardingView`/`QueueView` → сцена **Lobby**;
|
||||||
- `CollectionView` → сцена **Collection** (3D-витрина/альбом карт);
|
- `CollectionView` → сцена **Collection**;
|
||||||
- `DecksView` + будущий декбилдер → сцена **DeckBuilder** (3D-стол,
|
- `DecksView` → сцена **DeckBuilder**;
|
||||||
стопка колоды, карты, фильтры);
|
- `BattleView` → сцена **Battle**.
|
||||||
- `QueueView` → оверлей в **Lobby**;
|
|
||||||
- `BattleView` → сцена **Battle** (3D-стол, зоны, карты, камера, UI рук и
|
|
||||||
таймера).
|
|
||||||
|
|
||||||
Сетевые и доменные классы (`GameConnection`, `ApiClient`, `MetaService`)
|
Сетевые и доменные классы (`GameConnection`, `ApiClient`, `MetaService`)
|
||||||
переносятся без изменения контрактов. Сцены подключаются через
|
перенесены без изменения контрактов. `Boot` остаётся стартовой сценой,
|
||||||
`SceneFlow`; `Boot` остаётся загруженной/персистентной.
|
`VanguardApp` — персистентным composition root.
|
||||||
|
|
||||||
## Ограничения и следующие шаги
|
## Ограничения и следующие шаги
|
||||||
|
|
||||||
- Пока нет 3D-ассетов: карты в gray-box показываются по `printingId`.
|
- Пока нет 3D-ассетов: карты в gray-box показываются по `printingId`.
|
||||||
Арт и 3D-модели будут подключаться по `cardId` через Addressables.
|
Арт и 3D-модели будут подключаться по `cardId` через Addressables.
|
||||||
- Ближайший визуальный шаг — создать пустые сцены Login/Lobby/Collection/
|
- Ближайший визуальный шаг — наполнить сцены моделями/артом и перевести
|
||||||
DeckBuilder/Battle, добавить `SceneFlow` и перенести Login/Lobby.
|
UI на prefab-экраны; логика и `SceneFlow` уже готовы.
|
||||||
- Боевые анимации, камера и 3D-карты — после стабилизации сетевого
|
- Боевые анимации, камера и 3D-карты — после стабилизации сетевого
|
||||||
протокола и базового UI.
|
протокола и базового UI.
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue