You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The way input overrides via scripting are handled right now causes the TAS input window to not register any inputs anymore. Also, if a script is executed before the TAS input window is opened, opening it makes the TAS input window work, but Scripting controller inputs not work anymore.
This is due to a limitation on how the new input override system was implemented, namely that it is not designed for multiple "hijackers" to exist simultaneously. More technically, I use SetInputOverrideFunction, which replaces the TAS input window's override function, and vice versa.
BaseManip::BaseManip(API::EventHub& event_hub,
const std::vector<ControllerEmu::EmulatedController*> controllers)
: m_event_hub(event_hub), m_controllers(controllers)
{
m_frame_advanced_listener = m_event_hub.ListenEvent<API::Events::FrameAdvance>(
[&](const API::Events::FrameAdvance&) { NotifyFrameAdvanced(); });
for (auto i = 0; i < m_controllers.size(); i++)
{
// TODO felk: find a more robust way to set the input override functions.// This way scripting breaks once the TAS input window is opened,// and vice versa, the TAS window breaks once scripting starts.
m_controllers[i]->SetInputOverrideFunction([=](const std::string_view group_name,
const std::string_view control_name,
ControlState orig_state) {
const InputKey input_key = {group_name, control_name};
std::optional<ControlState> manip = this->PerformInputManip(i, input_key, orig_state);
m_last_seen_input[{i, input_key}] = manip.value_or(orig_state);
return manip;
});
}
}
I considered this not a priority right now, as I think people are likely not TASing and Scripting at the same time. But yeah, needs to be fixed eventually...
The text was updated successfully, but these errors were encountered:
The way input overrides via scripting are handled right now causes the TAS input window to not register any inputs anymore. Also, if a script is executed before the TAS input window is opened, opening it makes the TAS input window work, but Scripting controller inputs not work anymore.
This is due to a limitation on how the new input override system was implemented, namely that it is not designed for multiple "hijackers" to exist simultaneously. More technically, I use
SetInputOverrideFunction
, which replaces the TAS input window's override function, and vice versa.This needs to be fixed eventually. There's a TODO in the code:
https://github.com/Felk/dolphin/blob/master/Source/Core/Core/API/Controller.cpp#L31
I considered this not a priority right now, as I think people are likely not TASing and Scripting at the same time. But yeah, needs to be fixed eventually...
The text was updated successfully, but these errors were encountered: