public static void CreatePresetBinding(enum_BindingsName name, enum_PressStatus status, params KeyCode[] codeList) { KeyBindings binding = new KeyBindings(); binding.Name = name; binding.code = new List <KeyCode>(); for (int i = 0; i < codeList.Length; i++) { binding.code.Add(codeList[i]); } binding.status = status; binding.triggerEventVoid = null; binding.triggerEventBool = null; List_BindingList.Add(binding); }
public void AddBinding <T>(enum_BindingsName name, Action <bool> trigger) { KeyBindings binding = List_BindingList.Find(p => p.Name == name); if (binding.Name == enum_BindingsName.Invalid) { Debug.LogError("Shoulda Preset Binding At Awake"); return; } if (binding.status == enum_PressStatus.Both) { List_BindingList.Remove(binding); binding.triggerEventBool += trigger; List_BindingList.Add(binding); AddBindingRemoval(typeof(T), delegate() { int bindingIndex = List_BindingList.FindIndex(p => p.Name == name); KeyBindings temp = List_BindingList[bindingIndex]; List_BindingList.RemoveAt(bindingIndex); temp.Remove(trigger); List_BindingList.Add(temp); }); } }
void Update() { for (int i = 0; i < List_BindingList.Count; i++) { status = List_BindingList[i].status; keyCode = List_BindingList[i].code; for (int j = 0; j < keyCode.Count; j++) { triggerd = false; switch (status) { case enum_PressStatus.Down: if (Input.GetKeyDown(keyCode[j])) { List_BindingList[i].Trigger(); triggerd = true; } break; case enum_PressStatus.Up: if (Input.GetKeyUp(keyCode[j])) { List_BindingList[i].Trigger(); triggerd = true; } break; case enum_PressStatus.Press: if (Input.GetKey(keyCode[j])) { List_BindingList[i].Trigger(); triggerd = true; } break; case enum_PressStatus.Both: if (Input.GetKeyDown(keyCode[j])) { List_BindingList[i].Trigger(true); triggerd = true; } else if (Input.GetKeyUp(keyCode[j])) { List_BindingList[i].Trigger(false); triggerd = true; } break; default: Debug.LogError("How A None Status Binding Set?"); break; } keyName = List_BindingList[i].Name; switch (keyName) { case enum_BindingsName.Up: up = Input.GetKey(keyCode[j]) ? 1 : 0; break; case enum_BindingsName.Down: down = Input.GetKey(keyCode[j]) ? 1 : 0; break; case enum_BindingsName.Left: left = Input.GetKey(keyCode[j]) ? 1 : 0; break; case enum_BindingsName.Right: right = Input.GetKey(keyCode[j]) ? 1 : 0; break; } if (triggerd) { break; } } } m_MovementDelta = new Vector2(right - left, up - down); m_RotateDelta = new Vector2(Input.GetAxis("Mouse X"), Input.GetAxis("Mouse Y")); }