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(); } }