Пример #1
0
 public long keyDown(StandardKeyCodes keyCode)
 {
     if (downs.ContainsKey(keyCode))
     {
         long time = downs [keyCode];
         downs.Remove(keyCode);
         return(time);
     }
     else
     {
         return(-1);
     }
 }
Пример #2
0
 public long keyUp(StandardKeyCodes keyCode)
 {
     if (ups.ContainsKey(keyCode))
     {
         long time = ups [keyCode];
         ups.Remove(keyCode);
         return(time);
     }
     else
     {
         return(-1);
     }
 }
 public long GetKeyUp(StandardKeyCodes code)
 {
     if (keyUps.ContainsKey(code))
     {
         long time = keyUps [code];
         keyUps.Remove(code);
         return(time);
     }
     else
     {
         return(-1);
     }
 }
    void PollKeysMac()
    {
        while (UseRealTimeInput)
        {
            averageTimer.startRecording();

//			UnityEngine.Debug.Log (timeMaster.GetTime());
//			bool aPressed = CGEventSourceKeyState (1, 0);
            //			UnityEngine.Debug.Log (CGEventSourceKeyState(1, 0));
            //			stopwatch.Reset();
//			if (listener != null) {
            for (int i = 0; i < trackedKeys.Count; i++)
            {
                StandardKeyCodes keyCodeStandard = trackedKeys [i];
                int  keyCode       = KeyConverter.ToMacNative(keyCodeStandard);
                bool keyPressed    = CGEventSourceKeyState(1, keyCode);
                bool prevKeyStatus = keyStates [keyCode];
//					UnityEngine.Debug.Log (keyPressed);
                if (keyPressed && !prevKeyStatus)                  //going from false to true
//						listener.onKeyDown (keyCode, timeMaster.GetTime());
                {
                    keyDowns[keyCodeStandard] = timeMaster.GetTime();
                }
                else if (!keyPressed && prevKeyStatus)
                {
//						listener.onKeyUp (keyCode, timeMaster.GetTime());
                    keyUps[keyCodeStandard] = timeMaster.GetTime();
                }
                keyStates [keyCode] = keyPressed;
            }

            long avg = averageTimer.stopRecording();
            if (avg != -1)
            {
//				UnityEngine.Debug.Log(avg);
                if (debugPanel)
                {
                    debugPanel.log("Input", avg.ToString());
                }
//				debugPanel.log ("Input", avg.ToString());
            }
            Thread.Sleep(sleepTime);
        }
    }
