Пример #1
0
 public FkArmRotater(FkBone spine1, FkBone spine2, FkBone arm, FkBone armAno)
 {
     _spine1 = spine1;
     _spine2 = spine2;
     _arm    = arm;
     _armAno = armAno;
 }
Пример #2
0
 private void InnerUpdate()
 {
     if (Input.GetKey(KeyCode.LeftControl) && Input.GetMouseButtonDown(0))
     {
         var           minDist = double.MaxValue;
         FkBone.FkBone minBone = null;
         FkCharaMgr.FindSelectCharas().Foreach(c =>
         {
             c.Bones().Foreach(b =>
             {
                 var screenPoint = CameraMgr.MainCamera().WorldToScreenPoint(b.Transform.position);
                 var dist        = (screenPoint - Input.mousePosition).magnitude;
                 if (dist < minDist)
                 {
                     minDist = dist;
                     minBone = b;
                 }
             });
         });
         if (minBone != null)
         {
             Context.GuideObjectManager().SetSelectObject(minBone.GuideObject, false);
         }
     }
 }
Пример #3
0
        private void AttachLimbMarker()
        {
            var chara = FkCharaMgr.FindSelectChara();

            if (chara == null)
            {
                return;
            }
            chara.Limbs().Foreach(b =>
            {
                var marker = BoneMarker.Create(b.Transform);
                _limbMarkers.Add(marker);
                marker.OnDrag = (m) =>
                {
                    var screenVec = m.MouseEndPos - m.MouseStartPos;
                    var pos       = Kit.MapScreenVecToWorld(screenVec, b.Transform.position);
                    FkJointAssist.MoveEnd(b.GuideObject, pos);
                };
                marker.OnMidClick = (m) =>
                {
//                    ClearLimbMarker();
                    DisableLimbMarker();
                    _follower = b;
                    AttachSelectorMarker();
                };
                marker.OnRightClick = (m) => { ToggleLockBone(b, m); };
                marker.OnLeftDown   = (m) => { UndoRedoHelper.Record(); };
                marker.OnLeftUp     = (m) => { UndoRedoHelper.Finish(); };
            });
        }
Пример #4
0
        public FkChara(Transform root)
        {
            _root = CreateBone(root);
            if (!IsMale() && !IsFemale())
            {
                throw new Exception("Invalid Root");
            }
            var hips = root.Find("BodyTop/p_cf_anim/cf_J_Root/cf_N_height/cf_J_Hips");

            if (hips == null)
            {
                hips = root.Find("BodyTop/p_cm_anim/cm_J_Root/cm_N_height/cm_J_Hips");
            }
            LoopChildren(hips);
            AttachRelation();
        }
Пример #5
0
 private void ToggleLockBone(FkBone.FkBone bone, BoneMarker m)
 {
     if (_dicLockRecords.ContainsKey(bone))
     {
         _dicLockRecords.Remove(bone);
         m.OnDrag = null;
         m.SetDefaultColor();
     }
     else
     {
         var record = new LockRecord();
         record.LockedPos = bone.Transform.position;
         record.LockedRot = bone.Transform.rotation;
         _dicLockRecords.Add(bone, record);
         m.SetColor(_lockedColor);
     }
 }
Пример #6
0
        private void LoopChildren(Transform transform)
        {
            if (transform.name == "pcAnimator")
            {
                return;
            }
            switch (transform.name)
            {
            case "cm_J_Head":
            case "cf_J_Head":
                _head = CreateBone(transform);
                break;

            case "cm_J_Neck":
            case "cf_J_Neck":
                _neck = CreateBone(transform);
                break;

            case "cm_J_Spine01":
            case "cf_J_Spine01":
                _spine01 = CreateBone(transform);
                break;

            case "cm_J_Spine02":
            case "cf_J_Spine02":
                _spine02 = CreateBone(transform);
                break;

            case "cm_J_Shoulder_L":
            case "cf_J_Shoulder_L":
                _shoulderL = CreateBone(transform);
                break;

            case "cm_J_Shoulder_R":
            case "cf_J_Shoulder_R":
                _shoulderR = CreateBone(transform);
                break;

            case "cm_J_ArmUp00_L":
            case "cf_J_ArmUp00_L":
                _armUp00L = CreateBone(transform);
                break;

            case "cm_J_ArmUp00_R":
            case "cf_J_ArmUp00_R":
                _armUp00R = CreateBone(transform);
                break;

            case "cm_J_ArmLow01_L":
            case "cf_J_ArmLow01_L":
                _armLow01L = CreateBone(transform);
                break;

            case "cm_J_ArmLow01_R":
            case "cf_J_ArmLow01_R":
                _armLow01R = CreateBone(transform);
                break;

            case "cm_J_Hand_L":
            case "cf_J_Hand_L":
                _handL = CreateBone(transform);
                break;

            case "cm_J_Hand_R":
            case "cf_J_Hand_R":
                _handR = CreateBone(transform);
                break;

            case "cm_J_Hips":
            case "cf_J_Hips":
                _hips = CreateBone(transform);
                break;

            case "cm_J_Kosi01":
            case "cf_J_Kosi01":
                _kosi01 = CreateBone(transform);
                break;

            case "cm_J_LegUp00_L":
            case "cf_J_LegUp00_L":
                _legUp00L = CreateBone(transform);
                break;

            case "cm_J_LegUp00_R":
            case "cf_J_LegUp00_R":
                _legUp00R = CreateBone(transform);
                break;

            case "cm_J_LegLow01_L":
            case "cf_J_LegLow01_L":
                _legLow01L = CreateBone(transform);
                break;

            case "cm_J_LegLow01_R":
            case "cf_J_LegLow01_R":
                _legLow01R = CreateBone(transform);
                break;

            case "cm_J_Foot01_L":
            case "cf_J_Foot01_L":
                _foot01L = CreateBone(transform);
                break;

            case "cm_J_Foot01_R":
            case "cf_J_Foot01_R":
                _foot01R = CreateBone(transform);
                break;

            case "cm_J_Toes01_L":
            case "cf_J_Toes01_L":
                _toes01L = CreateBone(transform);
                break;

            case "cm_J_Toes01_R":
            case "cf_J_Toes01_R":
                _toes01R = CreateBone(transform);
                break;

            default:
                CheckFinger(transform);
                break;
            }
            for (var i = 0; i < transform.childCount; i++)
            {
                LoopChildren(transform.GetChild(i));
            }
        }
Пример #7
0
 public FkHeadRotater(FkBone spine1, FkBone spine2, FkBone neck)
 {
     _spine1 = spine1;
     _spine2 = spine2;
     _neck   = neck;
 }