Показать сообщение отдельно
Старый 25.10.2013, 20:28   #1861
WISHMASTER35
Бывалый
 
Аватар для WISHMASTER35
 
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений
(для 357 пользователей)
Ответ: Вопросы от новичка

pax, не знал про такую штуку. Вообще я помучился с этой кнопкой.
Иногда из-за нее переставало работать вращение камеры. Как кое-как заметил, вращение не работает, если нажать правой кнопкой мыши по батану.
Вот код этой функции
public static bool Do(int id, Vector3 position, Quaternion direction, float size, float pickSize, Handles.DrawCapFunction capFunc)
{
    Event current = Event.current;
    switch (current.GetTypeForControl(id))
    {
        case EventType.MouseDown:
            if (HandleUtility.nearestControl == id)
            {
                GUIUtility.hotControl = id;
                current.Use();
            }
            break;

        case EventType.MouseUp:
            if ((GUIUtility.hotControl != id) || ((current.button != 0) && (current.button != 2)))
            {
                break;
            }
            GUIUtility.hotControl = 0;
            current.Use();
            if (HandleUtility.nearestControl != id)
            {
                break;
            }
            return true;

        case EventType.MouseMove:
            if (((HandleUtility.nearestControl == id) && (current.button == 0)) || ((GUIUtility.keyboardControl == id) && (current.button == 2)))
            {
                HandleUtility.Repaint();
            }
            break;

        case EventType.Repaint:
        {
            Color color = Handles.color;
            if ((HandleUtility.nearestControl == id) && !GUI.enabled)
            {
                Handles.color = (Color) Handles.selectedColor;
            }
            capFunc(id, position, direction, size);
            Handles.color = color;
            break;
        }
        case EventType.Layout:
            if (GUI.enabled)
            {
                HandleUtility.AddControl(id, HandleUtility.DistanceToCircle(position, pickSize));
            }
            break;
    }
    return false;
}
MouseDown работает для всех кнопок мыши.
Но код события MouseUp выполняется, только для левой кнопки мыши.
Похоже, если GUIUtility.hotControl не сбросить на ноль, то камера не будет работать.
Только как камера связана с GUIUtility.hotControl не понимаю.
(Offline)
 
Ответить с цитированием