#ifndef DEPTHGUIDE_AUGMENT_MANAGER_IMPL_H #define DEPTHGUIDE_AUGMENT_MANAGER_IMPL_H #include "module/augment_manager.h" #include "render_v3/scene_render.h" #include #include struct augment_manager::impl { using item_store_base_type = create_config::item_type; struct item_store_type : public item_store_base_type { using actor_type = scene_render::actor_token_type; actor_type actor = nullptr; actor_type bg_actor = nullptr; bool visible = true; glm::vec3 color = {1.0f, 0.0f, 0.0f}; float ambient_factor = 0.5f; float alpha_factor = 0.25f; glm::vec3 extra_offset; glm::vec3 extra_rotation; // combined from extra_offset and extra_rotation glm::mat4 extra_transform() const; void update_color(); }; using item_pool_type = std::unordered_map; item_pool_type item_pool; using sophiar_conn_type = create_config::sophiar_conn_type; sophiar_conn_type *sophiar_conn = 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 = {1.0f, 0.0f, 0.0f}; scene_render ren; explicit impl(const create_config &conf); void update_scene(); void render(const camera_info &info); void show(); }; #endif //DEPTHGUIDE_AUGMENT_MANAGER_IMPL_H