Changeset 427 for trunk/src/gfx


Ignore:
Timestamp:
07/20/15 13:25:20 (10 years ago)
Author:
epyon
Message:
  • cleanup of mesh_node_data
Location:
trunk/src/gfx
Files:
3 edited

Legend:

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

    r424 r427  
    4242        if ( m_tag_map && m_tag_map->get_count() > 0 )
    4343        {
    44                 m_interpolation_key = m_tag_map->get_node( 0 )->data->get_interpolation_key();
     44                m_interpolation_key = (*m_tag_map)[ 0 ]->get_interpolation_key();
    4545        }
    4646}
     
    5555        if ( !m_tag_map ) return transform();
    5656        NV_ASSERT( node_id < m_tag_map->get_count(), "TAGMAP FAIL" );
    57         const data_channel_set* data = m_tag_map->get_node( node_id )->data;
    58         NV_ASSERT( data && data->size() > 0, "TAG FAIL" );
    59         raw_channel_interpolator interpolator( data, m_interpolation_key );
     57        NV_ASSERT( (*m_tag_map)[node_id]->size() > 0, "TAG FAIL" );
     58        raw_channel_interpolator interpolator( ( *m_tag_map )[node_id], m_interpolation_key );
    6059        return interpolator.get< transform >( m_last_frame, m_next_frame, m_interpolation );
    6160}
  • trunk/src/gfx/mesh_creator.cc

    r424 r427  
    1818        for ( size_t i = 0; i < m_data->get_count(); ++i )
    1919        {
    20                 sint16 parent_id = m_data->m_nodes[i].data->get_parent_id();
    21                 data_channel_set* keys   = m_data->m_nodes[i].data;
    22                 data_channel_set* pkeys  = ( parent_id != -1 ? m_data->m_nodes[parent_id].data : nullptr );
     20                data_channel_set* keys = m_data->m_data[i];
     21                sint16 parent_id = keys->get_parent_id();
     22                data_channel_set* pkeys  = ( parent_id != -1 ? m_data->m_data[parent_id] : nullptr );
    2323                size_t count     = ( keys ? keys->get_channel_size(0) : 0 );
    2424                size_t pcount    = ( pkeys ? pkeys->get_channel_size(0) : 0 );
     
    5151        for ( size_t i = 0; i < m_data->get_count(); ++i )
    5252        {
    53                 data_channel_set* old_keys = m_data->m_nodes[i].data;
     53                data_channel_set* old_keys = m_data->m_data[i];
    5454                if ( old_keys && old_keys->size() > 0 )
    5555                {
     
    8989
    9090                        delete old_keys;
    91                         m_data->m_nodes[i].data = new_keys;
     91                        m_data->m_data[i] = new_keys;
    9292                }
    9393        }
     
    102102        for ( size_t i = 0; i < m_data->get_count(); ++i )
    103103        {
    104                 mesh_node_data& node = m_data->m_nodes[i];
    105                 node.data->m_transform = pre_transform * node.data->m_transform * post_transform;
    106                 if ( node.data )
    107                 {
    108                         data_channel_set* kdata  = node.data;
    109                         for ( size_t c = 0; c < kdata->size(); ++c )
    110                         {
    111                                 raw_data_channel_access channel( kdata, c );
    112                                 size_t key_size = channel.element_size();
    113                                 for ( size_t n = 0; n < channel.size(); ++n )
    114                                 {
    115                                         transform_key_raw( kdata->get_channel( c )->descriptor(), channel.raw_data() + n * key_size, scale, r33, ri33 );
    116                                 }
     104                data_channel_set* node = m_data->m_data[i];
     105                node->m_transform = pre_transform * node->m_transform * post_transform;
     106
     107                for ( size_t c = 0; c < node->size(); ++c )
     108                {
     109                        raw_data_channel_access channel( node, c );
     110                        size_t key_size = channel.element_size();
     111                        for ( size_t n = 0; n < channel.size(); ++n )
     112                        {
     113                                transform_key_raw( node->get_channel( c )->descriptor(), channel.raw_data() + n * key_size, scale, r33, ri33 );
    117114                        }
    118115                }
     
    458455        if ( index < m_pack->get_count() )
    459456        {
    460                 data_channel_set_creator( &m_pack->m_meshes[m_pack->m_count - 1] ).move_to( m_pack->m_meshes[index] );
     457
     458                m_pack->m_meshes[index] = move( m_pack->m_meshes[m_pack->m_count - 1] );
    461459                m_pack->m_count--;
    462460        }
  • 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.