IUseStartInteractionAwareLink to IUseStartInteractionAware

Достаточно реализовать любой из пары интерфейсов (IUseStartInteractionAware, IUseEndInteractionAware), чтобы объект можно было использовать.

OnUseStart вызывается при нажатии триггера контроллера или левой кнопки мыши. Принимает параметр типа UsingContext - ссылку на используемый контроллер, через которую можно получить ссылку на gameObject контроллера.

public interface IUseStartInteractionAware : IVarwinInputAware
{
void OnUseStart(UseInteractionContext context);
}

IUseEndInteractionAwareLink to IUseEndInteractionAware

Достаточно реализовать любой из пары интерфейсов (IUseStartInteractionAware, IUseEndInteractionAware), чтобы объект можно было использовать.

OnUseEnd вызывается при отпускании триггера контроллера или левой кнопки мыши.

public interface IUseEndInteractionAware : IVarwinInputAware
{
void OnUseEnd(UseInteractionContext context);
}

IGrabStartInteractionAwareLink to IGrabStartInteractionAware

Достаточно реализовать любой из пары интерфейсов (IGrabStartInteractionAware, IGrabEndInteractionAware), чтобы объект можно было хватать и переносить.

Реализация данного интерфейса подразумевает, что объект можно перетаскивать.

OnGrabStart вызывается при нажатии захвата (grip) контроллера или правой кнопки мыши. Принимает параметр типа GrabbingContext - ссылку на используемый контроллер, через которую можно получить ссылку на gameObject контроллера.

public interface IGrabStartInteractionAware : IVarwinInputAware
{
void OnGrabStart(GrabInteractionContext context);
}

IGrabEndInteractionAwareLink to IGrabEndInteractionAware

Достаточно реализовать любой из пары интерфейсов (IGrabStartAware, IGrabEndAware), чтобы объект можно было хватать и переносить.

OnGrabEnd вызывается при отпускании захвата (grip) контроллера, или нажатии правой кнопки мыши (при условии, что объект уже находится в руке).

public interface IGrabEndInteractionAware : IVarwinInputAware
{
void OnGrabEnd(GrabInteractionContext context);
}

ITouchStartInteractionAwareLink to ITouchStartInteractionAware

Достаточно реализовать любой из пары интерфейсов (ITouchStartAware, ITouchEndAware), чтобы объект реагировал на касания.

OnTouchStart вызывается при вхождении контроллера в область объекта.

public interface ITouchStartInteractionAware : IVarwinInputAware
{
void OnTouchStart(TouchInteractionContext context);
}

ITouchEndInteractionAwareLink to ITouchEndInteractionAware

Достаточно реализовать любой из пары интерфейсов (ITouchStartAware, ITouchEndAware), чтобы объект реагировал на касания.

OnTouchEnd вызывается при выхождении контроллера из области объекта.

public interface ITouchEndInteractionAware : IVarwinInputAware
{
void OnTouchEnd(TouchInteractionContext context);
}

Дополнительные интерфейсы для взаимодействия с контроллерами

IGrabPointAwareLink to IGrabPointAware

Предоставляет методы, позволяющие получить transform точки объекта, к которой присоединяется контроллер (для левого и правого контроллера соответственно). Вызывается в момент присоединения объекта к контроллеру (on grab).

public interface IGrabPointAware
{
Transform GetLeftGrabPoint();
Transform GetRightGrabPoint();
}

IPointerClickInteractionAwareLink to IPointerClickInteractionAware

OnPointerClick вызывается при клике объекта лучом указки.

public interface IPointerClickInteractionAware : IVarwinInputAware
{
void OnPointerClick(PointerInteractionContext context);
}

IPointerInInteractionAwareLink to IPointerInInteractionAware

OnPointerIn вызывается при входе луча указки в область объекта.

public interface IPointerInInteractionAware : IVarwinInputAware
{
void OnPointerIn(PointerInteractionContext context);
}

IPointerOutInteractionAwareLink to IPointerOutInteractionAware

OnPointerOut вызывается при выходе луча указки из области объекта.

public interface IPointerOutInteractionAware: IVarwinInputAware
{
void OnPointerOut(PointerInteractionContext context);
}

IPointerDownInteractionAwareLink to IPointerDownInteractionAware

OnPointerDown вызывается при нажатии клавиши на контроллере или мыши по объекту.

public interface IPointerDownInteractionAware : IVarwinInputAware
{
void OnPointerDown(PointerInteractionContext context);
}

IPointerUpInteractionAwareLink to IPointerUpInteractionAware

OnPointerDown вызывается при прекращении нажатия клавиши на контроллере или мыши по объекту.

public interface IPointerUpInteractionAware : IVarwinInputAware
{
void OnPointerUp(PointerInteractionContext context);
}

Дополнительная информация

В качестве аргумента в методах, описанных выше, интерфейсов используется тот или иной контекст.

Внутри каждого контекста содержатся данные о взаимодействии:

  • InteractHand - GameObject руки, которая производит взаимодействие;
  • Hand - тип взаимодействующей руки. Может принимать значения Left (для левой руки) и Right (для правой руки). Для платформ, на которых нет контроллеров (Desktop, NettleDesk, AR), в данной переменной всегда будет передаваться значение Right;
  • ControllerSelf - внутренний класс Varwin, который определяет методы управления контроллером.

Если объект реализует оба типа взаимодействия (IPoiner[Action]InteractionAware и I[Action]InteractionAware), то приоритет будет отдаваться IPointer[Action]InteractionAware.
Например, если объект реализует IPointerDownInteractionAware и IUseStartInteractionAware, то при нажатии на объект будет вызван метод OnPointerDown(UIInteractionContext context) из интерфейса IPointerDownInteractionAware, а метод OnUseStart(UseInteractionContext context) будет проигнорирован.