mirror of
https://github.com/CrispyPin/sinpin-vr.git
synced 2024-11-23 02:20:26 +01:00
use separate steamvr action sets for different modes
This commit is contained in:
parent
29f4595750
commit
d94e3040bb
6 changed files with 196 additions and 119 deletions
|
@ -16,55 +16,62 @@
|
||||||
"requirement": "mandatory",
|
"requirement": "mandatory",
|
||||||
"type": "boolean"
|
"type": "boolean"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "/actions/main/in/grab",
|
|
||||||
"requirement": "mandatory",
|
|
||||||
"type": "boolean"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "/actions/main/in/activate_cursor",
|
|
||||||
"requirement": "suggested",
|
|
||||||
"type": "boolean"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "/actions/main/in/reset",
|
"name": "/actions/main/in/reset",
|
||||||
"requirement": "suggested",
|
"requirement": "suggested",
|
||||||
"type": "boolean"
|
"type": "boolean"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "/actions/main/in/mouse_left",
|
"name": "/actions/edit/in/grab",
|
||||||
"requirement": "suggested",
|
"requirement": "mandatory",
|
||||||
"type": "boolean"
|
"type": "boolean"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "/actions/main/in/mouse_right",
|
"name": "/actions/edit/in/distance",
|
||||||
"requirement": "suggested",
|
|
||||||
"type": "boolean"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "/actions/main/in/distance",
|
|
||||||
"requirement": "suggested",
|
"requirement": "suggested",
|
||||||
"type": "vector2"
|
"type": "vector2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "/actions/cursor/in/activate_cursor",
|
||||||
|
"requirement": "suggested",
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "/actions/cursor/in/mouse_left",
|
||||||
|
"requirement": "suggested",
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "/actions/cursor/in/mouse_right",
|
||||||
|
"requirement": "suggested",
|
||||||
|
"type": "boolean"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"action_sets": [
|
"action_sets": [
|
||||||
{
|
{
|
||||||
"name": "/actions/main",
|
"name": "/actions/main",
|
||||||
"usage": "leftright"
|
"usage": "leftright"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "/actions/edit",
|
||||||
|
"usage": "single"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "/actions/cursor",
|
||||||
|
"usage": "single"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"localization": [
|
"localization": [
|
||||||
{
|
{
|
||||||
"language_tag": "en_us",
|
"language_tag": "en_us",
|
||||||
"/actions/main": "Overlay actions",
|
|
||||||
"/actions/main/in/toggle_visibility": "toggle visibility",
|
"/actions/main/in/toggle_visibility": "toggle visibility",
|
||||||
"/actions/main/in/edit_mode": "toggle edit mode",
|
"/actions/main/in/edit_mode": "toggle edit mode",
|
||||||
"/actions/main/in/grab": "grab panel",
|
"/actions/main/in/reset": "reset positions",
|
||||||
"/actions/main/in/activate_cursor": "activate cursor",
|
"/actions/edit/in/grab": "grab panel",
|
||||||
"/actions/main/in/distance": "move away",
|
"/actions/edit/in/distance": "push/pull overlay",
|
||||||
"/actions/main/in/mouse_left": "mouse left",
|
"/actions/cursor/in/activate_cursor": "activate cursor",
|
||||||
"/actions/main/in/mouse_right": "mouse right",
|
"/actions/cursor/in/mouse_left": "mouse left",
|
||||||
"/actions/main/in/reset": "reset positions"
|
"/actions/cursor/in/mouse_right": "mouse right"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
|
@ -140,6 +140,104 @@
|
||||||
},
|
},
|
||||||
"app_key" : "system.generated.sinpin_vr",
|
"app_key" : "system.generated.sinpin_vr",
|
||||||
"bindings" : {
|
"bindings" : {
|
||||||
|
"/actions/cursor" : {
|
||||||
|
"sources" : [
|
||||||
|
{
|
||||||
|
"inputs" : {
|
||||||
|
"click" : {
|
||||||
|
"output" : "/actions/cursor/in/mouse_right"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"mode" : "button",
|
||||||
|
"path" : "/user/hand/left/input/a"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"inputs" : {
|
||||||
|
"click" : {
|
||||||
|
"output" : "/actions/cursor/in/mouse_right"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"mode" : "button",
|
||||||
|
"path" : "/user/hand/right/input/a"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"inputs" : {
|
||||||
|
"click" : {
|
||||||
|
"output" : "/actions/cursor/in/mouse_left"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"mode" : "button",
|
||||||
|
"path" : "/user/hand/left/input/trigger"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"inputs" : {
|
||||||
|
"click" : {
|
||||||
|
"output" : "/actions/cursor/in/mouse_left"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"mode" : "button",
|
||||||
|
"path" : "/user/hand/right/input/trigger"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"inputs" : {
|
||||||
|
"click" : {
|
||||||
|
"output" : "/actions/cursor/in/activate_cursor"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"mode" : "button",
|
||||||
|
"path" : "/user/hand/left/input/trackpad"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"inputs" : {
|
||||||
|
"click" : {
|
||||||
|
"output" : "/actions/cursor/in/activate_cursor"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"mode" : "button",
|
||||||
|
"path" : "/user/hand/right/input/trackpad"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"/actions/edit" : {
|
||||||
|
"sources" : [
|
||||||
|
{
|
||||||
|
"inputs" : {
|
||||||
|
"position" : {
|
||||||
|
"output" : "/actions/edit/in/distance"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"mode" : "joystick",
|
||||||
|
"path" : "/user/hand/left/input/thumbstick"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"inputs" : {
|
||||||
|
"position" : {
|
||||||
|
"output" : "/actions/edit/in/distance"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"mode" : "joystick",
|
||||||
|
"path" : "/user/hand/right/input/thumbstick"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"inputs" : {
|
||||||
|
"click" : {
|
||||||
|
"output" : "/actions/edit/in/grab"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"mode" : "button",
|
||||||
|
"path" : "/user/hand/left/input/trigger"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"inputs" : {
|
||||||
|
"click" : {
|
||||||
|
"output" : "/actions/edit/in/grab"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"mode" : "button",
|
||||||
|
"path" : "/user/hand/right/input/trigger"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
"/actions/legacy" : {
|
"/actions/legacy" : {
|
||||||
"haptics" : [
|
"haptics" : [
|
||||||
{
|
{
|
||||||
|
@ -588,60 +686,6 @@
|
||||||
},
|
},
|
||||||
"/actions/main" : {
|
"/actions/main" : {
|
||||||
"sources" : [
|
"sources" : [
|
||||||
{
|
|
||||||
"inputs" : {
|
|
||||||
"position" : {
|
|
||||||
"output" : "/actions/main/in/distance"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"mode" : "joystick",
|
|
||||||
"path" : "/user/hand/right/input/thumbstick"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"inputs" : {
|
|
||||||
"click" : {
|
|
||||||
"output" : "/actions/main/in/grab"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"mode" : "button",
|
|
||||||
"path" : "/user/hand/right/input/trigger"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"inputs" : {
|
|
||||||
"click" : {
|
|
||||||
"output" : "/actions/main/in/grab"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"mode" : "button",
|
|
||||||
"path" : "/user/hand/left/input/trigger"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"inputs" : {
|
|
||||||
"position" : {
|
|
||||||
"output" : "/actions/main/in/distance"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"mode" : "joystick",
|
|
||||||
"path" : "/user/hand/left/input/thumbstick"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"inputs" : {
|
|
||||||
"click" : {
|
|
||||||
"output" : "/actions/main/in/toggle_visibility"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"mode" : "button",
|
|
||||||
"path" : "/user/hand/left/input/trackpad"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"inputs" : {
|
|
||||||
"click" : {
|
|
||||||
"output" : "/actions/main/in/edit_mode"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"mode" : "button",
|
|
||||||
"path" : "/user/hand/right/input/trackpad"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"inputs" : {
|
"inputs" : {
|
||||||
"long" : {
|
"long" : {
|
||||||
|
@ -654,20 +698,23 @@
|
||||||
{
|
{
|
||||||
"inputs" : {
|
"inputs" : {
|
||||||
"click" : {
|
"click" : {
|
||||||
"output" : "/actions/main/in/activate_cursor"
|
"output" : "/actions/main/in/mouse_left"
|
||||||
|
},
|
||||||
|
"long" : {
|
||||||
|
"output" : "/actions/main/in/toggle_visibility"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"mode" : "button",
|
"mode" : "button",
|
||||||
"path" : "/user/hand/right/input/trigger"
|
"path" : "/user/hand/left/input/b"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"inputs" : {
|
"inputs" : {
|
||||||
"click" : {
|
"long" : {
|
||||||
"output" : "/actions/main/in/activate_cursor"
|
"output" : "/actions/main/in/edit_mode"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"mode" : "button",
|
"mode" : "button",
|
||||||
"path" : "/user/hand/left/input/trigger"
|
"path" : "/user/hand/right/input/b"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
50
src/app.cpp
50
src/app.cpp
|
@ -53,23 +53,27 @@ App::App()
|
||||||
printf("actions path: %s\n", _actions_path.c_str());
|
printf("actions path: %s\n", _actions_path.c_str());
|
||||||
vr_input->SetActionManifestPath(_actions_path.c_str());
|
vr_input->SetActionManifestPath(_actions_path.c_str());
|
||||||
|
|
||||||
auto action_err = vr_input->GetActionHandle("/actions/main/in/grab", &_input_handles.grab);
|
auto action_err = vr_input->GetActionHandle("/actions/edit/in/grab", &_input_handles.edit.grab);
|
||||||
assert(action_err == 0);
|
assert(action_err == 0);
|
||||||
action_err = vr_input->GetActionHandle("/actions/main/in/toggle_visibility", &_input_handles.toggle_hidden);
|
action_err = vr_input->GetActionHandle("/actions/main/in/toggle_visibility", &_input_handles.main.toggle_hidden);
|
||||||
assert(action_err == 0);
|
assert(action_err == 0);
|
||||||
action_err = vr_input->GetActionHandle("/actions/main/in/activate_cursor", &_input_handles.activate_cursor);
|
action_err = vr_input->GetActionHandle("/actions/cursor/in/activate_cursor", &_input_handles.cursor.activate);
|
||||||
assert(action_err == 0);
|
assert(action_err == 0);
|
||||||
action_err = vr_input->GetActionHandle("/actions/main/in/edit_mode", &_input_handles.edit_mode);
|
action_err = vr_input->GetActionHandle("/actions/main/in/edit_mode", &_input_handles.main.edit_mode);
|
||||||
assert(action_err == 0);
|
assert(action_err == 0);
|
||||||
action_err = vr_input->GetActionHandle("/actions/main/in/reset", &_input_handles.reset);
|
action_err = vr_input->GetActionHandle("/actions/main/in/reset", &_input_handles.main.reset);
|
||||||
assert(action_err == 0);
|
assert(action_err == 0);
|
||||||
action_err = vr_input->GetActionHandle("/actions/main/in/distance", &_input_handles.distance);
|
action_err = vr_input->GetActionHandle("/actions/edit/in/distance", &_input_handles.edit.distance);
|
||||||
assert(action_err == 0);
|
assert(action_err == 0);
|
||||||
action_err = vr_input->GetActionHandle("/actions/main/in/mouse_left", &_input_handles.mouse_left);
|
action_err = vr_input->GetActionHandle("/actions/cursor/in/mouse_left", &_input_handles.cursor.mouse_left);
|
||||||
assert(action_err == 0);
|
assert(action_err == 0);
|
||||||
action_err = vr_input->GetActionHandle("/actions/main/in/mouse_right", &_input_handles.mouse_right);
|
action_err = vr_input->GetActionHandle("/actions/cursor/in/mouse_right", &_input_handles.cursor.mouse_right);
|
||||||
assert(action_err == 0);
|
assert(action_err == 0);
|
||||||
action_err = vr_input->GetActionSetHandle("/actions/main", &_input_handles.set);
|
action_err = vr_input->GetActionSetHandle("/actions/main", &_input_handles.main_set);
|
||||||
|
assert(action_err == 0);
|
||||||
|
action_err = vr_input->GetActionSetHandle("/actions/edit", &_input_handles.edit_set);
|
||||||
|
assert(action_err == 0);
|
||||||
|
action_err = vr_input->GetActionSetHandle("/actions/cursor", &_input_handles.cursor_set);
|
||||||
assert(action_err == 0);
|
assert(action_err == 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -151,19 +155,27 @@ void App::Update()
|
||||||
|
|
||||||
void App::UpdateInput()
|
void App::UpdateInput()
|
||||||
{
|
{
|
||||||
vr::VRActiveActionSet_t main;
|
vr::VRActiveActionSet_t active_sets[2];
|
||||||
main.ulActionSet = _input_handles.set;
|
active_sets[0].ulActionSet = _input_handles.main_set;
|
||||||
main.ulRestrictedToDevice = 0;
|
active_sets[0].ulRestrictedToDevice = 0;
|
||||||
main.nPriority = 10;
|
active_sets[0].nPriority = 10;
|
||||||
vr::EVRInputError err = vr_input->UpdateActionState(&main, sizeof(vr::VRActiveActionSet_t), 1);
|
int set_count = 1;
|
||||||
if (err)
|
if (!_hidden)
|
||||||
{
|
{
|
||||||
printf("Error: (update action state): %d\n", err);
|
set_count = 2;
|
||||||
|
active_sets[1].ulRestrictedToDevice = 0;
|
||||||
|
active_sets[1].nPriority = 10;
|
||||||
|
active_sets[1].ulActionSet = _input_handles.cursor_set;
|
||||||
|
if (_edit_mode)
|
||||||
|
active_sets[1].ulActionSet = _input_handles.edit_set;
|
||||||
}
|
}
|
||||||
|
vr::EVRInputError err = vr_input->UpdateActionState(active_sets, sizeof(vr::VRActiveActionSet_t), set_count);
|
||||||
|
if (err)
|
||||||
|
printf("Error updating action state: %d\n", err);
|
||||||
|
|
||||||
vr_sys->GetDeviceToAbsoluteTrackingPose(_tracking_origin, 0, _tracker_poses, MAX_TRACKERS);
|
vr_sys->GetDeviceToAbsoluteTrackingPose(_tracking_origin, 0, _tracker_poses, MAX_TRACKERS);
|
||||||
|
|
||||||
if (IsInputJustPressed(_input_handles.toggle_hidden))
|
if (IsInputJustPressed(_input_handles.main.toggle_hidden))
|
||||||
{
|
{
|
||||||
_hidden = !_hidden;
|
_hidden = !_hidden;
|
||||||
for (auto &panel : _panels)
|
for (auto &panel : _panels)
|
||||||
|
@ -174,7 +186,7 @@ void App::UpdateInput()
|
||||||
}
|
}
|
||||||
if (!_hidden)
|
if (!_hidden)
|
||||||
{
|
{
|
||||||
if (IsInputJustPressed(_input_handles.reset))
|
if (IsInputJustPressed(_input_handles.main.reset))
|
||||||
{
|
{
|
||||||
_root_overlay.SetTransformWorld(&root_start_pose);
|
_root_overlay.SetTransformWorld(&root_start_pose);
|
||||||
_root_overlay.SetWidth(0.25f);
|
_root_overlay.SetWidth(0.25f);
|
||||||
|
@ -183,7 +195,7 @@ void App::UpdateInput()
|
||||||
panel.ResetTransform();
|
panel.ResetTransform();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (IsInputJustPressed(_input_handles.edit_mode))
|
if (IsInputJustPressed(_input_handles.main.edit_mode))
|
||||||
{
|
{
|
||||||
_edit_mode = !_edit_mode;
|
_edit_mode = !_edit_mode;
|
||||||
UpdateUIVisibility();
|
UpdateUIVisibility();
|
||||||
|
|
23
src/app.h
23
src/app.h
|
@ -18,15 +18,26 @@ struct CursorPos
|
||||||
|
|
||||||
struct InputHandles
|
struct InputHandles
|
||||||
{
|
{
|
||||||
vr::VRActionSetHandle_t set;
|
struct
|
||||||
|
{
|
||||||
vr::VRActionHandle_t toggle_hidden;
|
vr::VRActionHandle_t toggle_hidden;
|
||||||
vr::VRActionHandle_t distance;
|
|
||||||
vr::VRActionHandle_t grab;
|
|
||||||
vr::VRActionHandle_t activate_cursor;
|
|
||||||
vr::VRActionHandle_t mouse_left;
|
|
||||||
vr::VRActionHandle_t mouse_right;
|
|
||||||
vr::VRActionHandle_t edit_mode;
|
vr::VRActionHandle_t edit_mode;
|
||||||
vr::VRActionHandle_t reset;
|
vr::VRActionHandle_t reset;
|
||||||
|
} main;
|
||||||
|
vr::VRActionSetHandle_t main_set;
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
vr::VRActionHandle_t activate;
|
||||||
|
vr::VRActionHandle_t mouse_left;
|
||||||
|
vr::VRActionHandle_t mouse_right;
|
||||||
|
} cursor;
|
||||||
|
vr::VRActionSetHandle_t cursor_set;
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
vr::VRActionHandle_t distance;
|
||||||
|
vr::VRActionHandle_t grab;
|
||||||
|
} edit;
|
||||||
|
vr::VRActionSetHandle_t edit_set;
|
||||||
};
|
};
|
||||||
|
|
||||||
class App
|
class App
|
||||||
|
|
|
@ -81,7 +81,7 @@ void Controller::Update()
|
||||||
if (_last_ray.overlay != nullptr)
|
if (_last_ray.overlay != nullptr)
|
||||||
{
|
{
|
||||||
auto ray = _last_ray;
|
auto ray = _last_ray;
|
||||||
if (_app->IsInputJustPressed(_app->_input_handles.grab, _input_handle))
|
if (_app->IsInputJustPressed(_app->_input_handles.edit.grab, _input_handle))
|
||||||
{
|
{
|
||||||
if (ray.overlay->IsHeld())
|
if (ray.overlay->IsHeld())
|
||||||
{
|
{
|
||||||
|
@ -97,7 +97,7 @@ void Controller::Update()
|
||||||
|
|
||||||
if (_grabbed_overlay != nullptr)
|
if (_grabbed_overlay != nullptr)
|
||||||
{
|
{
|
||||||
float move = _app->GetInputAnalog(_app->_input_handles.distance, _input_handle).y * 0.1; // TODO use frame time
|
float move = _app->GetInputAnalog(_app->_input_handles.edit.distance, _input_handle).y * 0.1; // TODO use frame time
|
||||||
if (move != 0.0f)
|
if (move != 0.0f)
|
||||||
{
|
{
|
||||||
auto transform = _grabbed_overlay->GetTarget()->transform;
|
auto transform = _grabbed_overlay->GetTarget()->transform;
|
||||||
|
@ -108,7 +108,7 @@ void Controller::Update()
|
||||||
}
|
}
|
||||||
else //view mode
|
else //view mode
|
||||||
{
|
{
|
||||||
if (_app->IsInputJustPressed(_app->_input_handles.activate_cursor, _input_handle))
|
if (_app->IsInputJustPressed(_app->_input_handles.cursor.activate, _input_handle))
|
||||||
{
|
{
|
||||||
if (!_cursor_active && _app->_active_cursor.has_value())
|
if (!_cursor_active && _app->_active_cursor.has_value())
|
||||||
{
|
{
|
||||||
|
@ -135,12 +135,12 @@ void Controller::Update()
|
||||||
pos *= _last_ray.hit_panel->Width();
|
pos *= _last_ray.hit_panel->Width();
|
||||||
_last_ray.hit_panel->SetCursor(pos.x, pos.y);
|
_last_ray.hit_panel->SetCursor(pos.x, pos.y);
|
||||||
}
|
}
|
||||||
auto mouse_left = _app->GetInputDigital(_app->_input_handles.mouse_left, _input_handle);
|
auto mouse_left = _app->GetInputDigital(_app->_input_handles.cursor.mouse_left, _input_handle);
|
||||||
if (mouse_left.bChanged)
|
if (mouse_left.bChanged)
|
||||||
{
|
{
|
||||||
_app->SendMouseInput(1, mouse_left.bState);
|
_app->SendMouseInput(1, mouse_left.bState);
|
||||||
}
|
}
|
||||||
auto mouse_right = _app->GetInputDigital(_app->_input_handles.mouse_right, _input_handle);
|
auto mouse_right = _app->GetInputDigital(_app->_input_handles.cursor.mouse_right, _input_handle);
|
||||||
if (mouse_right.bChanged)
|
if (mouse_right.bChanged)
|
||||||
{
|
{
|
||||||
_app->SendMouseInput(3, mouse_right.bState);
|
_app->SendMouseInput(3, mouse_right.bState);
|
||||||
|
|
|
@ -208,10 +208,10 @@ void Overlay::Update()
|
||||||
|
|
||||||
if (_holding_controller != nullptr)
|
if (_holding_controller != nullptr)
|
||||||
{
|
{
|
||||||
bool hold_controller_holding = _app->GetInputDigital(_app->_input_handles.grab, _holding_controller->InputHandle()).bState;
|
bool hold_controller_holding = _app->GetInputDigital(_app->_input_handles.edit.grab, _holding_controller->InputHandle()).bState;
|
||||||
if (_resize_controller != nullptr)
|
if (_resize_controller != nullptr)
|
||||||
{
|
{
|
||||||
bool resize_controller_holding = _app->GetInputDigital(_app->_input_handles.grab, _resize_controller->InputHandle()).bState;
|
bool resize_controller_holding = _app->GetInputDigital(_app->_input_handles.edit.grab, _resize_controller->InputHandle()).bState;
|
||||||
if (!resize_controller_holding)
|
if (!resize_controller_holding)
|
||||||
{
|
{
|
||||||
_resize_controller = nullptr;
|
_resize_controller = nullptr;
|
||||||
|
|
Loading…
Reference in a new issue