private static MyEditPropertyEnum GetEditProperties(List <MyEntity> entities) { Array allEditProperties = Enum.GetValues(typeof(MyEditPropertyEnum)); int[] editPropertiesCount = new int[MyMwcUtils.GetMaxValueFromEnum <MyEditPropertyEnum>() + 1]; foreach (MyEntity entity in entities) { MyEditPropertyEnum editPropertyForEntity = GetEditProperties(entity); foreach (MyEditPropertyEnum editProperty in allEditProperties) { if ((entities.Count == 1 || m_editPropertiesForMultiEdit.Contains(editProperty)) && (editPropertyForEntity & editProperty) != 0) { editPropertiesCount[(int)editProperty]++; } } } MyEditPropertyEnum result = MyEditPropertyEnum.None; foreach (MyEditPropertyEnum editProperty in allEditProperties) { if (editPropertiesCount[(int)editProperty] == entities.Count) { result |= editProperty; } } return(result); }
private static MyEditPropertyEnum GetEditProperties(MyEntity entity) { MyEditPropertyEnum result = MyEditPropertyEnum.None; foreach (KeyValuePair <Type, MyEditPropertyEnum> keyValuePair in m_editPropertiesPerEntityType) { if (keyValuePair.Key.IsInstanceOfType(entity)) { result |= keyValuePair.Value; } } return(result); }
public MyGuiScreenEditorEditProperties(List <MyEntity> entities) : base(new Vector2(0.5f, 0.5f), new Vector2(0.75f, 1f)) { Debug.Assert(entities.Count > 0); Debug.Assert(CanEditProperties(entities)); AddCaption(new StringBuilder("Edit properties"), MyGuiConstants.LABEL_TEXT_COLOR); m_entities = entities; m_editProperties = new MyEditProperties(); m_editProperties.Name = m_entities[0].Name; m_editProperties.DisplayName = m_entities[0].DisplayName; m_editProperties.Faction = m_entities[0].Faction; m_editProperties.HealthRatio = m_entities[0].HealthRatio; m_editProperties.MaxHealth = m_entities[0].MaxHealth; m_editProperties.IsIndestructible = !m_entities[0].IsDestructible; m_editProperties.RequiresEnergy = m_entities[0] is MyPrefabBase ? ((MyPrefabBase)m_entities[0]).RequiresEnergy : null; m_editProperties.UseProperties = m_entities[0] is IMyUseableEntity ? ((IMyUseableEntity)m_entities[0]).UseProperties : null; m_editProperties.IsActivated = m_entities[0].Activated; m_editProperties.DisplayHud = m_entities[0].DisplayOnHud; m_editProperties.Difficulty = m_entities[0].MaxDifficultyToActivated; if (m_entities[0] is MyPrefabKinematic) { MyPrefabKinematic prefabKinematic = m_entities[0] as MyPrefabKinematic; MyPrefabConfigurationKinematic prefabKinematicConfig = prefabKinematic.GetConfiguration() as MyPrefabConfigurationKinematic; m_editProperties.KinematicPartsHealthAndMaxHealth = new MyHealthAndMaxHealth[prefabKinematicConfig.KinematicParts.Count]; for (int i = 0; i < m_editProperties.KinematicPartsHealthAndMaxHealth.Length; i++) { MyPrefabKinematicPart kinematicPart = prefabKinematic.Parts[i]; if (kinematicPart != null) { float health = kinematicPart.Health; float maxHealth = kinematicPart.MaxHealth; m_editProperties.KinematicPartsHealthAndMaxHealth[i] = new MyHealthAndMaxHealth(health, maxHealth); } } } m_editPropertiesFlags = GetEditProperties(m_entities); DetectNotSameProperties(); InitControls(); m_errorMessages = new List <StringBuilder>(); m_errorMessage = new StringBuilder(); }
public MyGuiScreenEditorEditProperties(List<MyEntity> entities) : base(new Vector2(0.5f, 0.5f), new Vector2(0.75f, 1f)) { Debug.Assert(entities.Count > 0); Debug.Assert(CanEditProperties(entities)); AddCaption(new StringBuilder("Edit properties"), MyGuiConstants.LABEL_TEXT_COLOR); m_entities = entities; m_editProperties = new MyEditProperties(); m_editProperties.Name = m_entities[0].Name; m_editProperties.DisplayName = m_entities[0].DisplayName; m_editProperties.Faction = m_entities[0].Faction; m_editProperties.HealthRatio = m_entities[0].HealthRatio; m_editProperties.MaxHealth = m_entities[0].MaxHealth; m_editProperties.IsIndestructible = !m_entities[0].IsDestructible; m_editProperties.RequiresEnergy = m_entities[0] is MyPrefabBase ? ((MyPrefabBase)m_entities[0]).RequiresEnergy : null; m_editProperties.UseProperties = m_entities[0] is IMyUseableEntity ? ((IMyUseableEntity)m_entities[0]).UseProperties : null; m_editProperties.IsActivated = m_entities[0].Activated; m_editProperties.DisplayHud = m_entities[0].DisplayOnHud; m_editProperties.Difficulty = m_entities[0].MaxDifficultyToActivated; if (m_entities[0] is MyPrefabKinematic) { MyPrefabKinematic prefabKinematic = m_entities[0] as MyPrefabKinematic; MyPrefabConfigurationKinematic prefabKinematicConfig = prefabKinematic.GetConfiguration() as MyPrefabConfigurationKinematic; m_editProperties.KinematicPartsHealthAndMaxHealth = new MyHealthAndMaxHealth[prefabKinematicConfig.KinematicParts.Count]; for (int i = 0; i < m_editProperties.KinematicPartsHealthAndMaxHealth.Length; i++) { MyPrefabKinematicPart kinematicPart = prefabKinematic.Parts[i]; if (kinematicPart != null) { float health = kinematicPart.Health; float maxHealth = kinematicPart.MaxHealth; m_editProperties.KinematicPartsHealthAndMaxHealth[i] = new MyHealthAndMaxHealth(health, maxHealth); } } } m_editPropertiesFlags = GetEditProperties(m_entities); DetectNotSameProperties(); InitControls(); m_errorMessages = new List<StringBuilder>(); m_errorMessage = new StringBuilder(); }