Ignore:
Timestamp:
07/10/15 14:16:42 (10 years ago)
Author:
epyon
Message:
  • mesh_data and key_data are data_channel_set (WIP)
  • massive cleanup of privacy in data_channels
File:
1 edited

Legend:

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

    r415 r416  
    66
    77#include "nv/formats/assimp_loader.hh"
     8
     9#include "nv/interface/data_channel_access.hh"
    810#include "nv/stl/unordered_map.hh"
    911#include "nv/lib/assimp.hh"
     
    103105}
    104106
    105 mesh_data* nv::assimp_loader::release_mesh_data( size_t index /*= 0 */ )
     107data_channel_set* nv::assimp_loader::release_mesh_data( size_t index /*= 0 */ )
    106108{
    107109        if ( index >= m_mesh_count ) return nullptr;
    108         mesh_data* result = new mesh_data;
     110        data_channel_set* result = data_channel_set_creator::create( 2 );
    109111        load_mesh_data( result, index );
    110112        return result;
    111113}
    112 void nv::assimp_loader::load_mesh_data( mesh_data* data, size_t index )
     114void nv::assimp_loader::load_mesh_data( data_channel_set* data, size_t index )
    113115{
    114116        const aiScene* scene = reinterpret_cast<const aiScene*>( m_scene );
    115117        const aiMesh*  mesh  = scene->mMeshes[ index ];
    116         data->set_name( mesh->mName.data );
    117118
    118119        bool skinned = mesh->mNumBones > 0;
     
    180181                }
    181182        }
    182         data->add_channel( channel.release() );
    183         data->add_channel( ichannel.release() );
     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() );
    184188}
    185189
     
    283287}
    284288
    285 mesh_nodes_data* nv::assimp_loader::release_merged_bones( mesh_data* meshes )
     289mesh_nodes_data* nv::assimp_loader::release_merged_bones( data_channel_set* meshes )
    286290{
    287291        const aiScene* scene = reinterpret_cast<const aiScene*>( m_scene );
     
    317321                        if ( m > 0 && bones.size() > 0 )
    318322                        {
    319                                 data_channel_creator< assimp_skinned_vtx > channel( meshes[m].get_raw_channels()[0] );
     323                                data_channel_creator< assimp_skinned_vtx > channel( const_cast< raw_data_channel* >( meshes[m].get_channel(0) ) );
    320324                                for ( unsigned v = 0; v < channel.size(); ++v )
    321325                                {
     
    456460//              }
    457461//      }
    458         data->data->add_channel( pchannel_creator.release() );
    459         data->data->add_channel( rchannel_creator.release() );
    460 //      data->data->add_channel( schannel_creator.release() );
     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() );
    461465}
    462466
     
    466470        const aiScene* scene = reinterpret_cast<const aiScene*>( m_scene );
    467471        bool has_bones = false;
    468         mesh_data* meshes = new mesh_data[ m_mesh_count ];
     472        data_channel_set* meshes = data_channel_set_creator::create_array( m_mesh_count, 2 );
    469473        for ( size_t m = 0; m < m_mesh_count; ++m )
    470474        {
    471475                const aiMesh* mesh = scene->mMeshes[ m ];
    472                 meshes[m].set_name( mesh->mName.data );
     476                data_channel_set_creator( &meshes[m] ).set_name( mesh->mName.data );
    473477                if ( mesh->mNumBones > 0 ) has_bones = true;
    474478                load_mesh_data(&meshes[m],m);
Note: See TracChangeset for help on using the changeset viewer.