private bool ResavePositionData() { if (Storage.Instance.IsCorrectData) { Debug.Log("_______________ResavePositionData RETURN CorrectData ON CORRECT_______________"); return(true); } //+++++++++++ RESAVE Next Position ++++++++++++ if (!string.IsNullOrEmpty(_resName) && _resName != this.gameObject.name) { Debug.Log("################## ERROR MoveObjectToPosition ===========PRED========= rael name: " + this.gameObject.name + " new name: " + _resName); } string oldName = this.gameObject.name; _resName = _dataUfo.NextPosition(this.gameObject); if (_resName == "Error") { return(false); } //if (_resName == "Update") //{ // //CORRECT // Debug.Log("++++ ResavePositionData CORRECT +++ (" + this.gameObject.name + ")-- call FindObjectData"); // _dataUfo = FindObjectData("ResavePositionData >> CORRECT") as SaveLoadData.GameDataUfo; // oldName = this.gameObject.name; //} if (!string.IsNullOrEmpty(_resName)) { if (oldName != _resName) { string callInfo = "ResavePositionData >> oldName(" + oldName + ") != _resName(" + _resName + ")"; _dataUfo = FindObjectData(callInfo) as ModelNPC.GameDataUfo; if (_dataUfo == null) { Debug.Log("################## ERROR MoveObjectToPosition dataUfo is Empty GO:" + this.gameObject.name); return(false); } } if (_resName != this.gameObject.name) { Debug.Log("################## ERROR MoveObjectToPosition ===========POST========= rael name: " + this.gameObject.name + " new name: " + _resName); this.gameObject.name = _resName; } } return(true); //+++++++++++++++++++++++ }
IEnumerator MoveObjectToPosition() { Vector3 lastPositionForLock = transform.position; Vector3 lastPositionForMoveField = transform.position; int stepTest = 0; int stepLimitTest = 10; float minDist = 0.005f; //0.01f; int speed = 5; float step = speed * Time.deltaTime; if (!Helper.IsDataInit(this.gameObject)) { //yield return null; yield break; } //@SAVE@ var dataUfo = FindObjectData() as SaveLoadData.GameDataUfo; _dataUfo = FindObjectData("MoveObjectToPosition Init") as ModelNPC.GameDataUfo; while (true) { if (Storage.Instance.IsLoadingWorld) { Debug.Log("_______________ LOADING WORLD ....._______________"); yield return(null); } if (Storage.Instance.IsCorrectData) { Debug.Log("_______________ RETURN CorrectData ON CORRECT_______________"); yield return(null); } if (_dataUfo == null) { Debug.Log("########################## UFO MoveObjectToPosition dataUfo is EMPTY"); //Debug.Log("*** DESTROY : " + this.gameObject.name); //Storage.Instance.AddDestroyRealObject(this.gameObject); //@CD@ Storage.Fix.CorrectData(null, this.gameObject, "MoveObjectToPosition"); yield break; } stepTest++; if (stepTest > stepLimitTest) { float distLock = Vector3.Distance(lastPositionForLock, transform.position); if (distLock < minDist) { //Debug.Log("MoveObjectToPosition ------ UFO LOCK !!!! > " + distLock); _dataUfo.SetTargetPosition(); } lastPositionForLock = transform.position; stepTest = 0; } Vector3 targetPosition = _dataUfo.TargetPosition; Vector3 pos = Vector3.MoveTowards(transform.position, targetPosition, step); if (_rb2d != null) { _rb2d.MovePosition(pos); } else { //@[email protected] Debug.Log("UFO MoveObjectToPosition Set position 2 original........"); transform.position = pos; } //+++++++++++ RESAVE Next Position ++++++++++++ bool res = ResavePositionData(); if (!res) { Debug.Log("########### STOP MOVE ON ERROR MOVE"); if (this.gameObject != null) { Debug.Log("%%%%%%%%%%%%%%%%%%%%%%%%%%% MoveObjectToPosition " + this.gameObject.name); } Destroy(this.gameObject); yield break; } float dist = Vector3.Distance(targetPosition, transform.position); //Debug.Log("MoveObjectToPosition ------ UFO distance to point > " + dist); if (dist < minDist) { _dataUfo.SetTargetPosition(); } yield return(null); } }
//@SAVE@ public void UpdateData(string callFunc) { //Debug.Log("_____________GameObject.UpdateData ________________" + this.name); _dataUfo = FindObjectData(callFunc) as ModelNPC.GameDataUfo; //testNewName = dataUfo.NameObject; }