f32 windv2 = v3_length2(wind),
aoa = atan2f( v3_dot( up, wind ), v3_dot( back, wind ) ) + aoa_bias,
- cl = aoa / VG_PIf, /* TODO: make it a curve */
+ cl = aoa / VG_PIf,
L = windv2 * cl * power;
v3f lift_dir;
v2f steer;
joystick_state( k_srjoystick_steer, steer );
- if( glider_physics( steer ) ){
+ if( glider_physics( steer ) )
+ {
vg_info( "player fell off due to glider hitting ground\n" );
player__dead_transition( k_player_die_type_generic );
localplayer.glider_orphan = 1;
}
+
+ if( !world_water_player_safe( world_current_instance(), 1.0f ) )
+ return;
}
void player_glide_post_update(void)
void render_glider_model( vg_camera *cam, world_instance *world,
m4x3f mmdl, enum board_shader shader )
{
- u32 current_tex = 0xffffffff;
+ u32 current_mat = 0xffffffff;
glActiveTexture( GL_TEXTURE0 );
mdl_context *mdl = &player_glide.glider;
continue;
}
- mdl_material *mat = mdl_arritm( &mdl->materials, sm->material_id-1 );
- if( mat->tex_diffuse != current_tex )
+ if( sm->material_id != current_mat )
{
+ mdl_material *mat = mdl_arritm( &mdl->materials,sm->material_id-1 );
GLuint tex = vg.tex_missing;
- if( mat->tex_diffuse )
+ if( mat->shader == k_shader_standard )
{
- u32 index = mat->tex_diffuse-1;
+ struct shader_props_standard *props = mat->props.compiled;
+
+ u32 index = props->tex_diffuse-1;
mdl_texture *ptex = mdl_arritm( &mdl->textures, index );
tex = ptex->glname;
}
glBindTexture( GL_TEXTURE_2D, tex );
- current_tex = mat->tex_diffuse;
+ current_mat = sm->material_id;
}
mdl_draw_submesh( sm );