示例#1
0
        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);
                }
            }
        }
示例#2
0
        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);
            }
        }
示例#3
0
        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);
            }
        }
示例#4
0
        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);
            }
        }
示例#5
0
        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);
            }
        }
示例#6
0
        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);
            }
        }
示例#7
0
        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);
            }
        }
示例#8
0
        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);
                }
            }
        }