//todo. at some point, we may want to only rebuild the pieces that have actually received new data.
- _pieceGrid.Children.Clear();
+ _pieceGrid.RemoveAllChildren();
_pieceGrid.Rows = boundingGrid.Height + 1;
_pieceGrid.Columns = boundingGrid.Width + 1;
for (var y = boundingGrid.Bottom; y <= boundingGrid.Top; y++)
if (_entity.TryGetComponent<ItemComponent>(itemEnt, out var itemEntComponent))
{
- var gridPiece = new ItemGridPiece((itemEnt, itemEntComponent), itemPos, _entity)
+ ItemGridPiece gridPiece;
+
+ if (_storageController.CurrentlyDragging?.Entity is { } dragging
+ && dragging == itemEnt)
+ {
+ _storageController.CurrentlyDragging.Orphan();
+ gridPiece = _storageController.CurrentlyDragging;
+ }
+ else
{
- MinSize = size,
- Marked = Array.IndexOf(containedEntities, itemEnt) switch
+ gridPiece = new ItemGridPiece((itemEnt, itemEntComponent), itemPos, _entity)
{
- 0 => ItemGridPieceMarks.First,
- 1 => ItemGridPieceMarks.Second,
- _ => null,
- }
- };
- gridPiece.OnPiecePressed += OnPiecePressed;
- gridPiece.OnPieceUnpressed += OnPieceUnpressed;
+ MinSize = size,
+ Marked = Array.IndexOf(containedEntities, itemEnt) switch
+ {
+ 0 => ItemGridPieceMarks.First,
+ 1 => ItemGridPieceMarks.Second,
+ _ => null,
+ }
+ };
+ gridPiece.OnPiecePressed += OnPiecePressed;
+ gridPiece.OnPieceUnpressed += OnPieceUnpressed;
+ }
control.AddChild(gridPiece);
}
_entity.GetNetEntity(storageEnt)));
}
+ _menuDragHelper.EndDrag();
_container?.BuildItemPieces();
}
else //if we just clicked, then take it out of the bag.
{
+ _menuDragHelper.EndDrag();
_entity.RaisePredictiveEvent(new StorageInteractWithItemEvent(
_entity.GetNetEntity(control.Entity),
_entity.GetNetEntity(storageEnt)));
}
- _menuDragHelper.EndDrag();
args.Handle();
}