/// <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);
        }
示例#3
0
    /// <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);
     }
 }