static RutTraverseVisitFlags entitygraph_pre_paint_cb (RutObject *object, int depth, void *user_data) { RigPaintContext *paint_ctx = user_data; RutPaintContext *rut_paint_ctx = user_data; RutCamera *camera = rut_paint_ctx->camera; CoglFramebuffer *fb = rut_camera_get_framebuffer (camera); if (rut_object_is (object, RUT_INTERFACE_ID_TRANSFORMABLE)) { const CoglMatrix *matrix = rut_transformable_get_matrix (object); cogl_framebuffer_push_matrix (fb); cogl_framebuffer_transform (fb, matrix); } if (rut_object_get_type (object) == &rut_entity_type) { RutEntity *entity = RUT_ENTITY (object); RutObject *geometry; CoglMatrix matrix; if (!rut_entity_get_visible (entity) || (paint_ctx->pass == RIG_PASS_SHADOW && !rut_entity_get_cast_shadow (entity))) return RUT_TRAVERSE_VISIT_CONTINUE; geometry = rut_entity_get_component (object, RUT_COMPONENT_TYPE_GEOMETRY); if (!geometry) { if (!paint_ctx->engine->play_mode && object == paint_ctx->engine->light) draw_entity_camera_frustum (paint_ctx->engine, object, fb); return RUT_TRAVERSE_VISIT_CONTINUE; } cogl_framebuffer_get_modelview_matrix (fb, &matrix); rig_journal_log (paint_ctx->engine->journal, paint_ctx, entity, &matrix); return RUT_TRAVERSE_VISIT_CONTINUE; } return RUT_TRAVERSE_VISIT_CONTINUE; }
void cogl_transform (const CoglMatrix *matrix) { cogl_framebuffer_transform (cogl_get_draw_framebuffer (), matrix); }