MCPcopy Create free account
hub / github.com/OpenImageDebugger/OpenImageDebugger / draw

Method draw

src/visualization/stage.cpp:193–229  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

191}
192
193void Stage::draw() {
194 auto ordered_components = std::set<Component*, CompareRenderOrder>{};
195
196 // TODO: use camera tags so I can have multiple cameras (useful for drawing
197 // GUI)
198
199 const auto camera_it = all_game_objects.find("camera");
200 if (camera_it == all_game_objects.end() || !camera_it->second)
201 [[unlikely]] {
202 std::cerr << "[Error] Camera game object not found" << std::endl;
203 return;
204 }
205
206 const auto& [camera_name, camera_shared_ptr] = *camera_it;
207 const auto camera_obj = camera_shared_ptr.get();
208 const auto camera_component_opt =
209 camera_obj->get_component<Camera>("camera_component");
210
211 if (!camera_component_opt.has_value()) [[unlikely]] {
212 std::cerr << "[Error] Camera component not found" << std::endl;
213 return;
214 }
215
216 const auto& camera_component = camera_component_opt->get();
217 const auto view_inv = camera_obj->get_pose().inv();
218
219 for (const auto& game_obj : all_game_objects | std::views::values) {
220 for (const auto& component :
221 game_obj->get_components() | std::views::values) {
222 ordered_components.insert(component.get());
223 }
224 }
225
226 for (const auto& component : ordered_components) {
227 component->draw(camera_component.projection(), view_inv);
228 }
229}
230
231void Stage::scroll_callback(const float delta) const {
232 const auto camera_component_opt = get_camera_component(all_game_objects);

Callers 2

renderMethod · 0.45
render_buffer_iconMethod · 0.45

Calls 3

endMethod · 0.80
invMethod · 0.80
get_poseMethod · 0.80

Tested by

no test coverage detected