mirror of
https://github.com/overte-org/overte.git
synced 2025-08-08 14:18:24 +02:00
Merge pull request #9875 from birarda/bug/spin-strafe
fix double snap turn strafing
This commit is contained in:
commit
af790d8474
5 changed files with 50 additions and 21 deletions
|
@ -2,7 +2,27 @@
|
||||||
"name": "Standard to Action",
|
"name": "Standard to Action",
|
||||||
"channels": [
|
"channels": [
|
||||||
{ "from": "Standard.LY", "to": "Actions.TranslateZ" },
|
{ "from": "Standard.LY", "to": "Actions.TranslateZ" },
|
||||||
{ "from": "Standard.LX", "to": "Actions.TranslateX" },
|
|
||||||
|
{ "from": "Standard.LX",
|
||||||
|
"when": [
|
||||||
|
"Application.InHMD", "!Application.AdvancedMovement",
|
||||||
|
"Application.SnapTurn", "!Standard.RX"
|
||||||
|
],
|
||||||
|
"to": "Actions.StepYaw",
|
||||||
|
"filters":
|
||||||
|
[
|
||||||
|
{ "type": "deadZone", "min": 0.15 },
|
||||||
|
"constrainToInteger",
|
||||||
|
{ "type": "pulse", "interval": 0.25 },
|
||||||
|
{ "type": "scale", "scale": 22.5 }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{ "from": "Standard.LX", "to": "Actions.TranslateX",
|
||||||
|
"when": [ "Application.AdvancedMovement" ]
|
||||||
|
},
|
||||||
|
{ "from": "Standard.LX", "to": "Actions.Yaw",
|
||||||
|
"when": [ "!Application.AdvancedMovement", "!Application.SnapTurn" ]
|
||||||
|
},
|
||||||
|
|
||||||
{ "from": "Standard.RX",
|
{ "from": "Standard.RX",
|
||||||
"when": [ "Application.InHMD", "Application.SnapTurn" ],
|
"when": [ "Application.InHMD", "Application.SnapTurn" ],
|
||||||
|
@ -15,29 +35,29 @@
|
||||||
{ "type": "scale", "scale": 22.5 }
|
{ "type": "scale", "scale": 22.5 }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{ "from": "Standard.RX", "to": "Actions.Yaw",
|
||||||
|
"when": [ "!Application.SnapTurn" ]
|
||||||
|
},
|
||||||
|
|
||||||
{ "from": "Standard.RX", "to": "Actions.Yaw" },
|
{ "from": "Standard.RY",
|
||||||
{ "from": "Standard.RY",
|
"when": "Application.Grounded",
|
||||||
"when": "Application.Grounded",
|
"to": "Actions.Up",
|
||||||
"to": "Actions.Up",
|
"filters":
|
||||||
"filters":
|
|
||||||
[
|
[
|
||||||
{ "type": "deadZone", "min": 0.6 },
|
{ "type": "deadZone", "min": 0.6 },
|
||||||
"invert"
|
"invert"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
||||||
{ "from": "Standard.RY", "to": "Actions.Up", "filters": "invert"},
|
{ "from": "Standard.RY", "to": "Actions.Up", "filters": "invert"},
|
||||||
|
|
||||||
{ "from": "Standard.Back", "to": "Actions.CycleCamera" },
|
{ "from": "Standard.Back", "to": "Actions.CycleCamera" },
|
||||||
{ "from": "Standard.Start", "to": "Actions.ContextMenu" },
|
{ "from": "Standard.Start", "to": "Actions.ContextMenu" },
|
||||||
|
|
||||||
{ "from": "Standard.LT", "to": "Actions.LeftHandClick" },
|
{ "from": "Standard.LT", "to": "Actions.LeftHandClick" },
|
||||||
{ "from": "Standard.RT", "to": "Actions.RightHandClick" },
|
{ "from": "Standard.RT", "to": "Actions.RightHandClick" },
|
||||||
|
|
||||||
{ "from": "Standard.LeftHand", "to": "Actions.LeftHand" },
|
{ "from": "Standard.LeftHand", "to": "Actions.LeftHand" },
|
||||||
{ "from": "Standard.RightHand", "to": "Actions.RightHand" }
|
{ "from": "Standard.RightHand", "to": "Actions.RightHand" }
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -417,6 +417,7 @@ static const QString STATE_CAMERA_THIRD_PERSON = "CameraThirdPerson";
|
||||||
static const QString STATE_CAMERA_ENTITY = "CameraEntity";
|
static const QString STATE_CAMERA_ENTITY = "CameraEntity";
|
||||||
static const QString STATE_CAMERA_INDEPENDENT = "CameraIndependent";
|
static const QString STATE_CAMERA_INDEPENDENT = "CameraIndependent";
|
||||||
static const QString STATE_SNAP_TURN = "SnapTurn";
|
static const QString STATE_SNAP_TURN = "SnapTurn";
|
||||||
|
static const QString STATE_ADVANCED_MOVEMENT_CONTROLS = "AdvancedMovement";
|
||||||
static const QString STATE_GROUNDED = "Grounded";
|
static const QString STATE_GROUNDED = "Grounded";
|
||||||
static const QString STATE_NAV_FOCUSED = "NavigationFocused";
|
static const QString STATE_NAV_FOCUSED = "NavigationFocused";
|
||||||
|
|
||||||
|
@ -507,7 +508,7 @@ bool setupEssentials(int& argc, char** argv) {
|
||||||
DependencyManager::set<MessagesClient>();
|
DependencyManager::set<MessagesClient>();
|
||||||
controller::StateController::setStateVariables({ { STATE_IN_HMD, STATE_CAMERA_FULL_SCREEN_MIRROR,
|
controller::StateController::setStateVariables({ { STATE_IN_HMD, STATE_CAMERA_FULL_SCREEN_MIRROR,
|
||||||
STATE_CAMERA_FIRST_PERSON, STATE_CAMERA_THIRD_PERSON, STATE_CAMERA_ENTITY, STATE_CAMERA_INDEPENDENT,
|
STATE_CAMERA_FIRST_PERSON, STATE_CAMERA_THIRD_PERSON, STATE_CAMERA_ENTITY, STATE_CAMERA_INDEPENDENT,
|
||||||
STATE_SNAP_TURN, STATE_GROUNDED, STATE_NAV_FOCUSED } });
|
STATE_SNAP_TURN, STATE_ADVANCED_MOVEMENT_CONTROLS, STATE_GROUNDED, STATE_NAV_FOCUSED } });
|
||||||
DependencyManager::set<UserInputMapper>();
|
DependencyManager::set<UserInputMapper>();
|
||||||
DependencyManager::set<controller::ScriptingInterface, ControllerScriptingInterface>();
|
DependencyManager::set<controller::ScriptingInterface, ControllerScriptingInterface>();
|
||||||
DependencyManager::set<InterfaceParentFinder>();
|
DependencyManager::set<InterfaceParentFinder>();
|
||||||
|
@ -1122,6 +1123,10 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo
|
||||||
_applicationStateDevice->setInputVariant(STATE_SNAP_TURN, []() -> float {
|
_applicationStateDevice->setInputVariant(STATE_SNAP_TURN, []() -> float {
|
||||||
return qApp->getMyAvatar()->getSnapTurn() ? 1 : 0;
|
return qApp->getMyAvatar()->getSnapTurn() ? 1 : 0;
|
||||||
});
|
});
|
||||||
|
_applicationStateDevice->setInputVariant(STATE_ADVANCED_MOVEMENT_CONTROLS, []() -> float {
|
||||||
|
return qApp->getMyAvatar()->useAdvancedMovementControls() ? 1 : 0;
|
||||||
|
});
|
||||||
|
|
||||||
_applicationStateDevice->setInputVariant(STATE_GROUNDED, []() -> float {
|
_applicationStateDevice->setInputVariant(STATE_GROUNDED, []() -> float {
|
||||||
return qApp->getMyAvatar()->getCharacterController()->onGround() ? 1 : 0;
|
return qApp->getMyAvatar()->getCharacterController()->onGround() ? 1 : 0;
|
||||||
});
|
});
|
||||||
|
|
|
@ -104,6 +104,7 @@ MyAvatar::MyAvatar(RigPointer rig) :
|
||||||
_eyeContactTarget(LEFT_EYE),
|
_eyeContactTarget(LEFT_EYE),
|
||||||
_realWorldFieldOfView("realWorldFieldOfView",
|
_realWorldFieldOfView("realWorldFieldOfView",
|
||||||
DEFAULT_REAL_WORLD_FIELD_OF_VIEW_DEGREES),
|
DEFAULT_REAL_WORLD_FIELD_OF_VIEW_DEGREES),
|
||||||
|
_useAdvancedMovementControls("advancedMovementForHandControllersIsChecked", false),
|
||||||
_hmdSensorMatrix(),
|
_hmdSensorMatrix(),
|
||||||
_hmdSensorOrientation(),
|
_hmdSensorOrientation(),
|
||||||
_hmdSensorPosition(),
|
_hmdSensorPosition(),
|
||||||
|
|
|
@ -74,6 +74,7 @@ class MyAvatar : public Avatar {
|
||||||
|
|
||||||
Q_PROPERTY(bool hmdLeanRecenterEnabled READ getHMDLeanRecenterEnabled WRITE setHMDLeanRecenterEnabled)
|
Q_PROPERTY(bool hmdLeanRecenterEnabled READ getHMDLeanRecenterEnabled WRITE setHMDLeanRecenterEnabled)
|
||||||
Q_PROPERTY(bool characterControllerEnabled READ getCharacterControllerEnabled WRITE setCharacterControllerEnabled)
|
Q_PROPERTY(bool characterControllerEnabled READ getCharacterControllerEnabled WRITE setCharacterControllerEnabled)
|
||||||
|
Q_PROPERTY(bool useAdvancedMovementControls READ useAdvancedMovementControls WRITE setUseAdvancedMovementControls)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
enum DriveKeys {
|
enum DriveKeys {
|
||||||
|
@ -176,6 +177,10 @@ public:
|
||||||
Q_INVOKABLE void setHMDLeanRecenterEnabled(bool value) { _hmdLeanRecenterEnabled = value; }
|
Q_INVOKABLE void setHMDLeanRecenterEnabled(bool value) { _hmdLeanRecenterEnabled = value; }
|
||||||
Q_INVOKABLE bool getHMDLeanRecenterEnabled() const { return _hmdLeanRecenterEnabled; }
|
Q_INVOKABLE bool getHMDLeanRecenterEnabled() const { return _hmdLeanRecenterEnabled; }
|
||||||
|
|
||||||
|
bool useAdvancedMovementControls() const { return _useAdvancedMovementControls.get(); }
|
||||||
|
void setUseAdvancedMovementControls(bool useAdvancedMovementControls)
|
||||||
|
{ _useAdvancedMovementControls.set(useAdvancedMovementControls); }
|
||||||
|
|
||||||
// get/set avatar data
|
// get/set avatar data
|
||||||
void saveData();
|
void saveData();
|
||||||
void loadData();
|
void loadData();
|
||||||
|
@ -436,6 +441,7 @@ private:
|
||||||
glm::vec3 _trackedHeadPosition;
|
glm::vec3 _trackedHeadPosition;
|
||||||
|
|
||||||
Setting::Handle<float> _realWorldFieldOfView;
|
Setting::Handle<float> _realWorldFieldOfView;
|
||||||
|
Setting::Handle<bool> _useAdvancedMovementControls;
|
||||||
|
|
||||||
// private methods
|
// private methods
|
||||||
void updateOrientation(float deltaTime);
|
void updateOrientation(float deltaTime);
|
||||||
|
|
|
@ -17,15 +17,14 @@ var mappingName, basicMapping, isChecked;
|
||||||
|
|
||||||
var TURN_RATE = 1000;
|
var TURN_RATE = 1000;
|
||||||
var MENU_ITEM_NAME = "Advanced Movement For Hand Controllers";
|
var MENU_ITEM_NAME = "Advanced Movement For Hand Controllers";
|
||||||
var SETTINGS_KEY = 'advancedMovementForHandControllersIsChecked';
|
|
||||||
var isDisabled = false;
|
var isDisabled = false;
|
||||||
var previousSetting = Settings.getValue(SETTINGS_KEY);
|
var previousSetting = MyAvatar.useAdvancedMovementControls;
|
||||||
if (previousSetting === '' || previousSetting === false || previousSetting === 'false') {
|
if (previousSetting === false) {
|
||||||
previousSetting = false;
|
previousSetting = false;
|
||||||
isChecked = false;
|
isChecked = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (previousSetting === true || previousSetting === 'true') {
|
if (previousSetting === true) {
|
||||||
previousSetting = true;
|
previousSetting = true;
|
||||||
isChecked = true;
|
isChecked = true;
|
||||||
}
|
}
|
||||||
|
@ -37,7 +36,6 @@ function addAdvancedMovementItemToSettingsMenu() {
|
||||||
isCheckable: true,
|
isCheckable: true,
|
||||||
isChecked: previousSetting
|
isChecked: previousSetting
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function rotate180() {
|
function rotate180() {
|
||||||
|
@ -72,7 +70,6 @@ function registerBasicMapping() {
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
});
|
});
|
||||||
basicMapping.from(Controller.Standard.LX).to(Controller.Standard.RX);
|
|
||||||
basicMapping.from(Controller.Standard.RY).to(function(value) {
|
basicMapping.from(Controller.Standard.RY).to(function(value) {
|
||||||
if (isDisabled) {
|
if (isDisabled) {
|
||||||
return;
|
return;
|
||||||
|
@ -112,10 +109,10 @@ function menuItemEvent(menuItem) {
|
||||||
if (menuItem == MENU_ITEM_NAME) {
|
if (menuItem == MENU_ITEM_NAME) {
|
||||||
isChecked = Menu.isOptionChecked(MENU_ITEM_NAME);
|
isChecked = Menu.isOptionChecked(MENU_ITEM_NAME);
|
||||||
if (isChecked === true) {
|
if (isChecked === true) {
|
||||||
Settings.setValue(SETTINGS_KEY, true);
|
MyAvatar.useAdvancedMovementControls = true;
|
||||||
disableMappings();
|
disableMappings();
|
||||||
} else if (isChecked === false) {
|
} else if (isChecked === false) {
|
||||||
Settings.setValue(SETTINGS_KEY, false);
|
MyAvatar.useAdvancedMovementControls = false;
|
||||||
enableMappings();
|
enableMappings();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue