本文整理汇总了C++中ControllerMessage::get_abs_float方法的典型用法代码示例。如果您正苦于以下问题:C++ ControllerMessage::get_abs_float方法的具体用法?C++ ControllerMessage::get_abs_float怎么用?C++ ControllerMessage::get_abs_float使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ControllerMessage
的用法示例。
在下文中一共展示了ControllerMessage::get_abs_float方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1:
void
Acc2AxisModifier::update(int msec_delta, ControllerMessage& msg, const ControllerMessageDescriptor& desc)
{
float ax = msg.get_abs_float(m_acc_x);
float ay = msg.get_abs_float(m_acc_y);
float az = msg.get_abs_float(m_acc_z);
float rx = (atan2f(az, ax) - static_cast<float>(M_PI)/2.0f) * -1.0f;
float ry = (atan2f(az, ay) - static_cast<float>(M_PI)/2.0f) * -1.0f;
// FIXME: to simplistic, need a better way to normalize the angles
// normalize the range from [-pi/2, 3/2pi] to [-pi,pi]
if (rx > static_cast<float>(M_PI))
rx -= static_cast<float>(M_PI*2.0);
if (ry > static_cast<float>(M_PI))
ry -= static_cast<float>(M_PI*2.0);
ry *= -1.0f;
// full range is M_PI, but we use M_PI/2 as beyond that point
// precision is lacking
rx = static_cast<float>(rx/(M_PI/2.0));
ry = static_cast<float>(ry/(M_PI/2.0));
rx = Math::clamp(-1.0f, rx, 1.0f);
ry = Math::clamp(-1.0f, ry, 1.0f);
//log_tmp("Rot: " /*<< ax << " " << ay << " " << az << " -- " */<< rx << " " << ry);
msg.set_abs_float(m_axis_x, rx);
msg.set_abs_float(m_axis_y, ry);
}
示例2: sqrtf
void
RotateAxisModifier::update(int msec_delta, ControllerMessage& msg, const ControllerMessageDescriptor& desc)
{
float x = msg.get_abs_float(m_xaxis);
float y = msg.get_abs_float(m_yaxis);
if (m_mirror)
{
x = -x;
}
float length = sqrtf(x*x + y*y);
float angle = atan2f(y, x) + m_angle;
msg.set_abs_float(m_xaxis, cosf(angle) * length);
msg.set_abs_float(m_yaxis, sinf(angle) * length);
}
示例3: if
void
SplitAxisModifier::update(int msec_delta, ControllerMessage& msg, const ControllerMessageDescriptor& desc)
{
float value = msg.get_abs_float(m_axis);
if (value < 0)
{
msg.set_abs_float(m_out_lhs, -value * 2.0f - 1.0f);
msg.set_abs_float(m_out_rhs, -1.0f);
}
else if (value > 0)
{
msg.set_abs_float(m_out_lhs, -1.0f);
msg.set_abs_float(m_out_rhs, value * 2.0f - 1.0f);
}
else
{
msg.set_abs_float(m_out_lhs, -1.0f);
msg.set_abs_float(m_out_rhs, -1.0f);
}
}
示例4: get_float
float get_float(const ControllerMessage& msg)
{
return msg.get_abs_float(get_abs());
}