protected override MutableObject Mutate(MutableObject mutable) { var groupId = GroupId.GetFirstValue(mutable); Dictionary <T, int> localShare; if (groupId != "") { if (!DataShare.ContainsKey(groupId)) { DataShare.Add(groupId, new Dictionary <T, int>()); } localShare = DataShare[groupId]; } else { localShare = new Dictionary <T, int>(); } foreach (var entry in AxisKey.GetEntries(mutable)) { var key = AxisKey.GetValue(entry); if (!localShare.ContainsKey(key)) { localShare[key] = 0; } IndexAxis.SetValue(localShare[key], entry); localShare[key]++; } return(mutable); }
public static AxisKey XboxAxis(XboxAxis axis) { AxisKey ak = new AxisKey(); ak.Type = ControlKeyType.Xbox; ak.xboxAxisType = XboxAxisType.axis; ak.keys.Add(axis.ToString()); return ak; }
public static AxisKey PC(KeyCode neg, KeyCode pos) { AxisKey ak = new AxisKey(); ak.Type = ControlKeyType.PC; ak.keys.Add(neg.ToString()); ak.keys.Add(pos.ToString()); return ak; }
public static AxisKey XboxAxis(XboxAxis axis) { AxisKey ak = new AxisKey(); ak.Type = ControlKeyType.Xbox; ak.xboxAxisType = XboxAxisType.axis; ak.keys.Add(axis.ToString()); return(ak); }
protected override void OnProcessOutputSchema(MutableObject newSchema) { var entryList = AxisKey.GetEntries(newSchema); foreach (var entry in entryList) { IndexAxis.SetValue(0, entry); } Router.TransmitAllSchema(newSchema); }
public static AxisKey PC(KeyCode neg, KeyCode pos) { AxisKey ak = new AxisKey(); ak.Type = ControlKeyType.PC; ak.keys.Add(neg.ToString()); ak.keys.Add(pos.ToString()); return(ak); }
protected override MutableObject Mutate(MutableObject mutable) { foreach (var entry in AxisKey.GetEntries(mutable)) { TargetField.SetValue(OutputStack.TransformValue( ConversionFunc( InputStack.TransformValue(AxisKey.GetValue(entry)), entry)), entry); } return(mutable); }
protected override MutableObject Mutate(MutableObject mutable) { foreach (var entry in AxisKey.GetEntries(mutable)) { TargetField.SetValue(OutputStack.TransformValue( string.Compare(InputStack.TransformValue(AxisKey.GetValue(entry)), InputStack.TransformValue(ToMatch.GetValue(entry)), StringComparison.InvariantCultureIgnoreCase) == 0), entry); } return(mutable); }
protected override MutableObject Mutate(MutableObject mutable) { var entries = AxisKey.GetEntries(mutable); var foundStrings = new HashSet <T>(); // identify the set of unique keys foreach (var entry in entries) { var axisKey = InputStack.TransformValue(AxisKey.GetValue(entry)); if (!foundStrings.Contains(axisKey)) { foundStrings.Add(axisKey); } } // DO NOT sort the keys //var sortedKeys = foundStrings.ToList(); //sortedKeys.Sort(); // index the values var axisValues = GroupId.GetFirstValue(mutable) == "" ? new Dictionary <T, int>() : DataShare.ContainsKey(GroupId.GetFirstValue(mutable)) ? DataShare[GroupId.GetFirstValue(mutable)] : new Dictionary <T, int>(); int i = 0; foreach (var key in foundStrings) //sortedKeys { axisValues[key] = OutputStack.TransformValue(i++); } // finally, write the new axis value into each entry entries = AxisKey.GetEntries(mutable); foreach (var entry in entries) { IndexAxis.SetValue( axisValues[InputStack.TransformValue(AxisKey.GetValue(entry))], entry); } if (GroupId.GetFirstValue(mutable) != "") { DataShare[GroupId.GetFirstValue(mutable)] = axisValues; } return(mutable); }
public static AxisKey XboxDpad(HorVert horintalOrVertical) { AxisKey ak = new AxisKey(); ak.Type = ControlKeyType.Xbox; ak.xboxAxisType = XboxAxisType.dpad; if(horintalOrVertical == HorVert.Horizontal) { ak.keys.Add(XboxDPad.Left.ToString()); ak.keys.Add(XboxDPad.Right.ToString()); } else { ak.keys.Add(XboxDPad.Down.ToString()); ak.keys.Add(XboxDPad.Up.ToString()); } return ak; }
public static AxisKey XboxDpad(HorVert horintalOrVertical) { AxisKey ak = new AxisKey(); ak.Type = ControlKeyType.Xbox; ak.xboxAxisType = XboxAxisType.dpad; if (horintalOrVertical == HorVert.Horizontal) { ak.keys.Add(XboxDPad.Left.ToString()); ak.keys.Add(XboxDPad.Right.ToString()); } else { ak.keys.Add(XboxDPad.Down.ToString()); ak.keys.Add(XboxDPad.Up.ToString()); } return(ak); }
public static ControlScheme CreateScheme <T>(UpdateTypeE updateType = UpdateTypeE.FixedUpdate, bool xboxLeftStick = true, bool xboxDPad = true, bool arrows = true, bool wasd = true) where T : struct, IConvertible { if (!typeof(T).IsEnum) { throw new ArgumentException("T must be an enumerated type"); } ControlScheme controlScheme = new ControlScheme(); controlScheme.Name = typeof(T).ToString(); controlScheme.UpdateType = updateType; controlScheme.SetActionsFromEnum <T>(); controlScheme.Horizontal = new Axis(controlScheme, "Horizontal"); controlScheme.Vertical = new Axis(controlScheme, "Vertical"); if (xboxLeftStick) { controlScheme.Horizontal.AxisKeys.Add(AxisKey.XboxAxis(XboxCtrlrInput.XboxAxis.LeftStickX)); controlScheme.Vertical.AxisKeys.Add(AxisKey.XboxAxis(XboxCtrlrInput.XboxAxis.LeftStickY)); } if (xboxDPad) { controlScheme.Horizontal.AxisKeys.Add(AxisKey.XboxDpad(AxisKey.HorVert.Horizontal)); controlScheme.Vertical.AxisKeys.Add(AxisKey.XboxDpad(AxisKey.HorVert.Vertical)); } if (wasd) { controlScheme.Horizontal.AxisKeys.Add(AxisKey.PC(KeyCode.A, KeyCode.D)); controlScheme.Vertical.AxisKeys.Add(AxisKey.PC(KeyCode.S, KeyCode.W)); } if (arrows) { controlScheme.Horizontal.AxisKeys.Add(AxisKey.PC(KeyCode.LeftArrow, KeyCode.RightArrow)); controlScheme.Vertical.AxisKeys.Add(AxisKey.PC(KeyCode.DownArrow, KeyCode.UpArrow)); } return(controlScheme); }
public float GetAxis(AxisKey keyName) { if (controlsDict == null || controlsDict.Count == 0) { UpdateControlDictionary(); if (controlsDict.Count == 0) { Debug.LogWarning("No Input Axes set up. Returning 0.0f for all control queries"); return 0.0f; } } //return controlsDict[keyName].GetAxis(); return controlsDict[keyName].axisValue; }
public override void OnInspectorGUI() { #region Original if (SavedFoldoutShared("OriginalGUI")) { EditorGUI.indentLevel++; base.OnInspectorGUI(); EditorGUI.indentLevel--; EditorGUILayout.Space(); } #endregion //Prep ControlScheme ct = (ControlScheme)target; EditorGUILayout.Space(); #region Action selection and setting // Set & select a new action list EditorGUILayout.BeginHorizontal(); selectedIndex = EditorGUILayout.Popup(selectedIndex, AllEnumsNames); if (GUILayout.Button("ResetActions")) { ct.SetActionsFromEnum(AllEnums[selectedIndex]); } EditorGUILayout.EndHorizontal(); #endregion #region PlayerID & Xbox ID // PlayerID EditorGUILayout.BeginHorizontal(); { EditorGUILayout.LabelField("PlayerID", GUILayout.Width(60.0f)); ct.playerID = EditorGUILayout.IntField(ct.playerID, GUILayout.Width(20.0f)); EditorGUILayout.LabelField("XboxSupport: " + ct.XboxSupport.ToString()); } EditorGUILayout.EndHorizontal(); if (xboxSupport) { EditorGUILayout.BeginHorizontal(); { EditorGUILayout.LabelField("ControllerID", GUILayout.Width(80.0f)); ct.controllerID = EditorGUILayout.IntField(ct.controllerID, GUILayout.Width(20.0f)); EditorGUILayout.LabelField("LastInput: " + ct.InputType.ToString()); } EditorGUILayout.EndHorizontal(); } #endregion #region Horizontal if (SavedFoldoutShared("Horizontal Axis")) { int delete = -1; bool add = false; for (int i = 0; i < ct.Horizontal.AxisKeys.Count; i++) { GUILayout.BeginHorizontal(); if (i == 0 && GUILayout.Button("+", GUILayout.Width(20.0f))) { add = true; } else if (i != 0 && GUILayout.Button("x", GUILayout.Width(20.0f))) { delete = i; } ct.Horizontal.AxisKeys[i].OnGui(); GUILayout.EndHorizontal(); } if (delete >= 0) { ct.Horizontal.AxisKeys.RemoveAt(delete); } if (add) { ct.Horizontal.AxisKeys.Add(AxisKey.PC(KeyCode.LeftArrow, KeyCode.RightArrow)); } } #endregion #region Vertical if (SavedFoldoutShared("Vertical Axis")) { int delete = -1; bool add = false; for (int i = 0; i < ct.Vertical.AxisKeys.Count; i++) { GUILayout.BeginHorizontal(); if (i == 0 && GUILayout.Button("+", GUILayout.Width(20.0f))) { add = true; } else if (i != 0 && GUILayout.Button("x", GUILayout.Width(20.0f))) { delete = i; } ct.Vertical.AxisKeys[i].OnGui(); GUILayout.EndHorizontal(); } if (delete >= 0) { ct.Vertical.AxisKeys.RemoveAt(delete); } if (add) { ct.Vertical.AxisKeys.Add(AxisKey.PC(KeyCode.DownArrow, KeyCode.UpArrow)); } } #endregion #region Actions if (SavedFoldoutShared("Actions")) { for (int i = 0; i < ct.Actions.Count; i++) { EditorGUI.indentLevel++; // For each action - Show a foldout if (SavedFoldoutShared(ct.Actions[i].Name)) { int delete = -1; bool add = false; EditorGUI.indentLevel++; if (ct.Actions[i].Keys.Count == 0 && GUILayout.Button("Add a key")) { add = true; } for (int j = 0; j < ct.Actions[i].Keys.Count; j++) { GUILayout.BeginHorizontal(); if (j == 0 && GUILayout.Button("+", GUILayout.Width(20.0f))) { add = true; } else if (j != 0 && GUILayout.Button("x", GUILayout.Width(20.0f))) { delete = j; } ct.Actions[i].Keys[j].OnGui(); GUILayout.EndHorizontal(); } EditorGUI.indentLevel--; if (delete >= 0) { ct.Actions[i].Keys.RemoveAt(delete); } if (add) { ct.Actions[i].Keys.Add(ControlKey.PCKey(KeyCode.KeypadEnter)); } } EditorGUI.indentLevel--; } } #endregion if (GUI.changed) { xboxSupport = ((ControlScheme)(target)).XboxSupport; ScriptableObjectHelper.RefreshAsset(ct); } }