Notices & clean
[carveJwlIkooP6JGAAIwe30JlM.git] / world_water.h
index 85f4b5debd4766d7ee81f1fb3f379d8454653347..249800d3569725c608e775c9215d293f0e0a5b33 100644 (file)
@@ -1,3 +1,7 @@
+/*
+ * Copyright (C) 2021-2022 Mt.ZERO Software, Harry Godden - All Rights Reserved
+ */
+
 #ifndef WATER_H
 #define WATER_H
 
@@ -26,18 +30,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 +66,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 );
 }