コード例 #1
0
void PostProcessingConfigDiag::Event_Slider_Finish(wxScrollEvent &ev)
{
	UserEventData* config_option = (UserEventData*)ev.GetEventUserData();
	ConfigGrouping* config = m_config_map[config_option->GetData()];

	const auto& option_data = m_post_processor->GetOption(config->GetOption());
	if (!option_data.m_resolve_at_compilation)
	{
		// Just handle options that must be resolved at compilation time
		ev.Skip();
		return;
	}

	size_t vector_size = 0;
	if (option_data.m_type == PostProcessingShaderConfiguration::ConfigurationOption::OptionType::OPTION_INTEGER)
		vector_size = option_data.m_integer_values.size();
	else
		vector_size = option_data.m_float_values.size();

	for (size_t i = 0; i < vector_size; ++i)
	{
		// Got to do this garbage again.
		// Convert current step in to the real range value
		int current_step = config->GetSliderValue(i);
		std::string string_value;
		if (option_data.m_type == PostProcessingShaderConfiguration::ConfigurationOption::OptionType::OPTION_INTEGER)
		{
			s32 value = option_data.m_integer_step_values[i] * current_step + option_data.m_integer_min_values[i];
			m_post_processor->SetOptioni(config->GetOption(), i, value);
		}
		else
		{
			float value = option_data.m_float_step_values[i] * current_step + option_data.m_float_min_values[i];
			m_post_processor->SetOptionf(config->GetOption(), i, value);
		}
	}
	ev.Skip();
}