示例#1
0
        protected override void Reacquire()
        {
            base.Reacquire();
            if (this.boneInfo == null || this.boneInfo.Length == 0)
            {
                return;
            }
            FindAssist findAssist = new FindAssist();

            findAssist.Initialize(((Component)this).get_transform());
            KeyValuePair <string, GameObject> keyValuePair = ((IEnumerable <KeyValuePair <string, GameObject> >)findAssist.dictObjName).FirstOrDefault <KeyValuePair <string, GameObject> >((Func <KeyValuePair <string, GameObject>, bool>)(x => x.Key.Contains("_top")));

            if (keyValuePair.Equals((object)new KeyValuePair <string, GameObject>()))
            {
                return;
            }
            DynamicBone[] components = (DynamicBone[])((Component)this).GetComponents <DynamicBone>();
            for (int index = 0; index < this.boneInfo.Length; ++index)
            {
                Transform child = keyValuePair.Value.get_transform().GetChild(index);
                findAssist.Initialize(child);
                List <DynamicBone> dynamicBoneList = new List <DynamicBone>();
                foreach (DynamicBone dynamicBone in components)
                {
                    DynamicBone n = dynamicBone;
                    if (!((IEnumerable <KeyValuePair <string, GameObject> >)findAssist.dictObjName).FirstOrDefault <KeyValuePair <string, GameObject> >((Func <KeyValuePair <string, GameObject>, bool>)(x => x.Key == ((Object)n.m_Root).get_name())).Equals((object)new KeyValuePair <string, GameObject>()))
                    {
                        dynamicBoneList.Add(n);
                    }
                }
                this.boneInfo[index].dynamicBone = dynamicBoneList.ToArray();
            }
        }
    public static void InitializeAccessory(GameObject selectedObject)
    {
        GameObject hairObject = selectedObject;

        hairObject.layer = 10;

        if (hairObject != null)
        {
            AIChara.CmpAccessory accComponent = hairObject.GetComponent <AIChara.CmpAccessory>();
            if (accComponent == null)
            {
                accComponent = hairObject.AddComponent <AIChara.CmpAccessory>();
            }

            FindAssist findAssist = new FindAssist();
            findAssist.Initialize(accComponent.transform);
            accComponent.trfMove01 = findAssist.GetTransformFromName("N_move");
            accComponent.trfMove02 = findAssist.GetTransformFromName("N_move2");

            Renderer[] renderers = hairObject.GetComponentsInChildren <Renderer>();
            accComponent.rendCheckVisible = new Renderer[renderers.Length];
            accComponent.rendNormal       = new Renderer[renderers.Length];
            for (int i = 0; i < renderers.Length; i++)
            {
                renderers[i].gameObject.layer    = 10;
                accComponent.useColor01          = true;
                accComponent.rendCheckVisible[i] = renderers[i];
                accComponent.rendNormal[i]       = renderers[i];
            }
        }
    }
        private static bool FindAllPatch(FindAssist __instance, Transform trf)
        {
            if (!CommonCode.InsideStudio) return true;

            __instance.dictObjName[trf.name] = trf.gameObject;

#if AI || HS2
            if (trf.tag != string.Empty)
            {
                __instance.dictTagName.TryGetValue(trf.tag, out var tagged);
                if (tagged == null)
                    __instance.dictTagName.Add(trf.tag, tagged = new List<GameObject>());
                if (!tagged.Contains(trf.gameObject))
                    tagged.Add(trf.gameObject);
            }
#endif

            var isAccAttachPoint = AccessoryAttachPoints.Contains(trf.name);
            for (var i = 0; i < trf.childCount; i++)
            {
                var child = trf.GetChild(i);
                
                if (isAccAttachPoint && child.GetComponent<ChaControl>())
                    continue;

                FindAllPatch(__instance, child);
            }

            return false;
        }
示例#4
0
        public void CreateReferenceInfo(ulong flags, GameObject objRef)
        {
            this.ReleaseRefObject(flags);
            if (Object.op_Equality((Object)null, (Object)objRef))
            {
                return;
            }
            FindAssist findAssist = new FindAssist();

            findAssist.Initialize(objRef.get_transform());
            if ((long)flags >= 7L && (long)flags <= 10L)
            {
                switch (flags)
                {
                case 7:
                    this.dictRefObj[5] = findAssist.GetObjectFromName("o_bra_a");
                    this.dictRefObj[6] = findAssist.GetObjectFromName("o_bra_b");
                    this.dictRefObj[7] = findAssist.GetObjectFromName("o_shorts_a");
                    return;

                case 8:
                    this.dictRefObj[8] = findAssist.GetObjectFromName("o_shorts_a");
                    return;

                case 10:
                    this.dictRefObj[9] = findAssist.GetObjectFromName("o_panst_a");
                    return;
                }
            }
            if (flags == 1UL || flags == 2UL)
            {
                ;
            }
        }
