Files
EnglewoodLAB/Assets/Scripts/Studio/UIToolkit/Modal/UTKSettingModalContentGeneral.cs

114 lines
3.4 KiB
C#

#nullable enable
using Cysharp.Threading.Tasks;
using System;
using UnityEngine;
using UnityEngine.UIElements;
using UVC.UIToolkit;
namespace UVC.Studio.UIToolkit.Modal
{
/// <summary>
/// 설정 모달 - General 탭 콘텐츠
/// </summary>
[UxmlElement]
public partial class UTKSettingModalContentGeneral : VisualElement, IDisposable, IUTKTabContent
{
#region Constants
private const string UXML_PATH = "Studio/UIToolkit/Modal/UTKSettingModalContentGeneralUXML";
#endregion
#region Fields
private bool _disposed;
private UTKIntegerField? _autoSaveTimeField;
private UTKFloatField? _gridSpacingField;
private UTKFloatField? _positionSnapField;
private UTKFloatField? _rotationSnapField;
private UTKFloatField? _scaleSnapField;
#endregion
#region Properties
/// <summary>Auto Save Time 값 (분)</summary>
public int AutoSaveTime => _autoSaveTimeField?.value ?? 5;
/// <summary>Grid Spacing 값</summary>
public float GridSpacing => _gridSpacingField?.value ?? 1f;
/// <summary>Position Snap 값</summary>
public float PositionSnap => _positionSnapField?.value ?? 0.5f;
/// <summary>Rotation Snap 값</summary>
public float RotationSnap => _rotationSnapField?.value ?? 10f;
/// <summary>Scale Snap 값</summary>
public float ScaleSnap => _scaleSnapField?.value ?? 0.5f;
#endregion
#region Constructor
public UTKSettingModalContentGeneral()
{
var asset = Resources.Load<VisualTreeAsset>(UXML_PATH);
if (asset != null)
{
var root = asset.Instantiate();
root.style.flexGrow = 1;
// UTKIntegerField 참조 가져오기
var intFields = root.Query<UTKIntegerField>().ToList();
foreach (var field in intFields)
{
switch (field.label)
{
case "Auto Save Time":
_autoSaveTimeField = field;
break;
}
}
// UTKFloatField 참조 가져오기
var floatFields = root.Query<UTKFloatField>().ToList();
foreach (var field in floatFields)
{
switch (field.label)
{
case "Grid Spacing":
_gridSpacingField = field;
break;
case "Position Snap":
_positionSnapField = field;
break;
case "Rotation Snap":
_rotationSnapField = field;
break;
case "Scale Snap":
_scaleSnapField = field;
break;
}
}
Add(root);
}
}
#endregion
#region Public Methods
public void Show(object? data)
{
}
public async UniTask Hide()
{
}
#endregion
#region IDisposable
public void Dispose()
{
if (_disposed) return;
_disposed = true;
}
#endregion
}
}