m4x3_mulv( mats[k_chpart_body1], offs[k_chpart_neck],
mats[k_chpart_neck][3] );
+#if 1
v4f qhead;
q_axis_angle( qhead, (v3f){ 0.0f,1.0f,0.0f }, ch->rhead );
q_m3x3( qhead, mats[k_chpart_head] );
- //m3x3_mul( mats[k_chpart_neck], mats[k_chpart_head], mats[k_chpart_head] );
m4x3_mulv( mats[k_chpart_neck], offs[k_chpart_head], mats[k_chpart_head][3]);
+ m3x3_mul( mats[k_chpart_neck], mats[k_chpart_head], mats[k_chpart_head] );
+#else
+ m4x3_mulv( mats[k_chpart_neck], offs[k_chpart_head], mats[k_chpart_head][3]);
+ m3x3_copy( mats[k_chpart_neck], mats[k_chpart_head] );
+#endif
/* Feet */
m3x3_copy( mats[k_chpart_leg_l1], mats[k_chpart_foot_l] );
m4x3_identity( ch->matrices[k_chpart_wf] );
}
+static float *player_cam_pos(void);
static void character_draw( struct character *ch, float temp )
{
shader_character_use();
vg_tex2d_bind( &tex_pallet, 0 );
shader_character_uTexMain( 0 );
shader_character_uOpacity( temp );
+ shader_character_uCamera( player_cam_pos() );
+ shader_link_standard_ub( _shader_character.id, 2 );
glEnable( GL_CULL_FACE );
glCullFace( GL_BACK );
for( int i=4; i<PART_COUNT; i++ )
{
+#if 0
+ if( i == k_chpart_head || i == k_chpart_neck )
+ continue;
+#endif
+
shader_character_uMdl( ch->matrices[i] );
submodel_draw( &ch->parts[i] );
}