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();
return sqrtf( v2_dist2( a, b ) );
}
+static inline void v2_lerp( v2f a, v2f b, float t, v2f d )
+{
+ d[0] = a[0] + t*(b[0]-a[0]);
+ d[1] = a[1] + t*(b[1]-a[1]);
+}
+
// Vector 3
// ==================================================================================================================