65 lines
2.2 KiB
C#
65 lines
2.2 KiB
C#
using System;
|
|
using UnityEditor;
|
|
using UnityEditor.SceneManagement;
|
|
using UnityEngine;
|
|
using UnityEngine.SceneManagement;
|
|
using Vanguard.App;
|
|
using Vanguard.Auth;
|
|
|
|
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()
|
|
{
|
|
new TokenStore().Clear();
|
|
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);
|
|
}
|
|
}
|
|
}
|