/// <summary> /// Deactivates the association that is currently activated and all other known associations. /// </summary> /// <param name="associations">The associations to deactivate.</param> protected virtual void Deactivate(GameObjectsAssociationObservableList associations) { if (associations == null) { return; } foreach (GameObjectsAssociation association in associations.NonSubscribableElements) { if (association == null) { continue; } foreach (GameObject associatedObject in association.GameObjects.NonSubscribableElements) { associatedObject.SetActive(false); } } if (CurrentAssociation != null) { foreach (GameObject associatedObject in CurrentAssociation.GameObjects.NonSubscribableElements) { associatedObject.SetActive(false); } CurrentAssociation = null; } }
/// <summary> /// Activates the <see cref="GameObject"/>s that are part of the association if the association matches the currently expected state. /// </summary> public virtual void Activate() { if (Associations == null) { return; } GameObjectsAssociation desiredAssociation = null; foreach (GameObjectsAssociation association in Associations.NonSubscribableElements) { if (association == null) { continue; } if (association.ShouldBeActive()) { desiredAssociation = association; break; } } if (desiredAssociation == null || CurrentAssociation == desiredAssociation) { return; } CurrentAssociation = desiredAssociation; foreach (GameObjectsAssociation association in Associations.NonSubscribableElements) { if (association == desiredAssociation) { continue; } foreach (GameObject associatedObject in association.GameObjects.NonSubscribableElements) { if (associatedObject != null) { associatedObject.SetActive(false); } } } foreach (GameObject associatedObject in desiredAssociation.GameObjects.NonSubscribableElements) { if (associatedObject != null) { associatedObject.SetActive(true); } } }