Index: trunk/src/gfx/keyframed_mesh.cc
===================================================================
--- trunk/src/gfx/keyframed_mesh.cc	(revision 275)
+++ trunk/src/gfx/keyframed_mesh.cc	(revision 280)
@@ -32,6 +32,6 @@
 
 	m_index_count  = m_mesh_data->get_index_channel()->count;
-	m_vertex_count = m_mesh_data->get_channel_data()[1]->count;
-	m_frame_count  = m_mesh_data->get_channel_data()[0]->count / m_vertex_count;
+	m_vertex_count = m_mesh_data->get_channel<vertex_t>()->count;
+	m_frame_count  = m_mesh_data->get_channel<vertex_pn>()->count / m_vertex_count;
 }
 
@@ -167,12 +167,12 @@
 	: keyframed_mesh( a_device, a_data, a_tag_map )
 {
-	m_vb = a_device->create_vertex_buffer( nv::STATIC_DRAW, m_vertex_count * sizeof( vertex_pn ), (void*)m_mesh_data->get_channel_data()[0]->data );
-	m_va->add_vertex_buffers( m_vb, m_mesh_data->get_channel_data()[0] );
+	m_vb = a_device->create_vertex_buffer( nv::STATIC_DRAW, m_vertex_count * sizeof( vertex_pn ), (void*)m_mesh_data->get_channel<vertex_pn>()->data );
+	m_va->add_vertex_buffers( m_vb, m_mesh_data->get_channel<vertex_pn>() );
 
-	nv::vertex_buffer* vb = a_device->create_vertex_buffer( nv::STATIC_DRAW, m_vertex_count * sizeof( nv::vec2 ), (void*)m_mesh_data->get_channel_data()[1]->data );
-	m_va->add_vertex_buffers( vb, m_mesh_data->get_channel_data()[1] );
+	nv::vertex_buffer* vb = a_device->create_vertex_buffer( nv::STATIC_DRAW, m_vertex_count * sizeof( nv::vec2 ), (void*)m_mesh_data->get_channel<vertex_t>()->data );
+	m_va->add_vertex_buffers( vb, m_mesh_data->get_channel<vertex_t>() );
 
-	nv::index_buffer* ib = a_device->create_index_buffer( nv::STATIC_DRAW, m_mesh_data->get_index_channel()->size, (void*)m_mesh_data->get_index_channel()->data );
-	m_va->set_index_buffer( ib, m_mesh_data->get_index_channel()->etype, true );
+	nv::index_buffer* ib = a_device->create_index_buffer( nv::STATIC_DRAW, m_mesh_data->get_index_channel()->size(), (void*)m_mesh_data->get_index_channel()->data );
+	m_va->set_index_buffer( ib, m_mesh_data->get_index_channel()->desc.slots[0].etype, true );
 
 	m_vertex.resize( m_vertex_count );
@@ -183,5 +183,5 @@
 	keyframed_mesh::update( ms );
 
-	const vertex_pn* data = (const vertex_pn*)(m_mesh_data->get_channel_data()[0]->data);
+	const vertex_pn* data = m_mesh_data->get_channel_data<vertex_pn>();
 	const vertex_pn* prev = data + m_vertex_count * m_last_frame;
 	const vertex_pn* next = data + m_vertex_count * m_next_frame;
