public void Init(StringBuilder hudLabelText, MyMwcObjectBuilder_InfluenceSphere objectBuilder, Matrix matrix)
        {
            // Influence spheres dont have hud label text
            base.Init(hudLabelText, objectBuilder);

            InfluenceFlags = objectBuilder.InfluenceFlags;

            m_radiusMin = objectBuilder.RadiusMin;
            RadiusMax   = objectBuilder.RadiusMax;
            DustColor   = objectBuilder.DustColor;
            Magnitude   = objectBuilder.Magnitude;

            VisibleInGame = false;

            SetWorldMatrix(matrix);

            Enabled = objectBuilder.Enabled;

            NeedsUpdate = Enabled;
            Save        = true;

            //m_soundType = objectBuilder.SoundType;
            //MySoundCuesEnum cueEnum = GetSoundCueByObjectBuilderType(m_soundType);
            //m_cueEnum = cueEnum;
            m_cueEnum = (MySoundCuesEnum)objectBuilder.SoundCueId;

            if ((InfluenceFlags & MyInfluenceFlags.Sound) > 0)
            {
                MyGuiInfluenceSphereHelper musicHelper = MyGuiInfluenceSphereHelpers.GetInfluenceSphereSoundHelper(m_cueEnum);
                if (musicHelper == null || !musicHelper.Description.ToString().ToLower().StartsWith("amb2d_"))
                {
                    if (musicHelper == null)
                    {
                        Debug.Fail("Incorrect influence sphere sound doesn't exist");
                        MyMwcLog.WriteLine("Incorrect influence sphere sound doesn't exist");
                    }
                    else
                    {
                        Debug.Fail("Incorrect influence sphere sound: " + musicHelper.Description.ToString() + ", deleted");
                        MyMwcLog.WriteLine("Incorrect influence sphere sound: " + musicHelper.Description.ToString() + ", deleted");
                    }
                }
            }

            Flags |= EntityFlags.EditableInEditor;
        }
        public override void OnOkClick(MyGuiControlButton sender)
        {
            float radiusMin;
            float radiusMax;

            if (!float.TryParse(m_radiusMinTextBox.Text, out radiusMin))
            {
                MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.YouHaveToSelect, MyTextsWrapperEnum.MessageBoxCaptionError, MyTextsWrapperEnum.Ok, null));
                return;
            }

            if (!float.TryParse(m_radiusMaxTextBox.Text, out radiusMax))
            {
                MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.YouHaveToSelect, MyTextsWrapperEnum.MessageBoxCaptionError, MyTextsWrapperEnum.Ok, null));
                return;
            }

            // Disallow to enter lower MAX radius than MIN radius
            if (radiusMax < radiusMin)
            {
                MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.RadiusMaxLowerThanRadiusMin, MyTextsWrapperEnum.MessageBoxCaptionError, MyTextsWrapperEnum.Ok, null));
                return;
            }

            if (!m_dustCheckbox.Checked && !m_radioactivityCheckbox.Checked && !m_soundCheckbox.Checked)
            {
                MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.YouHaveToSelect, MyTextsWrapperEnum.MessageBoxCaptionError, MyTextsWrapperEnum.Ok, null));
                return;
            }

            if (m_soundCheckbox.Checked && m_selectSoundCombobox.GetSelectedKey() == -1)
            {
                MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.YouHaveToSelect, MyTextsWrapperEnum.MessageBoxCaptionError, MyTextsWrapperEnum.Ok, null));
                return;
            }

            {
                base.OnOkClick(sender);

                float magnitude = m_strengthSlider.GetValue();

                var soundType = (MySoundCuesEnum)m_selectSoundCombobox.GetSelectedKey();

                if (HasEntity())
                {
                    // Update currently selected influence sphere properties
                    var influenceSphere = (MyInfluenceSphere)m_entity;

                    influenceSphere.Enabled = m_enabledCheckBox.Checked;

                    if (radiusMin > influenceSphere.RadiusMax)
                    {
                        influenceSphere.RadiusMax = radiusMax;
                        influenceSphere.RadiusMin = radiusMin;
                    }
                    else
                    {
                        influenceSphere.RadiusMin = radiusMin;
                        influenceSphere.RadiusMax = radiusMax;
                    }

                    var r = (byte)m_redColorSlider.GetValue();
                    var g = (byte)m_greenColorSlider.GetValue();
                    var b = (byte)m_blueColorSlider.GetValue();
                    var a = (byte)m_opacitySlider.GetValue();
                    influenceSphere.DustColor = new Color(r, g, b, a);

                    influenceSphere.Magnitude = magnitude;

                    influenceSphere.ChangeCueEnum(soundType);

                    influenceSphere.IsDust          = m_dustCheckbox.Checked;
                    influenceSphere.IsRadioactivity = m_radioactivityCheckbox.Checked;
                    influenceSphere.IsSound         = m_soundCheckbox.Checked;
                    influenceSphere.Activate(m_activatedCheckbox.Checked, false);
                }
                else
                {
                    // Create new influence sphere dust
                    var builder = new MyMwcObjectBuilder_InfluenceSphere();
                    builder.InfluenceFlags |= MyInfluenceFlags.Dust;
                    builder.RadiusMin       = radiusMin;
                    builder.RadiusMax       = radiusMax;
                    builder.Enabled         = m_enabledCheckBox.Checked;

                    var r = (byte)m_redColorSlider.GetValue();
                    var g = (byte)m_greenColorSlider.GetValue();
                    var b = (byte)m_blueColorSlider.GetValue();
                    var a = (byte)m_opacitySlider.GetValue();
                    builder.DustColor = new Color(r, g, b, a);

                    builder.Magnitude = magnitude;

                    builder.SoundCueId = (short)soundType;

                    builder.IsDust          = m_dustCheckbox.Checked;
                    builder.IsRadioactivity = m_radioactivityCheckbox.Checked;
                    builder.IsSound         = m_soundCheckbox.Checked;
                    if (!m_activatedCheckbox.Checked)
                    {
                        builder.PersistentFlags |= CommonLIB.AppCode.ObjectBuilders.MyPersistentEntityFlags.Deactivated;
                    }
                    MyEditor.Static.CreateFromObjectBuilder(builder, Matrix.Identity, m_screenPosition);
                }

                this.CloseScreen();
            }
        }