private void UpdateSimState() { if (dirty) { dirty = false; if (simActive) { if (element != 0 && emitRate > 0f) { Vector3 position = base.transform.GetPosition(); float x = position.x + modifierOffset.x; Vector3 position2 = base.transform.GetPosition(); Vector3 pos = new Vector3(x, position2.y + modifierOffset.y, 0f); int game_cell = Grid.PosToCell(pos); SimMessages.ModifyElementEmitter(simHandle, game_cell, emitRange, element, 0.2f, emitRate * 0.2f, temperature, 3.40282347E+38f, emitDiseaseIdx, emitDiseaseCount); } statusHandle = GetComponent <KSelectable>().AddStatusItem(Db.Get().BuildingStatusItems.EmittingElement, this); } else { SimMessages.ModifyElementEmitter(simHandle, 0, 0, SimHashes.Vacuum, 0f, 0f, 0f, 0f, byte.MaxValue, 0); statusHandle = GetComponent <KSelectable>().RemoveStatusItem(statusHandle, this); } } }
protected override void OnSimDeactivate() { int cell = Grid.PosToCell(base.transform.GetPosition()); int game_cell = Grid.OffsetCell(cell, (int)outputElement.outputElementOffset.x, (int)outputElement.outputElementOffset.y); SimMessages.ModifyElementEmitter(simHandle, game_cell, emitRange, SimHashes.Vacuum, 0f, 0f, 0f, 0f, byte.MaxValue, 0); if (showDescriptor) { statusHandle = GetComponent <KSelectable>().RemoveStatusItem(statusHandle, false); } }
protected override void OnSimActivate() { int cell = Grid.PosToCell(base.transform.GetPosition()); int game_cell = Grid.OffsetCell(cell, (int)outputElement.outputElementOffset.x, (int)outputElement.outputElementOffset.y); if (outputElement.elementHash != 0 && outputElement.massGenerationRate > 0f && emissionFrequency > 0f) { float emit_temperature = (outputElement.minOutputTemperature != 0f) ? outputElement.minOutputTemperature : GetComponent <PrimaryElement>().Temperature; SimMessages.ModifyElementEmitter(simHandle, game_cell, emitRange, outputElement.elementHash, emissionFrequency, outputElement.massGenerationRate, emit_temperature, maxPressure, outputElement.addedDiseaseIdx, outputElement.addedDiseaseCount); } if (showDescriptor) { statusHandle = GetComponent <KSelectable>().ReplaceStatusItem(statusHandle, Db.Get().BuildingStatusItems.ElementEmitterOutput, this); } }