public override void OnBlockRemoved(int value, int newValue, int x, int y, int z) { ComponentBlockEntity blockEntity = m_subsystemBlockEntities.GetBlockEntity(x, y, z); if (blockEntity != null) { Vector3 position = new Vector3(x, y, z) + new Vector3(0.5f); foreach (IInventory item in blockEntity.Entity.FindComponents <IInventory>()) { item.DropAllItems(position); } base.Project.RemoveEntity(blockEntity.Entity, disposeEntity: true); } }
public override bool Simulate() { if (CalculateHighInputsCount() > 0) { if (m_isDispenseAllowed && (!m_lastDispenseTime.HasValue || base.SubsystemElectricity.SubsystemTime.GameTime - m_lastDispenseTime > 0.1)) { m_isDispenseAllowed = false; m_lastDispenseTime = base.SubsystemElectricity.SubsystemTime.GameTime; m_subsystemBlockEntities.GetBlockEntity(base.CellFaces[0].Point.X, base.CellFaces[0].Point.Y, base.CellFaces[0].Point.Z)?.Entity.FindComponent <ComponentDispenser>()?.Dispense(); } } else { m_isDispenseAllowed = true; } return(false); }