Пример #1
0
    public static DrumSequence.DrumKey ReadDrumKeyDown()
    {
        DrumSequence.DrumKey hit = DrumSequence.DrumKey.NONE;

        //Note -- MidiJack is not included with this sample project, but is the creation of Keijiro Takahashi
        //https://github.com/keijiro/MidiJack

        //if (MidiJack.MidiMaster.GetKeyDown(0x1F))
        //    hit = DrumSequence.DrumKey.One;

        //if (MidiJack.MidiMaster.GetKeyDown(0x30))
        //    hit = DrumSequence.DrumKey.Two;

        //if (MidiJack.MidiMaster.GetKeyDown(0x2F))
        //    hit = DrumSequence.DrumKey.Three;

        //if (MidiJack.MidiMaster.GetKeyDown(0x2D))
        //    hit = DrumSequence.DrumKey.Four;

        //if (MidiJack.MidiMaster.GetKeyDown(0x2B))
        //    hit = DrumSequence.DrumKey.Five;

        //if (MidiJack.MidiMaster.GetKeyDown(0x33))
        //    hit = DrumSequence.DrumKey.Six;

        //if (MidiJack.MidiMaster.GetKeyDown(0x31) || MidiJack.MidiMaster.GetKeyDown(0x37))
        //    hit = DrumSequence.DrumKey.Seven;

        return hit;
    }
Пример #2
0
    public override void OnGUI(Rect rect)
    {
        //GUILayout.Label("Popup Options Example", EditorStyles.boldLabel);
        startIndex  = EditorGUILayout.IntField("Insert at index", startIndex);
        numElements = EditorGUILayout.IntField("Num Elements", numElements);
        startCoord  = EditorGUILayout.Vector3Field("Initial position", startCoord);
        spacing     = EditorGUILayout.Vector3Field("Spacing", spacing);

        EditorGUILayout.BeginHorizontal();
        EditorGUILayout.LabelField("Key", GUILayout.MinWidth(30));
        key = (DrumSequence.DrumKey)EditorGUILayout.EnumPopup(key);
        EditorGUILayout.EndHorizontal();

        if (GUILayout.Button("Autofill to build from last coord"))
        {
            startIndex = sequence.keys.Count;
            startCoord = sequence.coords[startIndex - 1] + spacing;
        }

        if (GUILayout.Button("Generate!"))
        {
            sequence = GenerateAtIndex(startIndex);
            //Some sort of callback to reassign the new Sequence to the asset it came from?
            //Nope! since it's a reference type,
        }
    }
Пример #3
0
    private void CheckDrumHit()
    {
        DrumSequence.DrumKey hit = DrumSequence.DrumKey.NONE;

        if (Input.GetKeyDown(KeyCode.Alpha1))
        {
            hit = DrumSequence.DrumKey.One;
        }
        else if (Input.GetKeyDown(KeyCode.Alpha2))
        {
            hit = DrumSequence.DrumKey.Two;
        }
        else if (Input.GetKeyDown(KeyCode.Alpha3))
        {
            hit = DrumSequence.DrumKey.Three;
        }
        else if (Input.GetKeyDown(KeyCode.Alpha4))
        {
            hit = DrumSequence.DrumKey.Four;
        }
        else if (Input.GetKeyDown(KeyCode.Alpha5))
        {
            hit = DrumSequence.DrumKey.Five;
        }
        else if (Input.GetKeyDown(KeyCode.Alpha6))
        {
            hit = DrumSequence.DrumKey.Six;
        }
        else if (Input.GetKeyDown(KeyCode.Alpha7))
        {
            hit = DrumSequence.DrumKey.Seven;
        }

        if (hit != DrumSequence.DrumKey.NONE)
        {
            if (hit == reactiveSequence.Value.GetCurrentDrumKey(sequenceIndex.Value))
            {
                AdvanceSequence();
            }
            else
            {
                onMistakeCallback.Invoke();
                ResetSequence();
            }
        }
    }
Пример #4
0
    private void AddPromptUnderCursor(DrumSequence.DrumKey keyNum)
    {
        Vector3 mouseWorldPos = UnityHelper.GetWorldSpaceMousePosition();

        mouseWorldPos.z = 0;

        if (gridSnapping)
        {
            Vector3 gridPosition = GetGridSnappedPosition(mouseWorldPos);
            mouseWorldPos = gridPosition;
        }

        currentSequence.keys.Add(keyNum);
        currentSequence.coords.Add(mouseWorldPos);
        currentSequence.showLine.Add(true);

        onMovePrompt.Invoke();
    }
Пример #5
0
    private void CheckDrumHitMidi()
    {
        DrumSequence.DrumKey hit = DrumSequence.DrumKey.NONE;

        hit = DrumInputMIDIMap.ReadDrumKeyDown();

        if (hit != DrumSequence.DrumKey.NONE)
        {
            if (hit == reactiveSequence.Value.GetCurrentDrumKey(sequenceIndex.Value))
            {
                AdvanceSequence();
            }
            else
            {
                ResetSequence();
            }
        }
    }
Пример #6
0
    public Color GetColorForKey(DrumSequence.DrumKey key)
    {
        int keyCode = (int)key - 1; //Enum is 1-indexed

        return(colorMap[keyCode]);
    }