29 const std::shared_ptr<const GraphicDataBroker>& broker_ptr,
30 const std::shared_ptr<const IHexapodCoordinateConverter>& converter_ptr,
31 const std::shared_ptr<const IHexapodJointCalculator>& calculator_ptr,
32 const std::shared_ptr<const IHexapodPostureValidator>& checker_ptr,
33 const std::shared_ptr<const ApplicationSettingRecord>& setting_ptr) :
34 broker_ptr_(broker_ptr),
35 mouse_ptr_(
std::make_shared<
Mouse>()),
37 gui_controller_ptr_(std::make_unique<GraphViewerGUIController>(&graph_, &display_node_index_, setting_ptr))
39 assert(broker_ptr_ !=
nullptr);
43 RobotStateNode init_node = node_initializer.InitNode();
46 const auto camera = std::make_shared<DxlibCamera>();
48 const auto camera_gui = std::make_shared<DxlibGuiCamera>(setting_ptr->window_size_x, setting_ptr->window_size_y, camera);
51 const auto camera_dragger = std::make_shared<CameraDragger>(camera);
53 const auto camera_parameter_gui = std::make_shared<DxlibGuiCameraParameterDisplayer>(setting_ptr->window_size_x, setting_ptr->window_size_y, camera);
55 camera_parameter_gui->SetVisible(
false);
57 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);
60 const auto [hexapod_renderer_, hexapod_node_setter] =
63 const auto map_renderer = std::make_shared<MapRenderer>();
64 map_renderer->SetMapState(broker_ptr->map_state.GetData());
66 const auto world_grid_renderer = std::make_shared<WorldGridRenderer>();
74 gui_updater_.OpenTerminal();
76 renderer_group_.Register(hexapod_renderer_);
77 renderer_group_.Register(map_renderer);
78 renderer_group_.Register(world_grid_renderer);
80 node_setter_group_.Register(camera_gui);
81 node_setter_group_.Register(node_display_gui);
82 node_setter_group_.Register(hexapod_node_setter);
83 node_setter_group_.Register(map_renderer);
91 gui_controller_ptr_->Update();
93 if (graph_update_count_ != broker_ptr_->graph.GetUpdateCount())
97 graph_ = broker_ptr_->graph.GetData();
102 display_node_index_ = 0;
105 gui_controller_ptr_->UpdateGraphNodeDepthData();
107 graph_update_count_ = broker_ptr_->graph.GetUpdateCount();
110 if (display_node_index_ < graph_.size() && graph_.size() != 0)
112 node_setter_group_.
SetNode(graph_.at(display_node_index_));
GraphicMainGraphViewer(const std::shared_ptr< const GraphicDataBroker > &broker_ptr, 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)
bool Update() override
描画画面の更新を行う.純粋仮想関数のため, 継承先では必ず override する必要がある.
void Draw() const override
描画を行う. ここでは描画系の処理のみを行い内部のデータを 更新しないため const を付けている.
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()と呼び出す.