public void CloseInterface()
        {
            _client = null;
            if (_robotConnectionEstablished)
            {
                foreach (var mod in _modalitySamplers)
                {
                    Debug.Log($"Closing {mod.Key}");
                    mod.Value.StopModality();
                }

                _modalitySamplers = new Dictionary <string, ModalitySampler>();
            }

            if (_robotConnectionEstablished)
            {
                foreach (var mod in _modalitySetters)
                {
                    Debug.Log($"Closing {mod.Key}");
                    mod.Value.StopModality();
                }

                _modalitySetters = new Dictionary <string, ModalitySetter>();
            }

            if (!_robotConnectionEstablished)
            {
                return;
            }

            Debug.Log("Close interface triggered");
            AnimusClient.AnimusClient.CloseClientInterface();
            _robotConnectionEstablished = false;
        }
        private void Start()
        {
            loginSuccess         = false;
            loginResultAvailable = false;
            loginReturn          = "";

            searchResultsAvailable = false;
            searchSuccess          = false;
            searchReturn           = "";

            lastSearch = DateTime.MinValue;
            _robotConnectionEstablished = false;

            Debug.Log(AnimusClient.AnimusClient.Version());

            _client = null;

            aparams            = new AudioParams();
            aparams.Channels   = 1;
            aparams.SampleRate = 16000;
            if (Application.platform == RuntimePlatform.WindowsEditor || Application.platform == RuntimePlatform.WindowsPlayer)
            {
                aparams.Backends.Clear();
                aparams.Backends.Add("winmm");
                aparams.TransmitRate = 10;
                aparams.SizeInFrames = false;
            }
            else if (Application.platform == RuntimePlatform.Android)
            {
                aparams.Backends.Clear();
                aparams.Backends.Add("opensl");
                aparams.TransmitRate = 10;
                aparams.SizeInFrames = false;
            }
            else if (Application.platform == RuntimePlatform.LinuxEditor || Application.platform == RuntimePlatform.LinuxPlayer)
            {
                aparams.Backends.Clear();
                aparams.Backends.Add("alsa");
                aparams.TransmitRate = 10;
                aparams.SizeInFrames = false;
            }

            var logdir = $"com.{Application.companyName}.{Application.productName}";

            var setupClient = new SetupClientProto();

            setupClient.AudioParams    = aparams;
            setupClient.LatencyLogging = true;
            setupClient.LogDir         = logdir;

            Debug.Log($"Logging to {logdir}");
            var setupReply = AnimusClient.AnimusClient.SetupClient(setupClient);

            if (!setupReply.Success)
            {
                Debug.Log(setupReply.Description);
            }
            else
            {
                Debug.Log("Client Setup completed successfully");
            }

#if PLATFORM_ANDROID
            if (!Permission.HasUserAuthorizedPermission(Permission.Microphone))
            {
                Permission.RequestUserPermission(Permission.Microphone);
            }
            if (!Permission.HasUserAuthorizedPermission(Permission.ExternalStorageRead))
            {
                Permission.RequestUserPermission(Permission.ExternalStorageRead);
            }

            if (!Permission.HasUserAuthorizedPermission(Permission.ExternalStorageWrite))
            {
                Permission.RequestUserPermission(Permission.ExternalStorageWrite);
            }
#endif
        }
 public void SetClientClass(UnityAnimusClient clientclass)
 {
     _client = clientclass;
 }