Ignore:
Timestamp:
07/16/15 21:21:19 (10 years ago)
Author:
epyon
Message:
  • refactoring WIP! (compiles though - warnings on purpose)
File:
1 edited

Legend:

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

    r423 r424  
    108108{
    109109        if ( index >= m_mesh_count ) return nullptr;
    110         data_channel_set* result = data_channel_set_creator::create( 2 );
     110        data_channel_set* result = data_channel_set_creator::create_set( 2 );
    111111        load_mesh_data( result, index );
    112112        return result;
     
    199199                aiBone* bone   = mesh->mBones[m];
    200200                mat4    offset = assimp_mat4_cast( bone->mOffsetMatrix );
    201 //              bones[m].name = bone->mName.data;
    202                 bones[m].name = hash_string< uint64 >( bone->mName.data );
    203                 bones[m].data = nullptr;
    204                 bones[m].parent_id = -1;
    205 //              bones[m].target_id = -1;
    206                 bones[m].transform = offset;
     201                bones[m].data = data_channel_set_creator::create_set( 0 );
     202                data_channel_set_creator access( bones[m].data );
     203                access.set_name( hash_string< uint64 >( bone->mName.data ) );
     204                access.set_transform( offset );
    207205        }
    208206        return true;
     
    302300
    303301                                mesh_node_data& bone = bones[b];
    304                                 auto iname = names.find( bone.name );
     302                                auto iname = names.find( bone.data->get_name() );
    305303                                if ( iname == names.end() )
    306304                                {
     
    308306                                        uint16 index = uint16( final_bones.size() );
    309307                                        final_bones.push_back( bone );
    310                                         names[ bone.name] = index;
     308                                        names[ bone.data->get_name() ] = index;
    311309                                        translate[b] = index;
    312310                                }
     
    390388        mesh_node_data& a_data = nodes[ this_id ];
    391389
    392 //      a_data.name      = name;
    393         a_data.name = hash_string< uint64 >( name.c_str() );
    394         a_data.parent_id = parent_id;
     390        if (anode)
     391                create_keys( &a_data, anode );
     392        else
     393                a_data.data = data_channel_set_creator::create_set( 0 );
     394
     395        data_channel_set_creator access( a_data.data );
     396        access.set_name( hash_string< uint64 >( name.c_str() ) );
     397        access.set_parent_id( parent_id );
    395398        // This value is ignored by the create_transformed_keys, but needed by create_direct_keys!
    396399        // TODO: find a common solution!
    397400        //       This is bad because create_transformed_keys never uses node-transformations for
    398401        //       node's without keys
    399         a_data.transform = nv::assimp_mat4_cast( node->mTransformation );
    400         if (this_id == 0)
    401                 a_data.transform = mat4();
    402         a_data.data = nullptr;
    403 
    404         if (anode) create_keys( &a_data, anode );
     402        access.set_transform( nv::assimp_mat4_cast( node->mTransformation ) );
     403        if ( this_id == 0 ) access.set_transform( mat4() );
    405404
    406405        nv::sint16 next = this_id + 1;
     
    421420        }
    422421
    423         data->data = data_channel_set_creator::create( 2 );
     422        data->data = data_channel_set_creator::create_set( 2 );
    424423        data_channel_set_creator key_set( data->data );
    425424
     
    465464        const aiScene* scene = reinterpret_cast<const aiScene*>( m_scene );
    466465        bool has_bones = false;
    467         data_channel_set* meshes = data_channel_set_creator::create_array( m_mesh_count, 2 );
     466        data_channel_set* meshes = data_channel_set_creator::create_set_array( m_mesh_count, 2 );
    468467        for ( size_t m = 0; m < m_mesh_count; ++m )
    469468        {
Note: See TracChangeset for help on using the changeset viewer.