Ignore:
Timestamp:
07/23/14 15:24:03 (11 years ago)
Author:
epyon
Message:
  • mesh_data_pack's in every format
  • md5_mesh_data removed, uses standard mesh_data
  • BONE_ARRAY in NMD is now a simple set of animation nodes
  • bone and animation node concepts merged
  • several minor changes
File:
1 edited

Legend:

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

    r285 r287  
    321321mesh_data* nv::md3_loader::release_mesh_data( size_t )
    322322{
    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
     328void nv::md3_loader::release_mesh_frame( mesh_data* data, sint32 frame )
    327329{
    328330        md3_t* md3 = (md3_t*)m_md3;
     
    394396        }
    395397
    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
     404mesh_nodes_data* nv::md3_loader::release_mesh_nodes_data()
    404405{
    405406        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 )
    408411        {
    409412                const md3_tag_t& rtag = md3->tags[i];
    410413                std::string name( (char*)(rtag.name) );
    411414
    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;
    431420       
    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
     427mesh_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() );
    440432}
    441433
Note: See TracChangeset for help on using the changeset viewer.