示例#5
0
    public static GameObject[] GetClothParts(this FindAssist assist, Cloth part)
    {
        var names = assist.DictObjName;

        GameObject[] output = { };
        // TODO: Initialize regex operators.
        switch (part)
        {
        case Cloth.FirstAccessory:
            output = (from x in assist.DictObjName where x.Key.StartsWith("op1") select x.Value).ToArray();
            break;

        case Cloth.SecondAccessory:
            output = (from x in assist.DictObjName where x.Key.StartsWith("op2") select x.Value).ToArray();
            break;

        case Cloth.Top:
            break;

        case Cloth.Bot:
            break;

        case Cloth.TopHalf:
            break;

        case Cloth.BotHalf:
            break;

        default:
            throw new ArgumentOutOfRangeException(nameof(part), part, null);
        }

        return(output);
    }
示例#6
0
            private DynamicBoneCollider AddCollider(GameObject go, string bone, float sx = 1, float sy = 1, float sz = 1, Vector3 r = new Vector3(), Vector3 t = new Vector3())
            {
                FindAssist fa = new FindAssist();

                fa.Initialize(go.transform);
                var hitbone = bone + "_hit";

                var bo = fa.GetObjectFromName(hitbone);

                if (bo != null)
                {
                    return(null);
                }

                // some collider is already in there, so just keep that
                var parent = fa.GetObjectFromName(bone);

                if (parent == null)
                {
                    return(null);
                }

                // build the collider
                var nb  = new GameObject(hitbone);
                var col = nb.AddComponent <DynamicBoneCollider>();

                col.m_Radius    = 0.1f;
                col.m_Direction = DynamicBoneCollider.Direction.Y;
                nb.transform.SetParent(parent.transform, false);
                nb.transform.localScale       = new Vector3(sx, sy, sz);
                nb.transform.localEulerAngles = r;
                nb.transform.localPosition    = t;
                nb.layer = 12;
                return(col);
            }
示例#7
0
        public override void SetReferenceObject()
        {
            FindAssist findAssist = new FindAssist();

            findAssist.Initialize(((Component)this).get_transform());
            this.targetEtc.objBody = findAssist.GetObjectFromName("o_body_cm");
            if (Object.op_Equality((Object)null, (Object)this.targetEtc.objBody))
            {
                this.targetEtc.objBody = findAssist.GetObjectFromName("o_body_cf");
            }
            if (Object.op_Equality((Object)null, (Object)this.targetEtc.objBody))
            {
                this.targetEtc.objBody = findAssist.GetObjectFromName("o_silhouette_cm");
            }
            if (Object.op_Equality((Object)null, (Object)this.targetEtc.objBody))
            {
                this.targetEtc.objBody = findAssist.GetObjectFromName("o_silhouette_cf");
            }
            if (Object.op_Inequality((Object)null, (Object)this.targetEtc.objBody))
            {
                this.targetCustom.rendBody = (Renderer)this.targetEtc.objBody.GetComponent <Renderer>();
            }
            this.targetEtc.objDanTop  = findAssist.GetObjectFromName("N_dan");
            this.targetEtc.objDanTama = findAssist.GetObjectFromName("cm_o_dan_f");
            this.targetEtc.objDanSao  = findAssist.GetObjectFromName("cm_o_dan00");
            this.targetEtc.objTongue  = findAssist.GetObjectFromName("N_tang");
            if (Object.op_Inequality((Object)null, (Object)this.targetEtc.objTongue))
            {
                this.targetEtc.rendTongue = (Renderer)this.targetEtc.objTongue.GetComponentInChildren <Renderer>();
            }
            this.targetEtc.objMNPB = findAssist.GetObjectFromName("N_mnpb");
        }
示例#8
0
    public static void CopySameNameTransform(Transform trfDst, Transform trfSrc)
    {
        FindAssist findAssist1 = new FindAssist();

        findAssist1.Initialize(trfDst);
        Dictionary <string, GameObject> dictObjName1 = findAssist1.dictObjName;
        FindAssist findAssist2 = new FindAssist();

        findAssist2.Initialize(trfSrc);
        Dictionary <string, GameObject> dictObjName2 = findAssist2.dictObjName;
        GameObject gameObject = (GameObject)null;

        using (Dictionary <string, GameObject> .Enumerator enumerator = dictObjName1.GetEnumerator())
        {
            while (enumerator.MoveNext())
            {
                KeyValuePair <string, GameObject> current = enumerator.Current;
                if (dictObjName2.TryGetValue(current.Key, out gameObject))
                {
                    current.Value.get_transform().set_localPosition(gameObject.get_transform().get_localPosition());
                    current.Value.get_transform().set_localRotation(gameObject.get_transform().get_localRotation());
                    current.Value.get_transform().set_localScale(gameObject.get_transform().get_localScale());
                }
            }
        }
    }
