| 205 | //------------------------------------------------------------------------ |
| 206 | template<class T, unsigned S, unsigned P> |
| 207 | inline void vertex_block_storage<T,S,P>::swap_vertices(unsigned v1, unsigned v2) |
| 208 | { |
| 209 | unsigned b1 = v1 >> block_shift; |
| 210 | unsigned b2 = v2 >> block_shift; |
| 211 | unsigned o1 = v1 & block_mask; |
| 212 | unsigned o2 = v2 & block_mask; |
| 213 | T* pv1 = m_coord_blocks[b1] + (o1 << 1); |
| 214 | T* pv2 = m_coord_blocks[b2] + (o2 << 1); |
| 215 | T val; |
| 216 | val = pv1[0]; pv1[0] = pv2[0]; pv2[0] = val; |
| 217 | val = pv1[1]; pv1[1] = pv2[1]; pv2[1] = val; |
| 218 | int8u cmd = m_cmd_blocks[b1][o1]; |
| 219 | m_cmd_blocks[b1][o1] = m_cmd_blocks[b2][o2]; |
| 220 | m_cmd_blocks[b2][o2] = cmd; |
| 221 | } |
| 222 | |
| 223 | //------------------------------------------------------------------------ |
| 224 | template<class T, unsigned S, unsigned P> |