114 lines
3.4 KiB
C#
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
|
|
}
|
|
}
|