protected override void OnInventoryAddedToAggregate(Inventory.MyInventoryAggregate aggregate, MyInventoryBase inventory) { base.OnInventoryAddedToAggregate(aggregate, inventory); if (inventory == OutputInventory) { if (Sync.IsServer) { OutputInventory.ContentsChanged += OutputInventory_ContentsChanged; } } }
protected override void OnInventoryAddedToAggregate(Inventory.MyInventoryAggregate aggregate, MyInventoryBase inventory) { base.OnInventoryAddedToAggregate(aggregate, inventory); if (inventory == InputInventory) { InputInventory.ContentsChanged += inventory_OnContentsChanged; } else if (inventory == OutputInventory) { OutputInventory.ContentsChanged += inventory_OnContentsChanged; } else { Debug.Fail("Added inventory to aggregate, but not input or output invenoty?! This shouldn't happen."); } }
protected override void OnBeforeInventoryRemovedFromAggregate(Inventory.MyInventoryAggregate aggregate, MyInventoryBase inventory) { if (inventory == InputInventory) { InputInventory.ContentsChanged += inventory_OnContentsChanged; } else if (inventory == OutputInventory) { OutputInventory.ContentsChanged += inventory_OnContentsChanged; } else { Debug.Fail("Added inventory to aggregate, but not input or output invenoty?! This shouldn't happen."); } base.OnBeforeInventoryRemovedFromAggregate(aggregate, inventory); // Base method needs to be called here, cuz it removes the inventories from properties }