示例#9
0
    public static Renderer[][] GetRendererParts(this FindAssist assist, int partIndexes = 3)
    {
        var result = new List <Renderer> [partIndexes];

        for (var i = partIndexes - 1; i >= 0; i--)
        {
            result[i] = new List <Renderer>();
        }

        var regex = new Regex(".*(group|color|col|grp|part)_(0*[0-9]).*");

        foreach (var skinnedMeshRenderer in assist.SkinnedMeshRenderers.Values)
        {
            var groups = regex.Match(skinnedMeshRenderer.name).Groups;
            if (int.TryParse(groups[groups.Count - 1].Value, out var rendererSlot))
            {
                if (rendererSlot > 1 && rendererSlot <= partIndexes)
                {
                    result[rendererSlot - 1].Add(skinnedMeshRenderer);
                    continue;
                }
            }

            result[0].Add(skinnedMeshRenderer);
        }

        return(result.Select(x => x.ToArray()).ToArray());
    }
示例#10
0
    public void Setup()
    {
        if (Object.op_Equality((Object)null, (Object)this.trfRef) || Object.op_Equality((Object)null, (Object)this.tmpArrow))
        {
            return;
        }
        FindAssist findAssist = new FindAssist();

        findAssist.Initialize(this.trfRef);
        this.lstArrow.Clear();
        Transform transform = ((Component)this).get_transform().Find("top");

        if (Object.op_Implicit((Object)transform))
        {
            ((Object)transform).set_name("delete");
            Object.Destroy((Object)((Component)transform).get_gameObject());
        }
        GameObject gameObject1 = new GameObject("top");

        gameObject1.get_transform().SetParent(((Component)this).get_transform(), false);
        for (int index = 0; index < this.bonenames.Length; ++index)
        {
            GameObject gameObject2;
            if (findAssist.dictObjName.TryGetValue(this.bonenames[index], out gameObject2))
            {
                GameObject gameObject3 = (GameObject)Object.Instantiate <GameObject>((M0)this.tmpArrow, gameObject1.get_transform(), false);
                ((Object)gameObject3).set_name(this.bonenames[index]);
                this.lstArrow.Add(new DrawArrow.ArrowData()
                {
                    trfBone  = gameObject2.get_transform(),
                    trfArrow = gameObject3.get_transform()
                });
            }
        }
    }
示例#11
0
        public static void TweakBody(ChaControl ctrl, GameObject go)
        {
            var bc = new List <DynamicBoneCollider>();

            fa = new FindAssist();
            fa.Initialize(go.transform);

            // floor pseudo-collider
            bc.Add(AddCollider(go, "cf_j_root", sz: 100, t: new Vector3(0, -10.01f, -0.01f)));

            float titsize = ctrl.chaFile.custom.body.shapeValueBody[(int)BodyShapeIdx.BustSize];

            //XXX: maybe skip for small t**s in general?
            //if (ctrl.sex == 0) return;
            //if (titsize < 0.2f) return;

            // bind colliders to hands
            foreach (var n in "forearm02 arm02 hand".Split(' '))
            {
                bc.Add(AddCollider(go, "cf_s_" + n + "_L", sx: 0.35f, sy: 0.35f, sz: 0.3f));
                bc.Add(AddCollider(go, "cf_s_" + n + "_R", sx: 0.35f, sy: 0.35f, sz: 0.3f));
            }

            // large t**s need special case as the standard hitbox morph doesn't like shape values above 1
            var cowfactor = System.Math.Max(1f, titsize);

            // tell the t**s that hands collide it
            foreach (var tit in go.GetComponentsInChildren <DynamicBone_Ver02>(true))
            {
                if ((tit.Comment != "右胸") && (tit.Comment != "左胸"))
                {
                    continue;
                }
                // register the colliders if not already there
                foreach (var c in bc)
                {
                    if (c != null && !tit.Colliders.Contains(c))
                    {
                        tit.Colliders.Add(c);
                    }
                }
                // expand the collision radius for the first two dynbones
                foreach (var pat in tit.Patterns)
                {
                    pat.Params[0].CollisionRadius = 0.08f * cowfactor;
                    pat.Params[1].CollisionRadius = 0.06f * cowfactor;
                }

                tit.GetType().GetMethod("InitNodeParticle", AccessTools.all).Invoke(tit, null);
                tit.GetType().GetMethod("SetupParticles", AccessTools.all).Invoke(tit, null);
                tit.InitLocalPosition();
                if ((bool)tit.GetType().GetMethod("IsRefTransform", AccessTools.all).Invoke(tit, null))
                {
                    tit.setPtn(0, true);
                }
                tit.GetType().GetMethod("InitTransforms", AccessTools.all).Invoke(tit, null);
            }
            fa = null;
        }
                private static void SetSkinColor(ChaControl chaControl, ColorMatchPart colorMatchPart, string file)
                {
                    //get main tex
                    Texture2D mainTexture = CommonLib.LoadAsset <Texture2D>(file, colorMatchPart.MainTex, false, string.Empty);

                    if (mainTexture == null)
                    {
                        return;
                    }

                    //get color mask
                    Texture2D colorMask = CommonLib.LoadAsset <Texture2D>(file, colorMatchPart.ColorMask, false, string.Empty);

                    if (colorMask == null)
                    {
                        return;
                    }

                    //find the game object
                    FindAssist findAssist = new FindAssist();

                    findAssist.Initialize(chaControl.objBody.transform);
                    GameObject gameObject = findAssist.GetObjectFromName(colorMatchPart.Object);

                    if (gameObject == null)
                    {
                        return;
                    }

                    if (!gameObject.GetComponent <Renderer>().material.HasProperty(ChaShader._MainTex))
                    {
                        return;
                    }

                    var customTex = new CustomTextureControl(gameObject.transform);

                    customTex.Initialize(file, colorMatchPart.Material, string.Empty, file, colorMatchPart.MaterialCreate, string.Empty, 2048, 2048);

                    customTex.SetMainTexture(mainTexture);
                    customTex.SetColor(ChaShader._Color, chaControl.chaFile.custom.body.skinMainColor);

                    customTex.SetTexture(ChaShader._ColorMask, colorMask);
                    customTex.SetColor(ChaShader._Color2, chaControl.chaFile.custom.body.skinSubColor);

                    //set the new texture
                    var newTex = customTex.RebuildTextureAndSetMaterial();

                    if (newTex == null)
                    {
                        return;
                    }

                    Material mat = gameObject.GetComponent <Renderer>().material;
                    var      mt  = mat.GetTexture(ChaShader._MainTex);

                    mat.SetTexture(ChaShader._MainTex, newTex);
                    //Destroy the old texture to prevent memory leak
                    Destroy(mt);
                }
