#include "pch.h"
#include "SetControlConstraintsAction.h"
namespace Training
{
extern ControlData g_allowableControlScalars; extern int g_iAllowableActionMask;
SetControlConstraintsAction::SetControlConstraintsAction (void)
{
m_inputControls.jsValues[c_axisYaw] = NA;
m_inputControls.jsValues[c_axisPitch] = NA;
m_inputControls.jsValues[c_axisRoll] = NA;
m_inputControls.jsValues[c_axisThrottle] = NA;
m_iEnableActionsMask = 0;
m_iDisableActionsMask = 0;
}
SetControlConstraintsAction::~SetControlConstraintsAction (void)
{
}
void SetControlConstraintsAction::Execute (void)
{
if (m_inputControls.jsValues[c_axisYaw] != NA)
g_allowableControlScalars.jsValues[c_axisYaw] = m_inputControls.jsValues[c_axisYaw];
if (m_inputControls.jsValues[c_axisPitch] != NA)
g_allowableControlScalars.jsValues[c_axisPitch] = m_inputControls.jsValues[c_axisPitch];
if (m_inputControls.jsValues[c_axisRoll] != NA)
g_allowableControlScalars.jsValues[c_axisRoll] = m_inputControls.jsValues[c_axisRoll];
if (m_inputControls.jsValues[c_axisThrottle] != NA)
g_allowableControlScalars.jsValues[c_axisThrottle] = m_inputControls.jsValues[c_axisThrottle];
for (int i = 0; i < 32; i++)
{
int action = m_iDisableActionsMask & (1 << i);
if (g_iAllowableActionMask & action)
g_iAllowableActionMask ^= action;
}
g_iAllowableActionMask |= m_iEnableActionsMask;
}
void SetControlConstraintsAction::EnableInputAction (int iInputAction)
{
m_iEnableActionsMask |= iInputAction;
for (int i = 0; i < 32; i++)
{
int action = m_iDisableActionsMask & (1 << i);
if (iInputAction & action)
m_iDisableActionsMask ^= action;
}
}
void SetControlConstraintsAction::DisableInputAction (int iInputAction)
{
m_iDisableActionsMask |= iInputAction;
for (int i = 0; i < 32; i++)
{
int action = m_iEnableActionsMask & (1 << i);
if (iInputAction & action)
m_iEnableActionsMask ^= action;
}
}
void SetControlConstraintsAction::ScaleInputControl (Axis axis, float fScalar)
{
m_inputControls.jsValues[axis] = fScalar;
}
}