public void OnStateChanged(FingerState state)
        {
            switch (state)
            {
            case FingerState.Default:
                renderer.material.color = _oldMAttColor;
                break;

            case FingerState.Fire:
                renderer.material = FireSatetMaterial;
                if (IsDown)
                {
                    Mother.ScoreDown(10);
                }
                else
                {
                    Mother.ScoreUp(10);
                }
                AfterOnFire();
                break;

            case FingerState.Ice:
                renderer.material = IceStateMaterial;

                AfterOnIce();
                break;
            }
        }
Example #2
0
    void FixedUpdate()
    {
        if (previousFingerState != currentFingerState)
        {
            if (currentFingerState != FingerState.None)
            {
                touchAnim.Play(touchAnimations[0]);                     //play the begin animation
            }
            else if (currentFingerState == FingerState.None)
            {
                touchAnim.Play(touchAnimations[2]);                     //play end animation
            }
        }

        float centerx = 0.5f;
        float centery = 0.5f;

        float xdiffCur = centerx - prevTouchPos.x;
        float ydiffCur = centery - prevTouchPos.y;
        float xdiffOld = centerx - transform.position.x;
        float ydiffOld = centery - transform.position.y;

        float angleOld = ToDegrees(Mathf.Atan2(ydiffOld, xdiffOld));
        float angleCur = ToDegrees(Mathf.Atan2(ydiffCur, xdiffCur));

        touchAnim.transform.Rotate(touchAnim.transform.forward, (angleOld - angleCur));
        prevTouchPos.x = transform.position.x;
        prevTouchPos.y = transform.position.y;

        previousFingerState = currentFingerState;

        UpdatePlayerMovementsAndFeelings();
        UpdatePlayerGestures();
    }
Example #3
0
    private void Control_WIN()
    {
        if (fstate == FingerState.Idle && Input.GetMouseButtonDown(0))
        {
            if (fingerPos.y <= 0)
            {
                Debug.Log("Invalid finger start point");
                fstate = FingerState.Idle;
                return;
            }
            if (!UnityEngine.EventSystems.EventSystem.current.IsPointerOverGameObject())
            {
                CutStart();
            }
        }

        if (fstate == FingerState.Drawing && Input.GetMouseButtonUp(0))
        {
            CutFinish();
        }

        if (fstate == FingerState.Drawing && Input.GetMouseButton(0))
        {
            CutPlanning();
        }
    }
Example #4
0
            double evaluateFingerObstacleCost(FingerState state, float minPreparation, NoteChord obsNote, float startPosition, int startHeight, int pitch)
            {
                float  deltaX   = startPosition - Piano.KeyPositions[pitch];
                float  deltaY   = startHeight - Piano.getKeyHeight(pitch);
                double distance = Math.Min(Math.Sqrt(deltaX * deltaX + deltaY * deltaY), 5) + 1;

                float prepareTime = startTime - minPreparation;

                float importance = NotationUtils.getNoteImportanceInChord(obsNote, state.Pitch);

                debug += string.Format("O{0},{1},{2},{3};", state.Pitch, prepareTime, state.Release, state.Press);

                if (prepareTime >= state.Release)
                {
                    double coeff = CostCoeff.FINGER_MOVE_SPEED_PUNISH * Math.Pow(0.1, (startTime - state.Release) / minPreparation);
                    return(coeff * distance);
                }
                else if (prepareTime >= state.Press)
                {
                    double speedCost  = CostCoeff.FINGER_MOVE_SPEED_PUNISH * distance;
                    double cutoffCost = CostCoeff.NOTE_CUTOFF_PUNISH * importance * (state.Release - prepareTime) / (state.Release - state.Press);

                    return(speedCost + cutoffCost);
                }
                else
                {
                    return(CostCoeff.OMIT_KEY_PUNISH * importance);
                }
            }
Example #5
0
 public void SolveFingerState()
 {
     foreach (var hitOb in HitObjects)
     {
         FingerState |= hitOb.FingerState;
     }
 }
Example #6
0
    // Update is called once per frame
    void FixedUpdate()
    {
        switch (fingerAction)
        {
        case FingerState.none:
            fingerAction = FingerState.Idel;
            break;

        case FingerState.Idel:
            DoIdel();
            break;

        case FingerState.First:
            DoFirstAtk();
            break;
        }

        if (!doingSomething)
        {
            fingerAction = FingerState.Idel;
        }
        else
        {
            if (!firstAtk)
            {
                fingerAction = FingerState.First;
            }
        }
    }
Example #7
0
 private void CutStart()
 {
     start = fingerPos;
     //lr.SetPosition(0, start);
     vl.StartPos = start;
     fstate      = FingerState.Drawing;
 }
        public void OnStateChanging(FingerState state)
        {
            switch (state)
            {
            case FingerState.Default:

                break;

            case FingerState.GoOnFire:
                //GoOnFire();
                break;

            case FingerState.Fire:
                //GoOnFire();
                break;

            case FingerState.Ice:
                //GoOnIce();
                break;

            case FingerState.GoOnIce:
                //GoOnIce();
                break;
            }
        }
Example #9
0
    private void CutFinish()
    {
        fstate = FingerState.Idle;
        SliceResult pass = CutCollisionCheck();

        StartCoroutine(CutDeliverProcess(pass));
    }
    void Update()
    {
        // Change behavioral state based on how close the point of interest is
        float detectionRange = _fingerLength * 3f;
        float proximity      = Vector3.Distance(_root.position, _objectOfInterest.transform.position);

        if (proximity < detectionRange)
        {
            _state = FingerState.Observing;
        }
        else
        {
            _state = FingerState.Idle;
        }

        // Run the behaviour for the current state
        switch (_state)
        {
        case FingerState.Idle:
            Idle();
            break;

        case FingerState.Observing:
            Observe();
            break;
        }
    }
        public override void Update(GameTime gameTime)
        {
            // Allows the game to exit

            /*  if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
             *    this.Exit();*/

            // TODO: Add your update logic here
            mouseKey        = Mouse.GetState();
            mouselocation.X = mouseKey.X;
            mouselocation.Y = mouseKey.Y;

            buttonengine.Update(gameTime);


            buttonengine.ReceiveFrom_ButtonObject(buttonobject.gogobuttonrect);
            buttonobject.ReceiveFrom_ButtonEngine(buttonengine.SendTo_ButtonObject());

            //collisions to make sure that the options change you must make sure you use the collision of the least moving object no matter what no matter what the situation
            if (choicerockrect.Intersects(leapcollision))
            {
                fingerstate = FingerState.rock;
            }
            else if (paperrect.Intersects(leapcollision))
            {
                fingerstate = FingerState.paper;
            }

            else if (scissorsrect.Intersects(leapcollision))
            {
                fingerstate = FingerState.scissors;
            }

            // seperate if state ment declaration for winning or losing the game

            if (middlerockrect.Intersects(leapcollision) && (FingerState.paper == fingerstate))
            {
                endmessagenumber  = 1;
                isHit             = true;
                gogochangecount  += 1;
                winningbackground = WinningBackground.paperwins;
            }

            if (middlerockrect.Intersects(leapcollision) && (FingerState.scissors == fingerstate))
            {
                endmessagenumber  = 2;
                isHit             = true;
                gogochangecount  += 1;
                winningbackground = WinningBackground.rockwins;
            }

            if (middlerockrect.Intersects(leapcollision) && (FingerState.rock == fingerstate))
            {
                endmessagenumber  = 3;
                isHit             = true;
                gogochangecount  += 1;
                winningbackground = WinningBackground.rockwins;
            }
        }
Example #12
0
 private void Awake()
 {
     //lr = GetComponent<LineRenderer>();
     vl = GetComponent <VolumetricLineBehavior>();
     ResetLineToInitState();
     fstate       = FingerState.Idle;
     segmentTrack = new List <Segment>();
 }
Example #13
0
        private IEnumerator BackToDefault(float delay)
        {
            OnStateChanging(FingerState.Default);
            yield return(new WaitForSeconds(delay));

            _state = FingerState.Default;
            OnStateChanged(FingerState.Default);
        }
Example #14
0
    public void OnPlayerFingerDown(int finger, Vector2 pos)
    {
        PlayOneShotAudio(currentPlaySndIdx);
        if (++currentPlaySndIdx > 2)
        {
            currentPlaySndIdx = 0;
        }



        currentMousePoints.Add(pos);
        currentMovements.CalculateMovementBounds(pos);
        currentMovements.CalculateCurrentQuadrant(this, pos, currentMousePoints);

        transform.position = Camera.main.ScreenToWorldPoint(new Vector3(pos.x, pos.y, zOffset));
        GameObject.Instantiate(RippleObjectPrefab, transform.position, Quaternion.identity);

        mouseIsMovingWhileDown = true;

        currentMovements.NumTouchDowns         += 1;
        currentMovements.TimeSinceLastTouchDown = 0.0f;

        //game-mode: tapping in same spot calling out plankton
        if (currentFingerState != (FingerState)finger)
        {
            Vector2 v2D = transform.position;

            currentFingerState = (FingerState)finger;
            if (currentFingerState == FingerState.Single)
            {
                //current semi-hack to place pinched-prefab object. must also be handled in the OnPinchEnd()
                if (PinchCreateObjectPrefab != null)
                {
                    //Network.Instantiate(PinchCreateObjectPrefab, v2D, Quaternion.identity, 0);
                }

                Vector2 diff = lastMouseDownPos - pos;

                if (diff.magnitude < 30.0f)
                {
                    if (++numberOfTapsInSameSpot > 1)
                    {
                        //if(UnityEngine.Random.Range (0, 100) > 25.0f)
                        fluidField.IncreaseSpiritParticles(1, isPlayer1 ? 0 : 1);
                        numberOfTapsInSameSpot = 0;
                    }
                }
                //else
                {
                    //	numberOfTapsInSameSpot = 0;
                }

                //DebugStreamer.message = "numberOfTapsInSameSpot: " + numberOfTapsInSameSpot.ToString();
            }
        }

        lastMouseDownPos = pos;
    }
