(i, j int)
| 156 | } |
| 157 | |
| 158 | func (r renderEntityList) Less(i, j int) bool { |
| 159 | // Sort by shader-pointer if they have the same zIndex |
| 160 | if r[i].RenderComponent.zIndex != r[j].RenderComponent.zIndex { |
| 161 | return r[i].RenderComponent.zIndex < r[j].RenderComponent.zIndex |
| 162 | } |
| 163 | |
| 164 | p1, p2 := getShadersPtr(r[i].RenderComponent.shader, r[j].RenderComponent.shader) |
| 165 | if p1 != p2 { |
| 166 | return p1 < p2 |
| 167 | } |
| 168 | |
| 169 | switch r[i].RenderComponent.Drawable.(type) { |
| 170 | // Tiles can either be as a spriteSheet or as separate image |
| 171 | // if we sort them by texture and they're saved as separate images, |
| 172 | // sorting by texture messes up rendering. |
| 173 | case *Tile: |
| 174 | // NO-OP |
| 175 | default: |
| 176 | t1, t2 := uintptr(unsafe.Pointer(r[i].RenderComponent.Drawable.Texture())), uintptr(unsafe.Pointer(r[j].RenderComponent.Drawable.Texture())) |
| 177 | if t1 != t2 { |
| 178 | return t1 < t2 |
| 179 | } |
| 180 | } |
| 181 | |
| 182 | // Sort by minFilter if they're the same magFilter |
| 183 | mag1, mag2 := r[i].RenderComponent.magFilter, r[j].RenderComponent.magFilter |
| 184 | if mag1 != mag2 { |
| 185 | return mag1 < mag2 |
| 186 | } |
| 187 | |
| 188 | // Sort by position if they're the same minFilter |
| 189 | min1, min2 := r[i].RenderComponent.minFilter, r[j].RenderComponent.minFilter |
| 190 | if min1 != min2 { |
| 191 | return min1 < min2 |
| 192 | } |
| 193 | |
| 194 | if r[i].Position.Y != r[j].Position.Y { |
| 195 | return r[i].Position.Y < r[j].Position.Y |
| 196 | } |
| 197 | |
| 198 | return r[i].Position.X < r[j].Position.X |
| 199 | } |
| 200 | |
| 201 | func (r renderEntityList) Swap(i, j int) { |
| 202 | r[i], r[j] = r[j], r[i] |
nothing calls this directly
no test coverage detected