So I have a weird scripting issue with the bag.takeObject() function that might possibly be a bug.

If I have my Global script or another object script run the takeObject() function on a remote bag the object will come out of the bag with it's GUID unmodified.

If on the other hand I put a script in that object / bag itself and use self.takeObject() to put an item out on the table the item acts like a copy and takes on a new GUID. Using bag = getObjectFromGUID(idHere) and then calling bag.takeObject(params) still results in a new GUID as long as the script that is calling it resides in the same object. I've tried this with multiple bags and configurations and it seems to hold true. I've tried putting my takeObject() code in a function in the Global script and then using Global.call to call that function but it still modifies the GUID (Even without passing any references). I also tried setting up a coroutine to execute the code while my object just calls coroutine.resume() but that also fails.

This is causing me some headaches. I'm using the onCollisionEnter() function so I think I need the bag to be the trigger. The code basically runs a quick check on the contents of the bag and spits out any unwanted items but I need these items returned to the table with their GUIDs intact.

Any advice would be appreciated.