private float GetAxis(OuyaSDK.KeyEnum keyCode, OuyaSDK.OuyaPlayer player)
    {
        // Check if we want the *new* SDK input or the example common
        if (m_useSDKForInput)
        {
            // Get the Unity Axis Name for the Unity API
            string axisName = OuyaSDK.GetUnityAxisName(keyCode, player);

            // Check if the axis name is valid
            if (!string.IsNullOrEmpty(axisName))
            {
                //use the Unity API to get the axis value, raw or otherwise
                float axisValue = Input.GetAxisRaw(axisName);
                //check if the axis should be inverted
                if (OuyaSDK.GetAxisInverted(keyCode, player))
                {
                    return(-axisValue);
                }
                else
                {
                    return(axisValue);
                }
            }
        }
        // moving the common code into the sdk via above
        else
        {
            return(OuyaExampleCommon.GetAxis(keyCode, player));
        }
        return(0f);
    }
Esempio n. 2
0
        protected override float ProcessAxis(Key key, float deadZone)
        {
            if (key.map == InputKeyMap.None)
            {
                return(base.ProcessAxis(key, deadZone));
            }

            OuyaSDK.OuyaPlayer player = GetPlayer(key);

            switch (key.axis)
            {
            case ButtonAxis.Minus:
                return(OuyaExampleCommon.GetButton((OuyaSDK.KeyEnum)key.map, player) ? -1.0f : 0.0f);

                break;

            case ButtonAxis.Plus:
                return(OuyaExampleCommon.GetButton((OuyaSDK.KeyEnum)key.map, player) ? 1.0f : 0.0f);

                break;

            case ButtonAxis.Both:
                float val = OuyaExampleCommon.GetAxis((OuyaSDK.KeyEnum)key.map, player);
                return(Mathf.Abs(val) > deadZone ? val : 0.0f);
            }

            return(0.0f);
        }
    private void FixedUpdate()
    {
        OuyaExampleCommon.UpdateJoysticks();

        if (RendererLabel)
        {
            RendererLabel.text = m_items.Count.ToString();
        }

        if (PolysLabel)
        {
            int count = 0;
            foreach (MeshFilter mf in m_items)
            {
                if (mf.mesh)
                {
                    count += mf.mesh.vertexCount;
                }
            }
            PolysLabel.text = count.ToString();
        }

        if (m_timerChange < DateTime.Now)
        {
            m_timerChange = DateTime.Now + TimeSpan.FromMilliseconds(200);

            if (OuyaExampleCommon.GetButton(OuyaSDK.OuyaPlayer.player1, OuyaSDK.KeyEnum.BUTTON_DPAD_LEFT))
            {
                DecreaseGeometry(1f);
            }

            if (OuyaExampleCommon.GetButton(OuyaSDK.OuyaPlayer.player1, OuyaSDK.KeyEnum.BUTTON_DPAD_RIGHT))
            {
                IncreaseGeometry(1f);
            }

            if (OuyaExampleCommon.GetButton(OuyaSDK.OuyaPlayer.player1, OuyaSDK.KeyEnum.BUTTON_DPAD_UP))
            {
                CombineGeometry();
            }

            if (OuyaExampleCommon.GetButton(OuyaSDK.OuyaPlayer.player1, OuyaSDK.KeyEnum.BUTTON_O))
            {
                IncreaseGeometry(0.1f);
            }

            if (OuyaExampleCommon.GetButton(OuyaSDK.OuyaPlayer.player1, OuyaSDK.KeyEnum.BUTTON_A))
            {
                DecreaseGeometry(0.1f);
            }
        }

        float x = OuyaExampleCommon.GetAxis("LY", OuyaSDK.OuyaPlayer.player1);
        float y = OuyaExampleCommon.GetAxis("LX", OuyaSDK.OuyaPlayer.player1);

        Camera.main.transform.RotateAround(new Vector3(0, 0, 3), Camera.main.transform.rotation * Vector3.right, x * 45 * Time.fixedDeltaTime);
        Camera.main.transform.RotateAround(new Vector3(0, 0, 3), Camera.main.transform.rotation * Vector3.up, y * 45 * Time.fixedDeltaTime);
    }
    public static float GetAxis(string inputName, OuyaSDK.OuyaPlayer player)
    {
        switch (Moga)
        {
        case true:
            switch (inputName)
            {
            case "TurnRight":
                return(MogaInput.GetAxis("R2"));               //MogaController.KEYCODE_BUTTON_R2;//R2

            case "TurnLeft":
                return(MogaInput.GetAxis("L2"));               //MogaController.KEYCODE_BUTTON_L2;//L2

            case "Roll":
                return(MogaInput.GetAxis("Horizontal"));               //MogaController.AXIS_X;//X

            case "Vertical":
                return(MogaInput.GetAxis("Vertical"));               //MogaController.AXIS_Y;//Y

            case "Pitch":
                return(MogaInput.GetAxis("LookVertical"));               //MogaController.AXIS_RZ;//RZ

            case "Yaw":
                return(MogaInput.GetAxis("LookHorizontal"));               //MogaController.AXIS_Z;//Z

            default:
                return(0);
            }

        case false:

            switch (inputName)
            {
            case "TurnRight":
                return(OuyaExampleCommon.GetAxis("RT", player));

            case "TurnLeft":
                return(OuyaExampleCommon.GetAxis("LT", player));

            case "Roll":
                return(OuyaExampleCommon.GetAxis("LX", player));

            case "Vertical":
                return(OuyaExampleCommon.GetAxis("LY", player));

            case "Pitch":
                return(OuyaExampleCommon.GetAxis("RY", player));

            case "Yaw":
                return(OuyaExampleCommon.GetAxis("RX", player));

            default:
                return(0);
            }
        }
        return(0);
    }
    void UpdateTexture()
    {
        // range -1 to 1
        float axisX = OuyaExampleCommon.GetAxis(OuyaSDK.KeyEnum.AXIS_LSTICK_X, Player);
        float axisY = OuyaExampleCommon.GetAxis(OuyaSDK.KeyEnum.AXIS_LSTICK_Y, Player);

        // put in 0 to TextureSize range
        int x = (int)((axisX + 1) * 0.5f * (TextureSize - 1));
        int y = (int)((-axisY + 1) * 0.5f * (TextureSize - 1));

        int index = x + y * TextureSize;

        if (x != m_lastX ||
            y != m_lastY)
        {
            m_lastX = x;
            m_lastY = y;
            if (index >= 0 &&
                index < m_pixels.Length)
            {
                if (m_pixelVs[index] < 0f)
                {
                    m_pixelVs[index] = 0f;
                }
                else
                {
                    m_pixelVs[index] = m_pixelVs[index] + m_increment;
                }
                Vector3 c = Vector3.Lerp(new Vector3(0, 1, 0), new Vector3(1, 1, 1), m_pixelVs[index]);
                m_pixels[index].r = (byte)(int)(c.x * 255);
                m_pixels[index].g = (byte)(int)(c.y * 255);
                m_pixels[index].b = (byte)(int)(c.z * 255);
                m_pixels[index].a = 255;
            }
        }
    }