Example #15
0
        public void ConsumeMove(FingerState fingerState)
        {
            var eligibleControls = GetControlsAtPoint(fingerState.DevicePosition);

            foreach (var control in eligibleControls)
            {
                control.OnMove(fingerState);
            }
        }
    public AngleBasedHandModel createRandomProcedural()
    {
        AngleBasedHandModel result = new AngleBasedHandModel();

        FingerState[] fingers = new FingerState[result.fingers.Length];
        for (int i = 0; i < fingers.Length; i++)
        {
            fingers [i] = (FingerState)Random.Range(0, System.Enum.GetNames(typeof(FingerState)).Length);
        }
        //abduction
        float random = Mathf.Pow(Random.value, 2.0f);

        float[] abductions = { random *abduct_index, 0, random *abduct_ring, random *abduct_pinky };
        for (int i = 0; i < result.fingers.Length; i++)
        {
            float xmcp = 0;
            if (fingers [i] == FingerState.ForwardFist || fingers [i] == FingerState.Flat)
            {
                xmcp = 0;
            }
            if (fingers [i] == FingerState.Fist)
            {
                xmcp = XMCP_max;
            }
            if (fingers [i] == FingerState.HyperExtended)
            {
                xmcp = XMCP_min;
            }

            result.fingers [i].mcp = Quaternion.Euler(xmcp, abductions[i], 0);

            AngleBasedFingerModel finger = result.fingers[i];
            if (fingers [i] == FingerState.HyperExtended || fingers [i] == FingerState.Flat)
            {
                finger.jointAngles [(int)AngleBasedFingerModel.Fingerjoints.DIP] = DIP_min;
                finger.jointAngles [(int)AngleBasedFingerModel.Fingerjoints.PIP] = PIP_min;
            }
            if (fingers [i] == FingerState.Fist || fingers [i] == FingerState.ForwardFist)
            {
                finger.jointAngles [(int)AngleBasedFingerModel.Fingerjoints.DIP] = DIP_max;
                finger.jointAngles [(int)AngleBasedFingerModel.Fingerjoints.PIP] = PIP_max;
            }
        }

        ThumbState thumb = (ThumbState)Random.Range(0, System.Enum.GetNames(typeof(ThumbState)).Length);

        result.thumb = PostureDataHandler.instance.getRand().hand.thumb;

        result.rotation = Quaternion.identity;
        result.position = Vector3.zero;

        result = AngleBasedHandModel.Lerp(result, PostureDataHandler.instance.getRand(TrainingUnit.Posture.idle).hand, 0.2f);

        return(result);
    }
Example #17
0
    public void OnPlayerFingerMove(int finger, Vector2 pos)
    {
        currentMovements.TimeSinceLastMouseMove = 0.0f;
        currentMovements.CalculateMovementBounds(pos);
        currentMovements.CalculateCurrentQuadrant(this, pos, currentMousePoints);

        int currentMousePointCount = currentMousePoints.Count;

        if (currentMousePointCount > 1)
        {
            Vector2 prev = (Vector2)currentMousePoints[currentMousePointCount - 1];
            Vector2 diff = new Vector2(prev.x - pos.x, prev.y - pos.y);

            Vector2 world1 = Camera.main.ScreenToViewportPoint(pos);
            Vector2 world2 = Camera.main.ScreenToViewportPoint(prev);
            float   deltaX = Mathf.Abs(world2.x - world1.x);
            float   deltaY = Mathf.Abs(world2.y - world1.y);

            float degsCur = ToDegrees(Mathf.Atan2(deltaY, deltaX));
            currentMovements.TotalAngleChanges += Mathf.Abs(degsCur);
            currentMovements.DistanceTraveled  += Mathf.Sqrt((deltaX * deltaX) + (deltaY * deltaY));
        }

        /*
         * //go thru lines and find intersects
         * currentMousePointCount -= 5;
         * currentMovements.LineIntersects = 0;
         * int startJ = 2;
         * for(int i = 1; i < currentMousePointCount; i += 5)
         * {
         *      Vector2 x1 = (Vector2)currentMousePoints[i-1];
         *      Vector2 x2 = (Vector2)currentMousePoints[i+3];
         *
         *      for(int j = startJ; j < currentMousePointCount; j += 5)
         *      {
         *              Vector2 y1 = (Vector2)currentMousePoints[j-1];
         *              Vector2 y2 = (Vector2)currentMousePoints[j+3];
         *
         *              if(LinesIntersect(x1, x2, y1, y2))
         *                      currentMovements.LineIntersects += 1;
         *      }
         *
         *      startJ+=2;
         * }
         */


        if (currentMousePoints.Count > 60)
        {
            currentMousePoints.RemoveAt(0);
        }
        currentMousePoints.Add(pos);
        transform.position = Camera.main.ScreenToWorldPoint(new Vector3(pos.x, pos.y, zOffset));
        currentFingerState = (FingerState)finger;
    }
