private Info.AnimeLoadInfo GetAnimeInfo(int group, int category, int no) { Dictionary <int, Dictionary <int, Info.AnimeLoadInfo> > dictionary = null; if (!Info.Instance.dicFemaleAnimeLoadInfo.TryGetValue(group, out dictionary)) { return(null); } Dictionary <int, Info.AnimeLoadInfo> dictionary2 = null; if (!dictionary.TryGetValue(category, out dictionary2)) { return(null); } Info.AnimeLoadInfo animeLoadInfo = null; if (!dictionary2.TryGetValue(no, out animeLoadInfo)) { return(null); } return(animeLoadInfo); }
private void LoadAnim(AnimeGroupList.SEX sex, bool isH) { Dictionary <int, Dictionary <int, Dictionary <int, Info.AnimeLoadInfo> > > dicInfo; Dictionary <string, List <string[]> > dicArgs; int index; string pattern; switch (sex) { case AnimeGroupList.SEX.Female: dicInfo = info.dicFemaleAnimeLoadInfo; if (isH) { pattern = fileSuffixHAnimF; } else { pattern = fileSuffixAnimF; } break; case AnimeGroupList.SEX.Male: dicInfo = info.dicMaleAnimeLoadInfo; if (isH) { pattern = fileSuffixHAnimM; } else { pattern = fileSuffixAnimM; } break; default: return; } dicArgs = dicAllFileArgs[pattern]; if (dicArgs == null) { return; } foreach (string fileName in dicArgs.Keys) { // 00_00_00 のはず。 //または、各行からの方が良いか? <- でも無駄が多くなる? string[] ss = fileName.Replace(pattern, "").Split(new string[] { "_" }, 0); if (int.TryParse(ss[0], out int baseIndex) && int.TryParse(ss[1], out int catIndex)) { index = baseIndex + groupOffset; foreach (string[] args in dicArgs[fileName]) { //アニメの場合、グループもカテゴリーもインデックスがなければ追加 if (int.TryParse(args[0], out int clipIndex)) { if (!dicInfo.ContainsKey(index)) { dicInfo.Add(index, new Dictionary <int, Dictionary <int, Info.AnimeLoadInfo> >()); } if (!dicInfo[index].ContainsKey(catIndex)) { dicInfo[index].Add(catIndex, new Dictionary <int, Info.AnimeLoadInfo>()); } //アニメ情報入れる //<0管理番号><1大きい項目><2中間項目><3表示名><4バンドルパス><5ファイル名><6クリップ名><7BreastLayerの有り無し><8揺れ制御左><9揺れ制御右><10><11アイテム有り無し><管理番号><バンドルパス><ファイル名><付ける場所><管理番号><バンドルパス><ファイル名><付ける場所> Info.AnimeLoadInfo animInfo = null; try { animInfo = new Info.AnimeLoadInfo() { name = args[3], bundlePath = extDir + args[4], fileName = args[5], clip = args[6], isBreastLayer = args[7] == "True", isMotion = true, isHAnime = isH, isScale = false }; } catch { animInfo = null; } if (dicInfo[index][catIndex].ContainsKey(clipIndex)) { if (force) { dicInfo[index][catIndex][clipIndex] = animInfo; } } else { dicInfo[index][catIndex].Add(clipIndex, animInfo); } } } } } }
private void LoadAnim(AnimeGroupList.SEX sex, bool isH) { Dictionary <int, Dictionary <int, Dictionary <int, Info.AnimeLoadInfo> > > dictionary; string text; if (sex != null) { if (sex != AnimeGroupList.SEX.Female) { return; } dictionary = info.dicAnimeLoadInfo; text = isH ? "FemaleHAnime_" : "FemaleAnime_"; } else { dictionary = info.dicAnimeLoadInfo; text = isH ? "MaleHAnime_" : "MaleAnime_"; } Dictionary <string, List <string[]> > dictionary2 = dicAllFileArgs[text]; if (dictionary2 == null) { return; } foreach (string text2 in dictionary2.Keys) { string[] array = text2.Replace(text, "").Split(new string[] { "_" }, StringSplitOptions.None); if (int.TryParse(array[0], out int num) && int.TryParse(array[1], out int key)) { int key2 = num + groupOffset; foreach (string[] array2 in dictionary2[text2]) { if (int.TryParse(array2[0], out int key3)) { if (!dictionary.ContainsKey(key2)) { dictionary.Add(key2, new Dictionary <int, Dictionary <int, Info.AnimeLoadInfo> >()); } if (!dictionary[key2].ContainsKey(key)) { dictionary[key2].Add(key, new Dictionary <int, Info.AnimeLoadInfo>()); } Info.AnimeLoadInfo value = null; try { value = new Info.AnimeLoadInfo { name = array2[3], bundlePath = Path.Combine(extDir, array2[4]), fileName = array2[5], clip = array2[6], //isBreastLayer = (array2[7] == "True"), //isMotion = true, //isHAnime = isH, //isScale = false }; } catch { value = null; } if (dictionary[key2][key].ContainsKey(key3)) { if (force) { dictionary[key2][key][key3] = value; } } else { dictionary[key2][key].Add(key3, value); } } } } } }
public void LoadAnimeItem( Info.AnimeLoadInfo _info, string _clip, float _height, float _motion) { this.ReleaseAllItem(); if (_info.option.IsNullOrEmpty <Info.OptionItemInfo>()) { return; } for (int index1 = 0; index1 < _info.option.Count; ++index1) { Info.OptionItemInfo optionItemInfo = _info.option[index1]; GameObject gameObject1 = Utility.LoadAsset <GameObject>(optionItemInfo.bundlePath, optionItemInfo.fileName, optionItemInfo.manifest); if (!Object.op_Equality((Object)gameObject1, (Object)null)) { OptionItemCtrl.ItemInfo itemInfo = new OptionItemCtrl.ItemInfo(_height); itemInfo.gameObject = gameObject1; itemInfo.scale = gameObject1.get_transform().get_localScale(); itemInfo.animator = (Animator)gameObject1.GetComponentInChildren <Animator>(); if (Object.op_Inequality((Object)itemInfo.animator, (Object)null)) { if (optionItemInfo.anmInfo.Check) { RuntimeAnimatorController animatorController = CommonLib.LoadAsset <RuntimeAnimatorController>(optionItemInfo.anmInfo.bundlePath, optionItemInfo.anmInfo.fileName, false, string.Empty); if (Object.op_Inequality((Object)animatorController, (Object)null)) { itemInfo.animator.set_runtimeAnimatorController(animatorController); } AssetBundleManager.UnloadAssetBundle(optionItemInfo.anmInfo.bundlePath, false, (string)null, false); if (optionItemInfo.anmOveride.Check) { CommonLib.LoadAsset <RuntimeAnimatorController>(optionItemInfo.anmOveride.bundlePath, optionItemInfo.anmOveride.fileName, false, string.Empty).SafeProc <RuntimeAnimatorController>((Action <RuntimeAnimatorController>)(_rac => itemInfo.animator.set_runtimeAnimatorController((RuntimeAnimatorController)Illusion.Utils.Animator.SetupAnimatorOverrideController(itemInfo.animator.get_runtimeAnimatorController(), _rac)))); AssetBundleManager.UnloadAssetBundle(optionItemInfo.anmOveride.bundlePath, false, (string)null, false); } itemInfo.animator.Play(_clip); } itemInfo.animator.SetFloat("height", _height); itemInfo.IsSync = optionItemInfo.isAnimeSync; } else { itemInfo.IsSync = false; } if (((IList <Info.ParentageInfo>)optionItemInfo.parentageInfo).IsNullOrEmpty <Info.ParentageInfo>()) { GameObject gameObject2 = ((Component)this).get_gameObject(); GameObject gameObject3 = gameObject1; gameObject3.get_transform().SetParent(gameObject2.get_transform()); gameObject3.get_transform().set_localPosition(Vector3.get_zero()); gameObject3.get_transform().set_localRotation(Quaternion.get_identity()); if (optionItemInfo.counterScale) { itemInfo.DefaultScaleOption = true; } else { gameObject3.get_transform().set_localScale(itemInfo.scale); } } else { for (int index2 = 0; index2 < optionItemInfo.parentageInfo.Length; ++index2) { GameObject loop = ((Component)this).get_gameObject().get_transform().FindLoop(optionItemInfo.parentageInfo[index2].parent); GameObject gameObject2 = gameObject1; if (!optionItemInfo.parentageInfo[index2].child.IsNullOrEmpty()) { gameObject2 = gameObject2.get_transform().FindLoop(optionItemInfo.parentageInfo[index2].child); itemInfo.child.Add(new OptionItemCtrl.ChildInfo(gameObject2.get_transform().get_localScale(), gameObject2)); } gameObject2.get_transform().SetParent(loop.get_transform()); gameObject2.get_transform().set_localPosition(Vector3.get_zero()); gameObject2.get_transform().set_localRotation(Quaternion.get_identity()); if (optionItemInfo.counterScale) { itemInfo.DefaultScaleOption = true; } else { gameObject2.get_transform().set_localScale(itemInfo.scale); } } } itemInfo.SetRender(); this.hashItem.Add(itemInfo); } } this.SetVisible(this.visible); }