Blender V5.0
wm_xr_intern.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2023 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
8
9#pragma once
10
11#include "CLG_log.h"
12
13#include "GHOST_Types.h"
14
15#include "DNA_listBase.h"
16#include "DNA_xr_types.h"
17
18#include "wm_xr.hh"
19
20struct bContext;
21struct ARegion;
22struct Object;
23struct wmWindow;
24struct wmWindowManager;
25struct wmXrActionSet;
26struct wmXrData;
27
30
32 GHOST_XrPose viewer_pose;
34 float viewer_viewmat[4][4];
36 float viewer_mat_base[4][4];
37 float focal_len;
38
41 char prev_base_pose_type; /* #eXRSessionBasePoseType. */
46 GHOST_XrPose prev_base_pose;
50 GHOST_XrPose prev_local_pose;
53
58
60 GHOST_XrPose nav_pose;
61 float nav_scale;
64 GHOST_XrPose nav_pose_prev;
67
69 ListBase controllers; /* #wmXrController. */
70
75 /* Name of the action set (if any) to activate before the next actions sync. */
76 char active_action_set_next[64]; /* #MAX_NAME. */
77
80
82 blender::gpu::Batch *raycast_model;
83};
84
103
109
112 ListBase viewports; /* #wmXrViewportPair. */
113
118};
119
121 struct Scene *scene;
122 struct Depsgraph *depsgraph;
123
126
130 GHOST_XrPose base_pose;
135 float eye_position_ofs[3]; /* Local/view space. */
136};
137
141 char subaction_path[64]; /* #XR_MAX_USER_PATH_LENGTH. */
142
145 GHOST_XrPose grip_pose;
146 float grip_mat[4][4];
147 float grip_mat_base[4][4];
150 GHOST_XrPose aim_pose;
151 float aim_mat[4][4];
152 float aim_mat_base[4][4];
153
155 blender::gpu::Batch *model;
156};
157
190
197
210
226
227/* `wm_xr.cc` */
228
231
232/* `wm_xr_session.cc` */
233
236 const wmXrRuntimeData *runtime_data);
238 const XrSessionSettings *settings,
239 const GHOST_XrDrawViewInfo *draw_view,
240 wmXrDrawData *draw_data);
247 const wmXrDrawData *draw_data,
248 const GHOST_XrDrawViewInfo *draw_view,
251 const GHOST_XrDrawViewInfo *draw_view);
253void wm_xr_session_gpu_binding_context_destroy(GHOST_ContextHandle context);
254
258 const wmXrAction *aim_action,
259 wmXrData *xr);
261
262/* `wm_xr_draw.cc` */
263
264void wm_xr_pose_to_mat(const GHOST_XrPose *pose, float r_mat[4][4]);
265void wm_xr_pose_scale_to_mat(const GHOST_XrPose *pose, float scale, float r_mat[4][4]);
266void wm_xr_pose_to_imat(const GHOST_XrPose *pose, float r_imat[4][4]);
267void wm_xr_pose_scale_to_imat(const GHOST_XrPose *pose, float scale, float r_imat[4][4]);
274void wm_xr_draw_view(const GHOST_XrDrawViewInfo *draw_view, void *customdata);
275void wm_xr_draw_controllers(const bContext *C, ARegion *region, void *customdata);
276
283bool wm_xr_passthrough_enabled(void *customdata);
290void wm_xr_disable_passthrough(void *customdata);
These structs are the foundation for all linked lists in the library system.
eXrOpFlag
eXrAxisFlag
eXrActionType
eXrActionFlag
eXrHapticFlag
#define C
Definition RandGen.cpp:29
long long int int64_t
static ulong state[N]
wmXrAction * controller_aim_action
wmXrAction * controller_grip_action
ListBase active_modal_actions
ListBase active_haptic_actions
eXrActionType type
struct wmOperatorType * ot
eXrAxisFlag * axis_flags
char * haptic_name
unsigned int count_subaction_paths
void * states_prev
eXrOpFlag op_flag
float haptic_frequency
int64_t haptic_duration
eXrActionFlag action_flag
const char * active_modal_path
char ** subaction_paths
float * float_thresholds
float haptic_amplitude
eXrHapticFlag haptic_flag
IDProperty * op_properties
float grip_mat_base[4][4]
struct wmXrController * prev
float grip_mat[4][4]
GHOST_XrPose grip_pose
float aim_mat[4][4]
blender::gpu::Batch * model
float aim_mat_base[4][4]
char subaction_path[64]
struct wmXrController * next
GHOST_XrPose aim_pose
wmXrData * xr_data
float eye_position_ofs[3]
struct Depsgraph * depsgraph
GHOST_XrPose base_pose
wmXrSurfaceData * surface_data
struct Scene * scene
struct wmXrHapticAction * prev
struct wmXrHapticAction * next
const char * subaction_path
wmXrAction * action
GHOST_XrContextHandle context
wmXrSessionExitFn exit_fn
wmXrSessionState session_state
wmWindow * session_root_win
ListBase actionmaps
struct ScrArea * area
float viewer_mat_base[4][4]
float viewer_viewmat[4][4]
GHOST_XrPose nav_pose
bool force_reset_to_base_pose
GHOST_XrPose nav_pose_prev
GHOST_XrPose prev_local_pose
float prev_eye_position_ofs[3]
char active_action_set_next[64]
blender::gpu::Batch * raycast_model
Object * prev_base_pose_object
struct wmXrActionSet * active_action_set
GHOST_XrPose prev_base_pose
GHOST_XrPose viewer_pose
struct wmXrVignetteData * vignette_data
struct ARegionType * controller_art
void * controller_draw_handle
struct GPUViewport * viewport
struct wmXrViewportPair * prev
struct wmXrViewportPair * next
struct GPUOffScreen * offscreen
float initial_aperture_velocity
float aperture_velocity_delta
void(*)(const wmXrData *xr_data) wmXrSessionExitFn
Definition wm_xr.hh:15
void wm_xr_pose_to_mat(const GHOST_XrPose *pose, float r_mat[4][4])
Definition wm_xr_draw.cc:39
void wm_xr_session_gpu_binding_context_destroy(GHOST_ContextHandle context)
void wm_xr_session_actions_update(wmWindowManager *wm)
void wm_xr_session_draw_data_update(wmXrSessionState *state, const XrSessionSettings *settings, const GHOST_XrDrawViewInfo *draw_view, wmXrDrawData *draw_data)
void * wm_xr_session_gpu_binding_context_create()
void wm_xr_draw_controllers(const bContext *C, ARegion *region, void *customdata)
void wm_xr_runtime_data_free(wmXrRuntimeData **runtime)
Definition wm_xr.cc:170
void wm_xr_pose_scale_to_mat(const GHOST_XrPose *pose, float scale, float r_mat[4][4])
Definition wm_xr_draw.cc:45
bool wm_xr_passthrough_enabled(void *customdata)
Check if XR passthrough is enabled.
wmXrRuntimeData * wm_xr_runtime_data_create()
Definition wm_xr.cc:164
void wm_xr_disable_passthrough(void *customdata)
Disable XR passthrough if not supported.
void wm_xr_session_controller_data_populate(const wmXrAction *grip_action, const wmXrAction *aim_action, wmXrData *xr)
wmWindow * wm_xr_session_root_window_or_fallback_get(const wmWindowManager *wm, const wmXrRuntimeData *runtime_data)
void wm_xr_session_state_update(const XrSessionSettings *settings, const wmXrDrawData *draw_data, const GHOST_XrDrawViewInfo *draw_view, wmXrSessionState *state)
void wm_xr_session_controller_data_clear(wmXrSessionState *state)
void wm_xr_session_data_free(wmXrSessionState *state)
bool wm_xr_session_surface_offscreen_ensure(wmXrSurfaceData *surface_data, const GHOST_XrDrawViewInfo *draw_view)
void wm_xr_session_actions_init(wmXrData *xr)
void wm_xr_pose_scale_to_imat(const GHOST_XrPose *pose, float scale, float r_imat[4][4])
Definition wm_xr_draw.cc:63
void wm_xr_draw_view(const GHOST_XrDrawViewInfo *draw_view, void *customdata)
Draw a viewport for a single eye.
void wm_xr_pose_to_imat(const GHOST_XrPose *pose, float r_imat[4][4])
Definition wm_xr_draw.cc:55