r2 = (float)world.h / (float)world.w,
size;
- size = ( r2 < r1? (float)(world.w+5) * 0.5f: ((float)world.h * 0.5f) / r1 ) + 2.5f;
- m3x3_projection( m_projection, -size, size, -size*r1, size*r1 );
+ static float size_current = 2.0f;
+ static v3f origin_current = { 0.0f, 0.0f, 0.0f };
+
+ size = ( r2 < r1? (float)(world.w+5) * 0.5f: ((float)(world.h+5) * 0.5f) / r1 ) + 0.5f;
v3f origin;
- origin[0] = floorf( -0.5f * ((float)world.w-3.0f) );
+ origin[0] = floorf( -0.5f * ((float)world.w-4.5f) );
origin[1] = floorf( -0.5f * world.h );
origin[2] = 0.0f;
+ // Lerp towards target
+ size_current = vg_lerpf( size_current, size, vg_time_delta * 6.0f );
+ v2_lerp( origin_current, origin, vg_time_delta * 6.0f, origin_current );
+
+ m3x3_projection( m_projection, -size_current, size_current, -size_current*r1, size_current*r1 );
m3x3_identity( m_view );
- m3x3_translate( m_view, origin );
+ m3x3_translate( m_view, origin_current );
m3x3_mul( m_projection, m_view, vg_pv );
vg_projection_update();