/**
   * Returns sound source from "sfx" pool configured for specified sound, position and gain
   *
   * @param uri Sound uri
   * @param pos Sound source position
   * @param gain Sound source gain
   * @return Sound source object, or null if there is no free sound sources in effects pool
   */
  public static SoundSource source(AssetUri uri, Vector3d pos, float gain, int priority) {
    SoundSource source = source(uri, priority);
    if (source == null) {
      return null;
    }

    return (pos != null ? source.setPosition(pos).setAbsolute(true) : source).setGain(gain);
  }
  /**
   * Returns sound source from "sfx" pool configured for specified sound, position and gain
   *
   * @param sound Sound object
   * @param pos Sound source position
   * @param gain Sound source gain
   * @return Sound source object, or null if there is no free sound sources in effects pool
   */
  public static SoundSource source(Sound sound, Vector3d pos, float gain, int priority) {
    SoundSource source = source(sound, priority);

    if (source == null) {
      return null;
    }

    if (pos != null) {
      if (!getInstance().checkDistance(pos)) {
        return null;
      }

      source.setPosition(pos).setAbsolute(true);
    }

    return source.setGain(gain);
  }