private void ExecuteUpdate(long dt) { _updateScheduled = false; if (!_powerObserver.IsPowered) { return; } if (Definition.RequiredStates.Count > 0 && _state != null && !Definition.RequiredStates.Contains(_state.CurrentState)) { return; } using (PoolManager.Get(out List <OrientedBoundingBoxD> boxes)) using (PoolManager.Get(out List <MyVoxelBase> voxels)) { GatherWorldVolumes(boxes); if (boxes.Count == 0) { return; } var worldBounds = BoundingBoxD.CreateInvalid(); foreach (var box in boxes) { worldBounds.Include(box.GetAABB()); } GatherVoxels(worldBounds, voxels); if (voxels.Count == 0) { return; } var availableForDeposit = ComputeDepositAvailability(); if (availableForDeposit == 0) { return; } var used = PerformVoxelOp(voxels, boxes, Definition.PlacementDefinition.Material.Index, availableForDeposit, _miningBuffer, Definition.RemoveFarmingItems); if (used <= 0) { return; } _eventBus?.Invoke(EventDidWork, true); UseDepositMaterials(used); GiftMiningMaterials(); } }
private void OnSwitchChanged(SwitchableNodeSide self, Node junction, Node destination) { BeginAnimating(); _eventBus?.Invoke(EventName); }
public EquiStateEventTrigger() { _triggerEvent = (evt) => _eventBus?.Invoke(evt); }