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

Method move_to

src/visualization/components/camera.cpp:378–409  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

376}
377
378void Camera::move_to(const float x, const float y) {
379 const auto stage = game_object_ref().get_stage();
380 if (!stage.has_value()) {
381 return;
382 }
383 const auto buffer_obj = stage->get().get_game_object("buffer");
384 if (!buffer_obj.has_value()) {
385 return;
386 }
387
388 const auto buff_opt =
389 buffer_obj->get().get_component<Buffer>("buffer_component");
390 if (!buff_opt.has_value()) {
391 return;
392 }
393 const auto& buff = buff_opt->get();
394 const auto buf_dim =
395 vec4(buff.buffer_width_f, buff.buffer_height_f, 0.0f, 1.0f);
396 const auto centered_coord = buf_dim * 0.5f - vec4(x, y, 0.0f, 0.0f);
397
398 // Recompute zoom matrix to discard its internal translation
399 const auto zoom{1.0f / compute_zoom()};
400 scale_ = mat4::scale(vec4(zoom, zoom, 1.0f, 1.0f));
401
402 const auto transformed_goal =
403 scale_.inv() * buffer_obj->get().get_pose() * centered_coord;
404
405 camera_pos_x_ = transformed_goal.x();
406 camera_pos_y_ = transformed_goal.y();
407
408 update_object_pose();
409}
410
411vec4 Camera::get_position() const {
412 const auto stage = game_object_ref().get_stage();

Callers 1

go_to_pixelMethod · 0.80

Calls 5

vec4Class · 0.85
get_stageMethod · 0.80
get_game_objectMethod · 0.80
invMethod · 0.80
get_poseMethod · 0.80

Tested by

no test coverage detected