[Joystick] Do the code better

This commit is contained in:
Lirusaito
2019-03-21 01:09:47 -04:00
parent 0673e70aca
commit 95ff7acd6d
2 changed files with 28 additions and 23 deletions

View File

@@ -59,26 +59,29 @@ LLFloaterJoystick::LLFloaterJoystick(const LLSD& data)
void LLFloaterJoystick::draw() void LLFloaterJoystick::draw()
{ {
// Singu TODO: Cache these children, or consider not doing this in the draw call
bool joystick_inited = LLViewerJoystick::getInstance()->isJoystickInitialized(); bool joystick_inited = LLViewerJoystick::getInstance()->isJoystickInitialized();
childSetEnabled("enable_joystick", joystick_inited); childSetEnabled("enable_joystick", joystick_inited);
childSetEnabled("joystick_type", joystick_inited); auto type(getChild<LLView>("joystick_type"));
type->setEnabled(joystick_inited);
std::string desc = LLViewerJoystick::getInstance()->getDescription(); std::string desc = LLViewerJoystick::getInstance()->getDescription();
if (desc.empty()) desc = getString("NoDevice"); if (desc.empty()) desc = getString("NoDevice");
childSetText("joystick_type", desc); type->setValue(desc);
LLViewerJoystick* joystick(LLViewerJoystick::getInstance()); LLViewerJoystick* joystick(LLViewerJoystick::getInstance());
for (U32 i = 0; i < 6; i++) for (U32 i = 0; i < 6; ++i)
{ {
F32 value = joystick->getJoystickAxis(i); F32 value = joystick->getJoystickAxis(i);
mAxisStats[i]->addValue(value * gFrameIntervalSeconds); mAxisStats[i]->addValue(value * gFrameIntervalSeconds);
auto& bar = mAxisStatsBar[i];
if (mAxisStatsBar[i]->mMinBar > value)
if (bar->mMinBar > value)
{ {
mAxisStatsBar[i]->mMinBar = value; bar->mMinBar = value;
} }
if (mAxisStatsBar[i]->mMaxBar < value) if (bar->mMaxBar < value)
{ {
mAxisStatsBar[i]->mMaxBar = value; bar->mMaxBar = value;
} }
} }

View File

@@ -47,15 +47,15 @@
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// Constants // Constants
#define X_I 1 constexpr auto X_I = 1;
#define Y_I 2 constexpr auto Y_I = 2;
#define Z_I 0 constexpr auto Z_I = 0;
#define RX_I 4 constexpr auto RX_I = 4;
#define RY_I 5 constexpr auto RY_I = 5;
#define RZ_I 3 constexpr auto RZ_I = 3;
// minimum time after setting away state before coming back // minimum time after setting away state before coming back
const F32 MIN_AFK_TIME = 2.f; constexpr F32 MIN_AFK_TIME = 2.f;
F32 LLViewerJoystick::sLastDelta[] = {0,0,0,0,0,0,0}; F32 LLViewerJoystick::sLastDelta[] = {0,0,0,0,0,0,0};
F32 LLViewerJoystick::sDelta[] = {0,0,0,0,0,0,0}; F32 LLViewerJoystick::sDelta[] = {0,0,0,0,0,0,0};
@@ -113,11 +113,13 @@ enum DS3Keys
S32 get_joystick_type() S32 get_joystick_type()
{ {
if (sType == SPACE_NAV) return 0; switch (sType)
if (sType == XBOX) return isOUYA(LLViewerJoystick::getInstance()->getDescription()) ? 1 : 2; {
if (sType == DS3) return 3; case SPACE_NAV: return 0;
case XBOX: return isOUYA(LLViewerJoystick::getInstance()->getDescription()) ? 1 : 2;
return -1; // sType == NONE || sType == UNKNOWN case DS3: return 3;
default: return -1; // sType == NONE || sType == UNKNOWN
}
} }
// </Singu> // </Singu>
@@ -126,8 +128,8 @@ S32 get_joystick_type()
// should be. It has to be equal to 3000 because the SpaceNavigator on Windows // should be. It has to be equal to 3000 because the SpaceNavigator on Windows
// refuses to respond to the DirectInput SetProperty call; it always returns // refuses to respond to the DirectInput SetProperty call; it always returns
// values in the [-3000, 3000] range. // values in the [-3000, 3000] range.
#define MAX_SPACENAVIGATOR_INPUT 3000.0f constexpr auto MAX_SPACENAVIGATOR_INPUT = 3000.0f;
#define MAX_JOYSTICK_INPUT_VALUE MAX_SPACENAVIGATOR_INPUT constexpr auto MAX_JOYSTICK_INPUT_VALUE = MAX_SPACENAVIGATOR_INPUT;
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
void LLViewerJoystick::updateEnabled(bool autoenable) void LLViewerJoystick::updateEnabled(bool autoenable)
@@ -1390,7 +1392,7 @@ void LLViewerJoystick::setSNDefaults(S32 type)
const float platformScaleAvXZ = 2.f; const float platformScaleAvXZ = 2.f;
const bool is_3d_cursor = true; const bool is_3d_cursor = true;
#endif #endif
//gViewerWindow->alertXml("CacheWillClear"); //gViewerWindow->alertXml("CacheWillClear");
const bool ouya = type == 1; const bool ouya = type == 1;
const bool xbox = ouya || type == 2; const bool xbox = ouya || type == 2;