Page 1 of 1

Allow arbitrary inserter pickup/drop locations

Posted: Sat Mar 01, 2014 7:45 pm
by sparr
Currently the code for the various kinds of inserters specifies pickup_distance and insert_distance, and assumes/enforces the application of these distances as directly in front of and behind the center of the inserter.

I'd love to see this extended to allow the pickup and insert locations to be specified as coordinates (which would shift relative to the rotation of the inserter)

Current:

Code: Select all

insert_distance = 0.85,
pickup_distance = 1,
Improved:

Code: Select all

insert_position = {0,0.85}
pickup_position = {0,1}
This would allow a 90 degree inserter to be specified as follows:

Code: Select all

insert_position = {0,0.85}
pickup_position = {1,0}
It would also allow the definition of inserters that cannot pick up from a specific side of a belt.

PS: even better than specifying coordinates would be specifying bounding boxes, in the same format as the collision_box and selection_box. this would allow very fine-grained control over where an inserter can operate, rather than the current location-and-default-radius.

Re: Allow arbitrary inserter pickup/drop locations

Posted: Tue Mar 04, 2014 4:48 pm
by cube
Moving this to modding interface requests. There it will have a larger chance of not getting lost :-)

Re: Allow arbitrary inserter pickup/drop locations

Posted: Tue Mar 04, 2014 7:47 pm
by sparr
Thanks, cube!

A more complicated but more useful request:

Make the pickup position into a list, so multiple locations can be specified. This would allow one inserter to combine two chests/belts/etc into one destination.

An even more complicated but more useful request:

Make the insert position into a list, so multiple locations can be specified. This would allow one chest/belt/etc and one inserter to feed multiple nearby (probably in a clover shape) assemblers.

An even MORE complicated but more useful request:

Provide some way to map specific pickup positions into specific insert positions. I am imagining an inserter that picks up 1 tile away and drops 1 tile away in the other direction, AND picks up 2 tiles away and drops 2 tiles away in the other direction. Or an inserter that picks up in any direction and drops in the opposite direction, the same distance away.

Re: Allow arbitrary inserter pickup/drop locations

Posted: Thu Mar 06, 2014 10:18 am
by slpwnd
So the pickup position / insert position is now implemented for the 0.9.2. This will allow (among others) the 90 degree inserters. Further proposed changes can be done in the future but I am reluctant to do them now so close to the bugfix release (the further changes are not trivial).

Re: Allow arbitrary inserter pickup/drop locations

Posted: Thu Mar 06, 2014 10:35 am
by AlexPhoenix
slpwnd wrote:So the pickup position / insert position is now implemented for the 0.9.2. This will allow (among others) the 90 degree inserters. Further proposed changes can be done in the future but I am reluctant to do them now so close to the bugfix release (the further changes are not trivial).
cool!
waiting for 0.9.2 to implement some of my ideas with inserters.

Re: Allow arbitrary inserter pickup/drop locations

Posted: Sat Mar 08, 2014 5:42 am
by sparr
slpwnd wrote:So the pickup position / insert position is now implemented for the 0.9.2. This will allow (among others) the 90 degree inserters. Further proposed changes can be done in the future but I am reluctant to do them now so close to the bugfix release (the further changes are not trivial).
Thanks! I made a mod that uses the new features for two new kinds of inserters, 90 degree and same-side-different-tile-distance inserters. https://forums.factorio.com/forum/vie ... =14&t=2719

I also tried to make inserters that work on the same side and in the same tile, but on the near and far sides of a conveyor. This failed because the "target box" for the pickup location is so big that it overlaps the insert location.

I could resolve this problem if the pickup location was a box instead of a location, so we could finely control what gets picked up, instead of the current system which appears to be a standard radius/box around the pickup point.