ID:141578
 
For those of you wondering, "Didn't he already fix this?", I'm redoing my entire pixel movement system, as I have some very deeply nested problems. So far, the system causes much less overhead, as well. However, I cannot seem to get my objects to collide for the life of me.

Some notes on the matter:
1) It appears that objects are in the list and are dense.
2) The player is dense.
3) My top and bottom etc. vars are what they are supposed to be.

        Is_colliding(atom/A,atom/B,left1,right1,bottom1,top1)
if(!B.density) return

if (bottom1 < B.top) return
if (top1 > B.bottom) return
if (right1 < B.left) return
if (left1 > B.right) return

return B

movable

animate_movement = 0

proc

iscolliding(xp,yp)
if(!density) return

var
top1 = top+yp
bottom1 = bottom+yp
left1 = left+xp
right1 = right+xp

var/list/L = orange(1,src)

QuickSort(L,/proc/Sort_By_Dist,src)

for(var/atom/A as anything in L)

. = control.Is_colliding(src,A,left1,right1,bottom1,top1)
if(.) break
Wouldn't your first Is_colliding() proc return even if your top was intersecting, but your left/right wasn't?
I feel insanely stupid now. I was messing with the collision algorithm in my last project, and I just copied and pasted the proc over. The greater than-less than order should have been greater than less than less than greater than.