#ifndef DEPTHGUIDE_AUGMENT_MANAGER_V2_IMPL_H #define DEPTHGUIDE_AUGMENT_MANAGER_V2_IMPL_H #include "module/augment_manager_v2.h" #include struct augment_manager_v2::impl { using item_base_type = create_config::item_type; struct item_store_type : public item_base_type { // for all bool visible = true; float alpha = 1.0f; // for image bool flip_y = false; // for mesh float ambient_factor = 0.5f; bool enable_depth_alpha = false; float alpha_factor = 0.1; // for pc float point_size = 1.0f; // for mesh and pc glm::vec3 color = {1.0f, 0.0f, 0.0f}; glm::vec3 extra_offset; glm::vec3 extra_rotation; glm::mat4 base_transform = glm::mat4(1.0f); bool is_tracked = true; // combined from extra_offset and extra_rotation glm::mat4 extra_transform() const; glm::mat4 get_transform() const; void update_transform(impl *pimpl); }; augment_manager_v2 *q_this = nullptr; create_config conf; bool player_allow_control = false; using item_list_type = std::vector; item_list_type item_list; scene_ptr last_scene_info; using sophiar_conn_type = create_config::sophiar_conn_type; sophiar_conn_type *sophiar_conn = nullptr; smart_cuda_stream *stream = nullptr; bool enable = true; // enable this module bool enable_light_follow_camera = false; bool ignore_missing = false; // show item even if missing from the tracker vgm::Vec3 light_direction = {0.0f, 0.0f, -1.0f}; camera_augment_helper_v2 *cam_helper = nullptr; // low-level GL_POINT info struct { GLfloat min, max; } ps_range; GLfloat ps_interval; explicit impl(const create_config &conf); void update(const camera_info &info, bool no_commit = false); void render(); void show(); }; #endif //DEPTHGUIDE_AUGMENT_MANAGER_V2_IMPL_H