97 lines
3.1 KiB
C#
97 lines
3.1 KiB
C#
using Cysharp.Threading.Tasks;
|
|
using UVC.Studio.Config;
|
|
using System;
|
|
using UnityEngine;
|
|
using UVC.Core;
|
|
using UVC.Data;
|
|
using UVC.Locale;
|
|
using UVC.Util;
|
|
using UVC.UI.Loading;
|
|
using RTGLite;
|
|
|
|
namespace UVC.Studio
|
|
{
|
|
[DefaultExecutionOrder(100)]
|
|
public class StudioAppMain : SingletonApp<StudioAppMain>
|
|
{
|
|
|
|
public Action Initialized;
|
|
|
|
|
|
/// <summary>
|
|
/// 초기 화 메서드입니다.
|
|
/// Awake 메서드에서 호출되며, MonoBehaviour가 생성될 때 한 번만 실행됩니다.
|
|
/// </summary>
|
|
protected override async void Init()
|
|
{
|
|
// 플레이 모드가 아닐 경우, 초기화 로직을 실행하지 않습니다.
|
|
if (!Application.isPlaying) return;
|
|
|
|
#if !UNITY_WEBGL || UNITY_EDITOR
|
|
//로깅 설정
|
|
UVC.Log.Log4netCodeConfigurator.Setup();
|
|
#endif
|
|
|
|
UILoading.Show();
|
|
|
|
RTGLite.RTG.get.initialized += OnRTGInit;
|
|
|
|
await SettupConfigAsync();
|
|
|
|
if (Initialized != null)
|
|
{
|
|
Initialized.Invoke();
|
|
}
|
|
}
|
|
|
|
void Start()
|
|
{
|
|
//Tester.RunAllTests();
|
|
}
|
|
|
|
private async UniTask SettupConfigAsync()
|
|
{
|
|
if (StudioAppConfig.LoadConfig())
|
|
{
|
|
Application.targetFrameRate = StudioAppConfig.Config.TargetFrameRate;
|
|
|
|
//기본 언어 설정
|
|
bool success = LocalizationManager.Instance.LoadDefaultLocalizationData(StudioAppConfig.Config.Language);
|
|
Debug.Log($"LocalizationManager: LoadDefaultLocalizationData success: {success}");
|
|
if (!Application.isEditor && Application.platform == RuntimePlatform.WindowsPlayer)
|
|
{
|
|
//창 설정
|
|
if (StudioAppConfig.Config.Window != null)
|
|
{
|
|
WindowTools.Instance.Init(StudioAppConfig.Config.Window);
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
//사용자 DataMask 설정 AppData에서 로드
|
|
await UserSetting.LoadFromAppData();
|
|
|
|
}
|
|
|
|
private async void OnRTGInit()
|
|
{
|
|
RTGizmos.get.CreateViewGizmo(RTCamera.get.settings.targetCamera);
|
|
|
|
// Start 전에 호출 되서 Injection 완료 대기 후 Setting 인스턴스 획득
|
|
await InjectorAppContext.Instance.WaitForInitializationAsync();
|
|
Setting setting = InjectorAppContext.Instance.Get<Setting>();
|
|
|
|
RTGizmos.get.skin.viewGizmoStyle.screenPadding = new Vector2(300f, 40f);
|
|
|
|
// Grid 크기 설정에 즉시 적용
|
|
RTGrid.get.settings.cellSize = new Vector3(setting.Data.general.gridSize, setting.Data.general.gridSize, setting.Data.general.gridSize);
|
|
// RTGizmos 위치/회전/스케일 스냅 설정에 즉시 적용
|
|
RTGizmos.get.skin.globalGizmoStyle.positionSnap = setting.Data.general.snapPosition;
|
|
RTGizmos.get.skin.globalGizmoStyle.rotationSnap = setting.Data.general.snapRotation;
|
|
RTGizmos.get.skin.globalGizmoStyle.scaleSnap = setting.Data.general.snapScale;
|
|
}
|
|
|
|
}
|
|
}
|