Index: trunk/src/formats/assimp_loader.cc
===================================================================
--- trunk/src/formats/assimp_loader.cc	(revision 485)
+++ trunk/src/formats/assimp_loader.cc	(revision 486)
@@ -133,7 +133,7 @@
 	{
  		data_node_info info;
-		data_channel_set* data = data_channel_set_creator::create_set( 2 );
-		load_mesh_data( data, i, info );
-		m_meshes.push_back( data );
+		data_channel_set* mdata = data_channel_set_creator::create_set( 2 );
+		load_mesh_data( mdata, i, info );
+		m_meshes.push_back( mdata );
 		m_mesh_info.push_back( info );
 	}
@@ -184,5 +184,5 @@
 	int hack_for_node_anim;
 	if ( is_node_animated() )
-		info.parent_id = index;
+		info.parent_id = sint16( index );
 
 
@@ -339,5 +339,5 @@
 }
 
-void nv::assimp_loader::build_skeleton( vector< data_node_info >& skeleton, const void* node, int parent_id )
+void nv::assimp_loader::build_skeleton( vector< data_node_info >& skeleton, const void* node, sint16 parent_id )
 {
 	const aiNode* ainode = reinterpret_cast<const aiNode*>( node );
@@ -360,5 +360,5 @@
 	info.parent_id = parent_id;
 
-	int this_id = skeleton.size();
+	sint16 this_id = sint16( skeleton.size() );
 	skeleton.push_back( info );
 	for ( unsigned i = 0; i < ainode->mNumChildren; ++i )
@@ -428,5 +428,9 @@
 		{
 			mat4 tr = nv::math::inverse( assimp_mat4_cast( m_data->node_by_name[bone_data[i].name]->mTransformation ) );
-			bone_data[i].transform = tr * bone_data[bone_data[i].parent_id].transform;
+			int pid = bone_data[i].parent_id;
+			if ( pid != -1 )
+				bone_data[i].transform = tr * bone_data[pid].transform;
+			else
+				bone_data[i].transform = tr;
 		}
 //		list->append( bone_data[i] );
@@ -449,5 +453,4 @@
 	if ( scene->mRootNode == nullptr || scene->mAnimations == nullptr || scene->mAnimations[index] == nullptr) return nullptr;
 
-	const aiNode*      root = scene->mRootNode;
 	const aiAnimation* anim = scene->mAnimations[index];
 
@@ -481,5 +484,5 @@
 }
 
-data_node_list* nv::assimp_loader::release_data_node_list( size_t index /*= 0 */ )
+data_node_list* nv::assimp_loader::release_data_node_list( size_t /*= 0 */ )
 {
 	return release_merged_bones();
Index: trunk/src/formats/nmd_loader.cc
===================================================================
--- trunk/src/formats/nmd_loader.cc	(revision 485)
+++ trunk/src/formats/nmd_loader.cc	(revision 486)
@@ -261,5 +261,5 @@
 	nmd_element_header pheader;
 	pheader.type       = nv::nmd_type::POSES;
-	pheader.children   = poses.size();
+	pheader.children   = uint16( poses.size() );
 	pheader.size       = sizeof( transform ) * poses.size() * ( poses.size() > 0 ? poses[0]->size() : 0 )
 		               + sizeof( uint32 ) * poses.size();
