示例#1
0
        private void LockOn()
        {
            CharFemale character = instance.female;

            if (character != null)
            {
                CharBody body   = character.chaBody;
                string   prefix = "cf_";
                if (!cameraTarget)
                {
                    cameraTarget = body.objBone.transform.FindLoop(prefix + boneList[0]);
                }
                else
                {
                    for (int i = 0; i < boneList.Length; i++)
                    {
                        if (cameraTarget.name == prefix + boneList[i])
                        {
                            string boneName = boneList.ElementAtOrDefault(i + 1) != null ? prefix + boneList[i + 1] : prefix + boneList[0];
                            cameraTarget = body.objBone.transform.FindLoop(boneName);
                            break;
                        }
                    }
                }

                if (lastBonePos == null)
                {
                    lastBonePos = camera.transBase.InverseTransformPoint(cameraTarget.transform.position);
                }
                normalCameraMoveSpeed = camera.moveSpeed;
                camera.moveSpeed      = 0.0f;

                CreateInfoMsg("Locked to \"" + cameraTarget.name + "\"");
            }
        }
示例#2
0
 private void AddActor(CharBody member)
 {
     if (!member.GetComponent <Marker>())
     {
         _Actors.Add(new SexyActor(member));
     }
 }
示例#3
0
 public static void Register(CharBody actor)
 {
     actor.getIK().solver.OnPostInitiate += new IKSolver.UpdateDelegate(PostInitiateCalled);
     foreach (IKEffector effector in actor.getIK().solver.effectors)
     {
         _effectorsToActors.Add(new EffectorAndActor(effector, actor));
     }
 }
示例#4
0
 public static void MakeVisible(CharBody actor)
 {
     foreach (IKEffector effector in actor.getIK().solver.effectors)
     {
         //effector.target = effector.bone;
         GameObject.CreatePrimitive(PrimitiveType.Cube).AddComponent <EffectorVisible>().reference = effector;
         GameObject.CreatePrimitive(PrimitiveType.Cube).AddComponent <BoneVisible>().reference     = effector;
     }
 }
示例#5
0
 private void SetNeckLook(CharBody currentBody, NECK_LOOK_TYPE_VER2 necktype)
 {
     for (int i = 0; i < currentBody.neckLookCtrl.neckLookScript.neckTypeStates.Length; i++)
     {
         if (currentBody.neckLookCtrl.neckLookScript.neckTypeStates[i].lookType == necktype)
         {
             currentBody.neckLookCtrl.ptnNo = i;
             return;
         }
     }
 }
示例#6
0
 private void SetEyeLook(CharBody currentBody, EYE_LOOK_TYPE eyetype)
 {
     for (int i = 0; i < currentBody.eyeLookCtrl.eyeLookScript.eyeTypeStates.Length; i++)
     {
         if (currentBody.eyeLookCtrl.eyeLookScript.eyeTypeStates[i].lookType == eyetype)
         {
             currentBody.eyeLookCtrl.ptnNo = i;
             return;
         }
     }
 }
示例#7
0
        public static Dictionary <FullBodyBipedEffector, IKEffector> GetEffectors(CharBody actor)
        {
            Dictionary <FullBodyBipedEffector, IKEffector> dict = new Dictionary <FullBodyBipedEffector, IKEffector>();

            // main game does not have ik set......................................
            Logger.Info("actor ik={0}", actor.getIK());
            dict.Add(FullBodyBipedEffector.LeftHand, actor.getIK().solver.leftHandEffector);
            dict.Add(FullBodyBipedEffector.LeftShoulder, actor.getIK().solver.leftShoulderEffector);
            dict.Add(FullBodyBipedEffector.LeftThigh, actor.getIK().solver.leftThighEffector);
            dict.Add(FullBodyBipedEffector.LeftFoot, actor.getIK().solver.leftFootEffector);
            dict.Add(FullBodyBipedEffector.RightHand, actor.getIK().solver.rightHandEffector);
            dict.Add(FullBodyBipedEffector.RightShoulder, actor.getIK().solver.rightShoulderEffector);
            dict.Add(FullBodyBipedEffector.RightThigh, actor.getIK().solver.rightThighEffector);
            dict.Add(FullBodyBipedEffector.RightFoot, actor.getIK().solver.rightFootEffector);
            return(dict);
        }
