//public Queue<AudioSource> aSQueue1 = new Queue <AudioSource> ();

    public Queue <AudioSource> CreateTempAudioSourcePoolQueue(AudioReferanceType aRT, string nameOfGOAS, int amount)
    {
        AudioSource tempASInstance = null;
        GameObject  tempParent     = new GameObject();

        tempParent.name = "QueueAudioSources";
        //tempParent.transform.SetParent (tempASInstance.transform);
        //tempParent.transform.SetAsLastSibling ();

        Queue <AudioSource> aSQueue = new Queue <AudioSource> ();

        switch (aRT)
        {
        case AudioReferanceType._MUSIC:

            for (int i = 0; i < amount; i++)
            {
                tempASInstance = Instantiate(_MusicAudioSourceDictionary[nameOfGOAS]).GetComponent <AudioSource>();
                tempASInstance.transform.parent = tempParent.transform;

                aSQueue.Enqueue(tempASInstance);
            }

            break;

        case AudioReferanceType._AMBIENT:

            for (int i = 0; i < amount; i++)
            {
                tempASInstance = Instantiate(_AmbientAudioSourceDictionary [nameOfGOAS]).GetComponent <AudioSource>();
                tempASInstance.transform.parent = tempParent.transform;
                aSQueue.Enqueue(tempASInstance);
            }

            break;

        case AudioReferanceType._DIRECT:

            for (int i = 0; i < amount; i++)
            {
                tempASInstance = Instantiate(_DirectAudioSourceDictionary[nameOfGOAS]).GetComponent <AudioSource>();
                tempASInstance.transform.parent = tempParent.transform;
                aSQueue.Enqueue(tempASInstance);
            }

            break;

        case AudioReferanceType._INTERFACE:

            for (int i = 0; i < amount; i++)
            {
                tempASInstance = Instantiate(_InterfaceAudioSourceDictionary[nameOfGOAS]).GetComponent <AudioSource>();
                tempASInstance.transform.parent = tempParent.transform;
                aSQueue.Enqueue(tempASInstance);
            }

            break;
        }
        return(aSQueue);
    }
    public bool CheckIfAudioPlaying(AudioReferanceType audioType, string nameOfASGO)
    {
        switch (audioType)
        {
        case AudioReferanceType._MUSIC:
            if (_MusicAudioSourceDictionary [nameOfASGO].isPlaying)
            {
                return(true);
            }
            else
            {
                return(false);
            }

        case AudioReferanceType._AMBIENT:
            if (_AmbientAudioSourceDictionary [nameOfASGO].isPlaying)
            {
                return(true);
            }
            else
            {
                return(false);
            }

        case AudioReferanceType._DIRECT:
            if (_DirectAudioSourceDictionary [nameOfASGO].isPlaying)
            {
                return(true);
            }
            else
            {
                return(false);
            }

        case AudioReferanceType._INTERFACE:
            if (_InterfaceAudioSourceDictionary [nameOfASGO].isPlaying)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
        return(false);
    }
    public AudioSource GetAudioSourceReferance(AudioReferanceType audioType, string nameOfASGO)
    {
        switch (audioType)
        {
        case AudioReferanceType._MUSIC:
            return(_MusicAudioSourceDictionary [nameOfASGO]);

        //	break;
        case AudioReferanceType._AMBIENT:
            return(_AmbientAudioSourceDictionary [nameOfASGO]);

        //	break;
        case AudioReferanceType._DIRECT:
            return(_DirectAudioSourceDictionary [nameOfASGO]);

        //	break;
        case AudioReferanceType._INTERFACE:
            return(_InterfaceAudioSourceDictionary [nameOfASGO]);

            //	break;
        }
        return(null);
    }
    /// <summary>
    /// Stop specific AudioSources from playing or leave nameOfAS empty to stop all AS under specific AudioReferenceType
    /// </summary>
    /// <returns><c>true</c>,not working yet, <c>false</c> otherwise.</returns>
    /// <param name="audioType">Audio type.</param>
    /// <param name="nameOfASGO">Name of specifit AudioSource or leave empty to turn of all under ReferenceType</param>
    public bool StopAudioPlaying(AudioReferanceType audioType, string nameOfASGO = "")
    {
        AudioSource tempAS;

        switch (audioType)
        {
        case AudioReferanceType._MUSIC:

            if (nameOfASGO == "")
            {
                foreach (AudioSource aS in _MusicAudioSourceDictionary.Values)
                {
                    aS.Stop();
                }
                return(true);
            }

            tempAS = _MusicAudioSourceDictionary [nameOfASGO];;

            tempAS.Stop();

            break;

        case AudioReferanceType._AMBIENT:

            if (nameOfASGO == "")
            {
                foreach (AudioSource aS in _AmbientAudioSourceDictionary.Values)
                {
                    aS.Stop();
                }
                return(true);
            }

            tempAS = _AmbientAudioSourceDictionary [nameOfASGO];;

            tempAS.Stop();

            break;

        case AudioReferanceType._DIRECT:

            if (nameOfASGO == "")
            {
                foreach (AudioSource aS in _DirectAudioSourceDictionary.Values)
                {
                    aS.Stop();
                }
                return(true);
            }

            tempAS = _DirectAudioSourceDictionary [nameOfASGO];

            tempAS.Stop();

            break;

        case AudioReferanceType._INTERFACE:

            if (nameOfASGO == "")
            {
                foreach (AudioSource aS in _InterfaceAudioSourceDictionary.Values)
                {
                    aS.Stop();
                }
                return(true);
            }

            tempAS = _InterfaceAudioSourceDictionary [nameOfASGO];;

            tempAS.Stop();

            break;
        }
        return(false);
    }
    public GameObject MakeCopyOfAudioSourceGO(AudioReferanceType aRT, string nameOfGOAS, Transform parent = null)
    {
        GameObject tempGOASInstance = null;

        GameObject temp;
        int        count = 0;

        switch (aRT)
        {
        case AudioReferanceType._MUSIC:


//			if(_MusicAudioSourceDictionary[nameOfGOAS].transform.IsChildOf(transform)){
//				tempGOASInstance = _MusicAudioSourceDictionary [nameOfGOAS].gameObject;
//				break;
//			}
            temp             = _MusicAudioSourceDictionary [nameOfGOAS].gameObject;
            tempGOASInstance = Instantiate(temp, temp.transform.parent).gameObject;


            foreach (Transform aSD in _MusicAudioSourceParent)
            {
                if (aSD.name.Contains(nameOfGOAS))
                {
                    ++count;
                }
            }
            _MusicAudioSourceDictionary.Add(nameOfGOAS + count, tempGOASInstance.GetComponent <AudioSource> ());

            break;

        case AudioReferanceType._AMBIENT:

//			if(_AmbientAudioSourceDictionary[nameOfGOAS].transform.IsChildOf(transform)){
//				tempGOASInstance = _AmbientAudioSourceDictionary [nameOfGOAS].gameObject;
//				break;
//			}

            temp             = _AmbientAudioSourceDictionary[nameOfGOAS].gameObject;
            tempGOASInstance = Instantiate(temp, temp.transform.parent).gameObject;


            foreach (Transform aSD in _AmbientAudioSourceParent)
            {
                if (aSD.name.Contains(nameOfGOAS))
                {
                    ++count;
                }
            }
            _AmbientAudioSourceDictionary.Add(nameOfGOAS + count, tempGOASInstance.GetComponent <AudioSource> ());
//			_AmbientAudioSourceDictionary.Add (nameOfGOAS, tempGOASInstance.GetComponent<AudioSource> ());
//			tempGOASInstance = Instantiate(_AmbientAudioSourceDictionary[nameOfGOAS],).gameObject;
            break;

        case AudioReferanceType._DIRECT:

//			if(_DirectAudioSourceDictionary[nameOfGOAS].transform.IsChildOf(transform)){
//				tempGOASInstance = _DirectAudioSourceDictionary [nameOfGOAS].gameObject;
//				break;
//			}
            temp             = _DirectAudioSourceDictionary[nameOfGOAS].gameObject;
            tempGOASInstance = Instantiate(temp, temp.transform.parent).gameObject;


            foreach (Transform aSD in _DirectAudioSourceParent)
            {
                if (aSD.name.Contains(nameOfGOAS))
                {
                    ++count;
                }
            }
            _DirectAudioSourceDictionary.Add(nameOfGOAS + count, tempGOASInstance.GetComponent <AudioSource> ());
//			_DirectAudioSourceDictionary.Add (nameOfGOAS, tempGOASInstance.GetComponent<AudioSource> ());
            //tempGOASInstance = Instantiate(_DirectAudioSourceDictionary[nameOfGOAS]).gameObject;
            break;

        case AudioReferanceType._INTERFACE:

//			if(_InterfaceAudioSourceDictionary[nameOfGOAS].transform.IsChildOf(transform)){
//				tempGOASInstance = _InterfaceAudioSourceDictionary [nameOfGOAS].gameObject;
//				break;
//			}

            temp             = _InterfaceAudioSourceDictionary[nameOfGOAS].gameObject;
            tempGOASInstance = Instantiate(temp, temp.transform.parent).gameObject;
//			_InterfaceAudioSourceDictionary.Add (nameOfGOAS, tempGOASInstance.GetComponent<AudioSource> ());

            foreach (Transform aSD in _InterfaceAudioSourceParent)
            {
                if (aSD.name.Contains(nameOfGOAS))
                {
                    ++count;
                }
            }
            _InterfaceAudioSourceDictionary.Add(nameOfGOAS + count, tempGOASInstance.GetComponent <AudioSource> ());
//			tempGOASInstance = Instantiate(_InterfaceAudioSourceDictionary[nameOfGOAS]).gameObject;
            break;
        }
        return(tempGOASInstance);
    }