public static ButtonLookupTable <T> NewLookupTableFromDefs <T>(List <ButtonDef <T> > defs) { ButtonLookupTable <T> lookupTable = new ButtonLookupTable <T>(); for (int i = 0; i < defs.Count; i++) { SetupVirtualMap(ref lookupTable, defs[i].rawButton, Button.Any); for (int j = 0; j < defs[i].virtualButtons.Length; j++) { if (defs[i].virtualButtons[j] != (Button.None | Button.Any)) { SetupVirtualMap(ref lookupTable, defs[i].rawButton, defs[i].virtualButtons[j]); } } } return(lookupTable); }
public static void SetupVirtualMap <T>(ref ButtonLookupTable <T> table, T rawButton, TBInput.Button virtualButton) { switch (virtualButton) { case Button.PrimaryTrigger: BindVirtualMapToButton <T>(ref table.PrimaryTrigger, rawButton); break; case Button.SecondaryTrigger: BindVirtualMapToButton <T>(ref table.SecondaryTrigger, rawButton); break; case Button.Start: BindVirtualMapToButton <T>(ref table.Start, rawButton); break; case Button.Options: BindVirtualMapToButton <T>(ref table.Options, rawButton); break; case Button.Action1: BindVirtualMapToButton <T>(ref table.Action1, rawButton); break; case Button.Action2: BindVirtualMapToButton <T>(ref table.Action2, rawButton); break; case Button.Action3: BindVirtualMapToButton <T>(ref table.Action3, rawButton); break; case Button.Action4: BindVirtualMapToButton <T>(ref table.Action4, rawButton); break; case Button.DpadUp: BindVirtualMapToButton <T>(ref table.DpadUp, rawButton); break; case Button.DpadDown: BindVirtualMapToButton <T>(ref table.DpadDown, rawButton); break; case Button.DpadLeft: BindVirtualMapToButton <T>(ref table.DpadLeft, rawButton); break; case Button.DpadRight: BindVirtualMapToButton <T>(ref table.DpadRight, rawButton); break; case Button.Touchpad: BindVirtualMapToButton <T>(ref table.Touchpad, rawButton); break; case Button.Joystick: BindVirtualMapToButton <T>(ref table.Joystick, rawButton); break; case Button.LeftTrigger: BindVirtualMapToButton <T>(ref table.LeftTrigger, rawButton); break; case Button.RightTrigger: BindVirtualMapToButton <T>(ref table.RightTrigger, rawButton); break; case Button.LeftBumper: BindVirtualMapToButton <T>(ref table.LeftBumper, rawButton); break; case Button.RightBumper: BindVirtualMapToButton <T>(ref table.RightBumper, rawButton); break; case Button.LeftStick: BindVirtualMapToButton <T>(ref table.LeftStick, rawButton); break; case Button.RightStick: BindVirtualMapToButton <T>(ref table.RightStick, rawButton); break; case Button.Any: BindVirtualMapToButton <T>(ref table.Any, rawButton); break; } }
/// <summary> /// Gets an array of raw (SDK-based) buttons for a given TBInput button type. Returns based on configured button maps. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="virtualButton"></param> /// <param name="lookupTable"></param> /// <returns></returns> public static T[] GetRawButtons <T>(Button virtualButton, ButtonLookupTable <T> lookupTable) { switch (virtualButton) { case Button.PrimaryTrigger: return(lookupTable.PrimaryTrigger); case Button.SecondaryTrigger: return(lookupTable.SecondaryTrigger); case Button.Start: return(lookupTable.Start); case Button.Options: return(lookupTable.Options); case Button.Action1: return(lookupTable.Action1); case Button.Action2: return(lookupTable.Action2); case Button.Action3: return(lookupTable.Action3); case Button.Action4: return(lookupTable.Action4); case Button.DpadUp: return(lookupTable.DpadUp); case Button.DpadDown: return(lookupTable.DpadDown); case Button.DpadLeft: return(lookupTable.DpadLeft); case Button.DpadRight: return(lookupTable.DpadRight); case Button.Touchpad: return(lookupTable.Touchpad); case Button.Joystick: return(lookupTable.Joystick); case Button.LeftTrigger: return(lookupTable.LeftTrigger); case Button.RightTrigger: return(lookupTable.RightTrigger); case Button.LeftBumper: return(lookupTable.LeftBumper); case Button.RightBumper: return(lookupTable.RightBumper); case Button.LeftStick: return(lookupTable.LeftStick); case Button.RightStick: return(lookupTable.RightStick); case Button.Any: return(lookupTable.Any); } UnityEngine.Debug.LogError("Button " + virtualButton + " isn't defined in the lookup table! This is a core TButt error, please report it."); return(null); }