private void KinectScrollViewerHandPointersUpdated(object sender, EventArgs e)
        {
            var kinectRegion       = (KinectRegion)sender;
            var primaryHandPointer = kinectRegion.HandPointers.FirstOrDefault(hp => hp.IsPrimaryHandOfPrimaryUser);

            if (primaryHandPointer == null)
            {
                return;
            }

            if (primaryHandPointer.HandEventType == HandEventType.Grip)
            {
                if (this.capturedHandPointer == primaryHandPointer)
                {
                    return;
                }

                //Grip ocorre aqui
                this.grippedHandpointer = primaryHandPointer;
                return;
            }

            if (this.grippedHandpointer == primaryHandPointer && primaryHandPointer.HandEventType == HandEventType.GripRelease)
            {
                this.grippedHandpointer = null;
            }
        }
示例#2
0
        /// <summary>
        /// Helper to get how far the thumb needs to move to be at the
        /// hand pointer position.
        /// </summary>
        /// <param name="kinectHandPointer">Hand pointer to check</param>
        /// <returns>How far the thumb control needs to move</returns>
        private Vector GetDragDelta(HandPointer kinectHandPointer)
        {
            var handPointerRelativeToGripEventTarget = kinectHandPointer.GetPosition(this.gripEventTarget);
            var thumbRelativeToGripEventTarget       = this.TranslatePoint(new Point(this.ActualWidth / 2.0, this.ActualHeight / 2.0), this.gripEventTarget);

            return(handPointerRelativeToGripEventTarget - thumbRelativeToGripEventTarget);
        }
示例#3
0
    /// <summary>
    /// Initialise Data for customer.
    /// </summary>
    public void InitiateData()
    {
        customerSizeX = transform.lossyScale.x * 0.275f;
        customerSizeZ = transform.lossyScale.z * 0.275f;
        waitTiming    = Random.Range((waitTiming / 2), waitTiming);
        anim          = GetComponent <Animator>();
        SetAnim(idle, false);
        SetAnim(walking, true);
        leavingState   = LeavingStates.phase1;
        fightPositions = (FightPositions)customerId;
        dodge          = false;
        audio          = GetComponent <AudioSource>();

        var spawnPos = CustomerSpawner.Instance.spawnPoint.position;

        leavingPosition = new Vector3(spawnPos.x + customerSizeX * 0.75f, spawnPos.y, spawnPos.z + customerSizeZ);

        var hands = PauseManager.Instance.GetComponentsInChildren <HandPointer>();

        foreach (var hand in hands)
        {
            if (hand.currentHand == HandPointer.Hands.left)
            {
                playerLHand = hand;
            }
            else if (hand.currentHand == HandPointer.Hands.right)
            {
                playerRHand = hand;
            }
        }

        CalculateDir();
        InitiateColor();
        AllowHover(false);
    }
示例#4
0
 private void OnHandPointerGotCapture(object sender, HandPointerEventArgs e)
 {
     if (capturedHandPointer == null)
     {
         capturedHandPointer = e.HandPointer;
         e.Handled           = true;
     }
 }
示例#5
0
 private void HandPointerLostCaptureEvent(object sender, HandPointerEventArgs e)
 {
     if (capturedHandPointer == e.HandPointer)
     {
         capturedHandPointer = null;
         e.Handled           = true;
     }
 }
 private void OnHandPointerLostCapture(object sender, HandPointerEventArgs handPointerEventArgs)
 {
     if (this.capturedHandPointer == handPointerEventArgs.HandPointer)
     {
         this.capturedHandPointer = null;
         ReleaseGrip();
     }
 }
示例#7
0
 private void OnHandPointerLostCapture(object sender, HandPointerEventArgs kinectHandPointerEventArgs)
 {
     if (this.capturedHandPointer == kinectHandPointerEventArgs.HandPointer)
     {
         this.capturedHandPointer           = null;
         this.lastGripStatus                = GripState.Released;
         kinectHandPointerEventArgs.Handled = true;
     }
 }
