public void Update(WeaponSystem ws)
		{
			NextWeapon.Update();
			PrevWeapon.Update();
			DropWeapon.Update();

			if (NextWeapon.isDown)
			{
				ws.WeaponHands[Hand].NextWeapon();
			}
			else if (PrevWeapon.isDown)
			{
				ws.WeaponHands[Hand].PrevWeapon();
			}
			else if (DropWeapon.isDown)
			{
				ws.WeaponHands[Hand].DropWeapon(ws.WeaponHands[Hand].CurrentWeapon);
			}
			else
			{
				for (int slot = SelectWeaponSlot.Length - 1; slot >= 0; slot--)
				{
					SelectWeaponSlot[slot].Update();
					if (SelectWeaponSlot[slot].isDown)
					{
						ws.WeaponHands[Hand].SetWeapon(slot);
						return;
					}
				}

				//check all defined fire modes
				for (int fMode = Fire.Length - 1; fMode >= 0; fMode--)
				{
					Fire[fMode].Update();
					if (Fire[fMode].isDown)
					{
						ws.FirePressed(Hand,fMode);
					}
					if (Fire[fMode].isUp)
					{
						ws.FireReleased(Hand,fMode);
					}
					if (Fire[fMode].isPressed)
					{
						ws.ConstantFire(Hand,fMode);
						if (FireModeExclusive)
						{
							//if only one firemode is allowed at a time, break here.
							//Higher numbered firemodes will have priority over lower ones.
							return;
						}
					}
				}
			}
		}