Blender  V3.3
wm_xr_intern.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 
7 #pragma once
8 
9 #include "CLG_log.h"
10 
11 #include "wm_xr.h"
12 
13 struct wmXrActionSet;
14 
15 typedef struct wmXrSessionState {
16  bool is_started;
17 
19  GHOST_XrPose viewer_pose;
21  float viewer_viewmat[4][4];
23  float viewer_mat_base[4][4];
24  float focal_len;
25 
28  char prev_base_pose_type; /* #eXRSessionBasePoseType */
33  GHOST_XrPose prev_base_pose;
37  GHOST_XrPose prev_local_pose;
40 
43 
45  GHOST_XrPose nav_pose;
46  float nav_scale;
49  GHOST_XrPose nav_pose_prev;
52 
54  ListBase controllers; /* #wmXrController */
55 
60  /* Name of the action set (if any) to activate before the next actions sync. */
61  char active_action_set_next[64]; /* MAX_NAME */
63 
64 typedef struct wmXrRuntimeData {
65  GHOST_XrContextHandle context;
66 
70 
72  struct ScrArea *area;
73 
77 
78  ListBase actionmaps; /* #XrActionMap */
79  short actactionmap;
80  short selactionmap;
82 
83 typedef struct wmXrViewportPair {
88 
89 typedef struct {
91  ListBase viewports; /* #wmXrViewportPair */
92 
98 
99 typedef struct wmXrDrawData {
100  struct Scene *scene;
102 
105 
109  GHOST_XrPose base_pose;
111  float base_scale;
114  float eye_position_ofs[3]; /* Local/view space. */
116 
117 typedef struct wmXrController {
120  char subaction_path[64]; /* XR_MAX_USER_PATH_LENGTH */
121 
123  GHOST_XrPose grip_pose;
124  float grip_mat[4][4];
125  float grip_mat_base[4][4];
127  GHOST_XrPose aim_pose;
128  float aim_mat[4][4];
129  float aim_mat_base[4][4];
130 
132  struct GPUBatch *model;
134 
135 typedef struct wmXrAction {
136  char *name;
138  unsigned int count_subaction_paths;
141  void *states;
143  void *states_prev;
144 
148 
150  const char *active_modal_path;
151 
155 
157  char *haptic_name;
161 
167 
168 typedef struct wmXrHapticAction {
171  const char *subaction_path;
174 
175 typedef struct wmXrActionSet {
176  char *name;
177 
181 
187 
188 /* wm_xr.c */
189 
192 
193 /* wm_xr_session.c */
194 
197  const wmXrRuntimeData *runtime_data);
199  const XrSessionSettings *settings,
200  const GHOST_XrDrawViewInfo *draw_view,
201  wmXrDrawData *draw_data);
207 void wm_xr_session_state_update(const XrSessionSettings *settings,
208  const wmXrDrawData *draw_data,
209  const GHOST_XrDrawViewInfo *draw_view,
212  const GHOST_XrDrawViewInfo *draw_view);
215 
218 void wm_xr_session_controller_data_populate(const wmXrAction *grip_action,
219  const wmXrAction *aim_action,
220  wmXrData *xr);
222 
223 /* wm_xr_draw.c */
224 
225 void wm_xr_pose_to_mat(const GHOST_XrPose *pose, float r_mat[4][4]);
226 void wm_xr_pose_scale_to_mat(const GHOST_XrPose *pose, float scale, float r_mat[4][4]);
227 void wm_xr_pose_to_imat(const GHOST_XrPose *pose, float r_imat[4][4]);
228 void wm_xr_pose_scale_to_imat(const GHOST_XrPose *pose, float scale, float r_imat[4][4]);
235 void wm_xr_draw_view(const GHOST_XrDrawViewInfo *draw_view, void *customdata);
236 void wm_xr_draw_controllers(const struct bContext *C, struct ARegion *region, void *customdata);
struct Depsgraph Depsgraph
Definition: DEG_depsgraph.h:35
eXrOpFlag
Definition: DNA_xr_types.h:73
eXrAxisFlag
Definition: DNA_xr_types.h:100
eXrActionType
Definition: DNA_xr_types.h:64
eXrActionFlag
Definition: DNA_xr_types.h:79
eXrHapticFlag
Definition: DNA_xr_types.h:84
GPUBatch
Definition: GPU_batch.h:78
#define C
Definition: RandGen.cpp:25
const int state
__int64 int64_t
Definition: stdint.h:89
wmXrAction * controller_aim_action
Definition: wm_xr_intern.h:180
wmXrAction * controller_grip_action
Definition: wm_xr_intern.h:179
ListBase active_modal_actions
Definition: wm_xr_intern.h:183
ListBase active_haptic_actions
Definition: wm_xr_intern.h:185
eXrActionType type
Definition: wm_xr_intern.h:137
struct wmOperatorType * ot
Definition: wm_xr_intern.h:153
eXrAxisFlag * axis_flags
Definition: wm_xr_intern.h:147
void * states
Definition: wm_xr_intern.h:141
char * haptic_name
Definition: wm_xr_intern.h:157
unsigned int count_subaction_paths
Definition: wm_xr_intern.h:138
void * states_prev
Definition: wm_xr_intern.h:143
eXrOpFlag op_flag
Definition: wm_xr_intern.h:163
char * name
Definition: wm_xr_intern.h:136
float haptic_frequency
Definition: wm_xr_intern.h:159
int64_t haptic_duration
Definition: wm_xr_intern.h:158
eXrActionFlag action_flag
Definition: wm_xr_intern.h:164
const char * active_modal_path
Definition: wm_xr_intern.h:150
char ** subaction_paths
Definition: wm_xr_intern.h:139
float * float_thresholds
Definition: wm_xr_intern.h:146
float haptic_amplitude
Definition: wm_xr_intern.h:160
eXrHapticFlag haptic_flag
Definition: wm_xr_intern.h:165
IDProperty * op_properties
Definition: wm_xr_intern.h:154
float grip_mat_base[4][4]
Definition: wm_xr_intern.h:125
struct wmXrController * prev
Definition: wm_xr_intern.h:118
float grip_mat[4][4]
Definition: wm_xr_intern.h:124
GHOST_XrPose grip_pose
Definition: wm_xr_intern.h:123
float aim_mat[4][4]
Definition: wm_xr_intern.h:128
float aim_mat_base[4][4]
Definition: wm_xr_intern.h:129
char subaction_path[64]
Definition: wm_xr_intern.h:120
struct wmXrController * next
Definition: wm_xr_intern.h:118
struct GPUBatch * model
Definition: wm_xr_intern.h:132
GHOST_XrPose aim_pose
Definition: wm_xr_intern.h:127
wmXrData * xr_data
Definition: wm_xr_intern.h:103
float base_scale
Definition: wm_xr_intern.h:111
float eye_position_ofs[3]
Definition: wm_xr_intern.h:114
struct Depsgraph * depsgraph
Definition: wm_xr_intern.h:101
GHOST_XrPose base_pose
Definition: wm_xr_intern.h:109
wmXrSurfaceData * surface_data
Definition: wm_xr_intern.h:104
struct Scene * scene
Definition: wm_xr_intern.h:100
struct wmXrHapticAction * prev
Definition: wm_xr_intern.h:169
struct wmXrHapticAction * next
Definition: wm_xr_intern.h:169
const char * subaction_path
Definition: wm_xr_intern.h:171
wmXrAction * action
Definition: wm_xr_intern.h:170
GHOST_XrContextHandle context
Definition: wm_xr_intern.h:65
wmXrSessionExitFn exit_fn
Definition: wm_xr_intern.h:76
wmXrSessionState session_state
Definition: wm_xr_intern.h:75
wmWindow * session_root_win
Definition: wm_xr_intern.h:69
ListBase actionmaps
Definition: wm_xr_intern.h:78
struct ScrArea * area
Definition: wm_xr_intern.h:72
float viewer_mat_base[4][4]
Definition: wm_xr_intern.h:23
float viewer_viewmat[4][4]
Definition: wm_xr_intern.h:21
GHOST_XrPose nav_pose
Definition: wm_xr_intern.h:45
bool force_reset_to_base_pose
Definition: wm_xr_intern.h:41
GHOST_XrPose nav_pose_prev
Definition: wm_xr_intern.h:49
GHOST_XrPose prev_local_pose
Definition: wm_xr_intern.h:37
float prev_eye_position_ofs[3]
Definition: wm_xr_intern.h:39
char active_action_set_next[64]
Definition: wm_xr_intern.h:61
bool is_navigation_dirty
Definition: wm_xr_intern.h:51
Object * prev_base_pose_object
Definition: wm_xr_intern.h:29
ListBase controllers
Definition: wm_xr_intern.h:54
struct wmXrActionSet * active_action_set
Definition: wm_xr_intern.h:59
GHOST_XrPose prev_base_pose
Definition: wm_xr_intern.h:33
char prev_base_pose_type
Definition: wm_xr_intern.h:28
GHOST_XrPose viewer_pose
Definition: wm_xr_intern.h:19
struct ARegionType * controller_art
Definition: wm_xr_intern.h:94
ListBase viewports
Definition: wm_xr_intern.h:91
void * controller_draw_handle
Definition: wm_xr_intern.h:96
struct GPUViewport * viewport
Definition: wm_xr_intern.h:86
struct wmXrViewportPair * prev
Definition: wm_xr_intern.h:84
struct wmXrViewportPair * next
Definition: wm_xr_intern.h:84
struct GPUOffScreen * offscreen
Definition: wm_xr_intern.h:85
void(* wmXrSessionExitFn)(const wmXrData *xr_data)
Definition: wm_xr.h:12
void wm_xr_pose_to_mat(const GHOST_XrPose *pose, float r_mat[4][4])
Definition: wm_xr_draw.c:32
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)
struct wmXrDrawData wmXrDrawData
struct wmXrViewportPair wmXrViewportPair
struct wmXrSessionState wmXrSessionState
void wm_xr_runtime_data_free(wmXrRuntimeData **runtime)
Definition: wm_xr.c:150
struct wmXrActionSet wmXrActionSet
void wm_xr_pose_scale_to_mat(const GHOST_XrPose *pose, float scale, float r_mat[4][4])
Definition: wm_xr_draw.c:38
wmWindow * wm_xr_session_root_window_or_fallback_get(const wmWindowManager *wm, const wmXrRuntimeData *runtime_data)
void wm_xr_draw_controllers(const struct bContext *C, struct ARegion *region, void *customdata)
wmXrRuntimeData * wm_xr_runtime_data_create(void)
Definition: wm_xr.c:144
void wm_xr_session_controller_data_populate(const wmXrAction *grip_action, const wmXrAction *aim_action, wmXrData *xr)
struct wmXrRuntimeData wmXrRuntimeData
void * wm_xr_session_gpu_binding_context_create(void)
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)
Definition: wm_xr_session.c:85
bool wm_xr_session_surface_offscreen_ensure(wmXrSurfaceData *surface_data, const GHOST_XrDrawViewInfo *draw_view)
struct wmXrHapticAction wmXrHapticAction
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.c:56
void wm_xr_draw_view(const GHOST_XrDrawViewInfo *draw_view, void *customdata)
Draw a viewport for a single eye.
Definition: wm_xr_draw.c:128
void wm_xr_pose_to_imat(const GHOST_XrPose *pose, float r_imat[4][4])
Definition: wm_xr_draw.c:48
struct wmXrController wmXrController
struct wmXrAction wmXrAction