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/formats/md5_loader.cc

    r416 r417  
    137137                {
    138138                        assert( m_type == MESH );
    139                         data_channel_set_creator mesh;
     139                        data_channel_set* mesh = data_channel_set_creator::create( 4 );
     140                        data_channel_set_creator maccess( mesh );
    140141
    141142                        uint32 num_verts   = 0;
     
    160161                                        md5_vtx_t* tdata = nullptr;
    161162                                        {
    162                                                 data_channel_creator<md5_vtx_pnt>   ch_pnt( num_verts );
    163                                                 data_channel_creator<md5_vtx_t>     ch_t( num_verts );
    164                                                 data_channel_creator<md5_vtx_pntiw> ch_pntiw( num_verts );
    165                                                 tdata = ch_t.data();
    166                                                 mesh.add_channel( ch_pnt.release() );
    167                                                 mesh.add_channel( ch_t.release() );
    168                                                 // TODO: hack to prevent rendering
    169                                                 //ch_pntiw->m_count = 0;
    170                                                 mesh.add_channel( ch_pntiw.release() );
     163                                                maccess.add_channel<md5_vtx_pnt>( num_verts );
     164                                                tdata = maccess.add_channel<md5_vtx_t>( num_verts ).data();
     165                                                maccess.add_channel<md5_vtx_pntiw>( num_verts );
    171166                                        }
    172167                                        weight_info.resize( num_verts );
     
    191186                                        sstream >> num_tris;
    192187
    193                                         data_channel_creator< index_u32 > ch_i( num_tris * 3 );
    194                                         uint32* vtx_i                = reinterpret_cast< uint32* >( ch_i.raw_data() );
     188                                        uint32* vtx_i = reinterpret_cast< uint32* >( maccess.add_channel< index_u32 >( num_tris * 3 ).raw_data() );
    195189                                        uint32 idx = 0;
    196190
     
    211205                                        }             
    212206
    213                                         mesh.add_channel( ch_i.release() );
    214207                                }
    215208                                else if ( command == "numweights" )
     
    236229                        }
    237230
    238                         data_channel_set* mdata = mesh.release();
    239                         prepare_mesh( nodes, weight_info.size(), mdata, weights.data(), weight_info.data() );
    240 
    241                         m_meshes[ num_meshes ] = mdata;
     231                        prepare_mesh( nodes, weight_info.size(), mesh, weights.data(), weight_info.data() );
     232
     233                        m_meshes[ num_meshes ] = mesh;
    242234                        num_meshes++;
    243235                } // mesh
     
    258250                                nodes[i].transform = mat4();
    259251                                nodes[i].target_id = -1;
    260                                 nodes[i].data      = new key_data;
    261                                 data_channel_creator< md5_key_t > fc( num_frames );
    262                                 nodes[i].data->add_key_channel( fc.release() );
    263                                 next_line( sstream );
     252                                nodes[i].data = key_channel_set_creator::create( 1 );
     253                                key_channel_set_creator( nodes[i].data ).add_channel< md5_key_t >( num_frames );
     254                                next_line( sstream );
    264255                        }
    265256                        discard( sstream, "}" );
     
    340331{
    341332        assert( m_type == MESH );
    342         data_channel_creator< md5_vtx_pnt >   pnt  ( const_cast< raw_data_channel* >( mdata->get_channel< md5_vtx_pnt >() ) );
    343         data_channel_creator< md5_vtx_pntiw > pntiw( const_cast< raw_data_channel* >( mdata->get_channel< md5_vtx_pntiw >() ) );
     333        data_channel_access< md5_vtx_pnt >   pnt  ( const_cast< raw_data_channel* >( mdata->get_channel< md5_vtx_pnt >() ) );
     334        data_channel_access< md5_vtx_pntiw > pntiw( const_cast< raw_data_channel* >( mdata->get_channel< md5_vtx_pntiw >() ) );
    344335        md5_vtx_pntiw* vtx_data = pntiw.data();
    345336        md5_vtx_pnt* vtcs = pnt.data();
Note: See TracChangeset for help on using the changeset viewer.