28 const std::shared_ptr<GraphicDataBroker>& broker,
29 const std::shared_ptr<const IHexapodCoordinateConverter>& converter_ptr,
30 const std::shared_ptr<const IHexapodJointCalculator>& calculator_ptr,
31 const std::shared_ptr<const IHexapodPostureValidator>& checker_ptr,
32 const std::shared_ptr<const ApplicationSettingRecord>& setting_ptr) :
33 mouse_ptr_(
std::make_shared<
Mouse>()),
35 converter_ptr_(converter_ptr),
36 calculator_ptr_(calculator_ptr),
40 assert(broker_ !=
nullptr);
41 assert(converter_ptr_ !=
nullptr);
42 assert(calculator_ptr_ !=
nullptr);
47 map_state_ = map_creator.
InitMap();
48 divided_map_state_.
Init(map_state_, {});
50 const auto camera = std::make_shared<DxlibCamera>();
51 const auto camera_gui = std::make_shared<DxlibGuiCamera>(setting_ptr->window_size_x, setting_ptr->window_size_y, camera);
54 const auto camera_dragger = std::make_shared<CameraDragger>(camera);
56 const auto camera_parameter_gui = std::make_shared<DxlibGuiCameraParameterDisplayer>(setting_ptr->window_size_x, setting_ptr->window_size_y, camera);
58 camera_parameter_gui->SetVisible(
false);
60 const auto node_display_gui = std::make_shared<DxlibGuiNodeDisplayer>(setting_ptr->window_size_x, setting_ptr->window_size_y, converter_ptr, calculator_ptr, checker_ptr);
63 const auto robot_control_gui = std::make_shared<DxlibGuiRobotControl>(setting_ptr->window_size_x, setting_ptr->window_size_y, converter_ptr, calculator_ptr, checker_ptr);
66 const auto [hexapod_renderer, hexapod_node_setter] =
69 map_renderer_->SetMapState(map_state_);
72 gui_updater_.
Register(display_node_switch_gui_, 1);
73 gui_updater_.
Register(camera_parameter_gui, 1);
74 gui_updater_.
Register(camera_dragger, 0);
75 gui_updater_.
Register(node_display_gui, 1);
76 gui_updater_.
Register(camera_gui, 1);
77 gui_updater_.
Register(robot_control_gui, 1);
81 node_setter_group_.
Register(camera_gui);
82 node_setter_group_.
Register(node_display_gui);
83 node_setter_group_.
Register(hexapod_node_setter);
84 node_setter_group_.
Register(map_renderer_);
85 node_setter_group_.
Register(robot_control_gui);
87 render_group_.
Register(hexapod_renderer);
88 render_group_.
Register(map_renderer_);
93 assert(mouse_ptr_ !=
nullptr);
102 size_t display_node_index_ = display_node_switch_gui_->GetDisplayNodeNum();
105 node_setter_group_.
SetNode(graph_.at(display_node_index_));
108 if (broker_->graph.GetUpdateCount() != graph_update_count_)
110 graph_update_count_ = broker_->graph.GetUpdateCount();
112 graph_ = broker_->graph.GetData();
114 display_node_switch_gui_->SetGraphData(graph_.size(), { graph_.size() - 1 });
117 if (broker_->map_state.GetUpdateCount() != map_update_count_)
119 map_update_count_ = broker_->map_state.GetUpdateCount();
121 map_state_ = broker_->map_state.GetData();
123 divided_map_state_.
Init(map_state_, {});
125 map_renderer_->SetMapState(map_state_);
void Draw() const override
描画を行う. ここでは描画系の処理のみを行い内部のデータを 更新しないため const を付けている.
bool Update() override
描画画面の更新を行う.純粋仮想関数のため, 継承先では必ず override する必要がある.
GraphicMainRobotControl(const std::shared_ptr< GraphicDataBroker > &broker, const std::shared_ptr< const IHexapodCoordinateConverter > &converter_ptr, const std::shared_ptr< const IHexapodJointCalculator > &calculator_ptr, const std::shared_ptr< const IHexapodPostureValidator > &checker_ptr, const std::shared_ptr< const ApplicationSettingRecord > &setting_ptr)
static std::tuple< std::shared_ptr< IDxlib3dRenderer >, std::shared_ptr< IDxlibNodeSetter > > Build(const std::shared_ptr< const IHexapodCoordinateConverter > &converter_ptr, const std::shared_ptr< const IHexapodJointCalculator > &calculator_ptr, DisplayQuality display_quality)
HexapodRendererクラスのインスタンスを作成する. static関数なので,HexapodRendererBuilder::Build()と呼び出す.