private void SearchDecals(List <BodyModelSumPuppet> pPuppets, AssetSearchResultItem pBaseResultItem, List <AssetSearchResultItem> pFound) { if ((_tagsRegex != null) || (_assetExtraInfoRegex != null)) { return; } foreach (BodyModelSumPuppet puppet in pPuppets) { if (puppet.Decals == null) { continue; } string puppetName = puppet.PuppetName; bool foundAnyDecal = false; foreach (BodyModelSumDecal decal in puppet.Decals) { if ((_nameRegex != null) && (!_nameRegex.IsMatch(decal.DecalName))) { continue; } if (_assetSubTypesRegex != null) { if (!_assetSubTypesRegex.IsMatch(decal.Group)) { continue; } } AssetSearchResultItem item = (AssetSearchResultItem)pBaseResultItem.Clone(); item.AssetType = AddonAssetType.Decal; item.AssetSubtype = decal.Group; item.Name = $"{puppetName} : {decal.DecalName}"; pFound.Add(item); foundAnyDecal = true; } if (puppet.ExternDecalReferenced && !foundAnyDecal) { if ((_nameRegex != null) && (!_nameRegex.IsMatch("Extern"))) { continue; } if ((_assetSubTypesRegex != null) && (!_assetSubTypesRegex.IsMatch("?"))) { continue; } AssetSearchResultItem item = (AssetSearchResultItem)pBaseResultItem.Clone(); item.AssetType = AddonAssetType.Decal; item.AssetSubtype = "?"; item.Name = $"{puppetName} : Extern Decal Referenced"; pFound.Add(item); } } }
private void SearchVerbsKind(List <VerbSummaryItem> pVerbs, VerbCollectionFlags pVerbType, AssetSearchResultItem pBaseResultItem, List <AssetSearchResultItem> pFound) { foreach (VerbSummaryItem verb in pVerbs) { if ((_nameRegex != null) && (!_nameRegex.IsMatch(verb.VerbName))) { continue; } if (_assetSubTypesRegex != null) { if (!_assetSubTypesRegex.IsMatch(verb.VerbType)) { continue; } } string extraInfo = GetVerbExtraInfo(verb, pVerbType); if ((_assetExtraInfoRegex != null) && !_assetExtraInfoRegex.IsMatch(extraInfo ?? ExtraInfoNull)) { continue; } AssetSearchResultItem item = (AssetSearchResultItem)pBaseResultItem.Clone(); item.AssetType = AddonAssetType.Verb; item.AssetSubtype = verb.VerbType; item.Name = verb.VerbName; item.ExtraInfo = extraInfo; pFound.Add(item); } }
private void SearchCommon2(List <string> pAssets, AddonAssetType pAssetType, AssetSearchResultItem pBaseResultItem, List <AssetSearchResultItem> pFound) { if ((_tagsRegex != null) || (_assetExtraInfoRegex != null)) { return; } foreach (string asset in pAssets) { if ((_nameRegex != null) && (!_nameRegex.IsMatch(asset))) { continue; } string subType = pAssetType.ToString(); if (_assetSubTypesRegex != null) { if (!_assetSubTypesRegex.IsMatch(subType)) { continue; } } AssetSearchResultItem item = (AssetSearchResultItem)pBaseResultItem.Clone(); item.AssetType = pAssetType; item.AssetSubtype = subType; item.Name = asset; pFound.Add(item); } }
private void SearchCuttingRoomAssetsKind(List <CuttingRoomAssetItem> pAssets, AssetSearchResultItem pBaseResultItem, List <AssetSearchResultItem> pFound) { foreach (CuttingRoomAssetItem asset in pAssets) { if ((_nameRegex != null) && (!_nameRegex.IsMatch(asset.Name))) { continue; } if (_assetSubTypesRegex != null) { if (!_assetSubTypesRegex.IsMatch(asset.AssetSubtype)) { continue; } } if (!TagFilterOk(asset.Tags)) { continue; } string tags = null; if (!string.IsNullOrEmpty(asset.TagsRaw)) { tags = asset.TagsRaw.Replace(",", " "); } string extraInfo = string.IsNullOrEmpty(asset.Description) ? null : asset.Description; if ((_assetExtraInfoRegex != null) && !_assetExtraInfoRegex.IsMatch(extraInfo ?? ExtraInfoNull)) { continue; } AssetSearchResultItem item = (AssetSearchResultItem)pBaseResultItem.Clone(); item.AssetType = AddonAssetType.CuttingRoomAsset; item.AssetSubtype = asset.AssetSubtype; item.Name = asset.Name; item.Tags = tags; item.ExtraInfo = extraInfo; pFound.Add(item); } }
private void SearchAnimationsCommon(string pAssetSubType, string pOwnerName, List <string> pAnimations, AssetSearchResultItem pBaseResultItem, List <AssetSearchResultItem> pFound) { const string prefix = "animations/"; const string extension = ".caf"; foreach (string animation in pAnimations) { if ((_nameRegex != null) && !_nameRegex.IsMatch(animation)) { continue; } string animationLower = animation?.Trim().ToLower().Replace("\\", "/"); if (string.IsNullOrEmpty(animationLower)) { continue; } string animationName = animation.Trim().Replace("\\", "/"); if (animationLower.EndsWith(extension)) { animationName = animationName.Substring(0, animationName.Length - extension.Length); } if (animationLower.StartsWith(prefix)) { animationName = animationName.Remove(0, prefix.Length); } string extraInfo = $"[{pOwnerName}]"; if ((_assetExtraInfoRegex != null) && !_assetExtraInfoRegex.IsMatch(extraInfo ?? ExtraInfoNull)) { continue; } AssetSearchResultItem item = (AssetSearchResultItem)pBaseResultItem.Clone(); item.AssetType = AddonAssetType.Animation; item.AssetSubtype = pAssetSubType; item.Name = animationName; item.ExtraInfo = extraInfo; pFound.Add(item); } }
private void SearchCommon(List <string> pAssets, AddonAssetType pAssetType, AssetSearchResultItem pBaseResultItem, List <AssetSearchResultItem> pFound) { if ((_tagsRegex != null) || (_assetExtraInfoRegex != null)) { return; } foreach (string asset in pAssets) { string splitChar = ((pAssetType == AddonAssetType.Stock) || (pAssetType == AddonAssetType.OtherAsset)) ? ":" : "/"; Tuple <string, string> parts = Split(asset, splitChar); if (parts == null) { continue; } if ((_nameRegex != null) && (!_nameRegex.IsMatch(parts.Item1))) { continue; } string subType = parts.Item2 ?? pAssetType.ToString(); if (_assetSubTypesRegex != null) { if (!_assetSubTypesRegex.IsMatch(subType)) { continue; } } AssetSearchResultItem item = (AssetSearchResultItem)pBaseResultItem.Clone(); item.AssetType = pAssetType; item.AssetSubtype = subType; item.Name = parts.Item1; pFound.Add(item); } }
private void SearchProps(List <PropModelSumProp> pProps, AssetSearchResultItem pBaseResultItem, List <AssetSearchResultItem> pFound) { foreach (PropModelSumProp prop in pProps) { if ((_nameRegex != null) && (!_nameRegex.IsMatch(prop.PropName))) { continue; } /* * if ((Tags != null) && (Tags.Count > 0)) * { * if ((prop.Tags == null) || (prop.Tags.Count == 0)) * continue; * bool gotTag = false; * foreach (string tagSearched in Tags) * { * if (prop.Tags.Contains(tagSearched)) * { * gotTag = true; * break; * } * } * * if (!gotTag) * continue; * } */ if (!TagFilterOk(prop.Tags)) { continue; } if (_assetSubTypesRegex != null) { if (!_assetSubTypesRegex.IsMatch(prop.PropType)) { continue; } } string extraInfo = prop.AttributesString; if ((prop.Variants?.Count ?? 0) > 1) { extraInfo += PropVariantsInfo(prop.Variants); } if (prop.MultiPart) { extraInfo += " [Multipart]"; } if ((_assetExtraInfoRegex != null) && !_assetExtraInfoRegex.IsMatch(extraInfo ?? ExtraInfoNull)) { continue; } AssetSearchResultItem item = (AssetSearchResultItem)pBaseResultItem.Clone(); item.AssetType = AddonAssetType.Prop; item.AssetSubtype = prop.PropType; item.Name = prop.PropName; item.Tags = StringListToString(prop.Tags); item.ExtraInfo = extraInfo; pFound.Add(item); } }
private void SearchBodyParts(List <BodyModelSumPuppet> pPuppets, AssetSearchResultItem pBaseResultItem, List <AssetSearchResultItem> pFound) { foreach (BodyModelSumPuppet puppet in pPuppets) { if (puppet.BodyParts == null) { continue; } string puppetName = puppet.PuppetName; foreach (BodyModelSumBodyPart part in puppet.BodyParts) { if ((_nameRegex != null) && (!_nameRegex.IsMatch(part.BodyPartName))) { continue; } /* * if ((Tags != null) && (Tags.Count > 0)) * { * if ((part.Tags == null) || (part.Tags.Count == 0)) * continue; * bool gotTag = false; * foreach (string tagSearched in Tags) * { * if (part.Tags.Contains(tagSearched)) * { * gotTag = true; * break; * } * } * * if (!gotTag) * continue; * } */ if (!TagFilterOk(part.Tags)) { continue; } if (_assetSubTypesRegex != null) { if (!_assetSubTypesRegex.IsMatch(part.BodyPartType)) { continue; } } string extraInfo = $"{part.Covers}"; if (part.Morphable) { extraInfo += " [Morphable]"; } if ((_assetExtraInfoRegex != null) && !_assetExtraInfoRegex.IsMatch(extraInfo ?? ExtraInfoNull)) { continue; } AssetSearchResultItem item = (AssetSearchResultItem)pBaseResultItem.Clone(); item.AssetType = AddonAssetType.BodyPart; item.AssetSubtype = part.BodyPartType; item.Name = $"{puppetName} : {part.BodyPartName}"; item.Tags = StringListToString(part.Tags); item.ExtraInfo = extraInfo; pFound.Add(item); } } }