mirror of
https://github.com/CrispyPin/sinpin-vr.git
synced 2025-05-13 19:45:33 +02:00
toggle edit mode
This commit is contained in:
parent
533bf45087
commit
1134e37b10
5 changed files with 700 additions and 50 deletions
30
src/app.cpp
30
src/app.cpp
|
@ -57,11 +57,13 @@ App::App()
|
|||
printf("actions path: %s\n", _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/main/in/grab", &_input_handles.grab);
|
||||
assert(action_err == 0);
|
||||
action_err = vr_input->GetActionHandle("/actions/main/in/ToggleAll", &_input_handles.toggle);
|
||||
action_err = vr_input->GetActionHandle("/actions/main/in/toggle_visibility", &_input_handles.toggle_hidden);
|
||||
assert(action_err == 0);
|
||||
action_err = vr_input->GetActionHandle("/actions/main/in/Distance", &_input_handles.distance);
|
||||
action_err = vr_input->GetActionHandle("/actions/main/in/edit_mode", &_input_handles.edit_mode);
|
||||
assert(action_err == 0);
|
||||
action_err = vr_input->GetActionHandle("/actions/main/in/distance", &_input_handles.distance);
|
||||
assert(action_err == 0);
|
||||
action_err = vr_input->GetActionSetHandle("/actions/main", &_input_handles.set);
|
||||
assert(action_err == 0);
|
||||
|
@ -162,19 +164,29 @@ void App::UpdateInput()
|
|||
|
||||
vr_sys->GetDeviceToAbsoluteTrackingPose(_tracking_origin, 0, _tracker_poses, MAX_TRACKERS);
|
||||
|
||||
if (IsInputJustPressed(_input_handles.toggle))
|
||||
if (IsInputJustPressed(_input_handles.toggle_hidden))
|
||||
{
|
||||
_hidden = !_hidden;
|
||||
_root_overlay.SetHidden(_hidden);
|
||||
for (auto &panel : _panels)
|
||||
{
|
||||
panel.SetHidden(_hidden);
|
||||
}
|
||||
_controllers[0]->SetHidden(_hidden);
|
||||
_controllers[1]->SetHidden(_hidden);
|
||||
_root_overlay.SetHidden(_hidden || !_edit_mode);
|
||||
_controllers[0]->SetHidden(_hidden || !_edit_mode);
|
||||
_controllers[1]->SetHidden(_hidden || !_edit_mode);
|
||||
}
|
||||
if (!_hidden && IsInputJustPressed(_input_handles.edit_mode))
|
||||
{
|
||||
_edit_mode = !_edit_mode;
|
||||
_root_overlay.SetHidden(_hidden || !_edit_mode);
|
||||
_controllers[0]->SetHidden(_hidden || !_edit_mode);
|
||||
_controllers[1]->SetHidden(_hidden || !_edit_mode);
|
||||
}
|
||||
if (_edit_mode)
|
||||
{
|
||||
_controllers[0]->Update();
|
||||
_controllers[1]->Update();
|
||||
}
|
||||
_controllers[0]->Update();
|
||||
_controllers[1]->Update();
|
||||
}
|
||||
|
||||
void App::UpdateFramebuffer()
|
||||
|
|
|
@ -19,9 +19,10 @@ struct CursorPos
|
|||
struct InputHandles
|
||||
{
|
||||
vr::VRActionSetHandle_t set;
|
||||
vr::VRActionHandle_t toggle;
|
||||
vr::VRActionHandle_t toggle_hidden;
|
||||
vr::VRActionHandle_t distance;
|
||||
vr::VRActionHandle_t grab;
|
||||
vr::VRActionHandle_t edit_mode;
|
||||
};
|
||||
|
||||
class App
|
||||
|
@ -63,6 +64,7 @@ class App
|
|||
Overlay _root_overlay;
|
||||
std::vector<Panel> _panels;
|
||||
bool _hidden = false;
|
||||
bool _edit_mode = false;
|
||||
|
||||
private:
|
||||
void InitX11();
|
||||
|
|
|
@ -25,6 +25,7 @@ Controller::Controller(App *app, ControllerSide side)
|
|||
UpdateStatus();
|
||||
_laser.SetTextureToColor(255, 200, 255);
|
||||
_laser.SetAlpha(0.2f);
|
||||
_laser.SetHidden(true);
|
||||
}
|
||||
|
||||
TrackerID Controller::DeviceIndex()
|
||||
|
@ -50,6 +51,7 @@ bool Controller::IsConnected()
|
|||
void Controller::SetHidden(bool state)
|
||||
{
|
||||
_hidden = state;
|
||||
_laser.SetHidden(_hidden);
|
||||
}
|
||||
|
||||
void Controller::ReleaseOverlay()
|
||||
|
@ -94,7 +96,7 @@ void Controller::UpdateLaser()
|
|||
auto controller_pose = _app->GetTrackerPose(_device_index);
|
||||
auto controller_pos = GetPos(controller_pose);
|
||||
auto forward = -glm::vec3(controller_pose[2]);
|
||||
auto ray = _app->IntersectRay(controller_pos, forward, 5.0f);
|
||||
auto ray = _app->IntersectRay(controller_pos, forward, 8.0f);
|
||||
float len = ray.distance;
|
||||
|
||||
_last_pos = controller_pos;
|
||||
|
@ -143,5 +145,8 @@ void Controller::UpdateStatus()
|
|||
_device_index = _app->vr_sys->GetTrackedDeviceIndexForControllerRole(vr::TrackedControllerRole_RightHand);
|
||||
}
|
||||
_is_connected &= _device_index < MAX_TRACKERS;
|
||||
_laser.SetHidden(!_is_connected || _hidden);
|
||||
if (!_is_connected)
|
||||
{
|
||||
_laser.SetHidden(true);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue