public void Clear() { _action = ACTION.None; _saveTarget = SAVE_TARGET.None; _portrait = null; _mesh = null; _meshGroup = null; _modifier = null; _keyObject = null; _isCallContinuous = false; //여러 항목을 동시에 처리하는 Batch 액션 중인가 _lastUndoTime = DateTime.Now; }
// Functions //-------------------------------------------------- /// <summary> /// Undo 전에 중복을 체크하기 위해 Action을 등록한다. /// 리턴값이 True이면 "새로운 Action"이므로 Undo 등록을 해야한다. /// 만약 Action 타입이 Add, New.. 계열이면 targetObject가 null일 수 있다. (parent는 null이 되어선 안된다) /// </summary> public bool SetAction(ACTION action, apPortrait portrait, apMesh mesh, apMeshGroup meshGroup, apModifierBase modifier, object keyObject, bool isCallContinuous, SAVE_TARGET saveTarget) { bool isTimeOver = false; if (DateTime.Now.Subtract(_lastUndoTime).TotalSeconds > 1.0f || _isFirstAction) { //1초가 넘었다면 강제 Undo ID 증가 isTimeOver = true; _lastUndoTime = DateTime.Now; _isFirstAction = false; } //특정 조건에서는 UndoID가 증가하지 않는다. //유효한 Action이고 시간이 지나지 않았다면 if (_action != ACTION.None && !isTimeOver) { //이전과 값이 같을 때에만 Multiple 처리가 된다. if (action == _action && saveTarget == _saveTarget && portrait == _portrait && mesh == _mesh && meshGroup == _meshGroup && modifier == _modifier && isCallContinuous == _isCallContinuous ) { if (isCallContinuous) { //연속 호출이면 KeyObject가 달라도 Undo를 묶는다. return(false); } else if (keyObject == _keyObject && keyObject != null) { //연속 호출이 아니더라도 KeyObject가 같으면 Undo를 묶는다. return(false); } } } #region [미사용 코드] //if (_action != ACTION.None && _parentMonoObject != null) //{ // if (_action == action && _parentMonoObject == parentMonoObject && isMultiple == _isMultiple) // { // if (_isMultiple) // { // //다중 처리 타입이면 -> targetObject가 달라도 연속된 액션이다. // return false; // } // else // { // //Multiple 타입이 아니라면 targetObject도 동일해야한다. // //단, 둘다 Null이라면 연속된 타입일 수 없다. // if (targtObject == _keyObject && targtObject != null && _keyObject != null) // { // if (targetObject2 != null) // { // if(targetObject2 == _targetObject2) // { // return false;//연속된 Action이다. // } // } // else // { // return false;//연속된 Action이다. // } // } // } // } //} #endregion _action = action; _saveTarget = saveTarget; _portrait = portrait; _mesh = mesh; _meshGroup = meshGroup; _modifier = modifier; _keyObject = keyObject; _isCallContinuous = isCallContinuous; //여러 항목을 동시에 처리하는 Batch 액션 중인가 //_parentMonoObject = parentMonoObject; //_keyObject = targtObject; //_targetObject2 = targetObject2; //_isMultiple = isMultiple; //Debug.Log("Undo Regist [" + action + "]"); return(true); }