Example #18
0
    public void OnPlayerFingerUp(int finger, Vector2 pos, float timeHeldDown)
    {
        mouseIsMovingWhileDown = false;
        currentFingerState     = FingerState.None;
        previousMangle         = 0;
        currentMousePoints.Clear();

        if (currentMovements.ResetHitQuadrants())
        {
            fluidField.ChangeColors();
            //change the level colah!
        }
    }
Example #19
0
    void ChangeStateAni(FingerState state)
    {
        switch (state)
        {
        case FingerState.Idel:
            skinIdle.SetActive(true);
            skinAtkDown.SetActive(false);
            break;

        case FingerState.Atk:
            skinIdle.SetActive(false);
            skinAtkDown.SetActive(true);
            break;
        }
    }
Example #20
0
    public bool enableHoldNote = false; // Finger must tuch the screen before activating a hold note (as opposed to dragging from a different section of the screen)

    public Finger(int FingerID)
    {
        this.FingerID = FingerID;
        fingerState   = FingerState.TAP;
        player        = GameObject.FindGameObjectWithTag("Player").GetComponent <Player>();

        // Set Position Based on Dev Environment
#if UNITY_EDITOR
        this.initialPosition = Input.mousePosition;
#elif UNITY_ANDROID
        this.initialPosition = Input.GetTouch(this.FingerID).position;
#endif
        // Initial Finger Tap
        FingerTap();
    }
Example #21
0
    void ChangeStateAni(FingerState state)
    {
        switch (state)
        {
        case FingerState.Idel:
            skinIdle.SetActive(true);
            skinAtkTop.SetActive(false);
            skinAtkDown.SetActive(false);
            break;

        case FingerState.Atk:
            if (firstAtk)
            {
                skinIdle.SetActive(false);
                skinAtkTop.SetActive(false);
                skinAtkDown.SetActive(true);
            }
            else
            {
                skinIdle.SetActive(false);
                skinAtkTop.SetActive(true);
                skinAtkDown.SetActive(false);
            }
            break;

        case FingerState.Doing:
            if (firstAtk)
            {
                skinIdle.SetActive(false);
                skinAtkTop.SetActive(false);
                skinAtkDown.SetActive(true);
            }
            else
            {
                skinIdle.SetActive(false);
                skinAtkTop.SetActive(true);
                skinAtkDown.SetActive(false);
            }
            break;

        case FingerState.Death:
            skinIdle.SetActive(false);
            skinAtkTop.SetActive(false);
            skinAtkDown.SetActive(true);
            break;
        }
    }
Example #22
0
    void OnSerializeNetworkView(BitStream stream, NetworkMessageInfo info)
    {
        int     mouseState = (int)currentFingerState;
        Vector3 pos        = transform.position;

        if (stream.isWriting)
        {
            stream.Serialize(ref pos);
            stream.Serialize(ref mouseState);
        }
        else if (stream.isReading)
        {
            stream.Serialize(ref pos);
            stream.Serialize(ref mouseState);
        }

        currentFingerState = (FingerState)mouseState;
        transform.position = pos;
    }
Example #23
0
    // Returns a cancellation request to the Update Finger function
    public bool UpdateFingerState()
    {
        // Tap -> Hold
        if (fingerState == FingerState.TAP || fingerState == FingerState.TRANSITION || fingerState == FingerState.RESET)
        {
            fingerState = FingerState.HOLD;
            return(true);
        }

        // Check Hold -> Transition
#if UNITY_EDITOR
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
#elif UNITY_ANDROID
        Ray ray = Camera.main.ScreenPointToRay(Input.GetTouch(FingerID).position);
#endif
        RaycastHit hit;

        NotePath np = null;

        if (Physics.Raycast(ray, out hit, 100f, player.layermask))
        {
            if (hit.collider.tag == "NotePath")
            {
                np         = hit.collider.gameObject.GetComponent <NotePath>();
                notePathID = np.NotePathID;
                // Debug.Log("Android Debug: Currently Holding on Note Path: " + hitObjects[i].collider.gameObject.GetComponent<NotePath>() + ", previous Note Path was :);
            }
        }

        if (np = null)
        {
            return(true);
        }

        if (previousNotePathID != notePathID)
        {
            fingerState = FingerState.TRANSITION;
            return(false);
        }

        return(false);
    }
