1#ifndef DANDELION_UI_CONTROLLER_H
2#define DANDELION_UI_CONTROLLER_H
10#include <spdlog/spdlog.h>
11#include <nlohmann/json.hpp>
void select_object(Object *object)
定义 controller.cpp:476
void select_light(Light *light)
定义 controller.cpp:527
void select_halfedge(const Halfedge *halfedge)
定义 controller.cpp:482
void on_rotating(bool initial)
将鼠标拖动转换为轨迹球 (Trackball) 操作,用于旋转预览视角。
定义 controller.cpp:540
void render_debug_helpers(const Shader &shader)
渲染帮助调试的元素。
定义 controller.cpp:368
std::unique_ptr< UI::Toolbar > toolbar
定义 controller.h:232
void on_framebuffer_resized(float width, float height)
在缩放窗口时调整轨迹球半径、预览视角(相机)Y 方向的 FoV,并更新自身记录的窗口尺寸。
定义 controller.cpp:146
void on_wheel_scrolled()
将拨动鼠标滚轮的操作转换为视角拉进或远离。
定义 controller.cpp:136
void select_vertex(Vertex *vertex)
定义 controller.cpp:490
void on_translating(bool initial)
将鼠标拖动转换为视角平移。
定义 controller.cpp:597
WorkingMode mode
全局工作模式。
定义 controller.h:226
void render_selected_element(const Shader &shader)
渲染当前选中的元素。
定义 controller.cpp:306
void return_to_safe_state()
定义 controller.cpp:619
std::shared_ptr< spdlog::logger > logger
定义 controller.h:245
void select_face(Face *face)
定义 controller.cpp:510
void pick_element(Ray &ray)
拾取半边、顶点、边或面片。
定义 controller.cpp:411
static constexpr float mouse_translation_factor
定义 controller.h:217
Controller & operator=(Controller &other)=delete
static Controller & controller()
获取 Controller 类的唯一实例。
定义 controller.cpp:34
void unselect()
取消选择。
定义 controller.cpp:269
SelectableType selected_element
当前被选中的元素。
定义 controller.h:243
static constexpr float wheel_scroll_factor
定义 controller.h:215
void render(const Shader &shader)
定义 controller.cpp:237
Controller()
定义 controller.cpp:40
GL::LineSet picking_ray
定义 controller.h:253
UI::DebugOptions debug_options
定义 controller.h:228
float window_height
定义 controller.h:122
void on_mouse_dragged(bool initial)
将鼠标拖动转换为旋转视角或平移视角操作。
定义 controller.cpp:95
GL::Mesh highlighted_element
定义 controller.h:249
void on_picking()
根据鼠标点击选取场景中的物体。
定义 controller.cpp:109
std::unique_ptr< Scene > scene
定义 controller.h:234
float window_width
定义 controller.h:122
float toolbar_width
定义 controller.h:123
Controller(Controller &other)=delete
GL::LineSet highlighted_halfedge
定义 controller.h:251
void select(SelectableType element)
选择一个元素。
定义 controller.cpp:253
float trackball_radius
定义 controller.h:247
void pick_object(Ray &ray)
拾取物体。
定义 controller.cpp:384
void select_edge(Edge *edge)
定义 controller.cpp:498
std::unique_ptr< UI::Menubar > menubar
定义 controller.h:230
void process_input()
处理关于场景操作的输入。
定义 controller.cpp:154
对 GLSL Shader 的简单封装。
定义 shader.hpp:24
std::variant< std::monostate, Object *, const Halfedge *, Vertex *, Edge *, Face *, Light * > SelectableType
场景中可被选择的元素类型。
定义 selection_helper.h:38
WorkingMode
定义 rendering.hpp:46
半边网格中的边。
定义 halfedge.h:118
半边网格中的面片。
定义 halfedge.h:151
在预览场景时绘制若干线条。
定义 gl.hpp:334
用于场景预览渲染的 Mesh 类。
定义 gl.hpp:268
半边网格中最关键的几何元素。
定义 halfedge.h:46
辅助调试的 GUI 选项。
定义 menubar.h:21
半边网格中的顶点。
定义 halfedge.h:86