Ignore:
Timestamp:
07/09/15 18:53:08 (10 years ago)
Author:
epyon
Message:
  • data_descriptor creators ( buggy )
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/formats/md5_loader.cc

    r412 r413  
    160160                                        md5_vtx_t* tdata = nullptr;
    161161                                        {
    162                                                 raw_data_channel* ch_pnt = raw_data_channel::create<md5_vtx_pnt>( num_verts );
    163                                                 raw_data_channel* ch_t   = raw_data_channel::create<md5_vtx_t>( num_verts );
     162                                                data_channel_creator<md5_vtx_pnt> ch_pnt( num_verts );
     163                                                data_channel_creator<md5_vtx_t>   ch_t( num_verts );
    164164                                                ch_pntiw = raw_data_channel::create<md5_vtx_pntiw>( num_verts );
    165                                                 tdata = reinterpret_cast< md5_vtx_t* >( ch_t->data );
    166                                                 mesh->add_channel( ch_pnt );
    167                                                 mesh->add_channel( ch_t );
     165                                                tdata = ch_t.data();
     166                                                mesh->add_channel( ch_pnt.release() );
     167                                                mesh->add_channel( ch_t.release() );
    168168                                                // TODO: hack to prevent rendering
    169169                                                //ch_pntiw->m_count = 0;
     
    191191                                        sstream >> num_tris;
    192192
    193                                         raw_data_channel* ch_i = raw_data_channel::create<index_u32>( num_tris * 3 );
    194                                         uint32* vtx_i                = reinterpret_cast< uint32* >( ch_i->data );
     193                                        data_channel_creator< index_u32 > ch_i( num_tris * 3 );
     194                                        uint32* vtx_i                = reinterpret_cast< uint32* >( ch_i.raw_data() );
    195195                                        uint32 idx = 0;
    196                                         mesh->add_channel( ch_i );
    197196
    198197                                        next_line( sstream );
     
    211210                                                vtx_i[idx++] = ti2;
    212211                                        }             
     212
     213                                        mesh->add_channel( ch_i.release() );
    213214                                }
    214215                                else if ( command == "numweights" )
     
    235236                        }
    236237
    237                         prepare_mesh( reinterpret_cast< md5_vtx_pntiw* >( ch_pntiw->data ), nodes, weight_info.size(), mesh, weights.data(), weight_info.data() );
     238                        prepare_mesh( reinterpret_cast< md5_vtx_pntiw* >( const_cast< uint8* >( ch_pntiw->raw_data() ) ), nodes, weight_info.size(), mesh, weights.data(), weight_info.data() );
    238239
    239240                        m_meshes[ num_meshes ] = mesh;
     
    337338{
    338339        assert( m_type == MESH );
    339         md5_vtx_pnt* vtcs       = reinterpret_cast< md5_vtx_pnt* >( mdata->get_channel< md5_vtx_pnt >()->data );
     340        data_channel_creator< md5_vtx_pnt > pnt( const_cast< raw_data_channel* >( mdata->get_channel< md5_vtx_pnt >() ) );
     341        md5_vtx_pnt* vtcs       = pnt.data();
    340342
    341343        for ( uint32 i = 0; i < vtx_count; ++i )
     
    396398        }
    397399
    398         const uint32*    idata = reinterpret_cast< uint32* >( mdata->get_index_channel()->data );
     400        const uint32*    idata = reinterpret_cast< uint32* >( const_cast< uint8* >( mdata->get_index_channel()->raw_data() ) );
    399401        const md5_vtx_t* tdata = mdata->get_channel_data<md5_vtx_t>();
    400402
     
    484486                {
    485487                        const mesh_node_data& pjoint = nodes[parent_id];
    486                         const transform* ptv = reinterpret_cast< const transform* >( pjoint.data->get_channel(0)->data );
     488                        const transform* ptv = reinterpret_cast< const transform* >( pjoint.data->get_channel(0)->raw_data() );
    487489                        transform ptr;
    488490                        if ( pjoint.data->get_channel(0)->element_count() > index ) ptr = ptv[ index ];
     
    495497                }
    496498
    497                 reinterpret_cast< transform* >( joint.data->get_channel(0)->data )[index] = transform( pos, orient );
     499                reinterpret_cast< transform* >( const_cast< uint8* >( joint.data->get_channel(0)->raw_data() ) )[index] = transform( pos, orient );
    498500        }
    499501}
Note: See TracChangeset for help on using the changeset viewer.