示例#8
0
 private void OnHandPointerCaptured(object sender, HandPointerEventArgs kinectHandPointerEventArgs)
 {
     if (this.capturedHandPointer != null)
     {
         this.capturedHandPointer.Capture(null);
     }
     this.capturedHandPointer           = kinectHandPointerEventArgs.HandPointer;
     kinectHandPointerEventArgs.Handled = true;
 }
        private void OnHandPointerLeave(object sender, HandPointerEventArgs e)
        {
            if (this.activeHandpointer != e.HandPointer)
            {
                return;
            }

            this.activeHandpointer = null;
            this.IsHandPointerOver = false;
        }
        private void OnHandPointerEnter(object sender, HandPointerEventArgs e)
        {
            if (!e.HandPointer.IsPrimaryHandOfUser || !e.HandPointer.IsPrimaryUser)
            {
                return;
            }

            this.activeHandpointer = e.HandPointer;
            this.IsHandPointerOver = true;
        }
示例#11
0
        private void OnHandPointerCaptured(object sender, HandPointerEventArgs handPointerEventArgs)
        {
            if (this.capturedHandPointer != null)
            {
                // Release capture on any previous captured handpointer
                this.capturedHandPointer.Capture(null);
            }

            this.capturedHandPointer     = handPointerEventArgs.HandPointer;
            handPointerEventArgs.Handled = true;
        }
示例#12
0
 private void HandPointerPressEvent(object sender, HandPointerEventArgs e)
 {
     if (capturedHandPointer == null && e.HandPointer.IsPrimaryHandOfUser && e.HandPointer.IsPrimaryHandOfUser)
     {
         if (e.HandPointer.GetIsOver(back))
         {
             e.HandPointer.Capture(back);
             capturedHandPointer = e.HandPointer;
             e.Handled           = true;
         }
     }
 }
示例#13
0
 private void OnHandPointerEnter(object sender, HandPointerEventArgs kinectHandPointerEventArgs)
 {
     if (kinectHandPointerEventArgs.HandPointer.IsPrimaryHandOfUser && kinectHandPointerEventArgs.HandPointer.IsPrimaryUser)
     {
         kinectHandPointerEventArgs.Handled = true;
         if (this.grippedHandpointer == kinectHandPointerEventArgs.HandPointer)
         {
             this.HandleHandPointerGrip(kinectHandPointerEventArgs.HandPointer);
             this.grippedHandpointer = null;
         }
     }
 }
示例#14
0
        private void KinectRegion_HandPointersUpdated(object sender, System.EventArgs e)
        {
            HandPointer[] handPointers = new HandPointer[KinectState.Instance.KinectRegion.HandPointers.Count];
            KinectState.Instance.KinectRegion.HandPointers.CopyTo(handPointers, 0);
            long timestampOfLastUpdate = long.MinValue;

            foreach (HandPointer handPointer in handPointers)
            {
                timestampOfLastUpdate = System.Math.Max(handPointer.TimestampOfLastUpdate, timestampOfLastUpdate);
            }

            ThreadPool.QueueUserWorkItem(new WaitCallback(o => HandPointersCallback(timestampOfLastUpdate, handPointers)));
        }
示例#15
0
        private void HandPointerLeaveEvent(object sender, HandPointerEventArgs e)
        {
            if (!e.HandPointer.GetIsOver(back) && e.HandPointer.IsPrimaryHandOfUser)
            {
                VisualStateManager.GoToState(back, "Normal", true);
            }

            if (capturedHandPointer == e.HandPointer)
            {
                capturedHandPointer = null;
                e.Handled           = true;
            }
        }
示例#16
0
            public override void OnHandPointerGripRelease(HandPointer grippedHandpointer, System.Windows.Point startGripPoint, System.Windows.Point endGripPoint)
            {
                System.Windows.Point diffVector = (System.Windows.Point)(endGripPoint - startGripPoint);

                if (Math.Abs(diffVector.X / diffVector.Y) > 2.0)
                {
                    page.performMove(diffVector.X < 0 ? GameManager.Direction.LEFT : GameManager.Direction.RIGHT);
                }
                else if (Math.Abs(diffVector.Y / diffVector.X) > 2.0)
                {
                    page.performMove(diffVector.Y < 0 ? GameManager.Direction.UP : GameManager.Direction.DOWN);
                }
            }
        private void OnHandPointerEnter(object sender, HandPointerEventArgs e)
        {
            if (!e.HandPointer.IsPrimaryHandOfUser || !e.HandPointer.IsPrimaryUser)
            {
                return;
            }

            this.activeHandpointer = e.HandPointer;
            this.IsHandPointerOver = true;
            if (hoverOnly)
            {
                this.repeatTimer.Start();
            }
        }
