private void UpdateLabels() { string pressureText = "? kPa"; string temperatureText = "? °C"; string compositionText = "Unknown"; if (Acu.AtmosphericAverage.SampleSize > 0) { pressureText = $"{Acu.AtmosphericAverage.Pressure, 0:N3} kPa"; temperatureText = $"{TemperatureUtils.FromKelvin(Acu.AtmosphericAverage.Temperature, TemeratureUnits.C), 0:N1} °C"; compositionText = Acu.CompositionStatus.ToString(); } pressureLabel.SetValueServer( $"Pressure: {GUI_Acu.ColorStringByStatus(pressureText, Acu.PressureStatus)}"); temperatureLabel.SetValueServer( $"Temperature: {GUI_Acu.ColorStringByStatus(temperatureText, Acu.TemperatureStatus)}"); compositionLabel.SetValueServer( $"Composition: {GUI_Acu.ColorStringByStatus(compositionText, Acu.CompositionStatus)}"); }
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) { var type = property.propertyType; if (type != SerializedPropertyType.Float) { EditorGUI.PropertyField(position, property, label); return; } var enumRect = new Rect(position.x + position.width - SelectorSize, position.y, SelectorSize, position.height); selectedUnit = (TemeratureUnits)EditorGUI.EnumPopup(enumRect, selectedUnit); var tempK = property.floatValue; if (tempK < 0) { // you can't get lower than absolute zero tempK = 0f; } var temp = TemperatureUtils.FromKelvin(tempK, selectedUnit); var propRect = new Rect(position.x, position.y, position.width - SelectorSize, position.height); var newTemp = EditorGUI.FloatField(propRect, label, temp); var newTempK = TemperatureUtils.ToKelvin(newTemp, selectedUnit); if (Mathf.Abs(newTempK - tempK) > 0.001f) { // temperature has changed - update it property.floatValue = TemperatureUtils.ToKelvin(newTemp, selectedUnit); } }