public float OnPipeExit(WireOutput wire, Ray posDir, PipePayload payload) { var existingBlock = World.GetBlock(posDir.FirstPos) as EmptyBlock; if (existingBlock != null) { var target = World.FindPyramidPos(posDir.FirstPos); World.SetBlock(this.OriginType, target); return(1); } return(0); }
public float OnPipeExit(WireOutput wire, Ray posDir, PipePayload payload) { var pos = posDir.FirstPos + Vector3i.Down; var existingBlock = World.GetBlock(pos); var waterOuput = Mathf.Min(payload.Amount / payload.Time, .999f); switch (existingBlock) { // Set the existing block if it's there, or add a new block. case EmptyBlock _: World.SetBlock(typeof(WaterBlock), pos, waterOuput, true); break; case WaterBlock waterBlock: waterBlock.Water = waterOuput; waterBlock.PipeSupplied = true; break; } return(payload.Amount); }
public float OnPipeExit(WireOutput wire, Ray posDir, PipePayload payload) { WorldLayerManager.Obj.ClimateSim.AddGroundPollution(posDir.FirstPos.XZ, payload.Amount / SewageItemsPerPollution / TimeUtil.SecondsPerHour); return(payload.Amount); }