Ignore:
Timestamp:
07/14/15 20:19:52 (10 years ago)
Author:
epyon
Message:
  • animation - key_channel_set simplified to data_channel_set
  • animation - raw_channel_interpolator
File:
1 edited

Legend:

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

    r418 r419  
    9191
    9292
     93void nv::skeletal_animation_entry_cpu::initialize()
     94{
     95        for ( size_t i = 0; i < m_node_data->get_count(); ++i )
     96        {
     97                if ( m_node_data->get_node( i )->data )
     98                {
     99                        m_interpolation_key = m_node_data->get_node( i )->data->get_interpolation_key();
     100                        break;
     101                }
     102        }
     103}
     104
    93105void nv::skeletal_animation_entry_cpu::update_skeleton( transform* skeleton, float time ) const
    94106{
     
    100112        for ( size_t i = 0; i < m_node_data->get_count(); ++i )
    101113        {
    102                 skeleton[i] = m_node_data->get_node(i)->data->get_transform( frame_num );
     114                raw_channel_interpolator interpolator( m_node_data->get_node( i )->data, m_interpolation_key );
     115                skeleton[i] = interpolator.get< transform >( frame_num );
    103116        }
    104117}
     
    112125        m_bone_ids  = new sint16[ node_count ];
    113126
     127        NV_ASSERT( m_node_data, "node data empty!" );
     128
    114129        if ( !m_node_data->is_flat() )
    115130        {
     
    146161                        if ( node->data )
    147162                        {
    148                                 node_mat = node->data->get_matrix( anim_time );
     163                                raw_channel_interpolator interpolator( node->data, m_interpolation_key );
     164                                node_mat = interpolator.get< mat4 >( anim_time );
    149165                        }
    150166
     
    177193                }
    178194                m_bone_ids[n] = bone_id;
     195
     196                if ( m_interpolation_key.size() == 0 && node->data )
     197                        m_interpolation_key = node->data->get_interpolation_key();
     198
    179199        }
    180200        m_prepared = true;
     
    190210        if ( node->data )
    191211        {
    192                 node_mat = node->data->get_matrix( time );
     212                raw_channel_interpolator interpolator( node->data, m_interpolation_key );
     213                node_mat = interpolator.get< mat4 >( time );
    193214        }
    194215
Note: See TracChangeset for help on using the changeset viewer.