public virtual string ConvertMaskToName(Bitset mask, bool hasAxis = false, int axisIndex = 0) { string result = ""; bool isFirst = true; for (int i = 0; i < GetButtonsCount(); i++) { if (mask.Get(i)) { if (!isFirst) { result += " + "; } else { isFirst = false; } result += GetButtonName(i); } } if (hasAxis) { if (!isFirst) { result += " + "; } result += GetAxisName(axisIndex); } return result; }
public virtual string ConvertMaskToName(Bitset mask, bool hasAxis = false, int axisIndex = 0) { string result = ""; bool isFirst = true; for (int i = 0; i < GetButtonsCount(); i++) { if (mask.Get(i)) { if (!isFirst) { result += " + "; } else { isFirst = false; } result += GetButtonName(i); } } if (hasAxis) { if (!isFirst) { result += " + "; } result += GetAxisName(axisIndex); } return(result); }
public List <ContinuousAction> GetContinuousBinding(int axis, Bitset state) { List <KeyValuePair <Bitset, ContinuousAction> > matches = new List <KeyValuePair <Bitset, ContinuousAction> >(); foreach (var continuousActionEntry in continuousActionsMap.Values) { if (continuousActionEntry.Bitset == null || continuousActionEntry.Axis != axis) { continue; } bool match = true; for (int i = 0; i < state.m_NumBits; i++) { if (continuousActionEntry.Bitset.Get(i)) { if (!state.Get(i)) { match = false; break; } } } if (match) { matches.Add(new KeyValuePair <Bitset, ContinuousAction>(continuousActionEntry.Bitset, continuousActionEntry.Action)); } } if (matches.Count == 0) { return(null); } List <KeyValuePair <int, ContinuousAction> > matchResults = new List <KeyValuePair <int, ContinuousAction> >(); for (int i = 0; i < matches.Count; i++) { int bits = 0; for (int q = 0; q < matches[i].Key.m_NumBits; q++) { if (matches[i].Key.Get(q)) { bits++; } } var value = matches[i].Value; matchResults.Add(new KeyValuePair <int, ContinuousAction>(bits, value)); } matchResults.Sort(CompareKeys); int minBits = matchResults[0].Key; List <ContinuousAction> actions = new List <ContinuousAction>(); for (var i = 0; i < matchResults.Count; i++) { if (matchResults[i].Key >= minBits) { actions.Add(matchResults[i].Value); } } return(actions); }
public List <DiscreteAction> GetDiscreteBinding(Bitset state) { List <KeyValuePair <Bitset, DiscreteAction> > matches = new List <KeyValuePair <Bitset, DiscreteAction> >(); foreach (var discreteActionEntry in discreteActionsMap.Values) { bool match = true; for (int i = 0; i < state.m_NumBits; i++) { if (discreteActionEntry.Bitset.Get(i)) { if (!state.Get(i)) { match = false; break; } } } if (match) { matches.Add(new KeyValuePair <Bitset, DiscreteAction>(discreteActionEntry.Bitset, discreteActionEntry.Action)); } } List <KeyValuePair <int, DiscreteAction> > matchResults = new List <KeyValuePair <int, DiscreteAction> >(); for (int i = 0; i < matches.Count; i++) { int bits = 0; for (int q = 0; q < state.m_NumBits; q++) { if (matches[i].Key.Get(q)) { bits++; } } var value = matches[i].Value; matchResults.Add(new KeyValuePair <int, DiscreteAction>(bits, value)); } if (matches.Count == 0) { return(null); } matchResults.Sort(CompareKeys2); int minBits = matchResults[matches.Count - 1].Key; List <DiscreteAction> actions = new List <DiscreteAction>(); for (var i = 0; i < matches.Count; i++) { if (matchResults[i].Key >= minBits) { actions.Add(matchResults[i].Value); } } return(actions); }
public List<DiscreteAction> GetDiscreteBinding(Bitset state) { List<KeyValuePair<Bitset, DiscreteAction>> matches = new List<KeyValuePair<Bitset, DiscreteAction>>(); foreach (var maskActionPair in discreteActionsMap) { Bitset expectedState = maskActionPair.Value; bool match = true; for (int i = 0; i < state.m_NumBits; i++) { if (expectedState.Get(i)) { if (!state.Get(i)) { match = false; break; } } } if(match) { matches.Add(new KeyValuePair<Bitset, DiscreteAction>(maskActionPair.Value, maskActionPair.Key)); } } List<KeyValuePair<int, DiscreteAction>> matchResults = new List<KeyValuePair<int, DiscreteAction>>(); for (int i = 0; i < matches.Count; i++) { int bits = 0; for (int q = 0; q < state.m_NumBits; q++) { if (matches[i].Key.Get(q)) { bits++; } } var value = matches[i].Value; matchResults.Add(new KeyValuePair<int, DiscreteAction>(bits, value)); } if (matches.Count == 0) { return null; } matchResults.Sort(CompareKeys2); int minBits = matchResults[matches.Count - 1].Key; List<DiscreteAction> actions = new List<DiscreteAction>(); for (var i = 0; i < matches.Count; i++) { if (matchResults[i].Key >= minBits) { actions.Add(matchResults[i].Value); } } return actions; }
public List<ContinuousAction> GetContinuousBinding(int axis, Bitset state) { List<KeyValuePair<Bitset, ContinuousAction>> matches = new List<KeyValuePair<Bitset, ContinuousAction>>(); foreach (var continuousActionPair in continuousActionsMap) { if(continuousActionPair.Value.Value != axis) { continue; } Bitset expectedState = continuousActionPair.Value.Key; bool match = true; for (int i = 0; i < state.m_NumBits; i++) { if (expectedState.Get(i)) { if (!state.Get(i)) { match = false; break; } } } if (match) { matches.Add(new KeyValuePair<Bitset, ContinuousAction>(expectedState, continuousActionPair.Key)); } } if (matches.Count == 0) { return null; } List<KeyValuePair<int, ContinuousAction>> matchResults = new List<KeyValuePair<int, ContinuousAction>>(); for (int i = 0; i < matches.Count; i++) { int bits = 0; for (int q = 0; q < matches[i].Key.m_NumBits; q++) { if(matches[i].Key.Get(q)) { bits++; } } var value = matches[i].Value; matchResults.Add(new KeyValuePair<int, ContinuousAction>(bits, value)); } matchResults.Sort(CompareKeys); int minBits = matchResults[0].Key; List<ContinuousAction> actions = new List<ContinuousAction>(); for (var i = 0; i < matchResults.Count; i++) { if (matchResults[i].Key >= minBits) { actions.Add(matchResults[i].Value); } } return actions; }
public List <ContinuousAction> GetContinuousBinding(int axis, Bitset state) { List <KeyValuePair <Bitset, ContinuousAction> > matches = new List <KeyValuePair <Bitset, ContinuousAction> >(); foreach (var continuousActionPair in continuousActionsMap) { if (continuousActionPair.Value.Value != axis) { continue; } Bitset expectedState = continuousActionPair.Value.Key; bool match = true; for (int i = 0; i < state.m_NumBits; i++) { if (expectedState.Get(i)) { if (!state.Get(i)) { match = false; break; } } } if (match) { matches.Add(new KeyValuePair <Bitset, ContinuousAction>(expectedState, continuousActionPair.Key)); } } List <KeyValuePair <int, ContinuousAction> > matchResults = new List <KeyValuePair <int, ContinuousAction> >(); for (int i = 0; i < matches.Count; i++) { int bits = 0; for (int q = 0; q < state.m_NumBits; q++) { if (matches[i].Key.Get(q)) { bits++; } } var value = matches[i].Value; matchResults.Add(new KeyValuePair <int, ContinuousAction>(bits, value)); } if (matches.Count == 0) { return(null); } matchResults.Sort(CompareKeys); int minBits = matchResults[matches.Count - 1].Key; List <ContinuousAction> actions = new List <ContinuousAction>(); for (var i = 0; i < matches.Count; i++) { if (matchResults[i].Key >= minBits) { actions.Add(matches[i].Value); } } return(actions); }