forked from teamnwah/openmw-tes3coop
Merge pull request #230 from OpenMW/master
Add OpenMW commits up to 25 Jun 2017
This commit is contained in:
commit
77758596a1
4 changed files with 47 additions and 15 deletions
|
@ -416,18 +416,21 @@ namespace MWInput
|
|||
{
|
||||
float xAxis = mInputBinder->getChannel(A_LookLeftRight)->getValue()*2.0f-1.0f;
|
||||
float yAxis = mInputBinder->getChannel(A_LookUpDown)->getValue()*2.0f-1.0f;
|
||||
resetIdleTime();
|
||||
|
||||
float rot[3];
|
||||
rot[0] = yAxis * (dt * 100.0f) * 10.0f * mCameraSensitivity * (1.0f/256.f) * (mInvertY ? -1 : 1) * mCameraYMultiplier;
|
||||
rot[1] = 0.0f;
|
||||
rot[2] = xAxis * (dt * 100.0f) * 10.0f * mCameraSensitivity * (1.0f/256.f);
|
||||
|
||||
// Only actually turn player when we're not in vanity mode
|
||||
if(!MWBase::Environment::get().getWorld()->vanityRotateCamera(rot))
|
||||
if (xAxis != 0 || yAxis != 0)
|
||||
{
|
||||
mPlayer->yaw(rot[2]);
|
||||
mPlayer->pitch(rot[0]);
|
||||
resetIdleTime();
|
||||
|
||||
float rot[3];
|
||||
rot[0] = yAxis * (dt * 100.0f) * 10.0f * mCameraSensitivity * (1.0f/256.f) * (mInvertY ? -1 : 1) * mCameraYMultiplier;
|
||||
rot[1] = 0.0f;
|
||||
rot[2] = xAxis * (dt * 100.0f) * 10.0f * mCameraSensitivity * (1.0f/256.f);
|
||||
|
||||
// Only actually turn player when we're not in vanity mode
|
||||
if(!MWBase::Environment::get().getWorld()->vanityRotateCamera(rot))
|
||||
{
|
||||
mPlayer->yaw(rot[2]);
|
||||
mPlayer->pitch(rot[0]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -714,7 +717,7 @@ namespace MWInput
|
|||
if (MyGUI::InputManager::getInstance ().getMouseFocusWidget () != 0)
|
||||
{
|
||||
MyGUI::Button* b = MyGUI::InputManager::getInstance ().getMouseFocusWidget ()->castType<MyGUI::Button>(false);
|
||||
if (b && b->getEnabled())
|
||||
if (b && b->getEnabled() && id == SDL_BUTTON_LEFT)
|
||||
{
|
||||
MWBase::Environment::get().getSoundManager ()->playSound ("Menu Click", 1.f, 1.f);
|
||||
}
|
||||
|
@ -1268,7 +1271,7 @@ namespace MWInput
|
|||
if (!controlExists)
|
||||
{
|
||||
float initial;
|
||||
if (defaultButtonBindings.find(i) != defaultButtonBindings.end())
|
||||
if (defaultAxisBindings.find(i) == defaultAxisBindings.end())
|
||||
initial = 0.0f;
|
||||
else initial = 0.5f;
|
||||
control = new ICS::Control(std::to_string(i), false, true, initial, ICS::ICS_MAX, ICS::ICS_MAX);
|
||||
|
@ -1284,12 +1287,13 @@ namespace MWInput
|
|||
{
|
||||
clearAllControllerBindings(control);
|
||||
|
||||
if (defaultButtonBindings.find(i) != defaultButtonBindings.end())
|
||||
if (defaultButtonBindings.find(i) != defaultButtonBindings.end()
|
||||
&& !mInputBinder->isJoystickButtonBound(mFakeDeviceID, defaultButtonBindings[i]))
|
||||
{
|
||||
control->setInitialValue(0.0f);
|
||||
mInputBinder->addJoystickButtonBinding(control, mFakeDeviceID, defaultButtonBindings[i], ICS::Control::INCREASE);
|
||||
}
|
||||
else if (defaultAxisBindings.find(i) != defaultAxisBindings.end())
|
||||
else if (defaultAxisBindings.find(i) != defaultAxisBindings.end() && !mInputBinder->isJoystickAxisBound(mFakeDeviceID, defaultAxisBindings[i]))
|
||||
{
|
||||
control->setValue(0.5f);
|
||||
control->setInitialValue(0.5f);
|
||||
|
|
|
@ -511,6 +511,8 @@ namespace MWWorld
|
|||
mechMgr->updateCell(old, player);
|
||||
mechMgr->watchActor(player);
|
||||
|
||||
mPhysics->updatePtr(old, player);
|
||||
|
||||
MWBase::Environment::get().getWorld()->adjustSky();
|
||||
|
||||
mLastPlayerPos = pos.asVec3();
|
||||
|
|
2
extern/oics/ICSInputControlSystem.h
vendored
2
extern/oics/ICSInputControlSystem.h
vendored
|
@ -120,6 +120,8 @@ namespace ICS
|
|||
bool isMouseButtonBound(unsigned int button) const;
|
||||
void addJoystickAxisBinding(Control* control, int deviceID, int axis, Control::ControlChangingDirection direction);
|
||||
void addJoystickButtonBinding(Control* control, int deviceID, unsigned int button, Control::ControlChangingDirection direction);
|
||||
bool isJoystickButtonBound(int deviceID, unsigned int button) const;
|
||||
bool isJoystickAxisBound(int deviceID, unsigned int axis) const;
|
||||
void removeKeyBinding(SDL_Scancode key);
|
||||
void removeMouseAxisBinding(NamedAxis axis);
|
||||
void removeMouseButtonBinding(unsigned int button);
|
||||
|
|
24
extern/oics/ICSInputControlSystem_joystick.cpp
vendored
24
extern/oics/ICSInputControlSystem_joystick.cpp
vendored
|
@ -78,6 +78,9 @@ namespace ICS
|
|||
// add bindings
|
||||
void InputControlSystem::addJoystickAxisBinding(Control* control, int deviceID, int axis, Control::ControlChangingDirection direction)
|
||||
{
|
||||
if (std::find(mJoystickIDList.begin(), mJoystickIDList.end(), deviceID) == mJoystickIDList.end())
|
||||
mJoystickIDList.push_back(deviceID);
|
||||
|
||||
ICS_LOG("\tAdding AxisBinder [axis="
|
||||
+ ToString<int>(axis) + ", deviceID="
|
||||
+ ToString<int>(deviceID) + ", direction="
|
||||
|
@ -93,6 +96,9 @@ namespace ICS
|
|||
|
||||
void InputControlSystem::addJoystickButtonBinding(Control* control, int deviceID, unsigned int button, Control::ControlChangingDirection direction)
|
||||
{
|
||||
if (std::find(mJoystickIDList.begin(), mJoystickIDList.end(), deviceID) == mJoystickIDList.end())
|
||||
mJoystickIDList.push_back(deviceID); // Hack: add the device to the list so bindings are saved in save() even when joystick is not connected
|
||||
|
||||
ICS_LOG("\tAdding JoystickButtonBinder [button="
|
||||
+ ToString<int>(button) + ", deviceID="
|
||||
+ ToString<int>(deviceID) + ", direction="
|
||||
|
@ -104,6 +110,24 @@ namespace ICS
|
|||
mControlsJoystickButtonBinderMap[deviceID][button] = controlJoystickButtonBinderItem;
|
||||
}
|
||||
|
||||
bool InputControlSystem::isJoystickButtonBound(int deviceID, unsigned int button) const
|
||||
{
|
||||
JoystickButtonBinderMapType::const_iterator found = mControlsJoystickButtonBinderMap.find(deviceID);
|
||||
if (found == mControlsJoystickButtonBinderMap.end())
|
||||
return false;
|
||||
|
||||
return (found->second.find(button) != found->second.end());
|
||||
}
|
||||
|
||||
bool InputControlSystem::isJoystickAxisBound(int deviceID, unsigned int axis) const
|
||||
{
|
||||
JoystickAxisBinderMapType::const_iterator found = mControlsJoystickAxisBinderMap.find(deviceID);
|
||||
if (found == mControlsJoystickAxisBinderMap.end())
|
||||
return false;
|
||||
|
||||
return (found->second.find(axis) != found->second.end());
|
||||
}
|
||||
|
||||
// get bindings
|
||||
int InputControlSystem::getJoystickAxisBinding(Control* control, int deviceID, ICS::Control::ControlChangingDirection direction)
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue