mirror of
https://github.com/CrispyPin/sinpin-vr.git
synced 2024-11-22 18:10:26 +01:00
add haptic feedback on scroll
This commit is contained in:
parent
47ebf9d64c
commit
6f44ea6b5a
5 changed files with 24 additions and 1 deletions
|
@ -55,6 +55,11 @@
|
||||||
"name": "/actions/cursor/in/scroll",
|
"name": "/actions/cursor/in/scroll",
|
||||||
"requirement": "suggested",
|
"requirement": "suggested",
|
||||||
"type": "vector2"
|
"type": "vector2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "/actions/cursor/out/scroll_haptic",
|
||||||
|
"requirement": "suggested",
|
||||||
|
"type": "vibration"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"action_sets": [
|
"action_sets": [
|
||||||
|
@ -83,7 +88,8 @@
|
||||||
"/actions/cursor/in/mouse_left": "left mouse button",
|
"/actions/cursor/in/mouse_left": "left mouse button",
|
||||||
"/actions/cursor/in/mouse_right": "right mouse button",
|
"/actions/cursor/in/mouse_right": "right mouse button",
|
||||||
"/actions/cursor/in/mouse_middle": "middle mouse button",
|
"/actions/cursor/in/mouse_middle": "middle mouse button",
|
||||||
"/actions/cursor/in/scroll": "scroll"
|
"/actions/cursor/in/scroll": "scroll",
|
||||||
|
"/actions/cursor/out/scroll_haptic": "scrolling haptic feedback"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
|
@ -141,6 +141,16 @@
|
||||||
"app_key" : "system.generated.sinpin_vr",
|
"app_key" : "system.generated.sinpin_vr",
|
||||||
"bindings" : {
|
"bindings" : {
|
||||||
"/actions/cursor" : {
|
"/actions/cursor" : {
|
||||||
|
"haptics" : [
|
||||||
|
{
|
||||||
|
"output" : "/actions/cursor/out/scroll_haptic",
|
||||||
|
"path" : "/user/hand/left/output/haptic"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"output" : "/actions/cursor/out/scroll_haptic",
|
||||||
|
"path" : "/user/hand/right/output/haptic"
|
||||||
|
}
|
||||||
|
],
|
||||||
"sources" : [
|
"sources" : [
|
||||||
{
|
{
|
||||||
"inputs" : {
|
"inputs" : {
|
||||||
|
|
|
@ -75,6 +75,8 @@ App::App()
|
||||||
assert(action_err == 0);
|
assert(action_err == 0);
|
||||||
action_err = vr_input->GetActionHandle("/actions/cursor/in/scroll", &_input_handles.cursor.scroll);
|
action_err = vr_input->GetActionHandle("/actions/cursor/in/scroll", &_input_handles.cursor.scroll);
|
||||||
assert(action_err == 0);
|
assert(action_err == 0);
|
||||||
|
action_err = vr_input->GetActionHandle("/actions/cursor/out/scroll_haptic", &_input_handles.cursor.scroll_haptic);
|
||||||
|
assert(action_err == 0);
|
||||||
action_err = vr_input->GetActionSetHandle("/actions/main", &_input_handles.main_set);
|
action_err = vr_input->GetActionSetHandle("/actions/main", &_input_handles.main_set);
|
||||||
assert(action_err == 0);
|
assert(action_err == 0);
|
||||||
action_err = vr_input->GetActionSetHandle("/actions/edit", &_input_handles.edit_set);
|
action_err = vr_input->GetActionSetHandle("/actions/edit", &_input_handles.edit_set);
|
||||||
|
|
|
@ -32,6 +32,7 @@ struct InputHandles
|
||||||
vr::VRActionHandle_t mouse_right;
|
vr::VRActionHandle_t mouse_right;
|
||||||
vr::VRActionHandle_t mouse_middle;
|
vr::VRActionHandle_t mouse_middle;
|
||||||
vr::VRActionHandle_t scroll;
|
vr::VRActionHandle_t scroll;
|
||||||
|
vr::VRActionHandle_t scroll_haptic;
|
||||||
} cursor;
|
} cursor;
|
||||||
vr::VRActionSetHandle_t cursor_set;
|
vr::VRActionSetHandle_t cursor_set;
|
||||||
struct
|
struct
|
||||||
|
|
|
@ -8,6 +8,8 @@ const float LASER_WIDTH = 0.004f;
|
||||||
const Color EDIT_COLOR{1, 0.6f, 1};
|
const Color EDIT_COLOR{1, 0.6f, 1};
|
||||||
const Color CURSOR_COLOR{0.3f, 1, 1};
|
const Color CURSOR_COLOR{0.3f, 1, 1};
|
||||||
const float SCROLL_SPEED = 48;
|
const float SCROLL_SPEED = 48;
|
||||||
|
const float SCROLL_HAPTIC_STRENGTH = 0.15f;
|
||||||
|
const float SCROLL_HAPTIC_TIME = 0.1f;
|
||||||
const float MOUSE_DRAG_THRESHOLD = 48;
|
const float MOUSE_DRAG_THRESHOLD = 48;
|
||||||
|
|
||||||
Controller::Controller(App *app, ControllerSide side)
|
Controller::Controller(App *app, ControllerSide side)
|
||||||
|
@ -161,11 +163,13 @@ void Controller::Update(float dtime)
|
||||||
{
|
{
|
||||||
_app->SendMouseInput(4, true);
|
_app->SendMouseInput(4, true);
|
||||||
_app->SendMouseInput(4, false);
|
_app->SendMouseInput(4, false);
|
||||||
|
_app->vr_input->TriggerHapticVibrationAction(_app->_input_handles.cursor.scroll_haptic, 0, SCROLL_HAPTIC_TIME, 1 / SCROLL_HAPTIC_TIME, SCROLL_HAPTIC_STRENGTH, _input_handle);
|
||||||
}
|
}
|
||||||
else if (scroll_state.y < 0)
|
else if (scroll_state.y < 0)
|
||||||
{
|
{
|
||||||
_app->SendMouseInput(5, true);
|
_app->SendMouseInput(5, true);
|
||||||
_app->SendMouseInput(5, false);
|
_app->SendMouseInput(5, false);
|
||||||
|
_app->vr_input->TriggerHapticVibrationAction(_app->_input_handles.cursor.scroll_haptic, 0, SCROLL_HAPTIC_TIME, 1 / SCROLL_HAPTIC_TIME, SCROLL_HAPTIC_STRENGTH, _input_handle);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue