public void Update() { if (!Owner.TryGetComponent(out SolutionComponent contents)) { return; } if (!_running) { return; } // Get all intersecting tiles with the vapor and spray the divided solution on there if (Owner.TryGetComponent(out ICollidableComponent collidable)) { var worldBounds = collidable.WorldAABB; var mapGrid = _mapManager.GetGrid(Owner.Transform.GridID); var tiles = mapGrid.GetTilesIntersecting(worldBounds); var amount = _transferAmount / ReagentUnit.New(tiles.Count()); foreach (var tile in tiles) { var pos = tile.GridIndices.ToGridCoordinates(_mapManager, tile.GridIndex); SpillHelper.SpillAt(pos, contents.SplitSolution(amount), "PuddleSmear", false); //make non PuddleSmear? } } if (contents.CurrentVolume == 0) { // Delete this Owner.Delete(); } }
void ILand.Land(LandEventArgs eventArgs) { if (_pressurized && !Opened && _random.Prob(0.25f) && Owner.TryGetComponent(out SolutionComponent component)) { Opened = true; var solution = component.SplitSolution(component.CurrentVolume); SpillHelper.SpillAt(Owner, solution, "PuddleSmear"); EntitySystem.Get <AudioSystem>().PlayFromEntity(_burstSound, Owner, AudioParams.Default.WithVolume(-4)); } }