Example #24
0
        private IEnumerator StateChanger(FingerState newState, float delay)
        {
            OnStateChanging(newState);
            _state = newState;

            yield return(new WaitForSeconds(delay));

            switch (newState)
            {
            case FingerState.GoOnFire:
                _state = FingerState.Fire;
                OnStateChanged(_state);
                break;

            case FingerState.GoOnIce:
                _state = FingerState.Ice;
                OnStateChanged(_state);
                break;
            }
        }
    public void PlayState(FingerState state)
    {
        switch (state)
        {
        case FingerState.Press:
            fingerAnimator.Play("BedroomTutFingerPress");
            break;

        case FingerState.DelayPress:
            fingerAnimator.Play("BedroomTutFingerNone");
            StartCoroutine(DelayPressHelper());
            break;

        case FingerState.Hold:
            fingerAnimator.Play("BedroomTutFingerHold");
            break;

        case FingerState.FireCrystalDrag:
            fingerAnimator.Play("BedroomTutFingerFireCrystal");
            break;
        }
    }
Example #26
0
    private void FingerTap()
    {
        Ray ray = Camera.main.ScreenPointToRay(this.initialPosition);

        Debug.Log("Init Position: " + initialPosition);
        RaycastHit hit;

        if (Physics.Raycast(ray, out hit, 100f, player.layermask))
        {
            // If we hit a Notepath...
            if (hit.collider.tag == "NotePath")
            {
                NotePath hitPath = hit.collider.gameObject.GetComponent <NotePath>();
                notePathID         = hitPath.NotePathID;
                previousNotePathID = notePathID;
                NoteType noteType = hitPath.CheckIfValidHit();

                if (noteType != NoteType.NULL)
                {
                    ActiveNote = hitPath.ActiveNotes[0];
                }

                hitPath.Tapped();

                player.hitNotePathWithFinger = true;
            }

            // Edit this code to match what we want for new drag notes.
            else if (hit.collider.tag == "Hitbar")
            {
                // To be replaced with setting finger position to the hitbar.
                // slider = player.Slider.GetComponent<Slider>();
                // slider.SetSliderRelativeToFinger(FingerID, hit.point);
                fingerState = FingerState.SLIDE;
            }
        }
    }
        private FingerState CreateFinger(FingerStatus status)
        {
            var mouse     = _window.MouseState;
            var mouseLast = _window.LastMouseState;

            var x = mouse.X / _window.Size.X;
            var y = mouse.Y / _window.Size.Y;

            var devX = x * EmulatedDevices.Display.VisibleWidth;
            var devY = y * EmulatedDevices.Display.VisibleHeight;

            var rawX = x * Width;
            var rawY = y * Height;

            var xLast = mouseLast.X / _window.Size.X;
            var yLast = mouseLast.Y / _window.Size.Y;

            var devXLast = xLast * EmulatedDevices.Display.VisibleWidth;
            var devYLast = yLast * EmulatedDevices.Display.VisibleHeight;

            var rawXLast = xLast * Width;
            var rawYLast = yLast * Height;

            var finger = new FingerState
            {
                Status                 = status,
                Id                     = _trackingId,
                DevicePosition         = new Point((int)devX, (int)devY),
                RawPosition            = new Point((int)rawX, (int)rawY),
                PreviousDevicePosition = new Point((int)devXLast, (int)devYLast),
                PreviousRawPosition    = new Point((int)rawXLast, (int)rawYLast),
                Pressure               = 128,
                PreviousPressure       = 128
            };

            return(finger);
        }
Example #28
0
 public Finger(int id, Point3D position, FingerState fingerState)
 {
     this.id = id;
     this.Position = position;
     this.FingerState = FingerState;
 }
