private static bool CharaList_ChangeCharaMale(CharaFileSort ___charaFileSort)
 {
     TreeNodeObject[] selectNodes = Singleton <Studio.Studio> .Instance.treeNodeCtrl.selectNodes;
     for (int i = 0; i < selectNodes.Length; i++)
     {
         if (Studio.Studio.Instance.dicInfo.TryGetValue(selectNodes[i], out ObjectCtrlInfo objectCtrlInfo))
         {
             if (objectCtrlInfo is OCICharMale ociChar)
             {
                 ociChar.ChangeChara(___charaFileSort.selectPath);
             }
         }
     }
     return(false);
 }
Example #2
0
        CharFileInfoCustomFemale GetCharCustom()
        {
            CharFileInfoCustomFemale charCustomFile = null;
            CharaList operatingList = listFemales.gameObject.activeInHierarchy ? listFemales.gameObject.GetComponent <CharaList>() : null;

            if (operatingList != null)
            {
                CharaFileSort charaFiles = (CharaFileSort)operatingList.GetType()
                                           .GetField("charaFileSort", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(operatingList);
                if (System.IO.File.Exists(charaFiles.selectPath) && charaFiles.selectPath != null)
                {
                    CharFemaleFile charPNG = new CharFemaleFile();
                    charPNG.Load(charaFiles.selectPath, true, true);
                    charCustomFile = charPNG.femaleCustomInfo;
                }
                return(charCustomFile);
            }
            return(charCustomFile);
        }
Example #3
0
        void Delete()
        {
            CharaList operatingList = mainCanvas.Find("01_Add/00_Female").gameObject.activeInHierarchy ? listFemale : mainCanvas.Find("01_Add/01_Male").gameObject.activeInHierarchy ? listMale : null;

            if (operatingList != null)
            {
                CharaFileSort charaFiles = (CharaFileSort)operatingList.GetType()
                                           .GetField("charaFileSort", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(operatingList);
                if (System.IO.File.Exists(charaFiles.selectPath) && charaFiles.selectPath != null)
                {
                    var sortType = charaFiles.sortKind;
                    mainCanvas.gameObject.SetActive(false);
                    System.IO.File.Delete(charaFiles.selectPath);
                    operatingList.InitCharaList(true);
                    operatingList.OnSort(sortType);
                    mainCanvas.gameObject.SetActive(true);
                }
            }
        }
Example #4
0
        //按鈕邏輯
        internal static void OnButtonClick(CharaList __instance, int sex)
        {
            CharaFileSort  charaFileSort  = __instance.GetField("charaFileSort") as CharaFileSort;
            ChaFileControl chaFileControl = new ChaFileControl();
            string         fullPath       = chaFileControl.ConvertCharaFilePath(charaFileSort.selectPath, (byte)sex, false);

            chaFileControl = null;
            OCIChar[] array = (from v in Singleton <GuideObjectManager> .Instance.selectObjectKey
                               select Studio.Studio.GetCtrlInfo(v) as OCIChar into v
                               where v != null
                               select v).ToArray();
            foreach (OCIChar ocichar in array)
            {
                ChaControl chaCtrl = ocichar.charInfo;
                foreach (OCIChar.BoneInfo boneInfo in (from v in ocichar.listBones
                                                       where v.boneGroup == OIBoneInfo.BoneGroup.Hair
                                                       select v).ToList <OCIChar.BoneInfo>())
                {
                    Singleton <GuideObjectManager> .Instance.Delete(boneInfo.guideObject, true);
                }
                ocichar.listBones = (from v in ocichar.listBones
                                     where v.boneGroup != OIBoneInfo.BoneGroup.Hair
                                     select v).ToList <OCIChar.BoneInfo>();
                int[] array2 = (from b in ocichar.oiCharInfo.bones
                                where b.Value.@group == OIBoneInfo.BoneGroup.Hair
                                select b.Key).ToArray <int>();
                for (int j = 0; j < array2.Length; j++)
                {
                    ocichar.oiCharInfo.bones.Remove(array2[j]);
                }
                ocichar.hairDynamic  = null;
                ocichar.skirtDynamic = null;

                string oldName = ocichar.charInfo.chaFile.parameter.fullname;

                //用這種方式初始化不會觸發其他鉤子
                ChaControl tmpCtrl = new ChaControl();
                tmpCtrl.SetProperty("chaFile", new ChaFileControl());

                if (null != MoreAccessories)
                {
                    CopyAllMoreAccessoriesData(ocichar.charInfo, tmpCtrl);
                }

                //Main Load Control
                if (chaCtrl.chaFile.LoadFileLimited(fullPath, (byte)sex, true, true, true, true, false) ||
                    !LoadExtendedData(ocichar, charaFileSort.selectPath, (byte)sex) ||
                    !UpdateTreeNodeObjectName(ocichar))
                {
                    Logger.LogError("Load Body FAILED");
                }
                else
                {
                    if (null != MoreAccessories)
                    {
                        CopyAllMoreAccessoriesData(tmpCtrl, ocichar.charInfo);
                    }
                }

                GameObject.Destroy(tmpCtrl);

                ocichar.charInfo.AssignCoordinate((ChaFileDefine.CoordinateType)ocichar.charInfo.fileStatus.coordinateType);
                chaCtrl.Reload(false, false, false, false);

                AddObjectAssist.InitHairBone(ocichar, Singleton <Info> .Instance.dicBoneInfo);
                ocichar.hairDynamic  = AddObjectFemale.GetHairDynamic(ocichar.charInfo.objHair);
                ocichar.skirtDynamic = AddObjectFemale.GetSkirtDynamic(ocichar.charInfo.objClothes);
                ocichar.InitFK(null);
                foreach (var tmp in FKCtrl.parts.Select((OIBoneInfo.BoneGroup p, int i2) => new { p, i2 }))
                {
                    ocichar.ActiveFK(tmp.p, ocichar.oiCharInfo.activeFK[tmp.i2], ocichar.oiCharInfo.activeFK[tmp.i2]);
                }
                ocichar.ActiveKinematicMode(OICharInfo.KinematicMode.FK, ocichar.oiCharInfo.enableFK, true);
                ocichar.UpdateFKColor(new OIBoneInfo.BoneGroup[]
                {
                    OIBoneInfo.BoneGroup.Hair
                });
                ocichar.ChangeEyesOpen(ocichar.charFileStatus.eyesOpenMax);
                ocichar.ChangeBlink(ocichar.charFileStatus.eyesBlink);
                ocichar.ChangeMouthOpen(ocichar.oiCharInfo.mouthOpen);

                Logger.LogInfo($"Load Body: {oldName} -> {ocichar.charInfo.chaFile.parameter.fullname}");
            }
        }