示例#18
0
        private void HandPointerLeaveEvent(object sender, HandPointerEventArgs e)
        {
            if (!e.HandPointer.GetIsOver(btnCancelLogin) && e.HandPointer.IsPrimaryHandOfUser)
            {
                VisualStateManager.GoToState(btnCancelLogin, "Normal", true);
            }
            if (!e.HandPointer.GetIsOver(btnLogin) && e.HandPointer.IsPrimaryHandOfUser)
            {
                VisualStateManager.GoToState(btnLogin, "Normal", true);
            }
            if (!e.HandPointer.GetIsOver(textBoxUsername) && e.HandPointer.IsPrimaryHandOfUser)
            {
                VisualStateManager.GoToState(textBoxUsername, "Normal", true);
            }
            if (!e.HandPointer.GetIsOver(passwordBox) && e.HandPointer.IsPrimaryHandOfUser)
            {
                VisualStateManager.GoToState(passwordBox, "Normal", true);
            }

            try
            {
                if (!e.HandPointer.GetIsOver((Button)sender) && e.HandPointer.IsPrimaryHandOfUser)
                {
                    VisualStateManager.GoToState((Button)sender, "Normal", true);

                    Button button = (Button)sender;
                    button.RenderTransformOrigin = new Point(0.5, 0.5);
                    ScaleTransform scaleTransform = new ScaleTransform
                    {
                        ScaleX = 1,
                        ScaleY = 1
                    };
                    TransformGroup transformGroup = new TransformGroup();
                    transformGroup.Children.Add(scaleTransform);
                    button.RenderTransform = transformGroup;
                }
            }
            catch (Exception)
            {
            }

            if (capturedHandPointer == e.HandPointer)
            {
                capturedHandPointer = null;
                e.Handled           = true;
            }
        }
示例#19
0
        private void OnHandMove(object source, HandPointerEventArgs args)
        {
            //Double.Parse(this.rowCanvas.Height.Value.ToString())
            HandPointer ptr = args.HandPointer;

            if (this.isGrip)
            {
                Point j1P = kinectRegion.PointToScreen(ptr.GetPosition(kinectRegion));

                if (j1P.X >= this.paint.Margin.Left && j1P.X <= Screen.PrimaryScreen.Bounds.Width && j1P.Y >= this.paint.Margin.Top && j1P.Y <= Screen.PrimaryScreen.Bounds.Height)
                {
                    // ptr.IsInGripInteraction = true;

                    this.paint.Children.Add(this.ctl.paintCanvas(j1P, this.colorSelec.Background));
                }
            }
        }
示例#20
0
        /// <summary>
        /// Lost capture event handler.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="kinectHandPointerEventArgs">The kinect hand pointer event arguments.</param>
        private void OnHandPointerLostCapture(object sender, HandPointerEventArgs kinectHandPointerEventArgs)
        {
            if (this.capturedHandPointer == kinectHandPointerEventArgs.HandPointer)
            {
                this.capturedHandPointer = null;

                this.IsDragging = false;

                var delta = this.GetDragDelta(kinectHandPointerEventArgs.HandPointer);
                var e     = new DragCompletedEventArgs(delta.X, delta.Y, false);
                this.RaiseEvent(e);

                this.ChangeVisualState(true);

                kinectHandPointerEventArgs.Handled = true;
            }
        }
