Exemple #1
0
 public VoiceListener()
 {
     _thread = new Thread(() =>
     {
         while (!_stopped)
         {
             uint size;
             try
             {
                 while (SteamUser.GetAvailableVoice(out size) == EVoiceResult.k_EVoiceResultOK && size > 1024)
                 {
                     byte[] buffer = new byte[size];
                     uint bytesWritten;
                     if (SteamUser.GetVoice(true, buffer, size, out bytesWritten) == EVoiceResult.k_EVoiceResultOK && bytesWritten > 0)
                     {
                         Data.Steam.SteamAPI.SendVoip(new VoipPacket(buffer));
                     }
                 }
             }
             catch (Exception e)
             {
                 Logger.Error(e);
             }
         }
     });
     _thread.Start();
 }
    public override VoicePacketInfo GetMicData(byte[] buffer, int bufferOffset, int dataCount, out int effectiveDataCount)
    {
        effectiveDataCount = 0;
        if (!IsEnabled)
        {
            return(VoicePacketInfo.InvalidPacket);
        }

        uint n;

        EVoiceResult eR = SteamUser.GetAvailableVoice(out n);

        effectiveDataCount = (int)n;

        isRecording = eR != EVoiceResult.k_EVoiceResultNotRecording;
        if (eR == EVoiceResult.k_EVoiceResultOK)
        {
            eR = SteamUser.GetVoice(true, buffer, (uint)Mathf.Min(effectiveDataCount, buffer.Length - bufferOffset, dataCount), out n);
            effectiveDataCount = (int)n;
            return(new VoicePacketInfo(Frequency, Channels, AudioDataTypeFlag.Int16, true));
        }
        else
        {
            effectiveDataCount = 0;
            return(VoicePacketInfo.InvalidPacket);
        }
    }
Exemple #3
0
 protected override void Update()
 {
     try
     {
         if (!IsLocal)
         {
             return;
         }
         if (GetComponentInParent <FirstPersonCharacter>() && WalkieTalkie.gameObject.activeInHierarchy)
         {
             if (recording)
             {
                 uint nBytesWritten;
                 uint nUncompressBytesWritten;
                 if (SteamUser.GetVoice(true, vc_cmp, 65536U, out nBytesWritten, false, null, 0U, out nUncompressBytesWritten, 0U) != EVoiceResult.k_EVoiceResultOK || nBytesWritten <= 0U)
                 {
                     return;
                 }
                 if (BoltNetwork.isServer)
                 {
                     ForwardVoiceData(vc_cmp, (int)nBytesWritten);
                 }
                 else
                 {
                     try
                     {
                         SendVoiceData(vc_cmp, (int)nBytesWritten, BoltNetwork.server);
                     }
                     catch (Exception e)
                     {
                         Logger.Exception("SendVoiceData failed!", e);
                         base.SendVoiceData(vc_cmp, (int)nBytesWritten, BoltNetwork.server);
                     }
                 }
             }
             else
             {
                 SteamUser.StartVoiceRecording();
                 SteamFriends.SetInGameVoiceSpeaking(SteamUser.GetSteamID(), true);
                 recording = true;
             }
         }
         else
         {
             if (!recording)
             {
                 return;
             }
             recording = false;
             SteamFriends.SetInGameVoiceSpeaking(SteamUser.GetSteamID(), false);
             SteamUser.StopVoiceRecording();
         }
     }
     catch (Exception e)
     {
         Logger.Exception("Failed to update CoopVoice", e);
     }
 }
