private static void FixTransferAmount(MyInventory src, MyInventory dst, MyPhysicalInventoryItem?srcItem, bool spawn, ref MyFixedPoint remove, ref MyFixedPoint add) { Debug.Assert(Sync.IsServer); if (srcItem.Value.Amount < remove) { remove = srcItem.Value.Amount; add = remove; } if (!MySession.Static.CreativeMode && !src.Equals(dst)) { MyFixedPoint space = dst.ComputeAmountThatFits(srcItem.Value.Content.GetId()); if (space < remove) { if (spawn) { MyEntity e = (dst.Owner as MyEntity); Matrix m = e.WorldMatrix; MyFloatingObjects.Spawn(new MyPhysicalInventoryItem(remove - space, srcItem.Value.Content), e.PositionComp.GetPosition() + m.Forward + m.Up, m.Forward, m.Up, e.Physics); } else { remove = space; } add = space; } } }
private static TransferItemsMsg PrepareTransferItemMessage(MyInventory source, MyFixedPoint amount, uint itemId, MyInventory destination, int destinationIndex, bool spawn) { var msg = new TransferItemsMsg(); msg.OwnerEntityId = source.Owner.EntityId; for (byte i = 0; i < source.Owner.InventoryCount; i++) { if (source.Owner.GetInventory(i).Equals(source)) { msg.InventoryIndex = i; break; } } msg.itemId = itemId; msg.Amount = amount; msg.Spawn = spawn; if (source.Equals(destination)) { msg.DestOwnerEntityId = msg.OwnerEntityId; msg.DestInventoryIndex = msg.InventoryIndex; } else { msg.DestOwnerEntityId = destination.Owner.EntityId; for (byte i = 0; i < destination.Owner.InventoryCount; i++) { if (destination.Owner.GetInventory(i).Equals(destination)) { msg.DestInventoryIndex = i; break; } } } msg.DestItemIndex = destinationIndex; return(msg); }
private static void FixTransferAmount(MyInventory src, MyInventory dst, MyInventoryItem? srcItem, bool spawn, ref MyFixedPoint remove, ref MyFixedPoint add) { Debug.Assert(Sync.IsServer); if (srcItem.Value.Amount < remove) { remove = srcItem.Value.Amount; add = remove; } if (!MySession.Static.CreativeMode && !src.Equals(dst)) { MyFixedPoint space = dst.ComputeAmountThatFits(srcItem.Value.Content.GetId()); if (space < remove) { if (spawn) { MyEntity e = (dst.Owner as MyEntity); Matrix m = e.WorldMatrix; MyFloatingObjects.Spawn(new MyInventoryItem(remove - space, srcItem.Value.Content), e.PositionComp.GetPosition() + m.Forward + m.Up, m.Forward, m.Up, e.Physics); } else { remove = space; } add = space; } } }
private static TransferItemsMsg PrepareTransferItemMessage(MyInventory source, MyFixedPoint amount, uint itemId, MyInventory destination, int destinationIndex, bool spawn) { var msg = new TransferItemsMsg(); msg.OwnerEntityId = source.Owner.EntityId; for (byte i = 0; i < source.Owner.InventoryCount; i++) { if (source.Owner.GetInventory(i).Equals(source)) { msg.InventoryIndex = i; break; } } msg.itemId = itemId; msg.Amount = amount; msg.Spawn = spawn; if (source.Equals(destination)) { msg.DestOwnerEntityId = msg.OwnerEntityId; msg.DestInventoryIndex = msg.InventoryIndex; } else { msg.DestOwnerEntityId = destination.Owner.EntityId; for (byte i = 0; i < destination.Owner.InventoryCount; i++) { if (destination.Owner.GetInventory(i).Equals(destination)) { msg.DestInventoryIndex = i; break; } } } msg.DestItemIndex = destinationIndex; return msg; }