As title. I'm not sure what order Cross() is called in currently but assuming it's by type or order of contents this shouldn't be a breaking change for anything.
This makes it easier to make it so you bump only the topmost object in the location you're moving rather than currently where perfectly aligned objects seem to have no logic which gets bumped.
ID:2381497
Jul 5 2018, 3:01 am
|
|||||||
| |||||||
Jul 5 2018, 3:11 am
|
|
+1 this would be interesting
|
Checking by layer likely isn't going to happen; it requires appearance lookups and adds a layer of complexity that can only slow things down. The only conceivable benefit would be if the higher-layer objects always had bigger bounds and were more likely to cause a collision, thereby avoiding other Cross() calls.
Move() currently sorts by value ID--mainly because that makes it easier to compare the list of what's in the old bounds to what's in the new, and discard items in both--and it does not check all objects but instead will skip checks that are no longer relevant if another object has limited its movement. One much simpler thing I could do is reverse the order in which the list is traversed. This would put areas first, then mobs, objs, and finally turfs. While this isn't a layer sort since 1) layers can be arbitrary and 2) areas are typically the lowest layer, it would generally put mobs above objs and an area change is the sort of thing you might expect to take priority anyway. On the flip side, a turf change is also the kind of thing you might expect to take priority, which currently it does. |