Пример #5
0
    // Update is called once per frame
    void Update()
    {
        for (int i = 0; i < Input.touchCount; i++)
        {
            Touch   touch = Input.GetTouch(i);
            Vector2 pos   = touch.position;
            float   x     = Camera.main.ScreenToWorldPoint(new Vector3(pos.x, pos.y, 0)).x;

            StandardKeyCodes key = KeyMappings.reverseMap [getControl(x)];
            Debug.LogFormat("Key {0}", key);

            if (touch.phase == TouchPhase.Began)
            {
                downs [key] = timeMaster.GetTime();
                Debug.LogFormat("X down {0}", x);
            }
            else if (touch.phase == TouchPhase.Ended)
            {
                ups [key] = timeMaster.GetTime();
                Debug.LogFormat("X up {0}", x);
            }
        }
    }
    public void processKey(StandardKeyCodes keycode, long time, bool keyDown = true)
    {
        if (patternMaster.isPlaying())
        {
            StandardControls control        = KeyMappings.keyToControl(keycode);
            MusicEventTypes  musicEventType = controlToEventType [control];

            //find first matching event
//			int index = events[eventType].FindIndex (e => actionMatches(eventType, e));
            //		Debug.Log (events[0]);

            var relevantEvents = events;
            if (!keyDown)              //keyup
            {
                relevantEvents = releaseEvents;
            }

            if (relevantEvents [musicEventType].Count > 0)
            {
                MusicEvent e = relevantEvents[musicEventType][0];


                if (keyDown)
                {
                    long expectedTime = patternMaster.absTime(e.startTime);
                    long delta        = expectedTime - time;

                    long adjustedError = delta + latencyAdjustment;
                    //only consider if within scoring range
                    if (delta < ScorableThreshold)
                    {
//						Debug.LogFormat ("Delta {0}", delta);
//						Debug.LogFormat ("Adjusted delta {0}", adjustedError);

                        ScoreLevels score = ReportQuality(adjustedError);

                        Messenger <ScoreLevels> .Invoke(MessengerKeys.EVENT_SCORE, score);

                        panel.log("Score", scoreToString [score]);

                        //					if (mode == ScoreCalculatorMode.Calibration) {
                        //						calibrator.addDelta ((int)delta);
                        //					}
                        relevantEvents [musicEventType].RemoveAt(0);

                        Messenger <MusicEvent> .Invoke(MessengerKeys.EVENT_HIT, e);


                        if (e.isHeldEvent())
                        {
                            releaseEventActive [e] = true;
                        }
                    }
                }
                else
                {
                    long expectedUpTime = patternMaster.absTime(e.endTime);
                    long delta          = expectedUpTime - time;
                    long adjusted       = delta + latencyAdjustment;
                    //only register relases if already down
                    if (releaseEventActive.ContainsKey(e))
                    {
                        ScoreLevels score = ReportQuality(adjusted);
//						Debug.LogFormat ("Release {0}", adjusted);

                        relevantEvents [musicEventType].RemoveAt(0);
                        Messenger <ScoreLevels> .Invoke(MessengerKeys.EVENT_SCORE, score);

                        Messenger <MusicEvent> .Invoke(MessengerKeys.EVENT_HELD_RELEASED, e);
                    }
                }
            }
        }
    }
Пример #7
0
 public static StandardControls keyToControl(StandardKeyCodes key)
 {
     return(map[key]);
 }
 public static int ToMacNative(StandardKeyCodes key)
 {
     return(MacNative[key]);
 }
 public static KeyCode ToUnityKey(StandardKeyCodes key)
 {
     return(UnityKeyMap[key]);
 }
Пример #10
0
    void Update()
    {
        foreach (StandardControls control in controls)
        {
            StandardKeyCodes key = KeyMappings.controlToKey(control);

            long downTime = inputManager.GetKeyDown(key);
            if (downTime >= 0)
            {
                OnKeyDown(key, downTime);
            }
            long upTime = inputManager.GetKeyUp(key);
            if (upTime >= 0)
            {
                OnKeyUp(key, upTime);
            }
        }


                #if UNITY_IOS
        //mobile only
        foreach (StandardControls control in controls)
        {
            StandardKeyCodes key = KeyMappings.controlToKey(control);

            long downTime = mobileInput.keyDown(key);
            if (downTime >= 0)
            {
                OnKeyDown(key, downTime);
            }
            long upTime = mobileInput.keyUp(key);
            if (upTime >= 0)
            {
                OnKeyUp(key, upTime);
            }
        }
                #endif


        //WARN: This code is far more complex then it has to be
        if (Input.GetKeyDown(KeyCode.Return))
        {
            if (!patternMaster.isPlaying())
            {
                //order matters here. Once invoke is called, paused may be modified
                bool paused = patternMaster.isPaused();

                Messenger.Invoke(MessengerKeys.TOGGLE_MENU);

                if (paused)
                {
                    ResumeGame();
                }
                else
                {
                    BeginGame();
                }
            }
        }
        ;
    }
Пример #11
0
 public KeyEvent(StandardKeyCodes keycode, long time)
 {
     this.keycode = keycode;
     this.time    = time;
 }
Пример #12
0
    public void OnKeyUp(StandardKeyCodes key, long time)
    {
        Messenger <StandardControls> .Invoke(MessengerKeys.EVENT_PAD_RELEASED, KeyMappings.keyToControl(key));

        scoreCalculator.processKey(key, time, false);
    }