public override void Read(Library.Collections.BitStream stream, out TEnum value, MySerializeInfo info) { if (m_valueCount == 1) { value = m_firstValue; } else if (m_valueCount == 2) { value = stream.ReadBool() ? m_firstValue : m_secondValue; } else if (m_valueCount > 2) { if (HasNegativeValues) { value = MyEnum <TEnum> .SetValue((ulong)stream.ReadInt64Variant()); } else { value = MyEnum <TEnum> .SetValue(stream.ReadUInt64(m_bitCount)); } } else { value = default(TEnum); } }
protected MyGuiControlCombobox AddCombo <TEnum>( TEnum selectedItem, Action <TEnum> valueChanged, bool enabled = true, List <MyGuiControlBase> controlGroup = null, Vector4?color = null) where TEnum : struct, IComparable, IFormattable, IConvertible { Debug.Assert(typeof(TEnum).IsEnum); var combobox = AddCombo(controlGroup, color); foreach (var value in MyEnum <TEnum> .Values) { combobox.AddItem((int)(object)value, new StringBuilder(value.ToString())); } combobox.SelectItemByKey((int)(object)selectedItem); combobox.ItemSelected += delegate() { valueChanged(MyEnum <TEnum> .SetValue((ulong)combobox.GetSelectedKey())); }; return(combobox); }