Думаю что ты этот код выполняешь в хуке игровой функции (если создаешь поток , то велика вероятность краша ) , которая выполняется как минимум один раз за кадр -> ты ищешь файлы \ меняешь их флаги отображения каждый раз при итерации хука -> -фпс
лучше делать примерно так :
static bool s_NoSmoke = false;
bool tNoSmoke = s_NoSmoke;
if (menu_option_NoSmokes) {
s_NoSmoke= true;
}
else {
s_NoSmoke = false;
}
if(tNoSmoke != s_NoSmoke){
if(s_NoSmoke){
~do_shit~
}
else{
~restore_shit~
}
}