示例#13
0
        public override void SetReferenceObject()
        {
            FindAssist findAssist = new FindAssist();

            findAssist.Initialize(((Component)this).get_transform());
            this.targetAccessory.acs_Neck       = findAssist.GetTransformFromName("N_Neck");
            this.targetAccessory.acs_Chest_f    = findAssist.GetTransformFromName("N_Chest_f");
            this.targetAccessory.acs_Chest      = findAssist.GetTransformFromName("N_Chest");
            this.targetAccessory.acs_Tikubi_L   = findAssist.GetTransformFromName("N_Tikubi_L");
            this.targetAccessory.acs_Tikubi_R   = findAssist.GetTransformFromName("N_Tikubi_R");
            this.targetAccessory.acs_Back       = findAssist.GetTransformFromName("N_Back");
            this.targetAccessory.acs_Back_L     = findAssist.GetTransformFromName("N_Back_L");
            this.targetAccessory.acs_Back_R     = findAssist.GetTransformFromName("N_Back_R");
            this.targetAccessory.acs_Waist      = findAssist.GetTransformFromName("N_Waist");
            this.targetAccessory.acs_Waist_f    = findAssist.GetTransformFromName("N_Waist_f");
            this.targetAccessory.acs_Waist_b    = findAssist.GetTransformFromName("N_Waist_b");
            this.targetAccessory.acs_Waist_L    = findAssist.GetTransformFromName("N_Waist_L");
            this.targetAccessory.acs_Waist_R    = findAssist.GetTransformFromName("N_Waist_R");
            this.targetAccessory.acs_Leg_L      = findAssist.GetTransformFromName("N_Leg_L");
            this.targetAccessory.acs_Leg_R      = findAssist.GetTransformFromName("N_Leg_R");
            this.targetAccessory.acs_Knee_L     = findAssist.GetTransformFromName("N_Knee_L");
            this.targetAccessory.acs_Knee_R     = findAssist.GetTransformFromName("N_Knee_R");
            this.targetAccessory.acs_Ankle_L    = findAssist.GetTransformFromName("N_Ankle_L");
            this.targetAccessory.acs_Ankle_R    = findAssist.GetTransformFromName("N_Ankle_R");
            this.targetAccessory.acs_Foot_L     = findAssist.GetTransformFromName("N_Foot_L");
            this.targetAccessory.acs_Foot_R     = findAssist.GetTransformFromName("N_Foot_R");
            this.targetAccessory.acs_Shoulder_L = findAssist.GetTransformFromName("N_Shoulder_L");
            this.targetAccessory.acs_Shoulder_R = findAssist.GetTransformFromName("N_Shoulder_R");
            this.targetAccessory.acs_Elbo_L     = findAssist.GetTransformFromName("N_Elbo_L");
            this.targetAccessory.acs_Elbo_R     = findAssist.GetTransformFromName("N_Elbo_R");
            this.targetAccessory.acs_Arm_L      = findAssist.GetTransformFromName("N_Arm_L");
            this.targetAccessory.acs_Arm_R      = findAssist.GetTransformFromName("N_Arm_R");
            this.targetAccessory.acs_Wrist_L    = findAssist.GetTransformFromName("N_Wrist_L");
            this.targetAccessory.acs_Wrist_R    = findAssist.GetTransformFromName("N_Wrist_R");
            this.targetAccessory.acs_Hand_L     = findAssist.GetTransformFromName("N_Hand_L");
            this.targetAccessory.acs_Hand_R     = findAssist.GetTransformFromName("N_Hand_R");
            this.targetAccessory.acs_Index_L    = findAssist.GetTransformFromName("N_Index_L");
            this.targetAccessory.acs_Index_R    = findAssist.GetTransformFromName("N_Index_R");
            this.targetAccessory.acs_Middle_L   = findAssist.GetTransformFromName("N_Middle_L");
            this.targetAccessory.acs_Middle_R   = findAssist.GetTransformFromName("N_Middle_R");
            this.targetAccessory.acs_Ring_L     = findAssist.GetTransformFromName("N_Ring_L");
            this.targetAccessory.acs_Ring_R     = findAssist.GetTransformFromName("N_Ring_R");
            this.targetAccessory.acs_Dan        = findAssist.GetTransformFromName("N_Dan");
            this.targetAccessory.acs_Kokan      = findAssist.GetTransformFromName("N_Kokan");
            this.targetAccessory.acs_Ana        = findAssist.GetTransformFromName("N_Ana");
            this.targetEtc.trfRoot            = findAssist.GetTransformFromName("cf_J_Hips");
            this.targetEtc.trfHeadParent      = findAssist.GetTransformFromName("cf_J_Head_s");
            this.targetEtc.trfNeckLookTarget  = findAssist.GetTransformFromName("cf_J_Spine03");
            this.targetEtc.trfAnaCorrect      = findAssist.GetTransformFromName("cf_J_Ana");
            this.targetEtc.trf_k_shoulderL_00 = findAssist.GetTransformFromName("k_f_shoulderL_00");
            this.targetEtc.trf_k_shoulderR_00 = findAssist.GetTransformFromName("k_f_shoulderR_00");
            this.targetEtc.trf_k_handL_00     = findAssist.GetTransformFromName("k_f_handL_00");
            this.targetEtc.trf_k_handR_00     = findAssist.GetTransformFromName("k_f_handR_00");
            this.dbcBust    = new DynamicBoneCollider[4];
            this.dbcBust[0] = (DynamicBoneCollider)findAssist.GetObjectFromName("cf_hit_Mune02_s_L").GetComponent <DynamicBoneCollider>();
            this.dbcBust[1] = (DynamicBoneCollider)findAssist.GetObjectFromName("cf_hit_Mune021_s_L").GetComponent <DynamicBoneCollider>();
            this.dbcBust[2] = (DynamicBoneCollider)findAssist.GetObjectFromName("cf_hit_Mune02_s_R").GetComponent <DynamicBoneCollider>();
            this.dbcBust[3] = (DynamicBoneCollider)findAssist.GetObjectFromName("cf_hit_Mune021_s_R").GetComponent <DynamicBoneCollider>();
        }
