MCPcopy
hub / github.com/EngoEngine/engo / Less

Method Less

common/render.go:158–199  ·  view source on GitHub ↗
(i, j int)

Source from the content-addressed store, hash-verified

156}
157
158func (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
201func (r renderEntityList) Swap(i, j int) {
202 r[i], r[j] = r[j], r[i]

Callers

nothing calls this directly

Calls 2

getShadersPtrFunction · 0.70
TextureMethod · 0.65

Tested by

no test coverage detected