Esempio n. 1
0
    private Transform createBoneNode(Transform parent, HandBoneIndex name)
    {
        string    sname = ((HandBoneIndex)(int)name).ToString().ToLower();
        Transform trans = parent.Find(sname);

        if (trans == null)
        {
            GameObject obj;
            if (name > HandBoneIndices.WristEnd && System.Array.IndexOf(HandBoneIndices.Positions, name + 1) >= 0 && System.Array.IndexOf(HandBoneIndices.Tips, name) < 0)
            {
                obj      = GameObject.Instantiate(Resources.Load <GameObject>("Prefabs/bone"));
                obj.name = sname;
            }
            else
            {
                obj = new GameObject(sname);
            }
            obj.transform.parent = parent;
            trans = obj.transform;

            BoneMarker marker = parent.GetComponent <BoneMarker>();
            if (marker)
            {
                marker.Tip = trans;
            }
        }

        return(trans);
    }
Esempio n. 2
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(); };
            });
        }
Esempio n. 3
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);
     }
 }
Esempio n. 4
0
 private void AttachHangMarker()
 {
     DisableLimbMarker();
     FkCharaMgr.FindSelectChara().Bones().Foreach(b =>
     {
         var marker = BoneMarker.Create(b.Transform);
         marker.SetColor(_hangColor);
         _hangMarkers.Add(marker);
         marker.OnLeftClick = m =>
         {
             var r  = new HangRecord();
             r.Bone = b;
             r.Pos  = b.Transform.position;
             r.Rot  = b.Transform.rotation;
             _hangRecords.Add(r);
             ClearHangMarker();
             EnableLimbMarker();
         };
     });
 }
Esempio n. 5
0
        private void AttachSelectorMarker()
        {
            var chars = FkCharaMgr.FindSelectCharas();

            chars.Foreach(c =>
            {
                c.Bones().Foreach(b =>
                {
                    var marker = BoneMarker.Create(b.Transform);
                    marker.SetColor(_selectorColor);
                    _selectorMarkers.Add(marker);
                    marker.OnLeftClick = (m) =>
                    {
                        var attach      = new AttachRecord();
                        attach.Leader   = b;
                        attach.Follower = _follower;
                        attach.Pos      = attach.Follower.Transform.position - attach.Leader.Transform.position;
                        _attachRecords.Add(attach);
                        ClearSelectorMarker();
                        EnableLimbMarker();
                    };
                });
            });
        }