示例#14
0
        public void InitializeItem()
        {
            gameObject.layer = 11;
            if (gameObject == null)
            {
                return;
            }
            var findAssist = new FindAssist(transform);

            colInfos = new[]
            {
                new ColInfo
                {
                    renderers = findAssist.Renderers.Values.ToArray(),
                    colliders = findAssist.Colliders.Values.ToArray()
                }
            };

            var renderersList = new List <Info>();

            findAssist.Renderers.Values.ForEach(x =>
            {
                if (x is MeshRenderer meshRenderer)
                {
                    renderersList.Add(new Info()
                    {
                        meshRenderer  = meshRenderer,
                        materialInfos = meshRenderer.sharedMaterials.Select(mat =>
                        {
                            var shader = mat.shader;
                            return(new MaterialInfo()
                            {
                                isColor1 = shader.HasProperty("_Color"),
                                isColor2 = shader.HasProperty("_Color2"),
                                isColor3 = shader.HasProperty("_Color3"),
                                isEmission = shader.HasProperty("_Emission") && mat.GetColor("_Emission") != Color.black
                            });
                        }).ToArray()
                    });
                }

                x.gameObject.layer = 11;
            });
            renderers = renderersList.ToArray();

            InitializePoints(findAssist);

            overlap          = false;
            autoSize         = true;
            min              = Vector3.one * -2;
            max              = Vector3.one * 2;
            defColor1        = Color.white;
            defColor2        = Color.white;
            defColor3        = Color.white;
            defEmissionColor = Color.black;

            EditorUtility.SetDirty(this);
        }
示例#15
0
        public override void SetReferenceObject()
        {
            FindAssist findAssist = new FindAssist();

            findAssist.Initialize(((Component)this).get_transform());
            this.trfMove01 = findAssist.GetTransformFromName("N_move");
            this.trfMove02 = findAssist.GetTransformFromName("N_move2");
            this.SetColor();
        }