Example #29
0
        //-------------------------------------------------
        void Update()
        {
            // check finger state
            foreach (RiggedHand h in hands)
            {
                Leap.Hand leapHand = h.GetLeapHand();
                if (leapHand == null)
                {
                    continue;
                }
                Leap.Finger index = leapHand.GetIndex();
                Leap.Finger thumb = leapHand.GetThumb();
                if (index.TipPosition.DistanceTo(thumb.TipPosition) < 0.03)
                {
                    if (fingerState == FingerState.PRESSED)
                    {
                        fingerState = FingerState.DOWN;
                    }
                    else if (fingerState != FingerState.DOWN)
                    {
                        fingerState = FingerState.PRESSED;
                    }
                }
                else
                {
                    if (fingerState == FingerState.RELEASED)
                    {
                        fingerState = FingerState.NONE;
                    }
                    else if (fingerState != FingerState.NONE)
                    {
                        fingerState = FingerState.RELEASED;
                    }
                }
            }

            //
            Hand oldPointerHand = pointerHand;
            Hand newPointerHand = null;

            foreach (Hand hand in player.hands)
            {
                if (visible)
                {
                    if (WasTeleportButtonReleased(hand))
                    {
                        if (pointerHand == hand)                           //This is the pointer hand
                        {
                            TryTeleportPlayer();
                        }
                    }
                }

                if (WasTeleportButtonPressed(hand))
                {
                    newPointerHand = hand;
                }
            }

            //If something is attached to the hand that is preventing teleport
            if (allowTeleportWhileAttached && !allowTeleportWhileAttached.teleportAllowed)
            {
                HidePointer();
            }
            else
            {
                if (!visible && newPointerHand != null)
                {
                    //Begin showing the pointer
                    ShowPointer(newPointerHand, oldPointerHand);
                }
                else if (visible)
                {
                    if (newPointerHand == null && !IsTeleportButtonDown(pointerHand))
                    {
                        //Hide the pointer
                        HidePointer();
                    }
                    else if (newPointerHand != null)
                    {
                        //Move the pointer to a new hand
                        ShowPointer(newPointerHand, oldPointerHand);
                    }
                }
            }

            if (visible)
            {
                UpdatePointer();

                if (meshFading)
                {
                    UpdateTeleportColors();
                }

                if (onActivateObjectTransform.gameObject.activeSelf && Time.time - pointerShowStartTime > activateObjectTime)
                {
                    onActivateObjectTransform.gameObject.SetActive(false);
                }
            }
            else
            {
                if (onDeactivateObjectTransform.gameObject.activeSelf && Time.time - pointerHideStartTime > deactivateObjectTime)
                {
                    onDeactivateObjectTransform.gameObject.SetActive(false);
                }
            }
        }
Example #30
0
 public Finger(int id, FloatPoint3D positionInRealWorld, IntPoint3D positionInKinectPersp, FingerType fingerType, FingerState fingerState)
 {
     this.id = id;
     this.positionInKinectProj = positionInKinectPersp;
     this.positionInRealWorld = positionInRealWorld;
     this.fingerType = fingerType;
     this.fingerState = fingerState;
 }
