66 lines
1.4 KiB
C#
66 lines
1.4 KiB
C#
using System;
|
|
using UnityEngine;
|
|
using UnityEngine.UIElements;
|
|
|
|
namespace UnityEditor.Purchasing
|
|
{
|
|
class IMGUIContainerPopupAdapter
|
|
{
|
|
public int index;
|
|
public string[] options;
|
|
public Action<string> popupValueChangedAction { get; set; }
|
|
|
|
public IMGUIContainer container
|
|
{
|
|
get => m_Container;
|
|
set
|
|
{
|
|
m_Container = value;
|
|
if (m_Container != null)
|
|
{
|
|
m_Container.onGUIHandler = OnGUI;
|
|
}
|
|
}
|
|
}
|
|
|
|
Rect m_Position;
|
|
IMGUIContainer m_Container;
|
|
|
|
void OnGUI()
|
|
{
|
|
Layout();
|
|
|
|
var choice = DrawPopup();
|
|
|
|
HandleChoice(choice);
|
|
}
|
|
|
|
void Layout()
|
|
{
|
|
if (m_Position.width == 0 || m_Position.height == 0)
|
|
{
|
|
m_Position = new Rect(0, 0, m_Container.resolvedStyle.width, m_Container
|
|
.resolvedStyle.height);
|
|
}
|
|
}
|
|
|
|
int DrawPopup()
|
|
{
|
|
return EditorGUI.Popup(
|
|
m_Position,
|
|
index,
|
|
options);
|
|
}
|
|
|
|
void HandleChoice(int choice)
|
|
{
|
|
if (choice != index)
|
|
{
|
|
index = choice;
|
|
|
|
popupValueChangedAction(options[index]);
|
|
}
|
|
}
|
|
}
|
|
}
|