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