Example #31
0
 public FingerEventArgs(int id, Point3D position, FingerState fingerState, FingerTracker fingerTracker)
 {
     this.fingerTracker = fingerTracker;
     finger = new Finger(id, position, fingerState);
 }
    void Update()
    {
        //Debug.Log(fstate);
        if (GameControl.Input.TouchCount > 1)
        {
            return;
        }
        if (GameControl.Input.IsClickDown)
        {
            oldPostion = GameControl.Input.MousePosition;
            m_isDown   = true;

            isMoving          = false;
            isLone            = false;
            TouchUpInvertTime = 0f;
            ShowFingerClick(oldPostion);
        }

        if (GameControl.Input.IsClickUp)
        {
            if (isMoveJointTwo)
            {
                CloseFingerClick();
            }
            m_isDown   = false;
            isAttack   = false;
            isSkilling = false;
            fstate     = FingerState.NONE;
            newPostion = GameControl.Input.MousePosition;
            //invertTime = 0f;
        }
        if (m_isDown)
        {
            invertTime += Time.deltaTime;
            newPostion  = GameControl.Input.MousePosition;
            touchLight.SetActive(true);
            touchLight.transform.position = uiCamera.ScreenToWorldPoint(newPostion);
            if (invertTime > battleClickBoundingTime)//当按下的时间大于连击阈值的时候
            {
                if (!isLone && Vector3.Distance(oldPostion, newPostion) > longPressSkillBoundingLength && !isSkilling)
                {
                    if (Vector3.Distance(oldPostion, newPostion) > walkBoundingLength)
                    {
                        fstate = FingerState.MOVE_CONTINUR_RUN;
                    }
                    else if (Vector3.Distance(oldPostion, newPostion) <= walkBoundingLength && Vector3.Distance(oldPostion, newPostion) > 30f && !isAttack && !isSkilling)
                    {
                        fstate = FingerState.MOVE_CONTINUE_WALK;
                    }
                    isMoving = true;
                }
                else if (Vector3.Distance(oldPostion, newPostion) <= longPressSkillBoundingLength && !isMoving && !isAttack && !isSkilling)
                {
                    if (invertTime >= longPressSkillBoundingTime)
                    {
                        fstate = FingerState.LONG;
                        isLone = true;
                    }
                }
            }
            if (isLone && Vector3.Distance(oldPostion, newPostion) > longPressSkillWalkBoundingLengh && !isAttack && !isSkilling)
            {
                fstate = FingerState.LONGWALK;
            }
            else if (fstate == FingerState.LONGWALK && Vector3.Distance(oldPostion, newPostion) < longPressSkillBoundingLength && !isSkilling)
            {
                fstate = FingerState.LONG;
            }
        }
        else
        {
            TouchUpInvertTime += Time.deltaTime;
            if (TouchUpInvertTime >= 0.3f)
            {
                CloseDuaationEffect();
            }
        }


        if (GameControl.Input.IsClickUp)
        {
            if (invertTime < battleClickBoundingTime && Vector3.Distance(oldPostion, newPostion) < battleClickBoundingLength && !isSkilling)
            {
                fstate = FingerState.CLICK;
                ShowDuarrationAttack(oldPostion);//展示手势攻击特效
                isAttack = true;
            }
            if (isReadySkill)
            {
                ChoiceSkill(oldPostion, newPostion);
            }
            invertTime   = 0f;
            isReadySkill = false;
        }
    }
    void FixedUpdate()
    {
        switch (fstate)
        {
        case FingerState.NONE:
            break;

        case FingerState.CLICK:
            Debug.Log("鼠标点击=====>>>攻击状态");

            break;

        case FingerState.LONG:
            Debug.Log("鼠标长按=====>>>提示释放技能状态");
            isReadySkill = true;
            //testOne.SetActive(true);
            //testTwo.SetActive(true);
            //testOne.transform.position = uiCamera.ScreenToWorldPoint(oldPostion);
            //testTwo.transform.position = uiCamera.ScreenToWorldPoint(oldPostion);
            Vector2 pos;
            if (RectTransformUtility.ScreenPointToLocalPointInRectangle(canvas.transform as RectTransform, oldPostion, uiCamera, out pos))
            {
                Debug.Log("pos==================" + pos);
                //testOne.transform.position = pos;
            }

            break;

        case FingerState.LONGWALK:
            PosFingerEffect();
            GetAngleByMouseTouch(newPostion, oldPostion);
            Debug.Log("长按技能行走状态");
            isReadySkill = true;

            break;

        case FingerState.MOVE_CONTINUE_WALK:
            PosFingerEffect();
            GetAngleByMouseTouch(newPostion, oldPostion);
            Debug.Log("人物正在行走");
            //testObj.transform.Translate (0,0.5f,0);
            break;

        case FingerState.MOVE_CONTINUR_RUN:
            PosFingerEffect();
            GetAngleByMouseTouch(newPostion, oldPostion);
            Debug.Log("人物正在奔跑");
            //testObj.transform.Translate (0,1f,0);
            break;

        default:
            isMoving = false;

            break;
        }
        if (fstate == FingerState.CLICK)
        {
            fstate   = FingerState.NONE;
            isAttack = false;
        }
    }
Example #34
0
    void OnSerializeNetworkView(BitStream stream, NetworkMessageInfo info)
    {
        int mouseState = (int)currentFingerState;
        Vector3 pos = transform.position;

        if(stream.isWriting)
        {
            stream.Serialize(ref pos);
            stream.Serialize(ref mouseState);
        }
        else if(stream.isReading)
        {
            stream.Serialize(ref pos);
            stream.Serialize(ref mouseState);
        }

        currentFingerState = (FingerState)mouseState;
        transform.position = pos;
    }
Example #35
0
    void FixedUpdate()
    {
        if(previousFingerState != currentFingerState)
        {
            if(currentFingerState != FingerState.None)
                touchAnim.Play(touchAnimations[0]);	//play the begin animation
            else if(currentFingerState == FingerState.None)
                touchAnim.Play(touchAnimations[2]);	//play end animation
        }

        float centerx = 0.5f;
        float centery = 0.5f;

        float xdiffCur = centerx - prevTouchPos.x;
        float ydiffCur = centery - prevTouchPos.y;
        float xdiffOld = centerx - transform.position.x;
        float ydiffOld = centery - transform.position.y;

        float angleOld = ToDegrees(Mathf.Atan2(ydiffOld, xdiffOld));
        float angleCur = ToDegrees(Mathf.Atan2(ydiffCur, xdiffCur));

        touchAnim.transform.Rotate(touchAnim.transform.forward, (angleOld-angleCur));
        prevTouchPos.x = transform.position.x;
        prevTouchPos.y = transform.position.y;

        previousFingerState = currentFingerState;

        UpdatePlayerMovementsAndFeelings();
        UpdatePlayerGestures();
    }
