implement tasks for update windows vr

This commit is contained in:
2019-07-27 15:52:15 +02:00
parent 5fc27ebb14
commit ae5da7139c
3 changed files with 37 additions and 33 deletions

View File

@@ -81,9 +81,9 @@ void App::vr_update(float dt)
controller_cursor.y = (-plane_local.y * 0.5f + 0.5f) * height;
if (!down_controller && ui_visible)
{
async_start();
mouse_move(controller_cursor.x, controller_cursor.y, 1.f, kEventSource::Mouse, false);
async_end();
ui_task_async([this,p=controller_cursor] {
mouse_move(p.x, p.y, 1.f, kEventSource::Mouse, false);
});
ui_inside = true;
}
}
@@ -97,10 +97,10 @@ void App::vr_update(float dt)
auto p = controller_points.average();
if (glm::distance(p, controller_last_point) > 1)
{
async_start();
Canvas::I->stroke_update(p, down_controller->get_trigger_value());
Canvas::I->stroke_draw();
async_end();
render_task_async([p, c=down_controller]{
Canvas::I->stroke_update(p, c->get_trigger_value());
Canvas::I->stroke_draw();
});
controller_last_point = p;
redraw = true;
}
@@ -113,18 +113,20 @@ void App::vr_analog(const VRController& c, VRController::kButton b, VRController
{
if (!down_controller && (ui_inside || ui_capture) && ui_visible)
{
async_start();
if (a == VRController::kAction::Press)
{
mouse_down(0, controller_cursor.x, controller_cursor.y, 1.f, kEventSource::Mouse, false);
ui_task_async([this, p=controller_cursor] {
mouse_down(0, p.x, p.y, 1.f, kEventSource::Mouse, false);
});
ui_capture = true;
}
else
{
mouse_up(0, controller_cursor.x, controller_cursor.y, kEventSource::Mouse, false);
ui_task_async([this, p=controller_cursor] {
mouse_up(0, p.x, p.y, kEventSource::Mouse, false);
});
ui_capture = false;
}
async_end();
}
else
{
@@ -132,9 +134,9 @@ void App::vr_analog(const VRController& c, VRController::kButton b, VRController
{
glm::vec3 head_position = vr_head[3];
glm::vec3 c_pos = glm::normalize(c.get_pos() - head_position) * 800.f;
async_start();
Canvas::I->stroke_start(c_pos, force.x);
async_end();
render_task_async([=] {
Canvas::I->stroke_start(c_pos, force.x);
});
controller_last_point = c_pos;
controller_points.clear();
down_controller = &c;
@@ -142,9 +144,9 @@ void App::vr_analog(const VRController& c, VRController::kButton b, VRController
if (a == VRController::kAction::Release)
{
down_controller = nullptr;
async_start();
Canvas::I->stroke_end();
async_end();
render_task_async([this] {
Canvas::I->stroke_end();
});
}
}
}
@@ -159,7 +161,9 @@ void App::vr_digital(const VRController& c, VRController::kButton b, VRControlle
{
if (!ui_visible)
Canvas::I->m_cam_rot = vr_rot;
toggle_ui();
ui_task_async([this] {
toggle_ui();
});
}
}
}