示例#16
0
        public override void SetReferenceObject()
        {
            FindAssist findAssist = new FindAssist();

            findAssist.Initialize(((Component)this).get_transform());
            this.objTopDef  = findAssist.GetObjectFromName("n_top_a");
            this.objTopHalf = findAssist.GetObjectFromName("n_top_b");
            this.objBotDef  = findAssist.GetObjectFromName("n_bot_a");
            this.objBotHalf = findAssist.GetObjectFromName("n_bot_b");
            this.objOpt01   = ((IEnumerable <KeyValuePair <string, GameObject> >)findAssist.dictObjName).Where <KeyValuePair <string, GameObject> >((Func <KeyValuePair <string, GameObject>, bool>)(x => x.Key.StartsWith("op1"))).Select <KeyValuePair <string, GameObject>, GameObject>((Func <KeyValuePair <string, GameObject>, GameObject>)(x => x.Value)).ToArray <GameObject>();
            this.objOpt02   = ((IEnumerable <KeyValuePair <string, GameObject> >)findAssist.dictObjName).Where <KeyValuePair <string, GameObject> >((Func <KeyValuePair <string, GameObject>, bool>)(x => x.Key.StartsWith("op2"))).Select <KeyValuePair <string, GameObject>, GameObject>((Func <KeyValuePair <string, GameObject>, GameObject>)(x => x.Value)).ToArray <GameObject>();
        }
示例#17
0
            private void SetLineVisibility(ColorMatchPart colorMatchPart)
            {
#if KK || EC
                FindAssist findAssist = new FindAssist();
                findAssist.Initialize(ChaControl.objBody.transform);
                GameObject go = findAssist.GetObjectFromName(colorMatchPart.Object);
                if (go != null)
                {
                    go.GetComponent <Renderer>().material.SetFloat(ChaShader._linetexon, ChaControl.chaFile.custom.body.drawAddLine ? 1f : 0f);
                }
#endif
            }
示例#18
0
            private void SetSkinGloss(ColorMatchPart colorMatchPart)
            {
#if KK || EC || KKS
                FindAssist findAssist = new FindAssist();
                findAssist.Initialize(ChaControl.objBody.transform);
                GameObject go = findAssist.GetObjectFromName(colorMatchPart.Object);
                if (go != null)
                {
                    go.GetComponent <Renderer>().material.SetFloat(ChaShader._SpecularPower, Mathf.Lerp(ChaControl.chaFile.custom.body.skinGlossPower, 1f, ChaControl.chaFile.status.skinTuyaRate));
                }
#endif
            }
                private static void SetLineVisibility(ChaControl chaControl, ColorMatchPart colorMatchPart)
                {
                    FindAssist findAssist = new FindAssist();

                    findAssist.Initialize(chaControl.objBody.transform);
                    GameObject gameObject = findAssist.GetObjectFromName(colorMatchPart.Object);

                    if (gameObject != null)
                    {
                        gameObject.GetComponent <Renderer>().material.SetFloat(ChaShader._linetexon, chaControl.chaFile.custom.body.drawAddLine ? 1f : 0f);
                    }
                }
                private static void SetSkinGloss(ChaControl chaControl, ColorMatchPart colorMatchPart)
                {
                    FindAssist findAssist = new FindAssist();

                    findAssist.Initialize(chaControl.objBody.transform);
                    GameObject gameObject = findAssist.GetObjectFromName(colorMatchPart.Object);

                    if (gameObject != null)
                    {
                        gameObject.GetComponent <Renderer>().material.SetFloat(ChaShader._SpecularPower, Mathf.Lerp(chaControl.chaFile.custom.body.skinGlossPower, 1f, chaControl.chaFile.status.skinTuyaRate));
                    }
                }
示例#21
0
        /// <summary>
        /// Create Simple gameobjects.
        /// </summary>
        /// <returns>False if failed</returns>
        static internal GameObject CreateSilhouetteGameObjects()
        {
            GameObject simpleBodyGameObject = null;

            try {
                //不能緩存後拷貝,必須每次都LoadAsset來用
                simpleBodyGameObject = CommonLib.LoadAsset <GameObject>("chara/oo_base.unity3d", "p_cm_body_00", true, Singleton <Manager.Character> .Instance.mainManifestName);
                simpleBodyGameObject.SetActive(false);
                FindAssist findAssist = new FindAssist();
                findAssist.Initialize(simpleBodyGameObject.transform);

                return(findAssist.GetObjectFromName("n_silhouetteTop"));
            } finally { GameObject.Destroy(simpleBodyGameObject); }
        }
示例#22
0
    public static GameObject GetClothPart(this FindAssist assist, Cloth part)
    {
        if (!RegexCollection.TryGetValue(part, out var regex))
        {
            return(null);
        }
        var gameObjects = from kv in assist.DictObjName
                          where regex.IsMatch(kv.Key)
                          select kv.Value;

        var enumerable = gameObjects as GameObject[] ?? gameObjects.ToArray();

        return(enumerable.Any() ? enumerable.Single() : null);
    }
示例#23
0
        public override void SetReferenceObject()
        {
            // Automatically assign the object to layer 10.
            gameObject.layer = 10;
            gameObject.GetComponentsInChildren <Animator>().ToList().ForEach(x =>
            {
                // Destroying assets is not permitted to avoid data loss?
                DestroyImmediate(x, true);
            });
            gameObject.GetComponentsInChildren <Transform>().ToList().ForEach(x =>
            {
                // apply same to other objects.
                x.gameObject.layer = 10;
                x.localScale       = Vector3.one;
            });

            var findAssist = new FindAssist(transform);

            objTopDef  = findAssist.GetClothPart(FindAssistFilter.Cloth.Top);
            objTopHalf = findAssist.GetClothPart(FindAssistFilter.Cloth.TopHalf);
            objBotDef  = findAssist.GetClothPart(FindAssistFilter.Cloth.Bot);
            objBotHalf = findAssist.GetClothPart(FindAssistFilter.Cloth.BotHalf);
            objOpt01   = findAssist.GetClothParts(FindAssistFilter.Cloth.FirstAccessory);
            objOpt02   = findAssist.GetClothParts(FindAssistFilter.Cloth.SecondAccessory);

            if (GetComponents <MeshRenderer>().Length > 0)
            {
                EditorUtility.DisplayDialog("Warning",
                                            "The mesh that you're trying to make as clothing is not SkinnedMeshRenderer!\n" +
                                            "Check if your export option is correct and check if your mesh's avatar is 'Generic'\n" +
                                            "Clothing mesh MUST NOT include any Renderer that is not Skinned Mesh Renderer.",
                                            "okay... I'll export it again.");
            }

            var rendererParts = findAssist.GetRendererParts();

            rendNormal01 = rendererParts[0];
            rendNormal02 = rendererParts[1];
            rendNormal03 = rendererParts[2];

            foreach (var dynamicBone in GetComponentsInChildren <DynamicBone>(true).Concat(GetComponents <DynamicBone>()))
            {
                DestroyImmediate(dynamicBone);
            }
            foreach (var skirtBone in findAssist.GetSkirtBones())
            {
                var dynamicBone = gameObject.AddComponent <DynamicBone>();
                dynamicBone.m_Root = skirtBone.transform;
            }
        }
示例#24
0
文件: Hooks.cs 项目: Madevil/KK_SMAP
            private static void CreateReferenceImpl(ChaReference __instance, GameObject objRef)
            {
                var findAssist = new FindAssist();

                findAssist.Initialize(objRef.transform);

                var dict = (Dictionary <ChaReference.RefObjKey, GameObject>)
                           AccessTools.Field(typeof(ChaReference), "dictRefObj").GetValue(__instance);

                for (var i = 0; i < AccessoryParentKey.Count; i++)
                {
                    dict[(ChaReference.RefObjKey)(RefObjKeyOriginalCount + i)] =
                        findAssist.GetObjectFromName(AccessoryParentKey[i]);
                }
            }
        private static void FindAllPatch(FindAssist __instance, Transform trf)
        {
            if (!__instance.dictObjName.ContainsKey(trf.name))
            {
                __instance.dictObjName[trf.name] = trf.gameObject;
            }

            if (AccessoryAttachPoints.Contains(trf.name) && trf.parent.gameObject.name != "ct_hairB")
            {
                return;
            }

            for (var i = 0; i < trf.childCount; i++)
            {
                FindAllPatch(__instance, trf.GetChild(i));
            }
        }
示例#26
0
            public static void CreateReferenceInfoHook(ChaReference __instance, ulong flags, GameObject objRef)
            {
                if (null == objRef || (int)(flags - 1UL) != 0)
                {
                    return;
                }

                var findAssist = new FindAssist();

                findAssist.Initialize(objRef.transform);

                var dict = __instance.dictRefObj;

                for (var i = 0; i < InterfaceEntries.AllBones.Length; i++)
                {
                    dict[(ChaReference.RefObjKey)(RefObjKeyOriginalCount + i)] = findAssist.GetObjectFromName(InterfaceEntries.AllBones[i]);
                }
            }
示例#27
0
        public override void SetReferenceObject()
        {
            FindAssist findAssist = new FindAssist();

            findAssist.Initialize(((Component)this).get_transform());
            this.targetCustom.rendEyes = new Renderer[2];
            GameObject objectFromName1 = findAssist.GetObjectFromName("o_eyebase_L");

            if (Object.op_Inequality((Object)null, (Object)objectFromName1))
            {
                this.targetCustom.rendEyes[0] = (Renderer)objectFromName1.GetComponent <Renderer>();
            }
            GameObject objectFromName2 = findAssist.GetObjectFromName("o_eyebase_R");

            if (Object.op_Inequality((Object)null, (Object)objectFromName2))
            {
                this.targetCustom.rendEyes[1] = (Renderer)objectFromName2.GetComponent <Renderer>();
            }
            GameObject objectFromName3 = findAssist.GetObjectFromName("o_eyelashes");

            if (Object.op_Inequality((Object)null, (Object)objectFromName3))
            {
                this.targetCustom.rendEyelashes = (Renderer)objectFromName3.GetComponent <Renderer>();
            }
            GameObject objectFromName4 = findAssist.GetObjectFromName("o_eyeshadow");

            if (Object.op_Inequality((Object)null, (Object)objectFromName4))
            {
                this.targetCustom.rendShadow = (Renderer)objectFromName4.GetComponent <Renderer>();
            }
            GameObject objectFromName5 = findAssist.GetObjectFromName("o_head");

            if (Object.op_Inequality((Object)null, (Object)objectFromName5))
            {
                this.targetCustom.rendHead = (Renderer)objectFromName5.GetComponent <Renderer>();
            }
            GameObject objectFromName6 = findAssist.GetObjectFromName("o_namida");

            if (Object.op_Inequality((Object)null, (Object)objectFromName6))
            {
                this.targetEtc.rendTears = (Renderer)objectFromName6.GetComponent <Renderer>();
            }
            this.targetEtc.objTongue = findAssist.GetObjectFromName("o_tang");
        }
