Changeset 417 for trunk/src/formats
- Timestamp:
- 07/10/15 19:50:47 (10 years ago)
- Location:
- trunk/src/formats
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/formats/assimp_loader.cc
r416 r417 124 124 else 125 125 desc.initialize< assimp_plain_vtx >(); 126 raw_data_channel_creator channel( desc, mesh->mNumVertices ); 127 uint8* cdata = channel.raw_data(); 126 data_channel_set_creator maccess( data ); 127 maccess.set_name( mesh->mName.data ); 128 uint8* cdata = maccess.add_channel( desc, mesh->mNumVertices ).raw_data(); 129 uint16* indices = reinterpret_cast<uint16*>( maccess.add_channel< index_u16 >( mesh->mNumFaces * 3 ).raw_data() ); 128 130 129 131 if ( mesh->mTangents && mesh->mBitangents ) … … 171 173 } 172 174 173 data_channel_creator< index_u16 > ichannel( mesh->mNumFaces * 3 );174 uint16* indices = reinterpret_cast<uint16*>( ichannel.raw_data() );175 175 for (unsigned int i=0; i<mesh->mNumFaces; i++) 176 176 { … … 182 182 } 183 183 184 data_channel_set_creator maccess( data );185 maccess.set_name( mesh->mName.data );186 maccess.add_channel( channel.release() );187 maccess.add_channel( ichannel.release() );188 184 } 189 185 … … 321 317 if ( m > 0 && bones.size() > 0 ) 322 318 { 323 data_channel_ creator< assimp_skinned_vtx > channel( const_cast< raw_data_channel* >( meshes[m].get_channel(0) ) );319 data_channel_access< assimp_skinned_vtx > channel( const_cast< raw_data_channel* >( meshes[m].get_channel(0) ) ); 324 320 for ( unsigned v = 0; v < channel.size(); ++v ) 325 321 { … … 422 418 } 423 419 424 data->data = new key_data; 425 data_channel_creator< assimp_key_p > pchannel_creator( node->mNumPositionKeys ); 426 data_channel_creator< assimp_key_r > rchannel_creator( node->mNumRotationKeys ); 427 // data_channel_creator< assimp_key_s > schannel_creator( node->mNumScalingKeys ); 428 429 assimp_key_p* pchannel = pchannel_creator.data(); 430 assimp_key_r* rchannel = rchannel_creator.data(); 431 //assimp_key_s* schannel = ((assimp_key_s*)(raw_schannel->data)); 420 data->data = key_channel_set_creator::create( 2 ); 421 key_channel_set_creator key_set( data->data ); 422 423 assimp_key_p* pchannel = key_set.add_channel< assimp_key_p >( node->mNumPositionKeys ).data(); 424 assimp_key_r* rchannel = key_set.add_channel< assimp_key_r >( node->mNumRotationKeys ).data(); 425 // assimp_key_s* schannel = key_set.add_channel< assimp_key_s >( node->mNumScalingKeys ).data(); 432 426 433 427 for ( unsigned np = 0; np < node->mNumPositionKeys; ++np ) … … 460 454 // } 461 455 // } 462 data->data->add_key_channel( pchannel_creator.release() ); 463 data->data->add_key_channel( rchannel_creator.release() ); 464 // data->data->add_key_channel( schannel_creator.release() ); 456 465 457 } 466 458 -
trunk/src/formats/md2_loader.cc
r416 r417 326 326 size_t frame_count = ( frame == -1 ? num_frames : 1 ); 327 327 328 data_channel_creator< vtx_md2_pn > mc_pn( num_verts * frame_count ); 329 vtx_md2_pn* vtx_pn = mc_pn.data(); 328 data_channel_set_creator maccess( data ); 329 vtx_md2_pn* vtx_pn = maccess.add_channel< vtx_md2_pn >( num_verts * frame_count ).data(); 330 vtx_md2_t* vtx_t = maccess.add_channel< vtx_md2_t >( num_verts ).data(); 331 uint16* icp = &maccess.add_channel< index_u16 >( m_new_indexes.size() ).data()->index; 330 332 331 333 uint32 index = 0; … … 349 351 } 350 352 351 data_channel_creator< vtx_md2_t > mc_t( num_verts );352 vtx_md2_t* vtx_t = mc_t.data();353 354 353 vec2 scale( 1.0f / static_cast<float>( md2->header.skinwidth ), 1.0f / static_cast<float>( md2->header.skinheight ) ); 355 354 for (size_t i = 0; i < num_verts; ++i ) … … 359 358 } 360 359 361 data_channel_creator< index_u16 > ic( m_new_indexes.size() );362 360 if ( m_new_indexes.size() > 0 ) 363 361 { 364 uint16* icp = reinterpret_cast< uint16* >( ic.raw_data() );365 362 raw_copy_n( m_new_indexes.data(), m_new_indexes.size(), icp ); 366 363 } 367 364 368 data_channel_set_creator maccess( data );369 370 maccess.add_channel( mc_pn.release() );371 maccess.add_channel( mc_t.release() );372 maccess.add_channel( ic.release() );373 365 } 374 366 -
trunk/src/formats/md3_loader.cc
r416 r417 287 287 } 288 288 289 nv::raw_data_channel* nv::md3_loader::load_tags(const string_view& tag )289 void nv::md3_loader::load_tags( raw_data_channel* channel, const string_view& tag ) 290 290 { 291 291 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 ); 293 293 // TODO: is this brain damaged in efficiency (loop nest order) or what? 294 294 for ( sint32 f = 0; f < md3->header.num_frames; ++f ) … … 304 304 vec3 axisy ( md3_vec3( rtag.axis[2] ) ); 305 305 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 ) ) ); 307 307 } 308 308 } 309 309 310 310 } 311 return result.release();312 311 } 313 312 … … 353 352 } 354 353 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 = m c_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() ); 361 360 362 361 uint32 index = 0; … … 413 412 } 414 413 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() );420 414 } 421 415 … … 435 429 nodes[i].parent_id = -1; 436 430 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 ); 441 433 } 442 434 return new mesh_nodes_data( "tags", node_count, nodes ); -
trunk/src/formats/md5_loader.cc
r416 r417 137 137 { 138 138 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 ); 140 141 141 142 uint32 num_verts = 0; … … 160 161 md5_vtx_t* tdata = nullptr; 161 162 { 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 ); 171 166 } 172 167 weight_info.resize( num_verts ); … … 191 186 sstream >> num_tris; 192 187 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() ); 195 189 uint32 idx = 0; 196 190 … … 211 205 } 212 206 213 mesh.add_channel( ch_i.release() );214 207 } 215 208 else if ( command == "numweights" ) … … 236 229 } 237 230 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; 242 234 num_meshes++; 243 235 } // mesh … … 258 250 nodes[i].transform = mat4(); 259 251 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 ); 264 255 } 265 256 discard( sstream, "}" ); … … 340 331 { 341 332 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 >() ) ); 344 335 md5_vtx_pntiw* vtx_data = pntiw.data(); 345 336 md5_vtx_pnt* vtcs = pnt.data(); -
trunk/src/formats/nmd_loader.cc
r416 r417 35 35 bool nv::nmd_loader::load_mesh( stream& source, const nmd_element_header& e ) 36 36 { 37 data_channel_set_creator mesh; 37 data_channel_set* mesh = data_channel_set_creator::create( e.children ); 38 data_channel_set_creator mcreator( mesh ); 38 39 for ( uint32 s = 0; s < e.children; ++s ) 39 40 { … … 44 45 nmd_stream_header stream_header; 45 46 source.read( &stream_header, sizeof( stream_header ), 1 ); 46 raw_data_channel_creator channel_creator( stream_header.format, stream_header.count ); 47 source.read( channel_creator.raw_data(), channel_creator.element_size(), channel_creator.size() ); 48 mesh.add_channel( channel_creator.release() ); 47 raw_data_channel_access channel( mcreator.add_channel( stream_header.format, stream_header.count ) ); 48 source.read( channel.raw_data(), channel.element_size(), channel.size() ); 49 49 } 50 50 m_mesh_names.push_back( e.name ); 51 m_meshes.push_back( mesh .release());51 m_meshes.push_back( mesh ); 52 52 return true; 53 53 } … … 121 121 if ( ch_count > 0 ) 122 122 { 123 key_data* kdata = new key_data; 123 key_channel_set* kdata = key_channel_set_creator::create( ch_count ); 124 key_channel_set_creator kaccess( kdata ); 124 125 m_node_array[i].data = kdata; 125 126 for ( uint32 c = 0; c < ch_count; ++c ) … … 129 130 nv::nmd_stream_header cheader; 130 131 source.read( &cheader, sizeof( cheader ), 1 ); 131 raw_data_channel_creator channel_creator( cheader.format, cheader.count ); 132 source.read( channel_creator.raw_data(), channel_creator.element_size(), channel_creator.size() ); 133 kdata->add_key_channel( channel_creator.release() ); 132 raw_data_channel_access channel( kaccess.add_channel( cheader.format, cheader.count ) ); 133 source.read( channel.raw_data(), channel.element_size(), channel.size() ); 134 134 } 135 135 } -
trunk/src/formats/obj_loader.cc
r416 r417 326 326 } 327 327 328 raw_data_channel_creator channel( m_descriptor, reader->size * 3 ); 328 data_channel_set* result = data_channel_set_creator::create( 1 ); 329 data_channel_set_creator raccess( result );// ( reader->name ); 330 uint8* rdata = raccess.add_channel( m_descriptor, reader->size * 3 ).raw_data(); 331 329 332 if ( reader->raw_size() > 0 ) 330 333 { 331 raw_copy_n( reader->raw_pointer(), reader->raw_size(), channel.raw_data() ); 332 } 333 334 data_channel_set_creator result;// ( reader->name ); 335 result.add_channel( channel.release() ); 336 m_meshes.push_back( result.release() ); 334 raw_copy_n( reader->raw_pointer(), reader->raw_size(), rdata ); 335 } 336 337 m_meshes.push_back( result ); 337 338 338 339 reader->reset();
Note: See TracChangeset
for help on using the changeset viewer.