public void PlaySound(SoundDatum data) { if (data == null || !data.IsValid()) { return; } AudioSource source = GetAudioSource(); SetupAudioSource(source, data); source.Play(); if (data.Is3d) { StartCoroutine(Track3dAttachment_Coroutine(source, data.Attachment3d.Attachment)); } else { StartCoroutine(TrackSoundCompletion_Coroutine(source)); } }