mirror of
https://github.com/zenorogue/hyperrogue.git
synced 2026-03-25 22:19:43 +00:00
vr:: pointing in the rug
This commit is contained in:
9
vr.cpp
9
vr.cpp
@@ -468,12 +468,17 @@ EX ld absolute_unit_in_meters = 3;
|
||||
|
||||
/** what point and cell is the controller number id pointing to */
|
||||
|
||||
eModel pmodel_3d_version() {
|
||||
EX eModel pmodel_3d_version() {
|
||||
if(pmodel == mdGeodesic) return mdEquidistant;
|
||||
if(pmodel == mdPerspective) return nonisotropic ? mdHorocyclic : mdEquidistant;
|
||||
return pmodel;
|
||||
}
|
||||
|
||||
/** convert model coordinates to controller-relative coordinates */
|
||||
EX transmatrix screen_to_controller(int id) {
|
||||
return inverse(sm * hmd_at * vrdata.pose_matrix[id] * sm) * hmd_mv;
|
||||
}
|
||||
|
||||
ld vr_distance(shiftpoint h, int id, ld& dist) {
|
||||
hyperpoint hscr;
|
||||
h.h = hmd_pre_for[2] * h.h;
|
||||
@@ -482,7 +487,7 @@ ld vr_distance(shiftpoint h, int id, ld& dist) {
|
||||
if(in_vr_sphere && get_side(hscr) == (sphereflipped() ? -1 : 1)) return 1e5;
|
||||
|
||||
E4; hscr[3] = 1;
|
||||
hyperpoint hc = inverse(sm * hmd_at * vrdata.pose_matrix[id] * sm) * hmd_mv * hscr;
|
||||
hyperpoint hc = screen_to_controller(id) * hscr;
|
||||
if(WDIM == 2) {
|
||||
if(hc[2] > 0.1) return 1e6; /* behind */
|
||||
dist = -hc[2];
|
||||
|
||||
Reference in New Issue
Block a user