示例#28
0
        public override void SetReferenceObject()
        {
            gameObject.layer = 10;
            gameObject.GetComponentsInChildren <Transform>().ToList().ForEach(x => x.gameObject.layer = 10);

            rendNormal = GetComponentsInChildren <Renderer>().ToArray();
            var findAssist = new FindAssist(transform);

            trfMove01 = findAssist.GetTransformFromCandidates(new string[]
            {
                "N_move",
                "root",
            });
            trfMove02 = findAssist.GetTransformFromCandidates(new string[]
            {
                "N_move2",
                "tip",
            });
            SyncMaterialDefaultValues();
        }
示例#29
0
        // Token: 0x06003109 RID: 12553 RVA: 0x00120E00 File Offset: 0x0011F200
        public override void SetReferenceObject()
        {
            FindAssist findAssist = new FindAssist();

            findAssist.Initialize(base.transform);
            this.targetCustom.rendEyes = new Renderer[2];
            GameObject objectFromName = findAssist.GetObjectFromName("o_eyebase_L");

            if (objectFromName)
            {
                this.targetCustom.rendEyes[0] = objectFromName.GetComponent <Renderer>();
            }
            objectFromName = findAssist.GetObjectFromName("o_eyebase_R");
            if (objectFromName)
            {
                this.targetCustom.rendEyes[1] = objectFromName.GetComponent <Renderer>();
            }
            objectFromName = findAssist.GetObjectFromName("o_eyelashes");
            if (objectFromName)
            {
                this.targetCustom.rendEyelashes = objectFromName.GetComponent <Renderer>();
            }
            objectFromName = findAssist.GetObjectFromName("o_eyeshadow");
            if (objectFromName)
            {
                this.targetCustom.rendShadow = objectFromName.GetComponent <Renderer>();
            }
            objectFromName = findAssist.GetObjectFromName("o_head");
            if (objectFromName)
            {
                this.targetCustom.rendHead = objectFromName.GetComponent <Renderer>();
            }
            objectFromName = findAssist.GetObjectFromName("o_namida");
            if (objectFromName)
            {
                this.targetEtc.rendTears = objectFromName.GetComponent <Renderer>();
            }
            this.targetEtc.objTongue = findAssist.GetObjectFromName("o_tang");
        }
示例#30
0
        public override void SetReferenceObject()
        {
            FindAssist findAssist = new FindAssist();

            findAssist.Initialize(((Component)this).get_transform());
            this.targetAccessory.acs_Hair_pony   = findAssist.GetTransformFromName("N_Hair_pony");
            this.targetAccessory.acs_Hair_twin_L = findAssist.GetTransformFromName("N_Hair_twin_L");
            this.targetAccessory.acs_Hair_twin_R = findAssist.GetTransformFromName("N_Hair_twin_R");
            this.targetAccessory.acs_Hair_pin_L  = findAssist.GetTransformFromName("N_Hair_pin_L");
            this.targetAccessory.acs_Hair_pin_R  = findAssist.GetTransformFromName("N_Hair_pin_R");
            this.targetAccessory.acs_Head_top    = findAssist.GetTransformFromName("N_Head_top");
            this.targetAccessory.acs_Head        = findAssist.GetTransformFromName("N_Head");
            this.targetAccessory.acs_Hitai       = findAssist.GetTransformFromName("N_Hitai");
            this.targetAccessory.acs_Face        = findAssist.GetTransformFromName("N_Face");
            this.targetAccessory.acs_Megane      = findAssist.GetTransformFromName("N_Megane");
            this.targetAccessory.acs_Earring_L   = findAssist.GetTransformFromName("N_Earring_L");
            this.targetAccessory.acs_Earring_R   = findAssist.GetTransformFromName("N_Earring_R");
            this.targetAccessory.acs_Nose        = findAssist.GetTransformFromName("N_Nose");
            this.targetAccessory.acs_Mouth       = findAssist.GetTransformFromName("N_Mouth");
            this.targetEtc.trfHairParent         = findAssist.GetTransformFromName("N_hair_Root");
            this.targetEtc.trfMouthAdjustWidth   = findAssist.GetTransformFromName("cf_J_MouthMove");
        }