/// <summary> /// Adds the interactor to the given snapshot. /// </summary> /// <param name="snapshot">Interaction snapshot.</param> public void AddToSnapshot(InteractionSnapshot snapshot) { var interactor = snapshot.CreateInteractor(_id, Literals.RootId, Literals.GlobalInteractorWindowId); interactor.CreateBounds(InteractionBoundsType.None); if (_behaviorCallback != null) { _behaviorCallback(_id, interactor); } if (IsMarkedForDeletion) { interactor.IsDeleted = true; } }
private void InitializeGlobalInteractorSnapshot() { globalInteractorSnapshot = context.CreateSnapshot(); globalInteractorSnapshot.CreateBounds(InteractionBoundsType.None); globalInteractorSnapshot.AddWindowId(Literals.GlobalInteractorWindowId); var interactor = globalInteractorSnapshot.CreateInteractor(InteractorId, Literals.RootId, Literals.GlobalInteractorWindowId); interactor.CreateBounds(InteractionBoundsType.None); var behavior = interactor.CreateBehavior(InteractionBehaviorType.GazePointData); var behaviorParams = new GazePointDataParams() { GazePointDataMode = GazePointDataMode.LightlyFiltered }; behavior.SetGazePointDataOptions(ref behaviorParams); }
/// <summary> /// Adds the interactor to the given snapshot. /// </summary> /// <param name="snapshot">Interaction snapshot.</param> /// <param name="windowId">ID of the game window.</param> /// <param name="gameWindowPosition">Position of the game window in screen coordinates.</param> public void AddToSnapshot(InteractionSnapshot snapshot, string windowId, Vector2 gameWindowPosition) { var interactor = snapshot.CreateInteractor(_id, _parentId, windowId); var bounds = interactor.CreateBounds(InteractionBoundsType.Rectangular); bounds.SetRectangularData(Location.rect.x + gameWindowPosition.x, Location.rect.y + gameWindowPosition.y, Location.rect.width, Location.rect.height); interactor.Z = Location.relativeZ; if (Mask != null && Mask.Type != EyeXMaskType.None) { interactor.CreateMask(MaskType.Default, Mask.Size, Mask.Size, Mask.MaskData); } if ((_behaviors & EyeXBehaviors.Activatable) != 0) { var behaviorParams = new ActivatableParams { EnableTentativeFocus = EyeXBoolean.False }; interactor.SetActivatableBehavior(ref behaviorParams); } if ((_behaviors & EyeXBehaviors.ActivatableWithTentativeFocus) != 0) { var behaviorParams = new ActivatableParams { EnableTentativeFocus = EyeXBoolean.True }; interactor.SetActivatableBehavior(ref behaviorParams); } if ((_behaviors & EyeXBehaviors.GazeAware) != 0) { interactor.CreateBehavior(InteractionBehaviorType.GazeAware); } if ((_behaviors & EyeXBehaviors.GazeAwareWithInertia) != 0) { var gazeAwareParams = new GazeAwareParams() { GazeAwareMode = GazeAwareMode.Delayed, DelayTime = 500 }; interactor.SetGazeAwareBehavior(ref gazeAwareParams); } if (_behaviorCallback != null) { _behaviorCallback(_id, interactor); } }
private void CreateGazeAwareInteractor(InteractorId id, Control control, string parentId, string windowId, InteractionSnapshot snapshot, System.Windows.Rect queryBoundsRect) { var controlRect = control.RenderTransform.TransformBounds(new System.Windows.Rect(control.RenderSize)); if (controlRect.IntersectsWith(queryBoundsRect)) { var interactor = snapshot.CreateInteractor(id, parentId, windowId); var bounds = interactor.CreateBounds(InteractionBoundsType.Rectangular); bounds.SetRectangularData(controlRect.Left, controlRect.Top, controlRect.Width, controlRect.Height); interactor.CreateBehavior(InteractionBehaviorType.GazeAware); } }