Changeset 287 for trunk/src/formats/md3_loader.cc
- Timestamp:
- 07/23/14 15:24:03 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/formats/md3_loader.cc
r285 r287 321 321 mesh_data* nv::md3_loader::release_mesh_data( size_t ) 322 322 { 323 return release_mesh_frame( -1 ); 324 } 325 326 mesh_data* nv::md3_loader::release_mesh_frame( sint32 frame ) 323 mesh_data* data = new mesh_data; 324 release_mesh_frame( data, -1 ); 325 return data; 326 } 327 328 void nv::md3_loader::release_mesh_frame( mesh_data* data, sint32 frame ) 327 329 { 328 330 md3_t* md3 = (md3_t*)m_md3; … … 394 396 } 395 397 396 mesh_data* result = new mesh_data(); 397 result->add_channel( mc_pn ); 398 result->add_channel( mc_t ); 399 result->add_channel( ic ); 400 return result; 401 } 402 403 tag_map* nv::md3_loader::create_tag_map() 398 data->set_name( (char*)md3->header.name ); 399 data->add_channel( mc_pn ); 400 data->add_channel( mc_t ); 401 data->add_channel( ic ); 402 } 403 404 mesh_nodes_data* nv::md3_loader::release_mesh_nodes_data() 404 405 { 405 406 md3_t* md3 = (md3_t*)m_md3; 406 tag_map* result = new tag_map(); 407 for ( sint32 i = 0; i < md3->header.num_tags; ++i ) 407 uint32 node_count = md3->header.num_tags; 408 if ( node_count == 0 ) return nullptr;; 409 mesh_node_data* nodes = new mesh_node_data[ node_count ]; 410 for ( uint32 i = 0; i < node_count; ++i ) 408 411 { 409 412 const md3_tag_t& rtag = md3->tags[i]; 410 413 std::string name( (char*)(rtag.name) ); 411 414 412 key_data* data = new key_data; 413 data->add_channel( load_tags( name ) ); 414 result->insert( name, data ); 415 } 416 return result; 417 } 418 419 mesh_node_data* nv::md3_loader::release_mesh_node_data( size_t index ) 420 { 421 md3_t* md3 = (md3_t*)m_md3; 422 const md3_tag_t& rtag = md3->tags[index]; 423 std::string name( (char*)(rtag.name) ); 424 425 mesh_node_data* result = new mesh_node_data; 426 result->transform = mat4(); 427 result->name = name; 428 result->parent_id = -1; 429 result->target_id = -1; 430 result->data = new key_data; 415 nodes[i].transform = mat4(); 416 nodes[i].name = name; 417 nodes[i].parent_id = -1; 418 nodes[i].target_id = -1; 419 nodes[i].data = new key_data; 431 420 432 key_raw_channel* keys = load_tags( name ); 433 result->data->add_channel( keys ); 434 return result; 435 } 436 437 size_t nv::md3_loader::get_node_count() const 438 { 439 return ((md3_t*)m_md3)->header.num_tags; 421 key_raw_channel* keys = load_tags( name ); 422 nodes[i].data->add_channel( keys ); 423 } 424 return new mesh_nodes_data( "tags", node_count, nodes ); 425 } 426 427 mesh_data_pack* nv::md3_loader::release_mesh_data_pack() 428 { 429 mesh_data* data = new mesh_data[1]; 430 release_mesh_frame( &data[0], -1 ); 431 return new mesh_data_pack( 1, data, release_mesh_nodes_data() ); 440 432 } 441 433
Note: See TracChangeset
for help on using the changeset viewer.