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/md3_loader.cc

    r416 r417  
    287287}
    288288
    289 nv::raw_data_channel* nv::md3_loader::load_tags( const string_view& tag )
     289void nv::md3_loader::load_tags( raw_data_channel* channel, const string_view& tag )
    290290{
    291291        md3_t* md3 = reinterpret_cast< md3_t* >( m_md3 );
    292         data_channel_creator< md3_key > result( uint32( md3->header.num_frames ) );
     292        data_channel_access< md3_key > access( channel );
    293293        // TODO: is this brain damaged in efficiency (loop nest order) or what?
    294294        for ( sint32 f = 0; f < md3->header.num_frames; ++f )
     
    304304                                vec3 axisy  ( md3_vec3( rtag.axis[2] ) );
    305305                                vec3 origin ( md3_vec3( rtag.origin )  );
    306                                 result.data()[f].tform = transform( origin, quat( mat3( axisx, axisy, axisz ) ) );
     306                                access.data()[f].tform = transform( origin, quat( mat3( axisx, axisy, axisz ) ) );
    307307                        }
    308308                }
    309309
    310310        }
    311         return result.release();
    312311}
    313312
     
    353352                }
    354353
    355         data_channel_creator< vtx_md3_pn > mc_pn( static_cast< uint32 >( num_verts * frame_count ) );
    356         data_channel_creator< vtx_md3_t > mc_t( static_cast< uint32 >( num_verts ) );
    357         data_channel_creator< index_u16 > ic( static_cast< uint32 >( index_count ) );
    358         vtx_md3_pn* vtx_pn = mc_pn.data();
    359         vtx_md3_t*  vtx_t = mc_t.data();
    360         uint16*     icp    = &(ic.data()[0].index);
     354        data_channel_set_creator maccess( data );
     355        maccess.set_name( reinterpret_cast<char*>( md3->header.name ) );
     356
     357        vtx_md3_pn* vtx_pn = maccess.add_channel< vtx_md3_pn >( static_cast< uint32 >( num_verts * frame_count ) ).data();
     358        vtx_md3_t*  vtx_t  = maccess.add_channel< vtx_md3_t >( static_cast< uint32 >( num_verts ) ).data();
     359        uint16*     icp    = reinterpret_cast< uint16* >( maccess.add_channel< index_u16 >( static_cast< uint32 >( index_count ) ).data() );
    361360
    362361        uint32 index  = 0;
     
    413412        }
    414413
    415         data_channel_set_creator maccess( data );
    416         maccess.set_name( reinterpret_cast<char*>( md3->header.name ) );
    417         maccess.add_channel( mc_pn.release() );
    418         maccess.add_channel( mc_t.release() );
    419         maccess.add_channel( ic.release() );
    420414}
    421415
     
    435429                nodes[i].parent_id = -1;
    436430                nodes[i].target_id = -1;
    437                 nodes[i].data      = new key_data;
    438        
    439                 raw_data_channel* keys = load_tags( name );
    440                 nodes[i].data->add_key_channel( keys );
     431                nodes[i].data      = key_channel_set_creator::create( 1 );
     432                load_tags( key_channel_set_creator( nodes[i].data ).add_channel<md3_key>( uint32( md3->header.num_frames ) ).channel(), name );
    441433        }
    442434        return new mesh_nodes_data( "tags", node_count, nodes );
Note: See TracChangeset for help on using the changeset viewer.