示例#8
0
        private int GetLockOnTarget()
        {
            StudioChara character = instance.CurrentChara;

            if (character != null)
            {
                CharBody body   = character.body;
                string   prefix = character is StudioFemale ? "cf_" : "cm_";

                for (int i = 0; i < boneList.Length; i++)
                {
                    if (cameraTarget.name == prefix + boneList[i])
                    {
                        return(i);
                    }
                }
            }
            return(-1);
        }
示例#9
0
        private void LockOn()
        {
            StudioChara character = instance.CurrentChara;

            if (character != null)
            {
                int newHash = character.GetHashCode();
                if (characterHash != newHash)
                {
                    cameraTarget = null;
                }
                characterHash = newHash;

                CharBody body   = character.body;
                string   prefix = character is StudioFemale ? "cf_" : "cm_";
                if (!cameraTarget)
                {
                    cameraTarget = body.objBone.transform.FindLoop(prefix + boneList[0]);
                }
                else
                {
                    for (int i = 0; i < boneList.Length; i++)
                    {
                        if (cameraTarget.name == prefix + boneList[i])
                        {
                            string boneName = boneList.ElementAtOrDefault(i + 1) != null ? prefix + boneList[i + 1] : prefix + boneList[0];
                            cameraTarget = body.objBone.transform.FindLoop(boneName);
                            break;
                        }
                    }
                }

                if (lastBonePos == null)
                {
                    lastBonePos = cameraTarget.transform.position;
                }
                normalCameraMoveSpeed = camera.moveSpeed;
                camera.moveSpeed      = 0.0f;

                CreateInfoMsg("Locked to \"" + cameraTarget.name + "\"");
            }
        }
            static bool Prefix(ref byte _sex, CharBody __instance, ref bool __result)
            {
                if (__instance.customTexCtrlBody != null)
                {
                    __instance.customTexCtrlBody.Release();
                    Traverse.Create(__instance).Property("customTexCtrlBody").SetValue(null);
                }

                string text          = (_sex != 0) ? "chara/cf_m_base.unity3d" : "chara/cm_m_base.unity3d";
                string drawMatName   = (_sex != 0) ? "cf_m_body" : "cm_m_body";
                string createMatName = (_sex != 0) ? "cf_m_body_create" : "cm_m_body_create";

                Traverse.Create(__instance).Property("customTexCtrlBody").SetValue(new CustomTextureControl());
                int num = HarmonyPatch_Config.BasicSettings.enable4KSkinDiffuse ? 4096 : 1024;

                __instance.customTexCtrlBody.Initialize(text, drawMatName, text, createMatName, num, num);

                __result = true;
                return(false);
            }
示例#11
0
        private void LockOn(int listItem)
        {
            StudioChara character = instance.CurrentChara;

            if (character != null)
            {
                characterHash = character.GetHashCode();

                CharBody body   = character.body;
                string   prefix = character is StudioFemale ? "cf_" : "cm_";

                cameraTarget = body.objBone.transform.FindLoop(prefix + boneList[listItem]);

                if (lastBonePos == null)
                {
                    lastBonePos = cameraTarget.transform.position;
                }
                normalCameraMoveSpeed = camera.moveSpeed;
                camera.moveSpeed      = 0.0f;

                CreateInfoMsg("Locked to \"" + cameraTarget.name + "\"");
            }
        }
示例#12
0
        private void Apply(CharBody body)
        {
            CameraEnabled = false;

            if (!currentHairState)
            {
                ShowHair(true);
            }

            currentBody = body;
            FindNLR();
            angle  = Vector2.zero;
            rot    = Vector3.zero;
            offset = currentBody.chaInfo.Sex == 0 ? MALE_OFFSET : FEMALE_OFFSET;
            UpdateCamPos();

            if (!SHOW_HAIR)
            {
                ShowHair(false);
            }

            povActive = true;
        }
示例#13
0
        protected void Restore()
        {
            if (currentBody && !currentHairState)
            {
                ShowHair(true);
            }

            currentBody = null;

            if (Camera.main)
            {
                Camera.main.fieldOfView        = lastFOV;
                Camera.main.nearClipPlane      = lastNearClip;
                Camera.main.transform.rotation = lastRotation;
                Camera.main.transform.position = lastPosition;
            }

            CameraEnabled = true;

            DepthOfField = lastDOF;
            Shield       = hideObstacle;

            povActive = false;
        }
示例#14
0
 public EffectorAndActor(IKEffector effector, CharBody actor)
 {
     Effector = effector;
     Actor    = actor;
 }