std::list<std::string> MorphEffect::CheckEffectSettings(const SettingsMap& settings, AudioManager* media, Model* model, Effect* eff) { std::list<std::string> res; if (settings.Get("E_VALUECURVE_Morph_Start_X1", "").find("Active=TRUE") != std::string::npos || settings.Get("E_VALUECURVE_Morph_Start_X2", "").find("Active=TRUE") != std::string::npos || settings.Get("E_VALUECURVE_Morph_Start_Y1", "").find("Active=TRUE") != std::string::npos || settings.Get("E_VALUECURVE_Morph_Start_Y2", "").find("Active=TRUE") != std::string::npos || settings.Get("E_VALUECURVE_Morph_End_X1", "").find("Active=TRUE") != std::string::npos || settings.Get("E_VALUECURVE_Morph_End_X2", "").find("Active=TRUE") != std::string::npos || settings.Get("E_VALUECURVE_Morph_End_Y1", "").find("Active=TRUE") != std::string::npos || settings.Get("E_VALUECURVE_Morph_End_Y2", "").find("Active=TRUE") != std::string::npos || settings.Get("E_VALUECURVE_MorphRepeat_Count", "").find("Active=TRUE") != std::string::npos || settings.Get("E_VALUECURVE_MorphRepeat_Skip", "").find("Active=TRUE") != std::string::npos ) { // we cant validate a value curve } else { int startx = std::max(1,std::abs(settings.GetInt("E_SLIDER_Morph_Start_X1", 0) - settings.GetInt("E_SLIDER_Morph_Start_X2", 0)) * model->GetDefaultBufferWi() / 80); int endx = std::max(1, std::abs(settings.GetInt("E_SLIDER_Morph_End_X1", 0) - settings.GetInt("E_SLIDER_Morph_End_X2", 0)) * model->GetDefaultBufferWi() / 80); int starty = std::max(1, std::abs(settings.GetInt("E_SLIDER_Morph_Start_Y1", 0) - settings.GetInt("E_SLIDER_Morph_Start_Y2", 0)) * model->GetDefaultBufferWi() / 80); int endy = std::max(1, std::abs(settings.GetInt("E_SLIDER_Morph_End_Y1", 0) - settings.GetInt("E_SLIDER_Morph_End_Y2", 0)) * model->GetDefaultBufferWi() / 80); int minmorph = std::min(startx, std::min(starty, std::min(endx, endy))); int repeat_count = settings.GetInt("E_SLIDER_Morph_Repeat_Count", 0); int repeat_skip = settings.GetInt("E_SLIDER_Morph_Repeat_Skip", 0); int maxmodel = std::max(model->GetDefaultBufferWi(), model->GetDefaultBufferHt()); if ((minmorph + repeat_skip) * repeat_count > 2 * maxmodel) { res.push_back(wxString::Format(" WARN: Morph effect with repeat count and skip which are larger than necessary. This may lead to slow render times. Model '%s', Start %s", model->GetName(), FORMATTIME(eff->GetStartTimeMS())).ToStdString()); } } return res; }
std::list<std::string> StateEffect::CheckEffectSettings(const SettingsMap& settings, AudioManager* media, Model* model, Effect* eff) { std::list<std::string> res; // -Buffer not rotated wxString bufferTransform = settings.Get("B_CHOICE_BufferTransform", "None"); if (bufferTransform != "None") { res.push_back(wxString::Format(" WARN: State effect with transformed buffer '%s' may not render correctly. Model '%s', Start %s", model->GetName(), bufferTransform, FORMATTIME(eff->GetStartTimeMS())).ToStdString()); } wxString timing = settings.Get("E_CHOICE_State_TimingTrack", ""); wxString state = settings.Get("E_CHOICE_State_State", ""); // - Face chosen or specific phoneme if (state == "" && timing == "") { res.push_back(wxString::Format(" ERR: State effect with no timing selected. Model '%s', Start %s", model->GetName(), FORMATTIME(eff->GetStartTimeMS())).ToStdString()); } return res; }
std::list<std::string> FireworksEffect::CheckEffectSettings(const SettingsMap& settings, AudioManager* media, Model* model, Effect* eff) { std::list<std::string> res; if (media == nullptr && settings.GetBool("E_CHECKBOX_Fireworks_UseMusic", false)) { res.push_back(wxString::Format(" WARN: Fireworks effect cant grow to music if there is no music. Model '%s', Start %s", model->GetName(), FORMATTIME(eff->GetStartTimeMS())).ToStdString()); } return res; }