Exemple #4
0
        public bool GetAvailableVoice(out byte[] bufferCompressed, out byte[] bufferUncompressed)
        {
            bufferCompressed   = null;
            bufferUncompressed = null;

            if (!SteamService.IsInitialized)
            {
                return(false);
            }

            if (!Recording)
            {
                return(false);
            }

            uint bytesAvailableCompressed   = 0;
            uint bytesAvailableUncompressed = 0;

            // find out if there's any recorded data
            EVoiceResult result = SteamUser.GetAvailableVoice(out bytesAvailableCompressed, out bytesAvailableUncompressed, 0);

            if (result == EVoiceResult.k_EVoiceResultNotRecording)
            {
                Recording = false;

                return(false);
            }

            // if there's recorded data
            if (result == EVoiceResult.k_EVoiceResultOK && bytesAvailableCompressed > 0)
            {
                // retrieve recorded data
                uint bytesWrittenCompressed   = 0;
                uint bytesWrittenUncompressed = 0;

                // we only care about the compressed data because that's what we'll network across
                result = SteamUser.GetVoice(true, _voiceBufferCompressed, (uint)_voiceBufferCompressed.Length, out bytesWrittenCompressed, false, null, 0, out bytesWrittenUncompressed, 0);

                // did we get it successfully?
                if (result == EVoiceResult.k_EVoiceResultOK && bytesWrittenCompressed > 0)
                {
                    result = SteamUser.DecompressVoice(_voiceBufferCompressed, bytesWrittenCompressed, _voiceBufferUncompressed, (uint)_voiceBufferUncompressed.Length, out bytesWrittenUncompressed, (uint)11025);

                    // was the decompress OK?
                    if (result == EVoiceResult.k_EVoiceResultOK && bytesWrittenUncompressed > 0)
                    {
                        bufferCompressed   = _voiceBufferCompressed.Take((int)bytesWrittenCompressed).ToArray();
                        bufferUncompressed = _voiceBufferUncompressed.Take((int)bytesWrittenUncompressed).ToArray();

                        return(true);
                    }
                }
            }

            return(false);
        }
Exemple #5
0
        void RecordingFunc()
        {
            var buf     = new byte[20000];
            var toSend  = new byte[20000];
            int counter = 0;

            while (true)
            {
                if (Program.CloseOnNext)
                {
                    return;
                }
                talkWaiter.WaitOne(recordingIntervalMs);
                if (!isRecording)
                {
                    counter = 0;
                    continue;
                }
                counter++;
                uint cbs;
                uint ubs;
                uint sendLength;
                if (SteamAPI.IsSteamRunning() && SteamUser.GetVoice(true, buf, (uint)buf.Length, out cbs) == EVoiceResult.k_EVoiceResultOK)
                {
                    lastPacket[mySteamID.m_SteamID] = DateTime.Now;

                    Array.Copy(buf, 0, toSend, 1, cbs);
                    sendLength = cbs + 1;

                    toSend[0] = counter == 1 ? (byte)ControlByteFlags.IsFirst : (byte)0;
                    if (testLoopback)
                    {
                        var data = new byte[sendLength];
                        Array.Copy(toSend, data, sendLength);
                        loopbackBufs.Enqueue(data);
                    }
                    else
                    {
                        foreach (var t in targetSteamIDs)
                        {
                            SteamNetworking.SendP2PPacket(t.Key, toSend, sendLength, EP2PSend.k_EP2PSendUnreliable);
                        }
                    }
                }
            }
        }
Exemple #6
0
 private void Update()
 {
     if (this.IsLocal)
     {
         if (base.GetComponentInParent <BoltEntity>().IsOwner() && this.WalkieTalkie.gameObject.activeInHierarchy)
         {
             if (this.recording)
             {
                 uint num;
                 uint num2;
                 if (SteamUser.GetVoice(true, this.vc_cmp, 65536u, out num, false, null, 0u, out num2, 0u) == EVoiceResult.k_EVoiceResultOK && num > 0u)
                 {
                     BoltEntity component = base.GetComponent <BoltEntity>();
                     if (component && component.isAttached)
                     {
                         if (BoltNetwork.isServer)
                         {
                             this.ForwardVoiceData(this.vc_cmp, (int)num);
                         }
                         else
                         {
                             this.SendVoiceData(this.vc_cmp, (int)num, BoltNetwork.server);
                         }
                     }
                 }
             }
             else
             {
                 SteamUser.StartVoiceRecording();
                 SteamFriends.SetInGameVoiceSpeaking(SteamUser.GetSteamID(), true);
                 this.recording = true;
             }
         }
         else if (this.recording)
         {
             this.recording = false;
             SteamFriends.SetInGameVoiceSpeaking(SteamUser.GetSteamID(), false);
             SteamUser.StopVoiceRecording();
         }
     }
 }
