level smooth transition camera
[fishladder.git] / fishladder.c
index e90a8a527a1f89742bf31ee007545adb01ead367..fcdd58d4fe014c5d4ae3de204315e036e7a29af6 100644 (file)
@@ -1211,16 +1211,23 @@ void vg_update(void)
                        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();