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; } } } } }