Ignore:
Timestamp:
07/20/15 13:25:20 (10 years ago)
Author:
epyon
Message:
  • cleanup of mesh_node_data
File:
1 edited

Legend:

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

    r424 r427  
    2323        for ( uint32 i = 0; i < bones->get_count(); ++i )
    2424        {
    25                 m_bone_offset[i] = transform( bones->get_node(i)->data->get_transform() );
     25                m_bone_offset[i] = transform( (*bones)[i]->get_transform() );
    2626        }
    2727
     
    9393void nv::skeletal_animation_entry_cpu::initialize()
    9494{
    95         for ( size_t i = 0; i < m_node_data->get_count(); ++i )
    96         {
    97                 if ( m_node_data->is_animated( i ) )
    98                 {
    99                         m_interpolation_key = m_node_data->get_node( i )->data->get_interpolation_key();
     95        for ( auto bone : *m_node_data )
     96        {
     97                if ( bone->size() > 0 )
     98                {
     99                        m_interpolation_key = bone->get_interpolation_key();
    100100                        break;
    101101                }
     
    112112        for ( size_t i = 0; i < m_node_data->get_count(); ++i )
    113113        {
    114                 raw_channel_interpolator interpolator( m_node_data->get_node( i )->data, m_interpolation_key );
     114                raw_channel_interpolator interpolator( (*m_node_data)[i], m_interpolation_key );
    115115                skeleton[i] = interpolator.get< transform >( frame_num );
    116116        }
     
    132132                for ( uint32 n = 0; n < node_count; ++n )
    133133                {
    134                         const mesh_node_data* node = m_node_data->get_node(n);
    135                         if ( node->data->get_parent_id() != -1 )
    136                         {
    137                                 m_children[ node->data->get_parent_id()].push_back( n );
     134                        const data_channel_set* node = (*m_node_data)[n];
     135                        if ( node->get_parent_id() != -1 )
     136                        {
     137                                m_children[ node->get_parent_id()].push_back( n );
    138138                        }
    139139                }
     
    156156                if ( m_bone_ids[n] >= 0 )
    157157                {
    158                         const mesh_node_data* node = m_node_data->get_node(n);
    159                         nv::mat4 node_mat( node->data->get_transform() );
    160 
    161                         if ( node->data && node->data->size() > 0 )
    162                         {
    163                                 raw_channel_interpolator interpolator( node->data, m_interpolation_key );
     158                        const data_channel_set* node = m_node_data->get_node(n);
     159                        nv::mat4 node_mat( node->get_transform() );
     160
     161                        if ( node->size() > 0 )
     162                        {
     163                                raw_channel_interpolator interpolator( node, m_interpolation_key );
    164164                                node_mat = interpolator.get< mat4 >( anim_time );
    165165                        }
     
    177177        for ( nv::uint16 bi = 0; bi < bones->get_count(); ++bi )
    178178        {
    179                 const mesh_node_data* bone = bones->get_node(bi);
    180                 bone_names[ bone->data->get_name() ] = bi;
    181                 m_offsets[bi] = bone->data->get_transform();
     179                const data_channel_set* bone = bones->get_node( bi );
     180                bone_names[ bone->get_name() ] = bi;
     181                m_offsets[bi] = bone->get_transform();
    182182        }
    183183
    184184        for ( uint32 n = 0; n < m_node_data->get_count(); ++n )
    185185        {
    186                 const mesh_node_data* node = m_node_data->get_node(n);
     186                const data_channel_set* node = m_node_data->get_node( n );
    187187                sint16 bone_id = -1;
    188188
    189                 auto bi = bone_names.find( node->data->get_name() );
     189                auto bi = bone_names.find( node->get_name() );
    190190                if ( bi != bone_names.end() )
    191191                {
     
    194194                m_bone_ids[n] = bone_id;
    195195
    196                 if ( m_interpolation_key.size() == 0 && node->data->size() > 0 )
    197                         m_interpolation_key = node->data->get_interpolation_key();
     196                if ( m_interpolation_key.size() == 0 && node->size() > 0 )
     197                        m_interpolation_key = node->get_interpolation_key();
    198198
    199199        }
     
    205205        // TODO: fix transforms, which are now embedded,
    206206        //       see note in assimp_loader.cc:load_node
    207         const mesh_node_data* node = m_node_data->get_node( node_id );
    208         mat4 node_mat( node->data->get_transform() );
    209 
    210         if ( node->data && node->data->size() > 0 )
    211         {
    212                 raw_channel_interpolator interpolator( node->data, m_interpolation_key );
     207        const data_channel_set* node = m_node_data->get_node( node_id );
     208        mat4 node_mat( node->get_transform() );
     209
     210        if ( node->size() > 0 )
     211        {
     212                raw_channel_interpolator interpolator( node, m_interpolation_key );
    213213                node_mat = interpolator.get< mat4 >( time );
    214214        }
Note: See TracChangeset for help on using the changeset viewer.