GMexport double FMODGMS_Effect_Get_Parameter(double e, double p) { int effectIndex = (int)round(e); if ((effectIndex < 0) || (effectIndex >= (int)effectList.size())) { errorMessage = "Invalid effect index"; return GMS_error; } FMOD::DSP* effect = effectList[effectIndex]; int param = (int)round(p); FMOD_DSP_PARAMETER_DESC* desc = NULL; if (effect->getParameterInfo(param, &desc) != FMOD_OK) { errorMessage = "Could not get effect parameter info, probably invalid param index"; return GMS_error; } if (desc->type == FMOD_DSP_PARAMETER_TYPE_FLOAT) { float value; if (effect->getParameterFloat(param, &value, NULL, 0) == FMOD_OK) return (double)value; } else if (desc->type == FMOD_DSP_PARAMETER_TYPE_INT) { int value; if (effect->getParameterInt(param, &value, NULL, 0) == FMOD_OK) return (double)value; } else if (desc->type == FMOD_DSP_PARAMETER_TYPE_BOOL) { bool value; if (effect->getParameterBool(param, &value, NULL, 0) == FMOD_OK) return (double)value; } else { errorMessage = "Unsupported effect parameter type"; return GMS_error; } errorMessage = "Could not get effect parameter"; return GMS_error; }