56 lines
2.4 KiB
C#
56 lines
2.4 KiB
C#
#nullable enable
|
|
using UnityEngine;
|
|
using UVC.Core;
|
|
using UVC.Studio.Manager;
|
|
using UVC.UI.Menu;
|
|
using UVC.UI.ToolBar;
|
|
using UVC.UI.Window.PropertyWindow;
|
|
|
|
namespace UVC.Studio
|
|
{
|
|
public class StudioSceneContext : InjectorSceneContext
|
|
{
|
|
/// <summary>
|
|
/// StudioSceneContext 인스턴스에 접근하기 위한 편의 프로퍼티
|
|
/// </summary>
|
|
public static new StudioSceneContext? Instance => InjectorSceneContext.Instance as StudioSceneContext;
|
|
|
|
[SerializeField] private Toolbox? toolbox;
|
|
[SerializeField] private StudioSideTabBar? sideTabBar;
|
|
[SerializeField] private PropertyWindow? propertyWindow;
|
|
[SerializeField] private TopMenuController? topMenu;
|
|
[SerializeField] private GizmoUndoBridge? gizmoUndoBridge;
|
|
[SerializeField] private UndoRedoManager? undoRedoManager;
|
|
|
|
/// <summary>
|
|
/// Scene 라이프사이클 서비스들을 등록합니다.
|
|
/// 씬 로드 시 자동 호출되며, 씬 전환 시 자동으로 정리됩니다.
|
|
/// </summary>
|
|
protected override void RegisterSceneServices()
|
|
{
|
|
base.RegisterSceneServices();
|
|
// 여기에 StudioSceneContext에 등록할 서비스들을 추가하세요.
|
|
|
|
Injector.RegisterSingleton<StudioSceneMain>();
|
|
|
|
if(toolbox != null) Injector.RegisterInstance<Toolbox>(toolbox, ServiceLifetime.Scene);
|
|
|
|
if(sideTabBar != null) Injector.RegisterInstance<StudioSideTabBar>(sideTabBar, ServiceLifetime.Scene);
|
|
|
|
if(propertyWindow != null) Injector.RegisterInstance<PropertyWindow>(propertyWindow, ServiceLifetime.Scene);
|
|
|
|
if(topMenu != null) Injector.RegisterInstance<TopMenuController>(topMenu, ServiceLifetime.Scene);
|
|
|
|
if(gizmoUndoBridge != null) Injector.RegisterInstance<GizmoUndoBridge>(gizmoUndoBridge, ServiceLifetime.Scene);
|
|
if(undoRedoManager != null) Injector.RegisterInstance<UndoRedoManager>(undoRedoManager, ServiceLifetime.Scene);
|
|
|
|
// StageObjectManager 등록
|
|
var stageObjectManager = new StageObjectManager();
|
|
Injector.RegisterInstance<StageObjectManager>(stageObjectManager);
|
|
|
|
// SelectionManager 등록 (StageObjectManager, PropertyWindow 의존)
|
|
var selectionManager = new SelectionManager(stageObjectManager, propertyWindow);
|
|
Injector.RegisterInstance<SelectionManager>(selectionManager);
|
|
}
|
|
}
|
|
} |