示例#1
0
    private void ClientUpdateThisPlayer(Client client, PlayerObjectComponent playerObjectComponent)
    {
        var playerObjectState = playerObjectComponent.State;

        playerObjectState.Input = GetCurrentPlayersInput();

        var unscaledDeltaMouse = new Vector2(Input.GetAxis("Mouse X"), Input.GetAxis("Mouse Y"));
        var deltaMouse         = client.GetMouseSensitivityForZoomLevel() * unscaledDeltaMouse;

        playerObjectState.LookDirAngles = new Vector2(
            Mathf.Clamp(MathfExtensions.ToSignedAngleDegrees(playerObjectState.LookDirAngles.x - deltaMouse.y), -90, 90),
            Mathf.Repeat(playerObjectState.LookDirAngles.y + deltaMouse.x, 360)
            );

        if (Input.GetButtonDown("Reload") && playerObjectState.CanReload)
        {
            client.Reload(playerObjectComponent);
        }

        if (playerObjectState.Input.IsFirePressed)
        {
            var wasTriggerJustPulled = Input.GetButtonDown("Fire");

            if (
                playerObjectState.CanTryToFireWeapon &&
                (wasTriggerJustPulled || playerObjectState.CurrentWeapon.Definition.IsAutomatic)
                )
            {
                ClientPlayerTryToShoot(client, playerObjectComponent);
            }
        }

        if (Input.GetButtonDown("Throw Grenade") && playerObjectState.CanThrowGrenade)
        {
            ClientThrowGrenade(client, playerObjectState);
        }

        if (Input.GetButtonDown("Switch Grenade"))
        {
            ClientSwitchGrenadeType(client, playerObjectState);
        }
    }