Fix major overstep with last commit
[carveJwlIkooP6JGAAIwe30JlM.git] / world_water.h
index 85f4b5debd4766d7ee81f1fb3f379d8454653347..ab67e76601b1823501dc670501931e1879a2299c 100644 (file)
@@ -26,18 +26,27 @@ wrender =
    .fbdepth   = { .format = GL_RGBA, .div = 4 }
 };
 
-static void world_water_register(void)
+static void world_water_init(void)
 {
+   vg_info( "world_water_init\n" );
    shader_water_register();
+   
+   vg_acquire_thread_sync();
+   {
+      fb_init( &wrender.fbreflect );
+      fb_init( &wrender.fbdepth );
+
+      vg_tex2d_init( (vg_tex2d *[]){&tex_water_surf}, 1 );
+      vg_success( "done\n" );
+   }
+   vg_release_thread_sync();
 }
 
-static void world_water_init(void)
+static void world_water_free(void *_)
 {
-   /* TODO: probably dont do this every time */
-   wrender.enabled = 1;
-   
-   fb_init( &wrender.fbreflect );
-   fb_init( &wrender.fbdepth );
+   vg_tex2d_free( (vg_tex2d *[]){&tex_water_surf}, 1 );
+   fb_free( &wrender.fbreflect );
+   fb_free( &wrender.fbdepth );
 }
 
 static void water_fb_resize(void)
@@ -53,6 +62,7 @@ static void water_set_surface( glmesh *surf, float height )
 {
    wrender.mdl = *surf;
    wrender.height = height;
+   wrender.enabled = 1;
 
    v4_copy( (v4f){ 0.0f, 1.0f, 0.0f, height }, wrender.plane );
 }