Exemple #7
0
        void Update()
        {
            uint size;

            try
            {
                while (SteamUser.GetAvailableVoice(out size) == EVoiceResult.k_EVoiceResultOK && size > 1024)
                {
                    byte[] buffer = new byte[size];
                    uint   bytesWritten;
                    if (SteamUser.GetVoice(true, buffer, size, out bytesWritten) == EVoiceResult.k_EVoiceResultOK && bytesWritten > 0)
                    {
                        Controllers.PlayerController.Instance._playerInfo.voip = buffer;
                    }
                }
            }
            catch (Exception e)
            {
                Logger.Error(e);
            }
        }
        private void Update()
        {
            var nSample = sampleRateMethod == SampleRateMethod.Optimal ? (int)SteamUser.GetVoiceOptimalSampleRate() : sampleRateMethod == SampleRateMethod.Native ? AudioSettings.outputSampleRate : (int)customSampleRate;

            if (nSample != sampleRate)
            {
                sampleRate = nSample;
                OutputSource.Stop();

                if (OutputSource.clip != null)
                {
                    Destroy(OutputSource.clip);
                }

                if (useAudioStreaming)
                {
                    OutputSource.clip = AudioClip.Create("VOICE", sampleRate * 2, 1, (int)sampleRate, true, OnAudioRead);
                    OutputSource.Play();
                }
                else
                {
                    OutputSource.clip = AudioClip.Create("VOICE", sampleRate * 2, 1, (int)sampleRate, false);
                }
            }

            if (!useAudioStreaming && OutputSource.loop)
            {
                OutputSource.loop = false;
                OutputSource.clip = AudioClip.Create("VOICE", sampleRate * 2, 1, (int)sampleRate, false);
            }
            else if (useAudioStreaming && !OutputSource.loop)
            {
                OutputSource.loop = true;
                OutputSource.clip = AudioClip.Create("VOICE", sampleRate * 2, 1, (int)sampleRate, true, OnAudioRead);
                OutputSource.Play();
            }

            if (!useAudioStreaming && clipBuffer.Count > 0 && !OutputSource.isPlaying)
            {
                OutputSource.clip = clipBuffer.Dequeue();
                OutputSource.Play();
            }

            packetCounter -= Time.unscaledDeltaTime;

            if (packetCounter <= 0)
            {
                packetCounter = bufferLength;

                if (isRecording)
                {
                    var result = SteamUser.GetAvailableVoice(out uint pcbCompressed);
                    switch (result)
                    {
                    case EVoiceResult.k_EVoiceResultOK:
                        //All is well check the compressed size to see if we have data and if so package it
                        byte[] buffer = new byte[pcbCompressed];
                        SteamUser.GetVoice(true, buffer, pcbCompressed, out uint bytesWriten);
                        if (bytesWriten > 0)
                        {
                            VoiceStream.Invoke(buffer);
                        }
                        break;

                    case EVoiceResult.k_EVoiceResultNoData:
                        //No data so do nothing
                        break;

                    case EVoiceResult.k_EVoiceResultNotInitialized:
                        //Not initalized ... report the error
                        Debug.LogError("The Steam Voice systemis not initalized and will be stoped.");
                        SteamUser.StopVoiceRecording();
                        break;

                    case EVoiceResult.k_EVoiceResultNotRecording:
                        //We are not recording but think we are
                        SteamUser.StartVoiceRecording();
                        break;

                    case EVoiceResult.k_EVoiceResultRestricted:
                        //User is chat restricted ... report this out and turn off recording.
                        StopedOnChatRestricted.Invoke();
                        SteamUser.StopVoiceRecording();
                        break;
                    }
                }
            }
        }
    public void RenderOnGUI()
    {
        GUILayout.BeginArea(new Rect(Screen.width - 200, 0, 200, Screen.height));
        GUILayout.Label("Variables:");
        GUILayout.Label("m_Ticket: " + m_Ticket);
        GUILayout.Label("m_pcbTicket: " + m_pcbTicket);
        GUILayout.Label("m_HAuthTicket: " + m_HAuthTicket);
        GUILayout.Label("m_VoiceLoopback: " + m_VoiceLoopback);
        GUILayout.EndArea();

        GUILayout.BeginVertical("box");
        m_ScrollPos = GUILayout.BeginScrollView(m_ScrollPos, GUILayout.Width(Screen.width - 215), GUILayout.Height(Screen.height - 33));

        GUILayout.Label("GetHSteamUser() : " + SteamUser.GetHSteamUser());

        GUILayout.Label("BLoggedOn() : " + SteamUser.BLoggedOn());

        GUILayout.Label("GetSteamID() : " + SteamUser.GetSteamID());

        //SteamUser.InitiateGameConnection() // N/A - Too Hard to test like this.

        //SteamUser.TerminateGameConnection() // ^

        //SteamUser.TrackAppUsageEvent() // Legacy function with no documentation

        {
            string Buffer;
            bool   ret = SteamUser.GetUserDataFolder(out Buffer, 260);
            GUILayout.Label("GetUserDataFolder(out Buffer, 260) : " + ret + " -- " + Buffer);
        }

        if (GUILayout.Button("StartVoiceRecording()"))
        {
            SteamUser.StartVoiceRecording();
            print("SteamUser.StartVoiceRecording()");
        }

        if (GUILayout.Button("StopVoiceRecording()"))
        {
            SteamUser.StopVoiceRecording();
            print("SteamUser.StopVoiceRecording()");
        }

        {
            uint         Compressed;
            EVoiceResult ret = SteamUser.GetAvailableVoice(out Compressed);
            GUILayout.Label("GetAvailableVoice(out Compressed) : " + ret + " -- " + Compressed);

            if (ret == EVoiceResult.k_EVoiceResultOK && Compressed > 0)
            {
                byte[] DestBuffer = new byte[1024];
                uint   BytesWritten;
                ret = SteamUser.GetVoice(true, DestBuffer, 1024, out BytesWritten);
                //print("SteamUser.GetVoice(true, DestBuffer, 1024, out BytesWritten) : " + ret + " -- " + BytesWritten);

                if (ret == EVoiceResult.k_EVoiceResultOK && BytesWritten > 0)
                {
                    byte[] DestBuffer2 = new byte[11025 * 2];
                    uint   BytesWritten2;
                    ret = SteamUser.DecompressVoice(DestBuffer, BytesWritten, DestBuffer2, (uint)DestBuffer2.Length, out BytesWritten2, 11025);
                    //print("SteamUser.DecompressVoice(DestBuffer, BytesWritten, DestBuffer2, (uint)DestBuffer2.Length, out BytesWritten2, 11025) - " + ret + " -- " + BytesWritten2);

                    if (ret == EVoiceResult.k_EVoiceResultOK && BytesWritten2 > 0)
                    {
                        AudioSource source;
                        if (!m_VoiceLoopback)
                        {
                            m_VoiceLoopback = new GameObject("Voice Loopback");
                            source          = m_VoiceLoopback.AddComponent <AudioSource>();
                            source.clip     = AudioClip.Create("Testing!", 11025, 1, 11025, false);
                        }
                        else
                        {
                            source = m_VoiceLoopback.GetComponent <AudioSource>();
                        }

                        float[] test = new float[11025];
                        for (int i = 0; i < test.Length; ++i)
                        {
                            test[i] = (short)(DestBuffer2[i * 2] | DestBuffer2[i * 2 + 1] << 8) / 32768.0f;
                        }
                        source.clip.SetData(test, 0);
                        source.Play();
                    }
                }
            }
        }

        GUILayout.Label("GetVoiceOptimalSampleRate() : " + SteamUser.GetVoiceOptimalSampleRate());

        {
            if (GUILayout.Button("GetAuthSessionTicket(Ticket, 1024, out pcbTicket)"))
            {
                m_Ticket      = new byte[1024];
                m_HAuthTicket = SteamUser.GetAuthSessionTicket(m_Ticket, 1024, out m_pcbTicket);
                print("SteamUser.GetAuthSessionTicket(Ticket, 1024, out pcbTicket) - " + m_HAuthTicket + " -- " + m_pcbTicket);
            }

            if (GUILayout.Button("BeginAuthSession(m_Ticket, (int)m_pcbTicket, SteamUser.GetSteamID())"))
            {
                if (m_HAuthTicket != HAuthTicket.Invalid && m_pcbTicket != 0)
                {
                    EBeginAuthSessionResult ret = SteamUser.BeginAuthSession(m_Ticket, (int)m_pcbTicket, SteamUser.GetSteamID());
                    print("SteamUser.BeginAuthSession(m_Ticket, " + (int)m_pcbTicket + ", " + SteamUser.GetSteamID() + ") - " + ret);
                }
                else
                {
                    print("Call GetAuthSessionTicket first!");
                }
            }
        }

        if (GUILayout.Button("EndAuthSession(SteamUser.GetSteamID())"))
        {
            SteamUser.EndAuthSession(SteamUser.GetSteamID());
            print("SteamUser.EndAuthSession(" + SteamUser.GetSteamID() + ")");
        }

        if (GUILayout.Button("CancelAuthTicket(m_HAuthTicket)"))
        {
            SteamUser.CancelAuthTicket(m_HAuthTicket);
            print("SteamUser.CancelAuthTicket(" + m_HAuthTicket + ")");
        }

        GUILayout.Label("UserHasLicenseForApp(SteamUser.GetSteamID(), SteamUtils.GetAppID()) : " + SteamUser.UserHasLicenseForApp(SteamUser.GetSteamID(), SteamUtils.GetAppID()));

        GUILayout.Label("BIsBehindNAT() : " + SteamUser.BIsBehindNAT());

        if (GUILayout.Button("AdvertiseGame(CSteamID.NonSteamGS, TestConstants.k_IpAdress127_0_0_1, TestConstants.k_Port27015)"))
        {
            SteamUser.AdvertiseGame(CSteamID.NonSteamGS, TestConstants.k_IpAdress127_0_0_1, TestConstants.k_Port27015);
            print("SteamUser.AdvertiseGame(" + CSteamID.NonSteamGS + ", " + TestConstants.k_IpAdress127_0_0_1 + ", " + TestConstants.k_Port27015 + ")");
        }

        if (GUILayout.Button("RequestEncryptedAppTicket(k_unSecretData, sizeof(uint))"))
        {
            byte[]         k_unSecretData = System.BitConverter.GetBytes(0x5444);
            SteamAPICall_t handle         = SteamUser.RequestEncryptedAppTicket(k_unSecretData, sizeof(uint));
            OnEncryptedAppTicketResponseCallResult.Set(handle);
            print("SteamUser.RequestEncryptedAppTicket(" + k_unSecretData + ", " + sizeof(uint) + ") : " + handle);
        }

        if (GUILayout.Button("GetEncryptedAppTicket(rgubTicket, 1024, out cubTicket)"))
        {
            byte[] rgubTicket = new byte[1024];
            uint   cubTicket;
            bool   ret = SteamUser.GetEncryptedAppTicket(rgubTicket, 1024, out cubTicket);
            print("SteamUser.GetEncryptedAppTicket(" + rgubTicket + ", " + 1024 + ", " + "out cubTicket" + ") : " + ret + " -- " + cubTicket);
        }

        // SpaceWar does not have trading cards, so this function will only ever return 0 and produce an annoying warning.
        if (GUILayout.Button("GetGameBadgeLevel(1, false)"))
        {
            int ret = SteamUser.GetGameBadgeLevel(1, false);
            print("SteamUser.GetGameBadgeLevel(" + 1 + ", " + false + ") : " + ret);
        }

        GUILayout.Label("GetPlayerSteamLevel() : " + SteamUser.GetPlayerSteamLevel());

        if (GUILayout.Button("RequestStoreAuthURL(\"https://steampowered.com\")"))
        {
            SteamAPICall_t handle = SteamUser.RequestStoreAuthURL("https://steampowered.com");
            OnStoreAuthURLResponseCallResult.Set(handle);
            print("SteamUser.RequestStoreAuthURL(" + "\"https://steampowered.com\"" + ") : " + handle);
        }

        GUILayout.Label("BIsPhoneVerified() : " + SteamUser.BIsPhoneVerified());

        GUILayout.Label("BIsTwoFactorEnabled() : " + SteamUser.BIsTwoFactorEnabled());

        GUILayout.Label("BIsPhoneIdentifying() : " + SteamUser.BIsPhoneIdentifying());

        GUILayout.Label("BIsPhoneRequiringVerification() : " + SteamUser.BIsPhoneRequiringVerification());

        if (GUILayout.Button("GetMarketEligibility()"))
        {
            SteamAPICall_t handle = SteamUser.GetMarketEligibility();
            OnMarketEligibilityResponseCallResult.Set(handle);
            print("SteamUser.GetMarketEligibility() : " + handle);
        }

        GUILayout.EndScrollView();
        GUILayout.EndVertical();
    }
    public void RenderOnGUI()
    {
        GUILayout.BeginArea(new Rect(Screen.width - 200, 0, 200, Screen.height));
        GUILayout.Label("m_HAuthTicket: " + m_HAuthTicket);
        GUILayout.Label("m_pcbTicket: " + m_pcbTicket);
        GUILayout.EndArea();

        GUILayout.Label("GetHSteamUser() : " + SteamUser.GetHSteamUser());
        GUILayout.Label("BLoggedOn() : " + SteamUser.BLoggedOn());
        GUILayout.Label("GetSteamID() : " + SteamUser.GetSteamID());

        //GUILayout.Label("InitiateGameConnection() : " + SteamUser.InitiateGameConnection()); // N/A - Too Hard to test like this.
        //GUILayout.Label("TerminateGameConnection() : " + SteamUser.TerminateGameConnection()); // ^
        //GUILayout.Label("TrackAppUsageEvent() : " + SteamUser.TrackAppUsageEvent()); // Legacy function with no documentation

        {
            string Buffer;
            bool   ret = SteamUser.GetUserDataFolder(out Buffer, 260);
            GUILayout.Label("GetUserDataFolder(out Buffer, 260) : " + ret + " -- " + Buffer);
        }

        if (GUILayout.Button("StartVoiceRecording()"))
        {
            SteamUser.StartVoiceRecording();
            print("SteamUser.StartVoiceRecording()");
        }

        if (GUILayout.Button("StopVoiceRecording()"))
        {
            SteamUser.StopVoiceRecording();
            print("SteamUser.StopVoiceRecording()");
        }

        {
            uint         Compressed;
            uint         Uncompressed;
            EVoiceResult ret = SteamUser.GetAvailableVoice(out Compressed, out Uncompressed, 11025);
            GUILayout.Label("GetAvailableVoice(out Compressed, out Uncompressed, 11025) : " + ret + " -- " + Compressed + " -- " + Uncompressed);

            if (ret == EVoiceResult.k_EVoiceResultOK && Compressed > 0)
            {
                byte[] DestBuffer             = new byte[1024];
                byte[] UncompressedDestBuffer = new byte[1024];
                uint   BytesWritten;
                uint   UncompressedBytesWritten;
                ret = SteamUser.GetVoice(true, DestBuffer, 1024, out BytesWritten, true, UncompressedDestBuffer, (uint)DestBuffer.Length, out UncompressedBytesWritten, 11025);
                //print("SteamUser.GetVoice(true, DestBuffer, 1024, out BytesWritten, true, UncompressedDestBuffer, (uint)DestBuffer.Length, out UncompressedBytesWritten, 11025) : " + ret + " -- " + BytesWritten + " -- " + UncompressedBytesWritten);

                if (ret == EVoiceResult.k_EVoiceResultOK && BytesWritten > 0)
                {
                    byte[] DestBuffer2 = new byte[11025 * 2];
                    uint   BytesWritten2;
                    ret = SteamUser.DecompressVoice(DestBuffer, BytesWritten, DestBuffer2, (uint)DestBuffer2.Length, out BytesWritten2, 11025);
                    //print("SteamUser.DecompressVoice(DestBuffer, BytesWritten, DestBuffer2, (uint)DestBuffer2.Length, out BytesWritten2, 11025) - " + ret + " -- " + BytesWritten2);

                    if (ret == EVoiceResult.k_EVoiceResultOK && BytesWritten2 > 0)
                    {
                        AudioSource source;
                        if (!m_VoiceLoopback)
                        {
                            m_VoiceLoopback = new GameObject("Voice Loopback");
                            source          = m_VoiceLoopback.AddComponent <AudioSource>();
                            source.clip     = AudioClip.Create("Testing!", 11025, 1, 11025, false, false);
                        }
                        else
                        {
                            source = m_VoiceLoopback.GetComponent <AudioSource>();
                        }

                        float[] test = new float[11025];
                        for (int i = 0; i < test.Length; ++i)
                        {
                            test[i] = (short)(DestBuffer2[i * 2] | DestBuffer2[i * 2 + 1] << 8) / 32768.0f;
                        }
                        source.clip.SetData(test, 0);
                        source.Play();
                    }
                }
            }
        }

        GUILayout.Label("GetVoiceOptimalSampleRate() : " + SteamUser.GetVoiceOptimalSampleRate());

        {
            if (GUILayout.Button("GetAuthSessionTicket(Ticket, 1024, out pcbTicket)"))
            {
                m_Ticket      = new byte[1024];
                m_HAuthTicket = SteamUser.GetAuthSessionTicket(m_Ticket, 1024, out m_pcbTicket);
                print("SteamUser.GetAuthSessionTicket(Ticket, 1024, out pcbTicket) - " + m_HAuthTicket + " -- " + m_pcbTicket);
            }

            if (GUILayout.Button("BeginAuthSession(m_Ticket, (int)m_pcbTicket, SteamUser.GetSteamID())"))
            {
                if (m_HAuthTicket != HAuthTicket.Invalid && m_pcbTicket != 0)
                {
                    EBeginAuthSessionResult ret = SteamUser.BeginAuthSession(m_Ticket, (int)m_pcbTicket, SteamUser.GetSteamID());
                    print("SteamUser.BeginAuthSession(m_Ticket, " + (int)m_pcbTicket + ", " + SteamUser.GetSteamID() + ") - " + ret);
                }
                else
                {
                    print("Call GetAuthSessionTicket first!");
                }
            }
        }

        if (GUILayout.Button("EndAuthSession(SteamUser.GetSteamID())"))
        {
            SteamUser.EndAuthSession(SteamUser.GetSteamID());
            print("SteamUser.EndAuthSession(" + SteamUser.GetSteamID() + ")");
        }

        if (GUILayout.Button("CancelAuthTicket(m_HAuthTicket)"))
        {
            SteamUser.CancelAuthTicket(m_HAuthTicket);
            print("SteamUser.CancelAuthTicket(" + m_HAuthTicket + ")");
        }

        GUILayout.Label("UserHasLicenseForApp(SteamUser.GetSteamID(), SteamUtils.GetAppID()) : " + SteamUser.UserHasLicenseForApp(SteamUser.GetSteamID(), SteamUtils.GetAppID()));
        GUILayout.Label("BIsBehindNAT() : " + SteamUser.BIsBehindNAT());

        if (GUILayout.Button("AdvertiseGame(2, 127.0.0.1, 27015)"))
        {
            SteamUser.AdvertiseGame(CSteamID.NonSteamGS, 2130706433, 27015);
            print("SteamUser.AdvertiseGame(2, 2130706433, 27015)");
        }

        if (GUILayout.Button("RequestEncryptedAppTicket()"))
        {
            byte[]         k_unSecretData = System.BitConverter.GetBytes(0x5444);
            SteamAPICall_t handle         = SteamUser.RequestEncryptedAppTicket(k_unSecretData, sizeof(uint));
            OnEncryptedAppTicketResponseCallResult.Set(handle);
            print("SteamUser.RequestEncryptedAppTicket(k_unSecretData, " + sizeof(uint) + ") - " + handle);
        }

        if (GUILayout.Button("GetEncryptedAppTicket()"))
        {
            byte[] rgubTicket = new byte[1024];
            uint   cubTicket;
            bool   ret = SteamUser.GetEncryptedAppTicket(rgubTicket, 1024, out cubTicket);
            print("SteamUser.GetEncryptedAppTicket() - " + ret + " -- " + cubTicket);
        }

        //GUILayout.Label("GetGameBadgeLevel(1, false) : " + SteamUser.GetGameBadgeLevel(1, false)); // SpaceWar does not have trading cards, so this function will only ever return 0 and produce an annoying warning.
        GUILayout.Label("GetPlayerSteamLevel() : " + SteamUser.GetPlayerSteamLevel());

        if (GUILayout.Button("RequestStoreAuthURL(\"https://steampowered.com\")"))
        {
            SteamAPICall_t handle = SteamUser.RequestStoreAuthURL("https://steampowered.com");
            OnStoreAuthURLResponseCallResult.Set(handle);
            print("SteamUser.RequestStoreAuthURL(\"https://steampowered.com\") - " + handle);
        }

#if _PS3
        //GUILayout.Label("LogOn() : " + SteamUser.LogOn());
        //GUILayout.Label("LogOnAndLinkSteamAccountToPSN : " + SteamUser.LogOnAndLinkSteamAccountToPSN());
        //GUILayout.Label("LogOnAndCreateNewSteamAccountIfNeeded : " + SteamUser.LogOnAndCreateNewSteamAccountIfNeeded());
        //GUILayout.Label("GetConsoleSteamID : " + SteamUser.GetConsoleSteamID());
#endif
    }
