#pragma once entityclass(Sort); // .float(entity,entity) sort_cmp; classfield(Sort).entity chain, sort_next, sort_prev; entity Sort_Spawn(); /** * Swap two neighbours in a sortlist. * @param a FIRST entity * @param b entity after a */ #define SORT_SWAP(a, b) \ b.sort_prev = a.sort_prev; \ a.sort_next = b.sort_next; \ if (b.sort_next) b.sort_next.sort_prev = a; \ if (a.sort_prev) a.sort_prev.sort_next = b; \ a.sort_prev = b; \ b.sort_next = a