Esempio n. 6
0
    private void UpdateController()
    {
        #region Axis Code

        UpdateHighlight(RendererAxisLeft, Mathf.Abs(OuyaExampleCommon.GetAxis(OuyaSDK.KeyEnum.AXIS_LSTICK_X, OuyaExampleCommon.Player)) > 0.25f ||
                        Mathf.Abs(OuyaExampleCommon.GetAxis(OuyaSDK.KeyEnum.AXIS_LSTICK_Y, OuyaExampleCommon.Player)) > 0.25f);

        RendererAxisLeft.transform.localRotation = Quaternion.Euler(OuyaExampleCommon.GetAxis(OuyaSDK.KeyEnum.AXIS_LSTICK_Y, OuyaExampleCommon.Player) * 15, 0, OuyaExampleCommon.GetAxis(OuyaSDK.KeyEnum.AXIS_LSTICK_X, OuyaExampleCommon.Player) * 15);

        UpdateHighlight(RendererAxisRight, Mathf.Abs(OuyaExampleCommon.GetAxis(OuyaSDK.KeyEnum.AXIS_RSTICK_X, OuyaExampleCommon.Player)) > 0.25f ||
                        Mathf.Abs(OuyaExampleCommon.GetAxis(OuyaSDK.KeyEnum.AXIS_RSTICK_Y, OuyaExampleCommon.Player)) > 0.25f);

        RendererAxisRight.transform.localRotation = Quaternion.Euler(OuyaExampleCommon.GetAxis(OuyaSDK.KeyEnum.AXIS_RSTICK_Y, OuyaExampleCommon.Player) * 15, 0, OuyaExampleCommon.GetAxis(OuyaSDK.KeyEnum.AXIS_RSTICK_X, OuyaExampleCommon.Player) * 15);

        RendererLT.transform.localRotation = Quaternion.Euler(OuyaExampleCommon.GetAxis(OuyaSDK.KeyEnum.BUTTON_LT, OuyaExampleCommon.Player) * -15, 0, 0);

        RendererRT.transform.localRotation = Quaternion.Euler(OuyaExampleCommon.GetAxis(OuyaSDK.KeyEnum.BUTTON_RT, OuyaExampleCommon.Player) * -15, 0, 0);

        if (OuyaExampleCommon.GetButton(OuyaSDK.KeyEnum.BUTTON_L3, OuyaExampleCommon.Player))
        {
            RendererAxisLeft.transform.localPosition = Vector3.Lerp(RendererAxisLeft.transform.localPosition,
                                                                    new Vector3(5.503977f, 0.75f, -3.344945f), Time.fixedDeltaTime);
        }
        else
        {
            RendererAxisLeft.transform.localPosition = Vector3.Lerp(RendererAxisLeft.transform.localPosition,
                                                                    new Vector3(5.503977f, 1.127527f, -3.344945f), Time.fixedDeltaTime);
        }

        if (OuyaExampleCommon.GetButton(OuyaSDK.KeyEnum.BUTTON_R3, OuyaExampleCommon.Player))
        {
            RendererAxisRight.transform.localPosition = Vector3.Lerp(RendererAxisRight.transform.localPosition,
                                                                     new Vector3(-2.707688f, 0.75f, -1.354063f), Time.fixedDeltaTime);
        }
        else
        {
            RendererAxisRight.transform.localPosition = Vector3.Lerp(RendererAxisRight.transform.localPosition,
                                                                     new Vector3(-2.707688f, 1.11295f, -1.354063f), Time.fixedDeltaTime);
        }

        #endregion


        #region Button Code

        #region BUTTONS O - A
        //Check O button for down state
        if (OuyaExampleCommon.GetButton(OuyaSDK.KeyEnum.BUTTON_O, OuyaExampleCommon.Player))
        {
            UpdateHighlight(RendererButtonO, true, true);
        }
        else
        {
            UpdateHighlight(RendererButtonO, false, true);
        }

        //Check U button for down state
        if (OuyaExampleCommon.GetButton(OuyaSDK.KeyEnum.BUTTON_U, OuyaExampleCommon.Player))
        {
            UpdateHighlight(RendererButtonU, true, true);
        }
        else
        {
            UpdateHighlight(RendererButtonU, false, true);
        }

        //Check Y button for down state
        if (OuyaExampleCommon.GetButton(OuyaSDK.KeyEnum.BUTTON_Y, OuyaExampleCommon.Player))
        {
            UpdateHighlight(RendererButtonY, true, true);
        }
        else
        {
            UpdateHighlight(RendererButtonY, false, true);
        }

        //Check A button for down state
        if (OuyaExampleCommon.GetButton(OuyaSDK.KeyEnum.BUTTON_A, OuyaExampleCommon.Player))
        {
            UpdateHighlight(RendererButtonA, true, true);
        }
        else
        {
            UpdateHighlight(RendererButtonA, false, true);
        }

        //Check L3 button for down state
        if (OuyaExampleCommon.GetButton(OuyaSDK.KeyEnum.BUTTON_L3, OuyaExampleCommon.Player))
        {
            UpdateHighlight(RendererAxisLeft, true, true);
        }
        else
        {
            UpdateHighlight(RendererAxisLeft, false, true);
        }

        //Check R3 button for down state
        if (OuyaExampleCommon.GetButton(OuyaSDK.KeyEnum.BUTTON_R3, OuyaExampleCommon.Player))
        {
            UpdateHighlight(RendererAxisRight, true, true);
        }
        else
        {
            UpdateHighlight(RendererAxisRight, false, true);
        }
        #endregion

        #region Bumpers
        //Check LB button for down state
        if (OuyaExampleCommon.GetButton(OuyaSDK.KeyEnum.BUTTON_LB, OuyaExampleCommon.Player))
        {
            UpdateHighlight(RendererLB, true, true);
        }
        else
        {
            UpdateHighlight(RendererLB, false, true);
        }

        //Check RB button for down state
        if (OuyaExampleCommon.GetButton(OuyaSDK.KeyEnum.BUTTON_RB, OuyaExampleCommon.Player))
        {
            UpdateHighlight(RendererRB, true, true);
        }
        else
        {
            UpdateHighlight(RendererRB, false, true);
        }
        #endregion

        #region triggers
        //Check LT button for down state
        if (OuyaExampleCommon.GetButton(OuyaSDK.KeyEnum.BUTTON_LT, OuyaExampleCommon.Player))
        {
            UpdateHighlight(RendererLT, true, true);
        }
        else
        {
            UpdateHighlight(RendererLT, false, true);
        }

        //Check RT button for down state
        if (OuyaExampleCommon.GetButton(OuyaSDK.KeyEnum.BUTTON_RT, OuyaExampleCommon.Player))
        {
            UpdateHighlight(RendererRT, true, true);
        }
        else
        {
            UpdateHighlight(RendererRT, false, true);
        }
        #endregion

        #region DPAD
        //Check DPAD UP button for down state
        if (OuyaExampleCommon.GetButton(OuyaSDK.KeyEnum.BUTTON_DPAD_UP, OuyaExampleCommon.Player))
        {
            UpdateHighlight(RendererDpadUp, true, true);
        }
        else
        {
            UpdateHighlight(RendererDpadUp, false, true);
        }

        //Check DPAD DOWN button for down state
        if (OuyaExampleCommon.GetButton(OuyaSDK.KeyEnum.BUTTON_DPAD_DOWN, OuyaExampleCommon.Player))
        {
            UpdateHighlight(RendererDpadDown, true, true);
        }
        else
        {
            UpdateHighlight(RendererDpadDown, false, true);
        }

        //Check DPAD LEFT button for down state
        if (OuyaExampleCommon.GetButton(OuyaSDK.KeyEnum.BUTTON_DPAD_LEFT, OuyaExampleCommon.Player))
        {
            UpdateHighlight(RendererDpadLeft, true, true);
        }
        else
        {
            UpdateHighlight(RendererDpadLeft, false, true);
        }

        //Check DPAD RIGHT button for down state
        if (OuyaExampleCommon.GetButton(OuyaSDK.KeyEnum.BUTTON_DPAD_RIGHT, OuyaExampleCommon.Player))
        {
            UpdateHighlight(RendererDpadRight, true, true);
        }
        else
        {
            UpdateHighlight(RendererDpadRight, false, true);
        }
        #endregion

        #endregion
    }
    void Update()
    {
        if (m_timerCreate < DateTime.Now)
        {
            m_timerCreate = DateTime.Now + TimeSpan.FromMilliseconds(NoteTimeToCreate);
            int index = Random.Range(0, Lanes.Count);
            CreateNote(Lanes[index]);
        }

        bool lower = OuyaExampleCommon.GetButton(OuyaSDK.KeyEnum.HARMONIX_ROCK_BAND_GUITAR_LOWER,
                                                 OuyaSDK.OuyaPlayer.player1);

        float strum = OuyaExampleCommon.GetAxis(OuyaSDK.KeyEnum.HARMONIX_ROCK_BAND_GUITAR_STRUM,
                                                OuyaSDK.OuyaPlayer.player1);

        bool strumChanged = LastStrum != strum;

        LastStrum = strum;

        foreach (CubeLaneItem item in Lanes)
        {
            // cache the button state
            LastPressed[item.LaneButton] = OuyaExampleCommon.GetButton(item.LaneButton, OuyaSDK.OuyaPlayer.player1);
        }

        List <NoteItem> removeList = new List <NoteItem>();

        foreach (NoteItem note in Notes)
        {
            if (note.EndTime < DateTime.Now)
            {
                removeList.Add(note);
                continue;
            }

            float elapsed = (float)(DateTime.Now - note.StartTime).TotalMilliseconds;

            note.Instance.transform.position =
                Vector3.Lerp(
                    note.Parent.StartPosition.transform.position,
                    note.Parent.EndPosition.transform.position,
                    elapsed / (float)NoteTimeToLive);

            bool inRange    = Mathf.Abs(TrackEnd.position.z - note.Instance.transform.position.z) <= 16;
            bool afterRange = (note.Instance.transform.position.z - 8) < TrackEnd.position.z;
            if (inRange)
            {
                (note.Instance.renderer as MeshRenderer).material.color = Color.white;
            }
            else if (afterRange)
            {
                (note.Instance.renderer as MeshRenderer).material.color = new Color(0, 0, 0, 0.75f);
            }

            // use available press of the lane button
            if (LastPressed.ContainsKey(note.Parent.LaneButton) &&
                LastPressed[note.Parent.LaneButton])
            {
                if (
                    //check if note is across the finish line
                    inRange &&

                    //check if lower was used
                    (!note.UseLower ||
                     lower == note.UseLower) &&

                    // check if strum was used
                    strumChanged &&
                    strum != 0f)
                {
                    //use button press
                    LastPressed[note.Parent.LaneButton] = false;

                    //hit the note
                    if (note.FadeTime == DateTime.MinValue)
                    {
                        note.FadeTime = DateTime.Now + TimeSpan.FromMilliseconds(NoteTimeToFade);
                        note.Parent.LaneSound.volume = 1;
                    }
                }
            }

            if (note.FadeTime != DateTime.MinValue)
            {
                if (note.FadeTime < DateTime.Now)
                {
                    removeList.Add(note);
                    continue;
                }
                elapsed = (float)(note.FadeTime - DateTime.Now).TotalMilliseconds;
                (note.Instance.renderer as MeshRenderer).material.color = Color.Lerp(note.Parent.LaneColor, Color.clear, 1f - elapsed / (float)NoteTimeToFade);
                note.Instance.transform.localScale = Vector3.Lerp(note.Instance.transform.localScale, note.Parent.StartPosition.transform.localScale * 2, elapsed / (float)NoteTimeToFade);
            }
        }
        foreach (NoteItem note in removeList)
        {
            Notes.Remove(note);
            DestroyNote(note);
        }
    }