UTKProperyItem 수정 중

This commit is contained in:
logonkhi
2026-02-10 20:48:49 +09:00
parent 97bbb789ed
commit df6d3e3b5a
112 changed files with 2898 additions and 443 deletions

View File

@@ -80,6 +80,12 @@ namespace UVC.Sample.UIToolkit
_propertyWindow.OnPropertyValueChanged += args =>
{
Debug.Log($"Property Changed: {args.PropertyId} {args.PropertyName} ({args.PropertyType}) = {args.NewValue}");
// gap_type 변경 시 해당 분포 속성만 표시
if (args.PropertyId == "gap_type" && args.NewValue is string gapType)
{
UpdateGapVisibility(gapType);
}
};
_propertyWindow.OnPropertyClicked += args =>
@@ -134,14 +140,8 @@ namespace UVC.Sample.UIToolkit
// Bool (편집 가능)
entries.Add(new UTKBoolPropertyItem("bool", "Bool", true));
// Bool (ShowLabel = false)
var boolNoLabel = new UTKBoolPropertyItem("bool_no_label", "No Label Bool", false);
boolNoLabel.ShowLabel = false;
entries.Add(boolNoLabel);
// Bool (읽기 전용)
var roBool = new UTKBoolPropertyItem("bool_ro", "Bool (RO)", true);
roBool.IsReadOnly = true;
var roBool = new UTKBoolPropertyItem("bool_ro", "Bool (RO)", true, true);
entries.Add(roBool);
// Int (편집 가능)
@@ -312,13 +312,52 @@ namespace UVC.Sample.UIToolkit
// FloatRange (편집 가능)
entries.Add(new UTKFloatRangePropertyItem("floatrange", "FloatRange", 1.5f, 8.5f));
// FloatRange (읽기 전용)
var roFloatRange = new UTKFloatRangePropertyItem("floatrange_ro", "FloatRange (RO)", 2.5f, 7.5f);
roFloatRange.IsReadOnly = true;
entries.Add(roFloatRange);
// FloatRange Stepper (편집 가능)
entries.Add(new UTKFloatRangePropertyItem("floatrange2", "FloatRange Stepper", 1.5f, 8.5f, stepperStep: 0.5f, stepperMinValue: 0f, stepperMaxValue: 100f, useStepper: true));
// FloatRange Stepper (읽기 전용)
entries.Add(new UTKFloatRangePropertyItem("floatrange2_ro", "FloatRange Stepper (RO)", 2.5f, 7.5f, stepperStep: 0.5f, stepperMinValue: 0f, stepperMaxValue: 100f, useStepper: true, isReadOnly: true));
// FloatDropdown (FloatField + Dropdown)
entries.Add(new UTKFloatDropdownPropertyItem("floatdropdown1", "FloatDropdown",
1.5f, new List<string> { "mm", "cm", "m", "km" }, "cm"));
// FloatDropdown (Stepper + Dropdown)
entries.Add(new UTKFloatDropdownPropertyItem("floatdropdown2", "FloatDropdown Stepper",
10.0f, new List<string> { "mm", "cm", "m", "km" }, "m",
floatMinValue: 0f, floatMaxValue: 1000f, stepperStep: 0.5f, useStepper: true));
// FloatDropdown (읽기 전용)
entries.Add(new UTKFloatDropdownPropertyItem("floatdropdown_ro", "FloatDropdown (RO)",
5.0f, new List<string> { "mm", "cm", "m", "km" }, "km", isReadOnly: true));
// ===== Group에 속한 아이템들 =====
var timeList = new List<string> { "초(sec)", "분(min)", "시간(hour)" };
var gapGroup = new UTKPropertyGroup("gap", "생산 간격 정책");
gapGroup.AddItem(new UTKDropdownPropertyItem("gap_type", "간격 타입",
new List<string> { "상수", "정규 분포", "균등 분포", "지수 분포", "삼각 분포" }, "상수", showLabel: false));
//상수
gapGroup.AddItem(new UTKFloatDropdownPropertyItem("gap_value", "상수", 1.0f, timeList, "초(sec)"));
//정규 분포
gapGroup.AddItem(new UTKFloatDropdownPropertyItem("gap_normal_mean", "정규 분포 평균치", 1.0f, timeList, "초(sec)"){ IsVisible = false });
gapGroup.AddItem(new UTKFloatDropdownPropertyItem("gap_normal_stddev", "정규 분포 표준 편차", 1.0f, timeList, "초(sec)"){ IsVisible = false });
//균등 분포
gapGroup.AddItem(new UTKFloatDropdownPropertyItem("gap_uniform_min", "균등 분포 최소값", 1.0f, timeList, "초(sec)"){ IsVisible = false });
gapGroup.AddItem(new UTKFloatDropdownPropertyItem("gap_uniform_max", "균등 분포 최대값", 1.0f, timeList, "초(sec)"){ IsVisible = false });
//지수 분포
gapGroup.AddItem(new UTKFloatDropdownPropertyItem("gap_exponential", "지수 분포 평균치", 1.0f, timeList, "초(sec)"){ IsVisible = false });
//삼각 분포
gapGroup.AddItem(new UTKFloatDropdownPropertyItem("gap_triangular_min", "삼각 분포 최소값", 1.0f, timeList, "초(sec)"){ IsVisible = false });
gapGroup.AddItem(new UTKFloatDropdownPropertyItem("gap_triangular_mode", "삼각 분포 최빈값", 1.0f, timeList, "초(sec)"){ IsVisible = false });
gapGroup.AddItem(new UTKFloatDropdownPropertyItem("gap_triangular_max", "삼각 분포 최대값", 1.0f, timeList, "초(sec)"){ IsVisible = false });
entries.Add(gapGroup);
// 기본 속성 그룹 (편집 가능)
var basicGroup = new UTKPropertyGroup("basic", "Basic Properties (Editable)");
@@ -549,6 +588,30 @@ namespace UVC.Sample.UIToolkit
return entries;
}
/// <summary>
/// gap_type 값에 따라 해당 분포 속성의 가시성을 전환합니다.
/// </summary>
private void UpdateGapVisibility(string gapType)
{
_propertyWindow.SetPropertyVisibilityBatch(new (string, bool)[]
{
// 상수
("gap_value", gapType == "상수"),
// 정규 분포
("gap_normal_mean", gapType == "정규 분포"),
("gap_normal_stddev", gapType == "정규 분포"),
// 균등 분포
("gap_uniform_min", gapType == "균등 분포"),
("gap_uniform_max", gapType == "균등 분포"),
// 지수 분포
("gap_exponential", gapType == "지수 분포"),
// 삼각 분포
("gap_triangular_min", gapType == "삼각 분포"),
("gap_triangular_mode", gapType == "삼각 분포"),
("gap_triangular_max", gapType == "삼각 분포"),
});
}
private void OnDestroy()
{
_propertyWindow?.Dispose();