示例#21
0
 private void HandPointerPressEvent(object sender, HandPointerEventArgs e)
 {
     if (capturedHandPointer == null && e.HandPointer.IsPrimaryHandOfUser)
     {
         if (e.HandPointer.GetIsOver(btnCancelLogin))
         {
             e.HandPointer.Capture(btnCancelLogin);
             capturedHandPointer = e.HandPointer;
             e.Handled           = true;
         }
         else if (e.HandPointer.GetIsOver(btnLogin))
         {
             e.HandPointer.Capture(btnLogin);
             capturedHandPointer = e.HandPointer;
             e.Handled           = true;
         }
         else if (e.HandPointer.GetIsOver(textBoxUsername))
         {
             e.HandPointer.Capture(textBoxUsername);
             capturedHandPointer = e.HandPointer;
             e.Handled           = true;
         }
         else if (e.HandPointer.GetIsOver(passwordBox))
         {
             e.HandPointer.Capture(passwordBox);
             capturedHandPointer = e.HandPointer;
             e.Handled           = true;
         }
         else
         {
             try
             {
                 if (e.HandPointer.GetIsOver((Button)sender))
                 {
                     e.HandPointer.Capture((Button)sender);
                     capturedHandPointer = e.HandPointer;
                     e.Handled           = true;
                 }
             }
             catch (Exception)
             {
             }
         }
     }
 }
    //Update Area Colliders
    void UpdateAreaColliders()
    {
        //switch current area collider to a trigger
        if (currentWave > 0)
        {
            BoxCollider areaCollider = EnemyWaves [currentWave - 1].AreaCollider;
            if (areaCollider != null)
            {
                areaCollider.enabled   = true;
                areaCollider.isTrigger = true;
                AreaColliderTrigger act = areaCollider.gameObject.AddComponent <AreaColliderTrigger> ();
                act.EnemyWaveSystem = this;
            }
        }

        //set next collider as camera area restrictor
        if (EnemyWaves[currentWave].AreaCollider != null)
        {
            EnemyWaves[currentWave].AreaCollider.gameObject.SetActive(true);
        }
        //LETHAL FORCES - set back collider as area restrictor
        if (EnemyWaves[currentWave].BackAreaCollider != null)
        {
            EnemyWaves[currentWave].BackAreaCollider.gameObject.SetActive(true);
        }

        CameraFollow cf = GameObject.FindObjectOfType <CameraFollow>();

        if (cf != null)
        {
            cf.CurrentAreaCollider = EnemyWaves [currentWave].AreaCollider;
        }
        if (cf != null)
        {
            cf.CurrentBackCollider = EnemyWaves [currentWave].BackAreaCollider;             //LETHAL FORCES - add backcollider to camera
        }
        //show UI hand pointer
        HandPointer hp = GameObject.FindObjectOfType <HandPointer>();

        if (hp != null)
        {
            hp.ActivateHandPointer();
        }
    }
示例#23
0
    //Start a new enemy wave
    public void StartNewWave()
    {
        //hide UI hand pointer
        HandPointer hp = GameObject.FindObjectOfType <HandPointer>();

        if (hp != null)
        {
            hp.DeActivateHandPointer();
        }

        //activate enemies
        foreach (GameObject g in EnemyWaves[currentWave].EnemyList)
        {
            if (g != null)
            {
                g.SetActive(true);
            }
        }
        Invoke("SetEnemyTactics", .1f);
    }
示例#24
0
        /// <summary>
        /// Capture event handler.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="kinectHandPointerEventArgs">The kinect hand pointer event arguments.</param>
        private void OnHandPointerCaptured(object sender, HandPointerEventArgs kinectHandPointerEventArgs)
        {
            // We should only get a capture if we don't already have a hand pointer captured.
            if (this.capturedHandPointer != null)
            {
                return;
            }

            this.capturedHandPointer = kinectHandPointerEventArgs.HandPointer;
            this.IsDragging          = true;

            var delta = this.GetDragDelta(kinectHandPointerEventArgs.HandPointer);
            var e     = new DragStartedEventArgs(delta.X, delta.Y);

            this.RaiseEvent(e);

            this.ChangeVisualState(true);

            kinectHandPointerEventArgs.Handled = true;
        }
