Index: trunk/src/gfx/skeleton_instance.cc
===================================================================
--- trunk/src/gfx/skeleton_instance.cc	(revision 482)
+++ trunk/src/gfx/skeleton_instance.cc	(revision 483)
@@ -60,4 +60,32 @@
 	if ( bones.size() != m_matrix.size() )
 		m_matrix.resize( bones.size() );
+}
+
+void nv::skeleton_transforms::assign( const data_node_list* node_data )
+{
+	NV_ASSERT( node_data, "!!!" );
+	if ( m_transforms.size() != node_data->size() )
+		m_transforms.resize( node_data->size() );
+	for ( uint32 n = 0; n < node_data->size(); ++n )
+	{
+		const data_node_info& info = (*node_data)[ n ];
+		m_transforms[n] = transform( info.transform );
+	}
+}
+
+void nv::skeleton_transforms::interpolate( const skeleton_transforms& a, const skeleton_transforms& b, float t )
+{
+	NV_ASSERT( a.size() == b.size(), "!!!" );
+	if ( m_transforms.size() != a.size() )
+		m_transforms.resize( a.size() );
+	for ( uint32 n = 0; n < a.size(); ++n )
+	{
+		m_transforms[n] = nv::interpolate( a.m_transforms[n], b.m_transforms[n], t );
+	}
+}
+
+void nv::skeleton_transforms::assign( const skeleton_transforms& other )
+{
+	m_transforms.assign( other.m_transforms );
 }
 
