Changeset 424 for trunk/src/formats
- Timestamp:
- 07/16/15 21:21:19 (10 years ago)
- Location:
- trunk/src/formats
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/formats/assimp_loader.cc
r423 r424 108 108 { 109 109 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 ); 111 111 load_mesh_data( result, index ); 112 112 return result; … … 199 199 aiBone* bone = mesh->mBones[m]; 200 200 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 ); 207 205 } 208 206 return true; … … 302 300 303 301 mesh_node_data& bone = bones[b]; 304 auto iname = names.find( bone. name);302 auto iname = names.find( bone.data->get_name() ); 305 303 if ( iname == names.end() ) 306 304 { … … 308 306 uint16 index = uint16( final_bones.size() ); 309 307 final_bones.push_back( bone ); 310 names[ bone. name] = index;308 names[ bone.data->get_name() ] = index; 311 309 translate[b] = index; 312 310 } … … 390 388 mesh_node_data& a_data = nodes[ this_id ]; 391 389 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 ); 395 398 // This value is ignored by the create_transformed_keys, but needed by create_direct_keys! 396 399 // TODO: find a common solution! 397 400 // This is bad because create_transformed_keys never uses node-transformations for 398 401 // 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() ); 405 404 406 405 nv::sint16 next = this_id + 1; … … 421 420 } 422 421 423 data->data = data_channel_set_creator::create ( 2 );422 data->data = data_channel_set_creator::create_set( 2 ); 424 423 data_channel_set_creator key_set( data->data ); 425 424 … … 465 464 const aiScene* scene = reinterpret_cast<const aiScene*>( m_scene ); 466 465 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 ); 468 467 for ( size_t m = 0; m < m_mesh_count; ++m ) 469 468 { -
trunk/src/formats/md2_loader.cc
r417 r424 313 313 data_channel_set* nv::md2_loader::release_mesh_data( size_t ) 314 314 { 315 data_channel_set* data = data_channel_set_creator::create ( 3 );315 data_channel_set* data = data_channel_set_creator::create_set( 3 ); 316 316 release_mesh_frame( data, -1 ); 317 317 return data; … … 367 367 mesh_data_pack* nv::md2_loader::release_mesh_data_pack() 368 368 { 369 data_channel_set* data = data_channel_set_creator::create_ array( 1, 3 );369 data_channel_set* data = data_channel_set_creator::create_set_array( 1, 3 ); 370 370 release_mesh_frame( &data[0], -1 ); 371 371 return new mesh_data_pack( 1, data ); -
trunk/src/formats/md3_loader.cc
r423 r424 324 324 data_channel_set* nv::md3_loader::release_mesh_data( nv::size_t index ) 325 325 { 326 data_channel_set* data = data_channel_set_creator::create (3);326 data_channel_set* data = data_channel_set_creator::create_set(3); 327 327 release_mesh_frame( data, -1, static_cast< sint32 >( index ) ); 328 328 return data; … … 424 424 const md3_tag_t& rtag = md3->tags[i]; 425 425 string_view name( reinterpret_cast< const char* >(rtag.name) ); 426 427 nodes[i].transform = mat4(); 428 nodes[i].name = hash_string< uint64 >( name.data() ); 429 nodes[i].parent_id = -1; 430 nodes[i].data = data_channel_set_creator::create( 1 ); 431 load_tags( data_channel_set_creator( nodes[i].data ).add_channel<md3_key>( uint32( md3->header.num_frames ) ).channel(), name ); 426 nodes[i].data = data_channel_set_creator::create_set( 1 ); 427 data_channel_set_creator access( nodes[i].data ); 428 access.set_name( hash_string< uint64 >( name.data() ) ); 429 load_tags( access.add_channel<md3_key>( uint32( md3->header.num_frames ) ).channel(), name ); 432 430 } 433 431 int name_; … … 442 440 if ( m_merge_all ) 443 441 { 444 data = data_channel_set_creator::create_ array(1,3);442 data = data_channel_set_creator::create_set_array(1,3); 445 443 release_mesh_frame( &data[0], -1, -1 ); 446 444 data_channel_set_creator( &data[0] ).set_name( reinterpret_cast< char* >( md3->header.name ) ); … … 449 447 { 450 448 count = md3->header.num_surfaces; 451 data = data_channel_set_creator::create_ array( count, 3 );449 data = data_channel_set_creator::create_set_array( count, 3 ); 452 450 for ( int i = 0; i < count; ++i ) 453 451 { -
trunk/src/formats/md5_loader.cc
r423 r424 118 118 { 119 119 std::string name; 120 sstream >> name >> nodes[i].parent_id; 120 sint16 parent_id; 121 sstream >> name >> parent_id; 121 122 vec3 pos; 122 123 quat orient; … … 128 129 unit_quat_w( orient ); 129 130 remove_quotes( name ); 130 // nodes[i].name = name; 131 nodes[i].name = hash_string< uint64 >( name.c_str() ); 132 // nodes[i].target_id = -1; 133 nodes[i].parent_id = -1; 134 nodes[i].transform = transform( pos, orient ).inverse().extract(); 135 nodes[i].data = nullptr; 131 nodes[i].data = data_channel_set_creator::create_set( 0 ); 132 data_channel_set_creator access( nodes[i].data ); 133 access.set_parent_id( parent_id ); 134 access.set_transform( transform( pos, orient ).inverse().extract() ); 135 access.set_name( hash_string< uint64 >( name.c_str() ) ); 136 136 next_line( sstream ); 137 137 } … … 141 141 { 142 142 assert( m_type == MESH ); 143 data_channel_set* mesh = data_channel_set_creator::create ( 4 );143 data_channel_set* mesh = data_channel_set_creator::create_set( 4 ); 144 144 data_channel_set_creator maccess( mesh ); 145 145 … … 251 251 { 252 252 std::string name; 253 sstream >> name >> nodes[i].parent_id >> joint_infos[i].flags >> joint_infos[i].start_index; 253 sint16 parent_id; 254 sstream >> name >> parent_id >> joint_infos[i].flags >> joint_infos[i].start_index; 254 255 remove_quotes( name ); 255 // nodes[i].name = name;256 nodes[i].name = hash_string< uint64 >( name.c_str());257 nodes[i].transform = mat4();258 nodes[i].data = data_channel_set_creator::create( 1);259 data_channel_set_creator( nodes[i].data ).add_channel< md5_key_t >( num_frames);256 nodes[i].data = data_channel_set_creator::create_set( 1 ); 257 data_channel_set_creator access( nodes[i].data ); 258 access.add_channel< md5_key_t >( num_frames ); 259 access.set_name( hash_string< uint64 >( name.c_str() ) ); 260 access.set_parent_id( parent_id ); 260 261 next_line( sstream ); 261 262 } … … 391 392 md5_weight& weight = weights[start_weight + j]; 392 393 const mesh_node_data& joint = nodes[weight.joint_id]; 393 const transform tr = transform( joint. transform).inverse();394 const transform tr = transform( joint.data->get_transform() ).inverse(); 394 395 vec3 rot_pos = tr.get_orientation() * weight.pos; 395 396 … … 454 455 { 455 456 const mesh_node_data& joint = nodes[vdata.boneindex[j]]; 456 const transform tr = transform( joint. transform).inverse();457 const transform tr = transform( joint.data->get_transform() ).inverse(); 457 458 vdata.normal += ( normal * tr.get_orientation() ) * vdata.boneweight[j]; 458 459 vdata.tangent += ( tangent * tr.get_orientation() ) * vdata.boneweight[j]; … … 472 473 const md5_joint_info& jinfo = joint_infos[i]; 473 474 mesh_node_data& joint = nodes[i]; 474 int parent_id = joint. parent_id;475 int parent_id = joint.data->get_parent_id(); 475 476 476 477 vec3 pos = base_frames[i].get_position(); … … 519 520 { 520 521 uint32 size = m_meshes.size(); 521 data_channel_set* meshes = data_channel_set_creator::create_ array( size, 4 );522 data_channel_set* meshes = data_channel_set_creator::create_set_array( size, 4 ); 522 523 for ( uint32 i = 0; i < size; ++i ) 523 524 { -
trunk/src/formats/nmd_loader.cc
r423 r424 37 37 bool nv::nmd_loader::load_mesh( stream& source, const nmd_element_header& e ) 38 38 { 39 data_channel_set* mesh = data_channel_set_creator::create ( e.children );39 data_channel_set* mesh = data_channel_set_creator::create_set( e.children ); 40 40 load_channel_set( source, mesh, e ); 41 41 // m_mesh_names.push_back( e.name ); … … 55 55 { 56 56 uint32 size = m_meshes.size(); 57 data_channel_set* meshes = data_channel_set_creator::create_ array( size, 0 );57 data_channel_set* meshes = data_channel_set_creator::create_set_array( size, 0 ); 58 58 for ( uint32 i = 0; i < size; ++i ) 59 59 { … … 119 119 bool nv::nmd_loader::load_node( stream& source, mesh_node_data* data, const nmd_element_header& e ) 120 120 { 121 data->name = e.name; 122 data->parent_id = e.parent_id; 123 data->transform = e.transform; 124 data->data = nullptr; 121 data->data = data_channel_set_creator::create_set( e.children ); 125 122 if ( e.children > 0 ) 126 123 { 127 data->data = data_channel_set_creator::create( e.children );128 124 load_channel_set( source, data->data, e ); 129 125 } 126 data_channel_set_creator access( data->data ); 127 access.set_name( e.name ); 128 access.set_parent_id( e.parent_id ); 129 access.set_transform( e.transform ); 130 130 return true; 131 131 } … … 206 206 eheader.children = static_cast<uint16>( chan_count ); 207 207 eheader.size = chan_size; 208 eheader.name = node-> name;209 eheader.parent_id = node-> parent_id;210 eheader.transform = node-> transform;208 eheader.name = node->data->get_name(); 209 eheader.parent_id = node->data->get_parent_id(); 210 eheader.transform = node->data->get_transform(); 211 211 eheader.attributes = 0; 212 212 stream_out.write( &eheader, sizeof( eheader ), 1 ); 213 if ( node->data) nmd_dump_channel_set( node->data, stream_out );213 if ( chan_count > 0 ) nmd_dump_channel_set( node->data, stream_out ); 214 214 } 215 215 … … 238 238 eheader.children = static_cast<uint16>( mesh.size() ); 239 239 eheader.size = size; 240 int uncomment; 241 // eheader.name = mesh.get_name(); 242 // eheader.transform = mesh.get_transform(); 243 // eheader.parent_id = mesh.get_parent_id(); 244 eheader.name = 0; 245 eheader.transform = mat4(); 246 eheader.parent_id = -1; 240 eheader.name = mesh.get_name(); 241 eheader.transform = mesh.get_transform(); 242 eheader.parent_id = mesh.get_parent_id(); 247 243 eheader.attributes = 0; 248 244 stream_out.write( &eheader, sizeof( eheader ), 1 ); -
trunk/src/formats/obj_loader.cc
r417 r424 326 326 } 327 327 328 data_channel_set* result = data_channel_set_creator::create ( 1 );328 data_channel_set* result = data_channel_set_creator::create_set( 1 ); 329 329 data_channel_set_creator raccess( result );// ( reader->name ); 330 330 uint8* rdata = raccess.add_channel( m_descriptor, reader->size * 3 ).raw_data(); … … 359 359 { 360 360 uint32 size = m_meshes.size(); 361 data_channel_set* meshes = data_channel_set_creator::create_ array( size, 1 );361 data_channel_set* meshes = data_channel_set_creator::create_set_array( size, 1 ); 362 362 for ( uint32 i = 0; i < size; ++i ) 363 363 {
Note: See TracChangeset
for help on using the changeset viewer.