示例#25
0
        private void OnHandPointerLeave(object sender, HandPointerEventArgs e)
        {
            if (!KinectRegion.GetIsPrimaryHandPointerOver(btn_login))
            {
                VisualStateManager.GoToState(btn_login, "Normal", true);
            }
            if (!KinectRegion.GetIsPrimaryHandPointerOver(btn_register))
            {
                VisualStateManager.GoToState(btn_register, "Normal", true);
            }
            if (!KinectRegion.GetIsPrimaryHandPointerOver(btn_singlePlayer))
            {
                VisualStateManager.GoToState(btn_singlePlayer, "Normal", true);
            }
            if (!KinectRegion.GetIsPrimaryHandPointerOver(btn_multiPlayer))
            {
                VisualStateManager.GoToState(btn_multiPlayer, "Normal", true);
            }
            if (!KinectRegion.GetIsPrimaryHandPointerOver(btn_loadGame))
            {
                VisualStateManager.GoToState(btn_loadGame, "Normal", true);
            }
            if (!KinectRegion.GetIsPrimaryHandPointerOver(btn_highScores))
            {
                VisualStateManager.GoToState(btn_highScores, "Normal", true);
            }
            if (!KinectRegion.GetIsPrimaryHandPointerOver(btn_help))
            {
                VisualStateManager.GoToState(btn_help, "Normal", true);
            }
            if (!KinectRegion.GetIsPrimaryHandPointerOver(btn_exit))
            {
                VisualStateManager.GoToState(btn_exit, "Normal", true);
            }

            if (capturedHandPointer == e.HandPointer)
            {
                capturedHandPointer = null;
                e.Handled           = true;
            }
        }
示例#26
0
        private void HandleHandPointerGrip(HandPointer handPointer)
        {
            if (handPointer == null)
            {
                return;
            }

            if (this.capturedHandPointer != handPointer)
            {
                if (handPointer.Captured == null)
                {
                    handPointer.Capture(element);
                }
                else
                {
                    return;
                }
            }

            this.lastGripStatus = GripState.Gripped;
            this.gripPoint      = handPointer.GetPosition(element);
        }
示例#27
0
    /// <summary>
    /// 更新区域碰撞器
    /// </summary>
    void UpdateAreaColliders()
    {
        //将当前区域碰撞器切换到触发器
        if (currentWave > 0)
        {
            BoxCollider areaCollider = EnemyWaves[currentWave - 1].AreaCollider;
            if (areaCollider != null)
            {
                areaCollider.enabled   = true;
                areaCollider.isTrigger = true;
                AreaColliderTrigger act = areaCollider.gameObject.AddComponent <AreaColliderTrigger>();
                act.EnemyWaveSystem = this;
            }
        }

        //将下一个碰撞器设置为相机区域触发器
        if (EnemyWaves[currentWave].AreaCollider != null)
        {
            EnemyWaves[currentWave].AreaCollider.gameObject.SetActive(true);
        }

        CameraFollow cf = GameObject.FindObjectOfType <CameraFollow>();

        if (cf != null)
        {
            cf.CurrentAreaCollider = EnemyWaves[currentWave].AreaCollider;
        }

        //显示UI
        HandPointer hp = GameObject.FindObjectOfType <HandPointer>();

        if (hp != null)
        {
            hp.ActivateHandPointer();
        }
    }
示例#28
0
        private void HandleHandPointerGrip(HandPointer handPointer)
        {
            if (handPointer == null)
            {
                return;
            }

            if (this.capturedHandPointer != handPointer)
            {
                if (handPointer.Captured == null)
                {
                    // Only capture hand pointer if it isn't already captured
                    handPointer.Capture(this);
                }
                else
                {
                    // Some other control has capture, ignore grip
                    return;
                }
            }

            Grip();
            this.gripPoint = handPointer.GetPosition(this);
        }
示例#29
0
 /// <summary>
 /// This implements any special interactions with the hand pointer.
 /// For example, if the hand pointer was to repel or attract this object,
 /// the code to implement that would go here.
 /// </summary>
 /// <param name="pointer"></param>
 public override void InteractWithHandPointer(HandPointer pointer)
 {
     /* Also no interactions with a hand pointer. We'll handle the
      * button press separately. */
 }
示例#30
0
 /// <summary>
 /// This implements any special interactions with the hand pointer.
 /// For example, if the hand pointer was to repel or attract this object,
 /// the code to implement that would go here.
 /// </summary>
 /// <param name="pointer"></param>
 public override void InteractWithHandPointer(HandPointer pointer)
 {
     /* For now, we won't have the hand pointer do anything cool, so we'll
      * leave this blank. */
 }