[Bf-blender-cvs] [7863f2fbe0f] xr-controller-support: XR: Add teleport offset option
Peter Kim
noreply at git.blender.org
Wed Jul 7 13:04:36 CEST 2021
Commit: 7863f2fbe0fc6a44a77640899206491631aaba16
Author: Peter Kim
Date: Wed Jul 7 19:22:36 2021 +0900
Branches: xr-controller-support
https://developer.blender.org/rB7863f2fbe0fc6a44a77640899206491631aaba16
XR: Add teleport offset option
===================================================================
M source/blender/windowmanager/xr/intern/wm_xr_operators.c
===================================================================
diff --git a/source/blender/windowmanager/xr/intern/wm_xr_operators.c b/source/blender/windowmanager/xr/intern/wm_xr_operators.c
index 195860da221..5e05a2c71f8 100644
--- a/source/blender/windowmanager/xr/intern/wm_xr_operators.c
+++ b/source/blender/windowmanager/xr/intern/wm_xr_operators.c
@@ -1214,7 +1214,8 @@ static void wm_xr_navigation_teleport(bContext *C,
float *ray_dist,
bool selectable_only,
const bool teleport_axes[3],
- float teleport_t)
+ float teleport_t,
+ float teleport_ofs)
{
Depsgraph *depsgraph = CTX_data_ensure_evaluated_depsgraph(C);
ViewContext vc;
@@ -1261,6 +1262,9 @@ static void wm_xr_navigation_teleport(bContext *C,
project_v3_v3v3_normalized(v1, viewer_location, nav_axes[a]);
sub_v3_v3(v0, v1);
madd_v3_v3fl(projected, v0, teleport_t);
+ /* Subtract offset. */
+ project_v3_v3v3_normalized(v0, normal, nav_axes[a]);
+ madd_v3_v3fl(projected, v0, teleport_ofs);
}
/* Add to final location. */
add_v3_v3(out, projected);
@@ -1310,7 +1314,7 @@ static int wm_xr_navigation_teleport_modal_3d(bContext *C, wmOperator *op, const
else if (event->val == KM_RELEASE) {
XrRaycastData *data = op->customdata;
bool selectable_only, teleport_axes[3];
- float teleport_t, ray_dist;
+ float teleport_t, teleport_ofs, ray_dist;
PropertyRNA *prop = RNA_struct_find_property(op->ptr, "teleport_axes");
if (prop) {
@@ -1323,6 +1327,9 @@ static int wm_xr_navigation_teleport_modal_3d(bContext *C, wmOperator *op, const
prop = RNA_struct_find_property(op->ptr, "interpolation");
teleport_t = prop ? RNA_property_float_get(op->ptr, prop) : 1.0f;
+ prop = RNA_struct_find_property(op->ptr, "offset");
+ teleport_ofs = prop ? RNA_property_float_get(op->ptr, prop) : 0.0f;
+
prop = RNA_struct_find_property(op->ptr, "selectable_only");
selectable_only = prop ? RNA_property_boolean_get(op->ptr, prop) : true;
@@ -1336,7 +1343,8 @@ static int wm_xr_navigation_teleport_modal_3d(bContext *C, wmOperator *op, const
&ray_dist,
selectable_only,
teleport_axes,
- teleport_t);
+ teleport_t,
+ teleport_ofs);
wm_xr_raycast_uninit(op);
@@ -1380,6 +1388,15 @@ static void WM_OT_xr_navigation_teleport(wmOperatorType *ot)
"Interpolation factor between viewer and hit locations",
0.0f,
1.0f);
+ RNA_def_float(ot->srna,
+ "offset",
+ 0.0f,
+ 0.0f,
+ FLT_MAX,
+ "Offset",
+ "Offset along hit normal to subtract from final location",
+ 0.0f,
+ FLT_MAX);
RNA_def_boolean(ot->srna,
"selectable_only",
true,
More information about the Bf-blender-cvs
mailing list