+
+ v3f camoffs = {-0.3f,0.0f,0.3f};
+ v3_add( player.view, camoffs, player.view );
+
+ m4x3_copy( mboard, player.mdl.matrices[k_chpart_wheels] );
+}
+
+static void draw_player(void)
+{
+ /* Draw */
+ SHADER_USE(shader_standard_lit);
+
+ glUniformMatrix4fv( SHADER_UNIFORM( shader_standard_lit, "uPv" ),
+ 1, GL_FALSE, (float *)vg_pv );
+ glUniform1i( SHADER_UNIFORM( shader_standard_lit, "uTexMain" ), 0 );
+
+ GLint kuMdl = SHADER_UNIFORM( shader_standard_lit, "uMdl" );
+
+#if 0
+ float kscale = 0.7f;
+ glUniform4f( SHADER_UNIFORM(shader_standard_lit,"uColour"),
+ 0.35f*kscale,0.35f*kscale,0.35f*kscale,1.0f );
+
+ glUniformMatrix4x3fv( kuMdl, 1, GL_FALSE, (float *)player.mboard );
+ submodel_draw( &player.board );
+
+ glUniform4f( SHADER_UNIFORM(shader_standard_lit,"uColour"),
+ 0.7f*kscale,0.7f*kscale,0.7f*kscale,1.0f );
+ submodel_draw( &player.wheels );
+
+ glEnable(GL_BLEND);
+ glBlendFunc(GL_SRC_ALPHA, GL_ONE);
+ glBlendEquation(GL_FUNC_ADD);
+ glDisable( GL_DEPTH_TEST );
+#endif
+#if 0
+ glUniform4f( SHADER_UNIFORM(shader_standard_lit,"uColour"),
+ 0.2f*kscale,0.8f*kscale,0.4f*kscale,0.14f );
+
+ glUniformMatrix4x3fv( kuMdl, 1, GL_FALSE, (float *)player.mfoot_l );
+ submodel_draw( &player.foot_l );
+ glUniformMatrix4x3fv( kuMdl, 1, GL_FALSE, (float *)player.mfoot_r );
+ submodel_draw( &player.foot_r );
+
+ glUniformMatrix4x3fv( kuMdl, 1, GL_FALSE, (float *)player.mleg_l );
+ submodel_draw( &player.leg_l0 );
+
+ glUniformMatrix4x3fv( kuMdl, 1, GL_FALSE, (float *)player.mknee_l );
+ submodel_draw( &player.leg_l1 );
+
+ glUniformMatrix4x3fv( kuMdl, 1, GL_FALSE, (float *)player.mleg_r );
+ submodel_draw( &player.leg_r0 );
+
+ glUniformMatrix4x3fv( kuMdl, 1, GL_FALSE, (float *)player.mknee_r );
+ submodel_draw( &player.leg_r1 );
+
+ /* arms */
+ glUniformMatrix4x3fv( kuMdl, 1, GL_FALSE, (float *)player.marm_l );
+ submodel_draw( &player.arm_l0 );
+
+ glUniformMatrix4x3fv( kuMdl, 1, GL_FALSE, (float *)player.melbow_l );
+ submodel_draw( &player.arm_l1 );
+
+ glUniformMatrix4x3fv( kuMdl, 1, GL_FALSE, (float *)player.marm_r );
+ submodel_draw( &player.arm_r0 );
+
+ glUniformMatrix4x3fv( kuMdl, 1, GL_FALSE, (float *)player.melbow_r );
+ submodel_draw( &player.arm_r1 );
+
+ /* body */
+ glUniformMatrix4x3fv( kuMdl, 1, GL_FALSE, (float *)player.mbutt );
+ submodel_draw( &player.body );
+
+ glUniform4f( SHADER_UNIFORM(shader_standard_lit,"uColour"),
+ 0.2f*kscale,0.2f*kscale,0.2f*kscale,0.14f );
+ submodel_draw( &player.head );
+
+ glDisable(GL_BLEND);
+ glEnable( GL_DEPTH_TEST );
+#endif
+
+ vg_tex2d_bind( &tex_pallet, 0 );
+ //m4x3_identity( player.mdl.mroot );
+ //character_testpose( &player.mdl, vg_time );
+ m4x3_copy( player.to_world, player.mdl.mroot );
+ character_eval( &player.mdl );
+ character_draw( &player.mdl, kuMdl );