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.
|
||||
DOTween — следующим шагом (пока UI без внешних твинов).
|
||||
- [ ] 3D-сцены `Login`, `Lobby`, `Collection`, `DeckBuilder`, `Battle`
|
||||
и `SceneFlow`; `Boot` уже есть как служебный bootstrap.
|
||||
- [x] 3D-сцены `Login`, `Lobby`, `Collection`, `DeckBuilder`, `Battle`
|
||||
и `SceneFlow`; `Boot` — стартовая служебная сцена. 3D-окружение пока
|
||||
из примитивов, UI — code-generated uGUI.
|
||||
- [x] Composition root + DI (VContainer), без синглтон-свалок.
|
||||
- [x] `ApiClient` (HTTP/JSON), `PlayerState`, таймауты и разбор `ApiError`.
|
||||
- [x] `GameConnection` (WebSocket + MessagePack), snapshot/events,
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@
|
|||
| CI (Forgejo Actions) | готово: `ci.yml` проходит на `home-runner` |
|
||||
| EF-миграции | готово (`InitialCreate`) |
|
||||
| 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",
|
||||
"rootNamespace": "Vanguard.Tests",
|
||||
"name": "Vanguard.Editor",
|
||||
"rootNamespace": "Vanguard.Editor",
|
||||
"references": [
|
||||
"Vanguard.Runtime"
|
||||
],
|
||||
"includePlatforms": [],
|
||||
"includePlatforms": [
|
||||
"Editor"
|
||||
],
|
||||
"excludePlatforms": [],
|
||||
"allowUnsafeCode": false,
|
||||
"overrideReferences": false,
|
||||
"precompiledReferences": [],
|
||||
"autoReferenced": false,
|
||||
"autoReferenced": true,
|
||||
"defineConstraints": [],
|
||||
"versionDefines": [],
|
||||
"noEngineReferences": false,
|
||||
"optionalUnityReferences": [
|
||||
"TestAssemblies"
|
||||
]
|
||||
"noEngineReferences": false
|
||||
}
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 199ad6dea713aef4cb50a4d8d01c9ca4
|
||||
guid: f65969750402d974c8bc90b95a61ae96
|
||||
AssemblyDefinitionImporter:
|
||||
externalObjects: {}
|
||||
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.Threading.Tasks;
|
||||
using UnityEngine;
|
||||
using VContainer;
|
||||
using Vanguard.Api;
|
||||
using Vanguard.Auth;
|
||||
using Vanguard.Meta;
|
||||
using Vanguard.State;
|
||||
using Vanguard.UI;
|
||||
|
||||
namespace Vanguard.App
|
||||
{
|
||||
/// <summary>
|
||||
/// Composition root клиента. Создаётся из runtime-инициализатора, поэтому
|
||||
/// не зависит от содержимого сцены; сцены появятся позже.
|
||||
/// Composition root клиента. Живёт между сценами, хранит DI-контейнер и
|
||||
/// общие сервисы; сцены отвечают только за 3D-вид и свой UI.
|
||||
/// </summary>
|
||||
public sealed class VanguardApp : MonoBehaviour
|
||||
{
|
||||
public static VanguardApp Instance { get; private set; }
|
||||
public static string LastInitializationError { get; private set; }
|
||||
|
||||
private IObjectResolver _container;
|
||||
private AppRootView _root;
|
||||
|
||||
public IObjectResolver Container => _container;
|
||||
public SceneFlow Flow { get; private set; }
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
try
|
||||
{
|
||||
Instance = this;
|
||||
DontDestroyOnLoad(gameObject);
|
||||
Application.targetFrameRate = 60;
|
||||
|
||||
|
|
@ -38,13 +40,10 @@ namespace Vanguard.App
|
|||
builder.Register<ApiClient>(Lifetime.Singleton);
|
||||
builder.Register<AuthService>(Lifetime.Singleton);
|
||||
builder.Register<MetaService>(Lifetime.Singleton);
|
||||
builder.Register<AppRootView>(Lifetime.Singleton);
|
||||
builder.Register<SceneFlow>(Lifetime.Singleton);
|
||||
|
||||
_container = builder.Build();
|
||||
_root = _container.Resolve<AppRootView>();
|
||||
_root.Initialize();
|
||||
|
||||
_ = RestoreSessionAsync();
|
||||
Flow = _container.Resolve<SceneFlow>();
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
|
|
@ -53,33 +52,17 @@ namespace Vanguard.App
|
|||
}
|
||||
}
|
||||
|
||||
private async Task RestoreSessionAsync()
|
||||
private void Start()
|
||||
{
|
||||
var auth = _container.Resolve<AuthService>();
|
||||
|
||||
try
|
||||
{
|
||||
if (await auth.TryRestoreAsync())
|
||||
{
|
||||
_root.ShowAfterLogin();
|
||||
return;
|
||||
}
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
Debug.LogException(exception);
|
||||
}
|
||||
|
||||
_root.ShowLogin("Введите данные игрока.");
|
||||
}
|
||||
|
||||
private void Update()
|
||||
{
|
||||
_root?.Tick();
|
||||
if (Flow != null)
|
||||
_ = Flow.LoadLoginAsync();
|
||||
}
|
||||
|
||||
private void OnDestroy()
|
||||
{
|
||||
if (Instance == this)
|
||||
Instance = null;
|
||||
|
||||
if (_container is IDisposable disposable)
|
||||
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();
|
||||
|
||||
var go = new GameObject(name, typeof(Canvas), typeof(CanvasScaler), typeof(GraphicRaycaster));
|
||||
if (Application.isPlaying)
|
||||
if (Application.isPlaying && persistent)
|
||||
Object.DontDestroyOnLoad(go);
|
||||
|
||||
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
|
||||
{
|
||||
[Test]
|
||||
public void AppRootView_Builds_Login_And_Meta_Screens()
|
||||
public void Client_Views_Build()
|
||||
{
|
||||
var config = new AppConfig();
|
||||
config.Load();
|
||||
|
|
@ -24,26 +24,43 @@ namespace Vanguard.Tests
|
|||
var player = new PlayerState();
|
||||
var auth = new AuthService(api, tokens, player);
|
||||
var meta = new MetaService(api, player);
|
||||
var root = new AppRootView(config, auth, player, meta);
|
||||
|
||||
root.Initialize();
|
||||
root.ShowLogin("smoke");
|
||||
var canvas = UiKit.CreateCanvas("Test Canvas");
|
||||
|
||||
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.IsTrue(Resources.FindObjectsOfTypeAll<GameObject>().Any(go => go.name == "MetaScreen"));
|
||||
Assert.IsTrue(Resources.FindObjectsOfTypeAll<GameObject>().Any(go => go.name == "OnboardingScreen"));
|
||||
Assert.IsTrue(Resources.FindObjectsOfTypeAll<GameObject>().Any(go => go.name == "CollectionScreen"));
|
||||
Assert.IsTrue(Resources.FindObjectsOfTypeAll<GameObject>().Any(go => go.name == "DecksScreen"));
|
||||
Assert.IsTrue(Resources.FindObjectsOfTypeAll<GameObject>().Any(go => go.name == "QueueScreen"));
|
||||
Assert.IsTrue(Resources.FindObjectsOfTypeAll<GameObject>().Any(go => go.name == "BattleScreen"));
|
||||
Assert.IsTrue(Exists("MetaScreen"));
|
||||
Assert.IsTrue(Exists("OnboardingScreen"));
|
||||
Assert.IsTrue(Exists("CollectionScreen"));
|
||||
Assert.IsTrue(Exists("DecksScreen"));
|
||||
Assert.IsTrue(Exists("QueueScreen"));
|
||||
Assert.IsTrue(Exists("BattleScreen"));
|
||||
|
||||
Cleanup();
|
||||
}
|
||||
|
||||
private static bool Exists(string name) =>
|
||||
Resources.FindObjectsOfTypeAll<GameObject>().Any(go => go.name == name);
|
||||
|
||||
private static void Cleanup()
|
||||
{
|
||||
var canvas = GameObject.Find("Vanguard Canvas");
|
||||
var canvas = GameObject.Find("Test Canvas");
|
||||
if (canvas != null)
|
||||
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
|
||||
path: Assets/Scenes/Boot.unity
|
||||
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:
|
||||
com.unity.input.settings.actions: {fileID: -944628639613478452, guid: 052faaac586de48259a63d0c4782560b, type: 3}
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ http://localhost:5080
|
|||
|
||||
- `ClientBootstrap` — запуск без привязки к сцене.
|
||||
- DI на VContainer: `AppConfig`, `TokenStore`, `ApiClient`, `AuthService`,
|
||||
`MetaService`, `PlayerState`, `AppRootView`.
|
||||
`MetaService`, `PlayerState`, `SceneFlow`.
|
||||
- HTTP-клиент на `UnityWebRequest` + Newtonsoft.Json, разбор `ApiError`.
|
||||
- Логин, регистрация, refresh, `/me`, выход.
|
||||
- Восстановление сессии по refresh-токену при старте.
|
||||
|
|
@ -89,9 +89,8 @@ MessagePack-сериализатор и юнион-кадры.
|
|||
это значение вернуть в «Not allowed».
|
||||
- Токены лежат в `PlayerPrefs` — только для разработки; для релиза нужно
|
||||
защищённое хранилище.
|
||||
- Текущий UI собран кодом на uGUI и одном Canvas — это временный gray-box.
|
||||
Финальные экраны — отдельные 3D-сцены; UI-слой может быть uGUI или
|
||||
UI Toolkit в зависимости от сцены.
|
||||
- Текущий UI собран кодом на uGUI; каждая сцена имеет свой Canvas.
|
||||
Префабы/UI Toolkit подключим, когда появятся макеты.
|
||||
- DOTween пока не добавлен; анимации UI — после перехода на сцены.
|
||||
- Мета-экраны — заглушки: сеть и авторизация настоящие, разделы следующие.
|
||||
- Бой — gray-box: карты показываются по `printingId`, без артов и анимаций;
|
||||
|
|
@ -111,5 +110,14 @@ EditMode:
|
|||
-testResults client\TestResults.xml
|
||||
```
|
||||
|
||||
PlayMode — то же с `-testPlatform PlayMode`. Тесты не ходят в сеть:
|
||||
проверяются composition root, создание Canvas и обоих экранов.
|
||||
Smoke сцен (входит в Play Mode, открывает Boot → Login, проверяет 3D-фон
|
||||
и экран):
|
||||
|
||||
```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-инициализатор, поэтому клиент стартует и в пустой
|
||||
сцене;
|
||||
- composition root на VContainer: `AppConfig`, `TokenStore`, `ApiClient`,
|
||||
`AuthService`, `PlayerState`, `AppRootView`;
|
||||
`AuthService`, `MetaService`, `PlayerState`, `SceneFlow`;
|
||||
- HTTP-клиент на `UnityWebRequest` + Newtonsoft.Json, разбор `ApiError`,
|
||||
таймаут 20 с;
|
||||
- login/register/refresh/me/logout, восстановление сессии по refresh,
|
||||
|
|
@ -534,16 +534,21 @@ CI подключён и проходит; серверный блок закр
|
|||
сдача с подтверждением, результат;
|
||||
- `Vanguard.Shared.dll` (netstandard2.1) и MessagePack 3.1.12 подключены
|
||||
как плагины; `client/README.md` описывает запуск и ограничения;
|
||||
- EditMode и PlayMode smoke-тесты `Vanguard.Tests.Editor` /
|
||||
`Vanguard.Tests.PlayMode` собирают все экраны и проверяют запуск
|
||||
приложения; live-probe (не входит в набор) проверил онбординг,
|
||||
коллекцию, создание/удаление колоды, а также два WebSocket-подключения,
|
||||
маллиган, сдачу и `GameFinished` против стенда.
|
||||
- сцены `Login`, `Lobby`, `Collection`, `DeckBuilder`, `Battle` и
|
||||
`SceneFlow`; `Boot` — стартовая служебная сцена, `VanguardApp` и сервисы
|
||||
живут между сценами;
|
||||
- 3D-фон на каждой сцене: камера, свет, пол и тематические примитивы;
|
||||
UI пока code-generated uGUI;
|
||||
- EditMode smoke `Vanguard.Tests.Editor` и `Vanguard.Editor.SceneSmoke`
|
||||
проверяют запуск Boot → Login и создание экранов/3D-окружения;
|
||||
live-probe (не входит в набор) проверил онбординг, коллекцию,
|
||||
создание/удаление колоды, а также два WebSocket-подключения, маллиган,
|
||||
сдачу и `GameFinished` против стенда.
|
||||
|
||||
Дальше по клиенту:
|
||||
|
||||
1. Перейти к **3D-визуалу**: отдельные сцены **Login**, **Lobby**,
|
||||
**Collection**, **DeckBuilder**, **Battle**; `Boot` — служебная сцена.
|
||||
1. Наполнить 3D-сцены артом и перевести Login/Lobby на полноценные
|
||||
prefab/UI; сейчас это 3D-каркас с code-generated uGUI.
|
||||
2. Довести боевой UI: арты, зоны, анимации, скип/ускорение.
|
||||
3. Реконнект на всех шагах и аккуратная обработка таймаутов.
|
||||
4. Полный декбилдер с фильтрами и счётчиками.
|
||||
|
|
|
|||
|
|
@ -33,30 +33,30 @@
|
|||
Сцены отвечают за 3D-презентацию и свой UI. Сервисы не должны зависеть от
|
||||
конкретной сцены.
|
||||
|
||||
## План миграции с текущего gray-box
|
||||
## Статус миграции
|
||||
|
||||
Сейчас работает один runtime-Canvas (`AppRootView`) со всеми экранами —
|
||||
это функциональный каркас. Его сохраняем как основу логики и постепенно
|
||||
разносим:
|
||||
Сцены `Login`, `Lobby`, `Collection`, `DeckBuilder`, `Battle` созданы;
|
||||
`VanguardApp` и общие сервисы персистентны, `SceneFlow` загружает сцены.
|
||||
Сейчас 3D-окружение собрано из примитивов, UI — code-generated uGUI.
|
||||
Дальше: арт/модели, prefab-экраны, анимации и наполнение сцен.
|
||||
|
||||
Уже перенесено:
|
||||
|
||||
- `LoginView` → сцена **Login** (3D-фон/стол, форма поверх);
|
||||
- `MetaView` → сцена **Lobby** (3D-холл, панель профиля и входы в разделы);
|
||||
- `CollectionView` → сцена **Collection** (3D-витрина/альбом карт);
|
||||
- `DecksView` + будущий декбилдер → сцена **DeckBuilder** (3D-стол,
|
||||
стопка колоды, карты, фильтры);
|
||||
- `QueueView` → оверлей в **Lobby**;
|
||||
- `BattleView` → сцена **Battle** (3D-стол, зоны, карты, камера, UI рук и
|
||||
таймера).
|
||||
- `MetaView`/`OnboardingView`/`QueueView` → сцена **Lobby**;
|
||||
- `CollectionView` → сцена **Collection**;
|
||||
- `DecksView` → сцена **DeckBuilder**;
|
||||
- `BattleView` → сцена **Battle**.
|
||||
|
||||
Сетевые и доменные классы (`GameConnection`, `ApiClient`, `MetaService`)
|
||||
переносятся без изменения контрактов. Сцены подключаются через
|
||||
`SceneFlow`; `Boot` остаётся загруженной/персистентной.
|
||||
перенесены без изменения контрактов. `Boot` остаётся стартовой сценой,
|
||||
`VanguardApp` — персистентным composition root.
|
||||
|
||||
## Ограничения и следующие шаги
|
||||
|
||||
- Пока нет 3D-ассетов: карты в gray-box показываются по `printingId`.
|
||||
Арт и 3D-модели будут подключаться по `cardId` через Addressables.
|
||||
- Ближайший визуальный шаг — создать пустые сцены Login/Lobby/Collection/
|
||||
DeckBuilder/Battle, добавить `SceneFlow` и перенести Login/Lobby.
|
||||
- Ближайший визуальный шаг — наполнить сцены моделями/артом и перевести
|
||||
UI на prefab-экраны; логика и `SceneFlow` уже готовы.
|
||||
- Боевые анимации, камера и 3D-карты — после стабилизации сетевого
|
||||
протокола и базового UI.
|
||||
|
|
|
|||
Loading…
Reference in New Issue