Example #36
0
    public void OnPlayerFingerUp(int finger, Vector2 pos, float timeHeldDown)
    {
        mouseIsMovingWhileDown = false;
        currentFingerState = FingerState.None;
        previousMangle = 0;
        currentMousePoints.Clear();

        if(currentMovements.ResetHitQuadrants())
        {
            fluidField.ChangeColors();
            //change the level colah!
        }
    }
Example #37
0
    public void OnPlayerFingerMove(int finger, Vector2 pos)
    {
        currentMovements.TimeSinceLastMouseMove = 0.0f;
        currentMovements.CalculateMovementBounds(pos);
        currentMovements.CalculateCurrentQuadrant(this, pos, currentMousePoints);

        int currentMousePointCount = currentMousePoints.Count;
        if(currentMousePointCount > 1)
        {
            Vector2 prev = (Vector2)currentMousePoints[currentMousePointCount-1];
            Vector2 diff = new Vector2(prev.x-pos.x, prev.y-pos.y);

            Vector2 world1 = Camera.main.ScreenToViewportPoint(pos);
            Vector2 world2 = Camera.main.ScreenToViewportPoint(prev);
            float deltaX = Mathf.Abs(world2.x-world1.x);
            float deltaY = Mathf.Abs(world2.y-world1.y);

            float degsCur = ToDegrees(Mathf.Atan2(deltaY, deltaX));
            currentMovements.TotalAngleChanges += Mathf.Abs(degsCur);
            currentMovements.DistanceTraveled += Mathf.Sqrt((deltaX*deltaX) +(deltaY*deltaY));
        }

        /*
        //go thru lines and find intersects
        currentMousePointCount -= 5;
        currentMovements.LineIntersects = 0;
        int startJ = 2;
        for(int i = 1; i < currentMousePointCount; i += 5)
        {
            Vector2 x1 = (Vector2)currentMousePoints[i-1];
            Vector2 x2 = (Vector2)currentMousePoints[i+3];

            for(int j = startJ; j < currentMousePointCount; j += 5)
            {
                Vector2 y1 = (Vector2)currentMousePoints[j-1];
                Vector2 y2 = (Vector2)currentMousePoints[j+3];

                if(LinesIntersect(x1, x2, y1, y2))
                    currentMovements.LineIntersects += 1;
            }

            startJ+=2;
        }
        */

        if(currentMousePoints.Count > 60)
            currentMousePoints.RemoveAt(0);
        currentMousePoints.Add(pos);
        transform.position = Camera.main.ScreenToWorldPoint(new Vector3(pos.x, pos.y, zOffset));
        currentFingerState = (FingerState)finger;
    }
Example #38
0
    public void OnPlayerFingerDown(int finger, Vector2 pos)
    {
        PlayOneShotAudio(currentPlaySndIdx);
        if(++currentPlaySndIdx>2)
            currentPlaySndIdx = 0;

        currentMousePoints.Add(pos);
        currentMovements.CalculateMovementBounds(pos);
        currentMovements.CalculateCurrentQuadrant(this, pos, currentMousePoints);

        transform.position = Camera.main.ScreenToWorldPoint(new Vector3(pos.x, pos.y, zOffset));
        GameObject.Instantiate(RippleObjectPrefab, transform.position, Quaternion.identity);

        mouseIsMovingWhileDown = true;

        currentMovements.NumTouchDowns += 1;
        currentMovements.TimeSinceLastTouchDown = 0.0f;

        //game-mode: tapping in same spot calling out plankton
        if(currentFingerState != (FingerState)finger)
        {
            Vector2 v2D = transform.position;

            currentFingerState = (FingerState)finger;
            if(currentFingerState == FingerState.Single)
            {
                //current semi-hack to place pinched-prefab object. must also be handled in the OnPinchEnd()
                if(PinchCreateObjectPrefab != null)
                {
                    //Network.Instantiate(PinchCreateObjectPrefab, v2D, Quaternion.identity, 0);
                }

                Vector2 diff = lastMouseDownPos - pos;

                if(diff.magnitude < 30.0f)
                {
                    if(++numberOfTapsInSameSpot > 1)
                    {
                        //if(UnityEngine.Random.Range (0, 100) > 25.0f)
                        fluidField.IncreaseSpiritParticles(1, isPlayer1 ? 0 : 1);
                        numberOfTapsInSameSpot = 0;
                    }
                }
                //else
                {
                //	numberOfTapsInSameSpot = 0;
                }

                //DebugStreamer.message = "numberOfTapsInSameSpot: " + numberOfTapsInSameSpot.ToString();
            }
        }

        lastMouseDownPos = pos;
    }