Ignore:
Timestamp:
07/10/15 19:50:47 (10 years ago)
Author:
epyon
Message:
  • further access restrictions improvements
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/gfx/keyframed_mesh.cc

    r416 r417  
    2323        , m_active( false )
    2424{
    25         m_index_count  = m_mesh_data->get_channel( slot::INDEX )->size();
    26         m_vertex_count = m_mesh_data->get_channel<vertex_t>()->size();
    27         m_vchannel     = m_mesh_data->get_channel<vertex_pnt>();
    28         m_vsize        = sizeof( vertex_pnt );
    29         m_has_tangent  = true;
    30         if ( m_vchannel == nullptr )
    31         {
    32                 m_vchannel     = m_mesh_data->get_channel<vertex_pn>();
    33                 m_has_tangent  = false;
    34                 m_vsize        = sizeof( vertex_pn );
    35         }
    36         m_frame_count  = m_vchannel->size() / m_vertex_count;
     25        m_index_count   = m_mesh_data->get_channel_size( slot::INDEX );
     26        m_vertex_count  = m_mesh_data->get_channel_size<vertex_t>();
     27        uint32 pos_size = m_mesh_data->get_channel_size<vertex_pnt>();
     28        if ( pos_size == 0 )
     29        {
     30                pos_size      = m_mesh_data->get_channel_size<vertex_pn>();
     31                m_has_tangent = false;
     32                m_vsize       = sizeof( vertex_pn );
     33        }
     34        else
     35        {
     36                m_has_tangent = true;
     37                m_vsize       = sizeof( vertex_pnt );
     38        }
     39        m_frame_count  = pos_size / m_vertex_count;
    3740        m_pbuffer      = buffer();
    3841}
     
    4750        if ( !m_tag_map ) return transform();
    4851        NV_ASSERT( node_id < m_tag_map->get_count(), "TAGMAP FAIL" );
    49         const key_data* data = m_tag_map->get_node( node_id )->data;
     52        const key_channel_set* data = m_tag_map->get_node( node_id )->data;
    5053        NV_ASSERT( data, "TAG FAIL" );
    5154        transform last = data->get_raw_transform( m_last_frame );
     
    183186        : keyframed_mesh( a_context, a_data, a_tag_map )
    184187{
     188        const raw_data_channel* vchannel = m_has_tangent ? a_data->get_channel< vertex_pnt >() : a_data->get_channel< vertex_pn >();
    185189        m_va      = m_context->create_vertex_array();
    186         m_pbuffer = m_context->get_device()->create_buffer( VERTEX_BUFFER, STATIC_DRAW, m_vertex_count * m_vsize, m_vchannel->raw_data() );
    187         m_context->add_vertex_buffers( m_va, m_pbuffer, m_vchannel );
     190        m_pbuffer = m_context->get_device()->create_buffer( VERTEX_BUFFER, STATIC_DRAW, m_vertex_count * m_vsize, vchannel->raw_data() );
     191        m_context->add_vertex_buffers( m_va, m_pbuffer, vchannel->descriptor() );
    188192
    189193        buffer  vb = m_context->get_device()->create_buffer( VERTEX_BUFFER, STATIC_DRAW, m_vertex_count * sizeof( vec2 ), m_mesh_data->get_channel_data<vertex_t>() );
    190         m_context->add_vertex_buffers( m_va, vb, m_mesh_data->get_channel<vertex_t>() );
     194        m_context->add_vertex_buffers( m_va, vb, m_mesh_data->get_channel<vertex_t>()->descriptor() );
    191195
    192196        const raw_data_channel* index_channel = m_mesh_data->get_channel( slot::INDEX );
Note: See TracChangeset for help on using the changeset viewer.