public static void ClientFindDefaultHeadSprites( IReadOnlyList <SkeletonSlotAttachment> slotAttachments, SkeletonResource skeletonResource, bool isFrontFace, out string helmetFront, out string helmetBehind, string headEquipmentName = "HeadEquipment") { helmetFront = null; helmetBehind = null; var skeletonName = skeletonResource?.SkeletonName; foreach (var slot in slotAttachments) { if (slot.SkeletonName is not null && slot.SkeletonName != skeletonName) { continue; } if (slot.AttachmentName == headEquipmentName) { helmetFront = slot.TextureResource.FullPath; } else if (isFrontFace && slot.AttachmentName == "HeadBehindEquipment") { helmetBehind = slot.TextureResource.FullPath; } } }
public virtual void ClientGetHeadSlotSprites( [CanBeNull] IItem item, bool isMale, SkeletonResource skeletonResource, bool isFrontFace, bool isPreview, out string spriteFront, out string spriteBehind) { IReadOnlyList <SkeletonSlotAttachment> slotAttachments; if (this.ClientIsMustUseDefaultAppearance(item?.Container.OwnerAsCharacter, isPreview)) { slotAttachments = isMale ? ((IProtoItemEquipment)this.BaseProtoItem).SlotAttachmentsMale : ((IProtoItemEquipment)this.BaseProtoItem).SlotAttachmentsFemale; } else { slotAttachments = isMale ? this.SlotAttachmentsMale : this.SlotAttachmentsFemale; } ProtoItemEquipmentHeadHelper.ClientFindDefaultHeadSprites( slotAttachments, skeletonResource, isFrontFace, out spriteFront, out spriteBehind); }
public CharacterHeadSpriteData( CharacterHumanFaceStyle faceStyle, IItem headEquipment, SkeletonResource skeletonResource) { this.SkeletonResource = skeletonResource; this.FaceStyle = faceStyle; this.HeadEquipment = headEquipment; }
public CharacterHeadSpriteData( CharacterHumanFaceStyle faceStyle, IItem headEquipmentItem, IProtoItemEquipmentHead headEquipmentItemProto, SkeletonResource skeletonResource) { this.SkeletonResource = skeletonResource; this.FaceStyle = faceStyle; this.HeadEquipmentItem = headEquipmentItem; this.HeadEquipmentItemProto = headEquipmentItemProto; }
public override void ClientGetHeadSlotSprites( [CanBeNull] IItem item, bool isMale, SkeletonResource skeletonResource, bool isFrontFace, bool isPreview, out string spriteFront, out string spriteBehind) { IReadOnlyList <SkeletonSlotAttachment> slotAttachments; if (this.ClientIsMustUseDefaultAppearance(item?.Container.OwnerAsCharacter, isPreview)) { slotAttachments = isMale ? ((IProtoItemEquipment)this.BaseProtoItem).SlotAttachmentsMale : ((IProtoItemEquipment)this.BaseProtoItem).SlotAttachmentsFemale; } else { slotAttachments = isMale ? this.SlotAttachmentsMale : this.SlotAttachmentsFemale; } var isActive = item is null || // in case of preview we want to display the active sprite GetPublicState(item).IsActive; ProtoItemEquipmentHeadHelper.ClientFindDefaultHeadSprites( slotAttachments, skeletonResource, isFrontFace, out spriteFront, out spriteBehind, headEquipmentName: isActive ? "HeadActiveEquipment" : "HeadEquipment"); if (isActive && spriteFront is null) { // no active sprite found - fallback to default head equipment method base.ClientGetHeadSlotSprites(item, isMale, skeletonResource, isFrontFace, isPreview, out spriteFront, out spriteBehind); } }
public virtual void ClientGetHeadSlotSprites( IItem item, bool isMale, SkeletonResource skeletonResource, bool isFrontFace, out string spriteFront, out string spriteBehind) { this.VerifyGameObject(item); var slotAttachments = isMale ? this.SlotAttachmentsMale : this.SlotAttachmentsFemale; ProtoItemEquipmentHeadHelper.ClientFindDefaultHeadSprites( slotAttachments, skeletonResource, isFrontFace, out spriteFront, out spriteBehind); }
private static void GetHeadEquipmentSprites( IItem itemHeadEquipment, IProtoItemEquipmentHead protoHelmet, bool isMale, bool isFrontFace, SkeletonResource skeletonResource, out string helmetFront, out string helmetBehind) { protoHelmet.ClientGetHeadSlotSprites( itemHeadEquipment, isMale, skeletonResource, isFrontFace, out helmetFront, out helmetBehind); if (helmetFront == null) { throw new Exception("Helmet attachment is not available for " + protoHelmet); } }
public override void ClientGetHeadSlotSprites( IItem item, bool isMale, SkeletonResource skeletonResource, bool isFrontFace, out string spriteFront, out string spriteBehind) { this.VerifyGameObject(item); var slotAttachments = isMale ? this.SlotAttachmentsMale : this.SlotAttachmentsFemale; var isActive = GetPublicState(item).IsActive; ProtoItemEquipmentHeadHelper.ClientFindDefaultHeadSprites( slotAttachments, skeletonResource, isFrontFace, out spriteFront, out spriteBehind, headEquipmentName: isActive ? "HeadActiveEquipment" : "HeadEquipment"); if (isActive && spriteFront == null) { // no active sprite found - fallback to default head equipment method base.ClientGetHeadSlotSprites(item, isMale, skeletonResource, isFrontFace, out spriteFront, out spriteBehind); } }