/// <summary> /// <para>Attachments from the new skin are attached if the corresponding attachment from the old skin was attached. /// If there was no old skin, each slot's setup mode attachment is attached from the new skin.</para> /// <para>After changing the skin, the visible attachments can be reset to those attached in the setup pose by calling /// <see cref="Skeleton.SetSlotsToSetupPose()"/>. /// Also, often <see cref="AnimationState.Apply(Skeleton)"/> is called before the next time the /// skeleton is rendered to allow any attachment keys in the current animation(s) to hide or show attachments from the new skin.</para> /// </summary> /// <param name="newSkin">May be null.</param> public void SetSkin(Skin newSkin) { if (newSkin != null) { if (skin != null) { newSkin.AttachAll(this, skin); } else { ExposedList <Slot> slots = this.slots; for (int i = 0, n = slots.Count; i < n; i++) { Slot slot = slots.Items[i]; string name = slot.data.attachmentName; if (name != null) { Attachment attachment = newSkin.GetAttachment(i, name); if (attachment != null) { slot.Attachment = attachment; } } } } } skin = newSkin; }