Exemplo n.º 1
0
    public void ServerOnPlayerTriggerPulled(uint playerId, Ray shotRay)
    {
        // TODO: Make sure the player ID is correct.
        var playerObjectComponent = PlayerObjectSystem.Instance.FindPlayerObjectComponent(playerId);
        var connectionId          = GetConnectionIdByPlayerId(playerId);
        var secondsToRewind       = 50 * (ServerPeer.GetRoundTripTimeToClientInSeconds(connectionId.Value) ?? 0);

        PlayerObjectSystem.Instance.ServerShoot(this, playerObjectComponent, shotRay, secondsToRewind);

        ServerPeer.CallRpcOnAllClientsExcept("ClientOnTriggerPulled", connectionId.Value, ServerPeer.reliableSequencedChannelId, new
        {
            playerId,
            shotRay
        });

        if (OsFps.ShowHitScanShotsOnServer)
        {
            var serverShotRay = PlayerObjectSystem.Instance.GetShotRay(playerObjectComponent);
            WeaponSystem.Instance.CreateHitScanShotDebugLine(serverShotRay, OsFps.Instance.ClientShotRayMaterial);
        }
    }