Exemple #11
0
 private void Update()
 {
     if (base.channel.isOwner)
     {
         if (OptionsSettings.chatVoiceOut && Input.GetKey(ControlsSettings.voice) && !base.player.life.isDead)
         {
             if (!this.isTalking)
             {
                 this.isTalking    = true;
                 this.wasRecording = true;
                 this.lastTalk     = Time.realtimeSinceStartup;
                 if (this.hasWalkieTalkie)
                 {
                     this.audioSource.PlayOneShot(Resources.Load <AudioClip>("Sounds/General/Radio"), 0.75f);
                 }
                 SteamUser.StartVoiceRecording();
                 SteamFriends.SetInGameVoiceSpeaking(Provider.user, this.isTalking);
                 if (this.onTalked != null)
                 {
                     this.onTalked(this.isTalking);
                 }
             }
         }
         else if ((!OptionsSettings.chatVoiceOut || !Input.GetKey(ControlsSettings.voice) || base.player.life.isDead) && this.isTalking)
         {
             this.isTalking = false;
             if (this.hasWalkieTalkie)
             {
                 this.audioSource.PlayOneShot(Resources.Load <AudioClip>("Sounds/General/Radio"), 0.75f);
             }
             SteamUser.StopVoiceRecording();
             SteamFriends.SetInGameVoiceSpeaking(Provider.user, this.isTalking);
             if (this.onTalked != null)
             {
                 this.onTalked(this.isTalking);
             }
         }
         if (this.wasRecording && (double)(Time.realtimeSinceStartup - this.lastTalk) > 0.1)
         {
             this.wasRecording = this.isTalking;
             this.lastTalk     = Time.realtimeSinceStartup;
             uint num;
             uint num2;
             if (SteamUser.GetAvailableVoice(ref num, ref num2, 0u) == null && num > 0u)
             {
                 SteamUser.GetVoice(true, this.bufferSend, num, ref num, false, null, num2, ref num2, PlayerVoice.FREQUENCY);
                 if (num > 0u)
                 {
                     for (int i = (int)(num + 4u); i > 4; i--)
                     {
                         this.bufferSend[i] = this.bufferSend[i - 5];
                     }
                     this.bufferSend[4] = ((!this.hasWalkieTalkie) ? 0 : 1);
                     if (this.hasWalkieTalkie)
                     {
                         int    call = base.channel.getCall("tellVoice");
                         int    size;
                         byte[] packet;
                         base.channel.getPacketVoice(ESteamPacket.UPDATE_VOICE, call, out size, out packet, this.bufferSend, (int)num);
                         for (int j = 0; j < Provider.clients.Count; j++)
                         {
                             if (Provider.clients[j].playerID.steamID != Provider.client && Provider.clients[j].player != null && Provider.clients[j].player.voice.canHearRadio && Provider.clients[j].player.quests.radioFrequency == base.player.quests.radioFrequency)
                             {
                                 Provider.send(Provider.clients[j].playerID.steamID, ESteamPacket.UPDATE_VOICE, packet, size, base.channel.id);
                             }
                         }
                     }
                     else
                     {
                         base.channel.sendVoice("tellVoice", ESteamCall.PEERS, base.transform.position, EffectManager.MEDIUM, ESteamPacket.UPDATE_VOICE, this.bufferSend, (int)num);
                     }
                 }
             }
         }
     }
     else if (!Provider.isServer)
     {
         if (this.usingWalkieTalkie)
         {
             this.audioSource.spatialBlend = 0f;
         }
         else
         {
             this.audioSource.spatialBlend = 1f;
         }
         if (this.isPlaying)
         {
             if (this.lastPlay > this.audioSource.time)
             {
                 this.played += this.audioSource.clip.length;
             }
             this.lastPlay = this.audioSource.time;
             if (this.played + this.audioSource.time >= this.playback)
             {
                 this.isPlaying = false;
                 this.audioSource.Stop();
                 if (this.usingWalkieTalkie)
                 {
                     this.audioSource.PlayOneShot(Resources.Load <AudioClip>("Sounds/General/Radio"), 0.75f);
                 }
                 this.audioSource.time = 0f;
                 this.write            = 0;
                 this.playback         = 0f;
                 this.played           = 0f;
                 this.lastPlay         = 0f;
                 this.needsPlay        = false;
                 this.isTalking        = false;
                 if (this.onTalked != null)
                 {
                     this.onTalked(this.isTalking);
                 }
             }
         }
         else if (this.needsPlay)
         {
             this.delayPlay -= Time.deltaTime;
             if (this.delayPlay <= 0f)
             {
                 this.isPlaying = true;
                 this.audioSource.Play();
                 if (this.usingWalkieTalkie)
                 {
                     this.audioSource.PlayOneShot(Resources.Load <AudioClip>("Sounds/General/Radio"), 0.75f);
                 }
                 this.isTalking = true;
                 if (this.onTalked != null)
                 {
                     this.onTalked(this.isTalking);
                 }
             }
         }
     }
 }