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); }
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(); }; }); }
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); } }
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(); }; }); }
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(); }; }); }); }