Files
XRLib/Assets/Scripts/Studio/StudioAppMain.cs
2025-12-22 20:49:40 +09:00

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;
}
}
}