Ignore:
Timestamp:
07/09/15 20:02:58 (10 years ago)
Author:
epyon
Message:
  • naming scheme for data_descriptor changed
  • channels can only be created by data_channel_creators
File:
1 edited

Legend:

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

    r413 r415  
    1919                key_data* keys   = m_data->m_nodes[i].data;
    2020                key_data* pkeys  = ( parent_id != -1 ? m_data->m_nodes[parent_id].data : nullptr );
    21                 size_t count     = ( keys ? keys->get_channel(0)->element_count() : 0 );
    22                 size_t pcount    = ( pkeys ? pkeys->get_channel(0)->element_count() : 0 );
     21                size_t count     = ( keys ? keys->get_channel(0)->size() : 0 );
     22                size_t pcount    = ( pkeys ? pkeys->get_channel(0)->size() : 0 );
    2323                max_frames = nv::max<uint32>( count, max_frames );
    2424                if ( pkeys && pkeys->get_channel_count() > 0 && keys && keys->get_channel_count() > 0 )
     
    5858                        size_t chan_count = old_keys->get_channel_count();
    5959                        if ( chan_count == 1
    60                                 && old_keys->get_channel(0)->descriptor().slot_count() == 1
     60                                && old_keys->get_channel(0)->descriptor().size() == 1
    6161                                && old_keys->get_channel(0)->descriptor()[0].etype == TRANSFORM ) continue;
    6262
     
    6464                        for ( size_t c = 0; c < chan_count; ++c )
    6565                        {
    66                                 max_keys = nv::max( max_keys, old_keys->get_channel(c)->element_count() );
     66                                max_keys = nv::max( max_keys, old_keys->get_channel(c)->size() );
    6767                        }
    6868
     
    7878                                for ( uint16 c = 0; c < chan_count; ++c )
    7979                                {
    80                                         size_t idx = nv::min( old_keys->get_channel(c)->element_count() - 1, n );
     80                                        size_t idx = nv::min( old_keys->get_channel(c)->size() - 1, n );
    8181                                        pkey += old_keys->get_raw( old_keys->get_channel(c), idx, pkey );
    8282                                }
     
    242242        if ( !p_channel || !n_channel || !t_channel ) return;
    243243
    244         if ( p_channel->element_count() != n_channel->element_count()
    245                 || p_channel->element_count() % t_channel->element_count() != 0
     244        if ( p_channel->size() != n_channel->size()
     245                || p_channel->size() % t_channel->size() != 0
    246246                || ( i_type != UINT && i_type != USHORT && i_type != NONE ) )
    247247        {
     
    249249        }
    250250
    251         data_channel_creator< vertex_g > g_channel( p_channel->element_count() );
     251        data_channel_creator< vertex_g > g_channel( p_channel->size() );
    252252        vec4* tangents              = &( g_channel.data()[0].tangent );
    253         vec3* tangents2             = new vec3[ p_channel->element_count() ];
    254         uint32 tri_count = i_channel ? i_channel->element_count() / 3 : t_channel->element_count() / 3;
    255         uint32 vtx_count = p_channel->element_count();
    256         uint32 sets      = p_channel->element_count() / t_channel->element_count();
     253        vec3* tangents2             = new vec3[ p_channel->size() ];
     254        uint32 tri_count = i_channel ? i_channel->size() / 3 : t_channel->size() / 3;
     255        uint32 vtx_count = p_channel->size();
     256        uint32 sets      = p_channel->size() / t_channel->size();
    257257
    258258        for ( unsigned int i = 0; i < tri_count; ++i )
     
    292292                for ( uint32 set = 0; set < sets; ++set )
    293293                {
    294                         uint32 nti0 = t_channel->element_count() * set + ti0;
    295                         uint32 nti1 = t_channel->element_count() * set + ti1;
    296                         uint32 nti2 = t_channel->element_count() * set + ti2;
     294                        uint32 nti0 = t_channel->size() * set + ti0;
     295                        uint32 nti1 = t_channel->size() * set + ti1;
     296                        uint32 nti2 = t_channel->size() * set + ti2;
    297297                        const vec3& v1 = *reinterpret_cast<const vec3*>(p_channel->raw_data() + p_channel->element_size()*nti0 + p_offset );
    298298                        const vec3& v2 = *reinterpret_cast<const vec3*>(p_channel->raw_data() + p_channel->element_size()*nti1 + p_offset );
     
    337337nv::raw_data_channel* nv::mesh_data_creator::merge_channels( raw_data_channel* a, raw_data_channel* b )
    338338{
    339         NV_ASSERT( a->element_count() == b->element_count(), "merge_channel - bad channels!" );
     339        NV_ASSERT( a->size() == b->size(), "merge_channel - bad channels!" );
    340340        data_descriptor desc  = a->descriptor();
    341341        desc.append( b->descriptor() );
    342342
    343         raw_data_channel_creator result( desc, a->element_count() );
    344         for ( uint32 i = 0; i < a->element_count(); ++i )
     343        raw_data_channel_creator result( desc, a->size() );
     344        for ( uint32 i = 0; i < a->size(); ++i )
    345345        {
    346346                raw_copy_n( a->raw_data() + i * a->element_size(), a->element_size(), result.raw_data() + i*desc.element_size() );
     
    354354{
    355355        if ( a->descriptor() != b->descriptor() ) return nullptr;
    356         if ( a->element_count() % frame_count != 0 ) return nullptr;
    357         if ( b->element_count() % frame_count != 0 ) return nullptr;
     356        if ( a->size() % frame_count != 0 ) return nullptr;
     357        if ( b->size() % frame_count != 0 ) return nullptr;
    358358        size_t vtx_size = a->element_size();
    359359
    360         raw_data_channel_creator result( a->descriptor(), a->element_count() + b->element_count() );
     360        raw_data_channel_creator result( a->descriptor(), a->size() + b->size() );
    361361
    362362        if ( frame_count == 1 )
    363363        {
    364                 size_t a_size = vtx_size * a->element_count();
     364                size_t a_size = vtx_size * a->size();
    365365                raw_copy_n( a->raw_data(), a_size, result.raw_data() );
    366                 raw_copy_n( b->raw_data(), vtx_size * b->element_count(), result.raw_data() + a_size );
     366                raw_copy_n( b->raw_data(), vtx_size * b->size(), result.raw_data() + a_size );
    367367        }
    368368        else
    369369        {
    370                 size_t frame_size_a = ( a->element_count() / frame_count ) * vtx_size;
    371                 size_t frame_size_b = ( b->element_count() / frame_count ) * vtx_size;
     370                size_t frame_size_a = ( a->size() / frame_count ) * vtx_size;
     371                size_t frame_size_b = ( b->size() / frame_count ) * vtx_size;
    372372                size_t pos_a = 0;
    373373                size_t pos_b = 0;
     
    406406        int och_ti = other->get_channel_index( slot::TEXCOORD );
    407407        if ( ch_pi == -1 || ch_ti == -1 ) return;
    408         size_t size   = m_data->m_channels[ unsigned(ch_ti) ]->element_count();
    409         size_t osize  =  other->m_channels[ unsigned(och_ti) ]->element_count();
    410         size_t count  = m_data->m_channels[ unsigned(ch_pi) ]->element_count();
    411         size_t ocount =  other->m_channels[ unsigned(och_pi) ]->element_count();
     408        size_t size   = m_data->m_channels[ unsigned(ch_ti) ]->size();
     409        size_t osize  =  other->m_channels[ unsigned(och_ti) ]->size();
     410        size_t count  = m_data->m_channels[ unsigned(ch_pi) ]->size();
     411        size_t ocount =  other->m_channels[ unsigned(och_pi) ]->size();
    412412        if ( count % size != 0 || ocount % osize != 0 ) return;
    413413        if ( count / size != ocount / osize ) return;
     
    416416        {
    417417                raw_data_channel* old = m_data->m_channels[c];
    418                 bool old_is_index = old->element_count() > 0 && old->descriptor()[0].vslot == slot::INDEX;
    419                 size_t frame_count = ( old_is_index ? 1 : old->element_count() / size );
     418                bool old_is_index = old->size() > 0 && old->descriptor()[0].vslot == slot::INDEX;
     419                size_t frame_count = ( old_is_index ? 1 : old->size() / size );
    420420                m_data->m_channels[c] = append_channels( old, other->m_channels[c], frame_count );
    421421                NV_ASSERT( m_data->m_channels[c], "Merge problem!" );
     
    429429                                        raw_data_channel_creator ic( m_data->m_channels[c] );
    430430                                        uint16* indexes = reinterpret_cast<uint16*>( ic.raw_data() );
    431                                         for ( uint16 i = uint16( old->element_count() ); i < ic.size(); ++i )
     431                                        for ( uint16 i = uint16( old->size() ); i < ic.size(); ++i )
    432432                                                indexes[i] += uint16( size );
    433433
     
    438438                                        raw_data_channel_creator ic( m_data->m_channels[c] );
    439439                                        uint32* indexes = reinterpret_cast<uint32*>( ic.raw_data() );
    440                                         for ( uint32 i = old->element_count(); i < ic.size(); ++i )
     440                                        for ( uint32 i = old->size(); i < ic.size(); ++i )
    441441                                                indexes[i] += size;
    442442                                }
Note: See TracChangeset for help on using the changeset viewer.