Beispiel #1
0
void
rut_graphable_fully_transform_point (RutObject *graphable,
                                     RutCamera *camera,
                                     float *x,
                                     float *y,
                                     float *z)
{
  CoglMatrix modelview;
  const CoglMatrix *projection;
  const float *viewport;
  float point[3] = { *x, *y, *z };

  rut_graphable_get_modelview (graphable, camera, &modelview);
  projection = rut_camera_get_projection (camera);
  viewport = rut_camera_get_viewport (camera);

  rut_util_fully_transform_vertices (&modelview,
                                     projection,
                                     viewport,
                                     point,
                                     point,
                                     1);

  *x = point[0];
  *y = point[1];
  *z = point[2];
}
Beispiel #2
0
bool
map_window_coords_to_overlay_coord (RutCamera *camera, /* 2d ui camera */
                                    RutObject *overlay, /* camera-view overlay */
                                    float *x,
                                    float *y)
{
  CoglMatrix transform;
  CoglMatrix inverse_transform;

  rut_graphable_get_modelview (overlay, camera, &transform);

  if (!cogl_matrix_get_inverse (&transform, &inverse_transform))
    return FALSE;

  rut_camera_unproject_coord (camera,
                              &transform,
                              &inverse_transform,
                              0, /* object_coord_z */
                              x,
                              y);

  return TRUE;
}
Beispiel #3
0
bool
map_window_coords_to_overlay_coord(rut_object_t *camera,      /* 2d ui camera */
                                   rut_object_t *overlay,      /* camera-view
                                                                  overlay */
                                   float *x,
                                   float *y)
{
    c_matrix_t transform;
    c_matrix_t inverse_transform;

    rut_graphable_get_modelview(overlay, camera, &transform);

    if (!c_matrix_get_inverse(&transform, &inverse_transform))
        return false;

    rut_camera_unproject_coord(camera,
                               &transform,
                               &inverse_transform,
                               0, /* object_coord_z */
                               x,
                               y);

    return true;
}