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