public static ModelNPC.ObjectData GetObjectDataFromGrid(string nameGameObject, string nameField) { if (!ReaderScene.IsGridDataFieldExist(nameField)) { Debug.Log("################# Error FindObjectData FIELD NOT FOUND :" + nameField + " find object: " + nameGameObject); //if (!Storage.Instance.IsLoadingWorldThread) //{ //Storage.Data.AddNewFieldInGrid(nameField, "GetObjecsDataFromGrid", true); //} //else //{ // Debug.Log("################# Error FindObjectData FIELD NOT FOUND :" + nameField + " find object: " + nameGameObject); return(null); // //return new ModelNPC.ObjectData(); //} } List <ModelNPC.ObjectData> objects = ReaderScene.GetObjectsDataFromGrid(nameField); int index = objects.FindIndex(p => p.NameObject == nameGameObject); if (index == -1) { Debug.Log("################# Error FindObjectData DATA OBJECT NOT FOUND : " + nameGameObject + " in Field: " + nameField); return(null); } return(objects[index]); }
public void DrawLocationHero(bool isOpenChange = false) { if (!isOpenChange) { return; } if (IsOpen || isOpenChange) { Texture2D textureMap = prefabFrameMap.GetComponent <SpriteRenderer>().sprite.texture; Texture2D textureMapResult = textureMap; //Texture2D textureResult = new Texture2D(textureMap.width, textureMap.height); //Graphics.CopyTexture(textureMap, 0, 0, 0, 0, textureMap.width, textureMap.height, textureResult, 0, 0, 0, 0); //-- Restore --- if (Storage.Instance.SelectFieldPosHero != saveHeroPosField) { if (!string.IsNullOrEmpty(saveHeroPosField)) { SaveLoadData.TypePrefabs prefabType = SaveLoadData.TypePrefabs.PrefabField; string nameField = saveHeroPosField; if (ReaderScene.IsGridDataFieldExist(nameField)) { foreach (ModelNPC.ObjectData datObjItem in ReaderScene.GetObjectsDataFromGrid(nameField)) { if (datObjItem.TypePrefabName != SaveLoadData.TypePrefabs.PrefabUfo.ToString() && datObjItem.TypePrefabName != SaveLoadData.TypePrefabs.PrefabBoss.ToString()) { prefabType = (SaveLoadData.TypePrefabs)Enum.Parse(typeof(SaveLoadData.TypePrefabs), datObjItem.TypePrefabName); break; //@@@+ } } } Vector2 posF = Helper.GetPositByField(nameField); int x = (int)posF.x; int y = (int)posF.y; DrawTextureTo(SizeCellMap, "Restore", SizeCellMap - 1, textureMapResult, y, x, prefabType); } saveHeroPosField = Storage.Instance.SelectFieldPosHero; } //------ //@@@+ textureMapResult = AddTextureHeroOnMap(textureMapResult); //@@@- //Vector2 posHero = Helper.GetPositByField(Storage.Instance.SelectFieldPosHero); //int heroX = (int)posHero.x; //int heroY = (int)posHero.y; //DrawTextureTo(SizeCellMap, "Hero", SizeCellMap - 1, textureResult, heroY, heroX, Storage.Map.textureHero); textureMapResult.Apply(); Sprite spriteMe = Sprite.Create(textureMapResult, new Rect(0.0f, 0.0f, textureMapResult.width, textureMapResult.height), new Vector2(0.5f, 0.5f), 100.0f); prefabFrameMap.GetComponent <SpriteRenderer>().sprite = spriteMe; } }
public void SetObjecDataFromGrid(string nameField, int index, ModelNPC.ObjectData newData) { if (!ReaderScene.IsGridDataFieldExist(nameField)) { Storage.Data.AddNewFieldInGrid(nameField, "SetObjecDataFromGrid"); } ReaderScene.GetObjectsDataFromGrid(nameField)[index] = newData; if (Storage.Instance.ReaderSceneIsValid) { Storage.ReaderWorld.UpdateLinkData(newData, nameField, index); } }
public Texture2D DrawLocationHero(Texture2D textureResult) { //Texture2D textureResult = new Texture2D(textureMap.width, textureMap.height); //Graphics.CopyTexture(textureMap, 0, 0, 0, 0, textureMap.width, textureMap.height, textureResult, 0, 0, 0, 0); //-- Restore --- //if (Storage.Instance.SelectFieldPosHero != saveHeroPosField) //{ //Clear old position Hero if (!string.IsNullOrEmpty(saveHeroPosField)) { SaveLoadData.TypePrefabs prefabType = SaveLoadData.TypePrefabs.PrefabField; string nameField = saveHeroPosField; if (ReaderScene.IsGridDataFieldExist(nameField)) { foreach (ModelNPC.ObjectData datObjItem in ReaderScene.GetObjectsDataFromGrid(nameField)) { if (datObjItem.TypePrefabName != SaveLoadData.TypePrefabs.PrefabUfo.ToString() && datObjItem.TypePrefabName != SaveLoadData.TypePrefabs.PrefabBoss.ToString()) { prefabType = (SaveLoadData.TypePrefabs)Enum.Parse(typeof(SaveLoadData.TypePrefabs), datObjItem.TypePrefabName); } } } Vector2 posF = Helper.GetPositByField(nameField); int x = (int)posF.x; int y = (int)posF.y; DrawTextureTo(SizeCellMap, "Restore", SizeCellMap - 1, textureResult, y, x, prefabType); } saveHeroPosField = Storage.Instance.SelectFieldPosHero; //} //------ //@@@+ textureResult = AddTextureHeroOnMap(textureResult); //@@@- //Vector2 posHero = Helper.GetPositByField(Storage.Instance.SelectFieldPosHero); //int heroX = (int)posHero.x; //int heroY = (int)posHero.y; //DrawTextureTo(SizeCellMap, "Hero", SizeCellMap - 1, textureResult, heroY, heroX, Storage.Map.textureHero); return(textureResult); }
//@DESTROY@ public bool DestroyFullObject(GameObject gObj, bool isCorrect = false, bool isStopReal = false) //???? isStopReal { if (gObj == null) { Debug.Log("+++ DestroyFullObject ++++ object is null"); return(false); } //if (isCorrect) // Debug.Log("++++++++++++ DestroyFullObject ++++ : " + gObj); string setName = gObj.name; string nameField = Helper.GetNameFieldByName(setName); if (nameField == null) { return(false); } bool isExistReal = true; if (!_GamesObjectsReal.ContainsKey(nameField)) { isExistReal = false; if (isStopReal) { Debug.Log("####### DestroyFullObject not field : " + nameField); return(false); } } if (isExistReal) { List <GameObject> listObjInField = _GamesObjectsReal[nameField]; for (int i = listObjInField.Count - 1; i >= 0; i--) { if (listObjInField[i] == null) { _UpdateData.RemoveRealObject(i, nameField, "DestroyRealObject"); } } if (listObjInField.Count > 0) { int indRealData = listObjInField.FindIndex(p => p.name == setName); if (indRealData == -1) { Debug.Log("+++ ------ DestroyFullObject: ------ Hero destroy >>> Not find GamesObjectsReal : " + gObj.name); } else { _UpdateData.RemoveRealObject(indRealData, nameField, "DestroyRealObject"); } } } bool isDestroyOnBild = false; if (gObj != null) { if (PoolGameObjects.IsUsePoolObjects) { var evObj = gObj.GetComponent <EventsObject>(); if (evObj != null && evObj.PoolCase.IsDesrtoy) //Replace Data on Construct when Paint Prafab { isDestroyOnBild = true; } } //@@@- //Destroy(gObj); //@@@+ gObj.GetEvent().PoolCase.Deactivate();// .IsDesrtoy = true; } else { Debug.Log("+++ DestroyFullObject ++++ Destroy ---- object is null"); } KillObjectHistory.Add(setName); //++ history //----------------------------------------------- bool isRemovedCorrect = false; bool isRemReal = false; bool isRemData = false; if (isCorrect) { isRemReal = _UpdateData.RemoveAllFindRealObject(setName); } //Destroy to Data if (false == ReaderScene.IsGridDataFieldExist(nameField)) { Debug.Log("+++++ ------- DestroyRealObject ----- !GridData.FieldsD not field=" + nameField); return(false); } List <ModelNPC.ObjectData> dataObjects = ReaderScene.GetObjectsDataFromGrid(nameField); int indObj = dataObjects.FindIndex(p => p.NameObject == gObj.name); if (!isCorrect) { if (indObj != -1) { //Destroy to Data _UpdateData.RemoveDataObjectInGrid(nameField, indObj, "DestroyRealObject"); } else { if (!isDestroyOnBild) { Debug.Log("!!!! ObjectData GridData not object=" + gObj.name); //RemoveAllFindRealObject(gObj.name); _UpdateData.RemoveAllFindDataObject(gObj.name); } } } else { if (indObj != -1) { //@DD@ dataObjects.RemoveAt(indObj); _UpdateData.RemoveDataObjectInGrid(nameField, indObj, "DestroyRealObject"); } isRemData = _UpdateData.RemoveAllFindDataObject(setName); } if (isRemData || isRemReal) { isRemovedCorrect = true; } return(isRemovedCorrect); }
IEnumerator StartLoadDataBigXML() { string stepErr = "start"; Debug.Log("Loaded Xml GridData start..."); Dictionary <string, ModelNPC.FieldData> fieldsD_Test = new Dictionary <string, ModelNPC.FieldData>(); yield return(null); LoadingWordlTimer = Time.time; string nameField = ""; stepErr = "c.1"; string datapathPart = Application.dataPath + "/Levels/LevelDataPart1x2.xml"; if (File.Exists(datapathPart)) { int indProgress = 0; int limitUpdate = 20; //using (XmlReader xml = XmlReader.Create(stReader)) using (XmlReader xml = XmlReader.Create(datapathPart)) //using (XmlReader xml = XmlReader.Create(new StreamReader(datapathPart, System.Text.Encoding.UTF8))) { while (xml.Read()) { switch (xml.NodeType) { case XmlNodeType.Element: if (xml.Name == "Key") { XElement el = XElement.ReadFrom(xml) as XElement; nameField = el.Value; //nameField = xml.Value.Clone().ToString(); break; } //if (xml.Name == "Objects") if (xml.Name == "ObjectData") //WWW { indProgress++; if (indProgress > limitUpdate) { indProgress = 0; yield return(null); } XElement el = XElement.ReadFrom(xml) as XElement; string inputString = el.ToString(); //--------------- //XmlSerializer serializer = new XmlSerializer(typeof(List<ModelNPC.ObjectData>), Serializator.extraTypes); //WWW XmlSerializer serializer = new XmlSerializer(typeof(ModelNPC.ObjectData), Serializator.extraTypes); //-------------- StringReader stringReader = new StringReader(inputString); //stringReader.Read(); // skip BOM //-------------- //List<KeyValuePair<string, ModelNPC.FieldData>> dataResult = (List<KeyValuePair<string, ModelNPC.FieldData>>)serializer.Deserialize(rdr); //Debug.Log("! " + inputString); //List<ModelNPC.ObjectData> dataResult; ModelNPC.ObjectData dataResult; try { dataResult = (ModelNPC.ObjectData)serializer.Deserialize(stringReader); } catch (Exception x) { Debug.Log("############# " + x.Message); yield break; } //------------------------- if (ReaderScene.IsGridDataFieldExist(nameField)) { fieldsD_Test[nameField].Objects.Add(dataResult); } else { //_GridDataG.FieldsD.Add(nameField, new ModelNPC.FieldData() //{ // NameField = nameField, // Objects = new List<ModelNPC.ObjectData>() { dataResult } //}); fieldsD_Test.Add(nameField, new ModelNPC.FieldData() { NameField = nameField, Objects = new List <ModelNPC.ObjectData>() { dataResult } }); } } break; } } } //xml.Close(); //stReader.Close(); } //------------ Storage.Data.SetGridDatatBig = fieldsD_Test; yield return(null); Storage.Data.CompletedLoadWorld();//fieldsD_Temp //-------------- float loadingTime = Time.time - LoadingWordlTimer; Storage.EventsUI.SetMessageBox = "Ты ждал: " + loadingTime; yield return(new WaitForSeconds(4f)); Storage.EventsUI.HideMessage(); }
//Texture2D textureMap = null; public Sprite GetBildSpriteMap(out Texture2D textureMap, int scaleCell = 1, bool isRefresh = false, int offsetMapX = 0, int offsetMapY = 0) { string indErr = "start"; int sizeMap = 25; int sizeDraw = sizeMap * scaleCell; int addSize = scaleCell - 1; offsetMapX *= sizeMap; offsetMapY *= sizeMap; textureMap = new Texture2D(sizeDraw, sizeDraw); //textureMap = new Texture2D(sizeDraw, sizeDraw, UnityEngine.Experimental.Rendering.GraphicsFormat.RGBA_DXT5_SRGB, UnityEngine.Experimental.Rendering.TextureCreationFlags.MipChain); //textureMap = new Texture2D(sizeDraw, sizeDraw, UnityEngine.Experimental.Rendering.GraphicsFormat.RGBA_DXT5_UNorm, UnityEngine.Experimental.Rendering.TextureCreationFlags.MipChain); try { indErr = "1"; for (int y = 0; y < sizeMap; y++) { indErr = "2"; for (int x = 0; x < sizeMap; x++) { indErr = "3"; //isPerson = false; indErr = "5"; int mapX = x + offsetMapX; int mapY = y + offsetMapY; string nameField = Helper.GetNameField(mapX, mapY); indErr = "6"; SaveLoadData.TypePrefabs prefabType = SaveLoadData.TypePrefabs.PrefabField; //-------------- if (nameField == Storage.Instance.SelectFieldPosHero) { DrawTextureTo(scaleCell, indErr, addSize, textureMap, y, x, Storage.Map.textureHero); continue; } //-------------- indErr = "7"; if (!ReaderScene.IsGridDataFieldExist(nameField)) { DrawTextureTo(scaleCell, indErr, addSize, textureMap, y, x, prefabType); continue; } indErr = "9"; foreach (ModelNPC.ObjectData datObjItem in ReaderScene.GetObjectsDataFromGrid(nameField)) { indErr = "10"; //Debug.Log("++++++++ : " + datObjItem + " " + datObjItem.TagObject + " =" + datObjItem.TagObject.IsPerson()); if (datObjItem.TypePrefabName != SaveLoadData.TypePrefabs.PrefabUfo.ToString() && datObjItem.TypePrefabName != SaveLoadData.TypePrefabs.PrefabBoss.ToString() && datObjItem.TypePoolPrefab != PoolGameObjects.TypePoolPrefabs.PoolPerson) { indErr = "11"; prefabType = (SaveLoadData.TypePrefabs)Enum.Parse(typeof(SaveLoadData.TypePrefabs), datObjItem.TypePrefabName); if (datObjItem.TypePoolPrefab != PoolGameObjects.TypePoolPrefabs.PoolFloor) { break; } } } DrawTextureTo(scaleCell, indErr, addSize, textureMap, y, x, prefabType); indErr = "14"; } } } catch (Exception x) { Debug.Log("############# GetTextureMap: " + indErr + " " + x.Message); return(null); } //textureMap.Apply(); try { textureMap.Apply(); //textureMap.Apply(false, true); } catch (Exception x2) { Debug.Log("############# GetTextureMap: textureMap.Apply " + indErr + " " + x2.Message); return(null); } Sprite _spriteMap = null; try { //spriteMap = Sprite.Create(textureMap, new Rect(0.0f, 0.0f, textureMap.width, textureMap.height), new Vector2(0.5f, 0.5f), 100.0f); _spriteMap = Sprite.Create(textureMap, new Rect(0.0f, 0.0f, textureMap.width, textureMap.height), new Vector2(0.5f, 0.5f), 100.0f); } catch (Exception x2) { Debug.Log("############# GetTextureMap: Sprite.Create " + indErr + " " + x2.Message); return(null); } return(_spriteMap); }
public void CreateTextureMap(int scaleCell = 1, bool isRefresh = false) { string indErr = "start"; int sizeMap = Helper.HeightLevel; int sizeDraw = Helper.HeightLevel * scaleCell; int addSize = scaleCell - 1; //List<Color> colorsPersons = new List<Color>(); //List<SaveLoadData.TypePrefabs> listPersonsTypes = new List<SaveLoadData.TypePrefabs>(); //List<Texture2D> listPersonsPrefabTexture = new List<Texture2D>(); //List<Texture2D> listPersonsMapTexture = new List<Texture2D>(); if (!isRefresh) { CreateFrameMap(); } //Storage.Events.ListLogAdd = "Loaded map.." + DateTime.Now.ToLongTimeString(); bool isPerson = false; //Texture2D texture = new Texture2D(sizeDraw, sizeDraw); //textureMap = new Texture2D(sizeDraw, sizeDraw); //------- GRID MAP if (IsGridMap) { //var spriteMapC = Sprite.Create(textureMap, new Rect(0.0f, 0.0f, sizeDraw, sizeDraw), new Vector2(0.5f, 0.5f), 100.0f); //prefabFrameMap.GetComponent<SpriteRenderer>().sprite = spriteMapC; if (m_isGridMapLoaded) { BoxCollider2D colliderMapC = prefabFrameMap.GetComponent <BoxCollider2D>(); if (colliderMapC != null) { prefabFrameMap.GetComponent <BoxCollider2D>().size = new Vector3(sizeDraw / Helper.WidthLevel, sizeDraw / Helper.HeightLevel, 0); } } LoadGrid(); return; } //---------------------- //textureMap //textureMap = null; // textureMap = new Texture2D(sizeDraw, sizeDraw); //# fix mem 2. Texture2D textureMap = new Texture2D(sizeDraw, sizeDraw); try { indErr = "1"; for (int y = 0; y < sizeMap; y++) { indErr = "2"; for (int x = 0; x < sizeMap; x++) { indErr = "3"; isPerson = false; indErr = "5"; string nameField = Helper.GetNameField(x, y); indErr = "6"; SaveLoadData.TypePrefabs prefabType = SaveLoadData.TypePrefabs.PrefabField; indErr = "7"; if (!ReaderScene.IsGridDataFieldExist(nameField)) { DrawTextureTo(scaleCell, indErr, addSize, textureMap, y, x, prefabType); continue; } indErr = "9"; foreach (ModelNPC.ObjectData datObjItem in ReaderScene.GetObjectsDataFromGrid(nameField)) { indErr = "10"; //Debug.Log("++++++++ : " + datObjItem + " " + datObjItem.TagObject + " =" + datObjItem.TagObject.IsPerson()); if (datObjItem.TypePrefabName != SaveLoadData.TypePrefabs.PrefabUfo.ToString() && datObjItem.TypePrefabName != SaveLoadData.TypePrefabs.PrefabBoss.ToString()) { indErr = "11"; prefabType = (SaveLoadData.TypePrefabs)Enum.Parse(typeof(SaveLoadData.TypePrefabs), datObjItem.TypePrefabName); } else { indErr = "12"; ModelNPC.GameDataBoss bossObj = datObjItem as ModelNPC.GameDataBoss; if (bossObj != null) { indErr = ""; prefabType = SaveLoadData.TypePrefabs.PrefabBoss; ////+++DRAW PERSON --------------------------------- // //Texture2D personTexture = Storage.GridData.GetSpriteBoss(bossObj.Level).texture; // //listPersonsPrefabTexture.Add(personTexture); ////>>>> Texture2D personMapTexture_True = Storage.GridData.GetTextuteMapBoss(bossObj.Level); //Texture2D personMapTexture = TypeBoss.Instance.GetNameTextureMapForIndexLevel(bossObj.Level); //listPersonsMapTexture.Add(personMapTexture); //----------------------------------------------------- isPerson = true; } } } indErr = "14"; ////----- DRAW if (!isPerson) { DrawTextureTo(scaleCell, indErr, addSize, textureMap, y, x, prefabType); } //----------------- //else //{ indErr = "22"; //---- Draw Person //+++DRAW PERSON //for (int indMap2D = 0; indMap2D < listPersonsMapTexture.Count(); indMap2D++) //{ // Texture2D texturePerson = listPersonsMapTexture[indMap2D]; // DrawTextureTo(scaleCell, indErr, addSize, texture, y, x, texturePerson); //} } } } catch (Exception x) { Debug.Log("############# CreateTextureMap: " + indErr + " " + x.Message); return; } textureMap = DrawLocationHero(textureMap); textureMap.Apply(); //#fix mem var _spriteMap = Sprite.Create(textureMap, new Rect(0.0f, 0.0f, textureMap.width, textureMap.height), new Vector2(0.5f, 0.5f), 100.0f); prefabFrameMap.GetComponent <SpriteRenderer>().sprite = _spriteMap; BoxCollider2D colliderMap = prefabFrameMap.GetComponent <BoxCollider2D>(); if (colliderMap != null) { prefabFrameMap.GetComponent <BoxCollider2D>().size = new Vector3(textureMap.width / Helper.WidthLevel, textureMap.height / Helper.HeightLevel, 0); } }
private void SaveListObjectsToData(string p_nameField, bool isDestroy = false) { if (!ConfigDebug.IsTestDUBLICATE) { SaveListObjectsToData_Cache(p_nameField, isDestroy); return; } var _gamesObjectsReal = Storage.Instance.GamesObjectsReal; var _gridData = Storage.Instance.GridDataG; string indErr = "start"; if (!_gamesObjectsReal.ContainsKey(p_nameField)) { Debug.Log("################# SaveListObjectsToData GamesObjectsReal Not field=" + p_nameField); return; } indErr = "start"; List <GameObject> realObjects = _gamesObjectsReal[p_nameField]; if (_gridData == null) { Debug.Log("################# SaveListObjectsToData GridData is EMPTY"); return; } if (!_gridData.FieldsD.ContainsKey(p_nameField)) { Debug.Log("################# SaveListObjectsToData !GridData.FieldsD not field=" + p_nameField); return; } List <ModelNPC.ObjectData> dataObjects = ReaderScene.GetObjectsDataFromGrid(p_nameField); int indLast = -1; try { indErr = "1."; for (int i = realObjects.Count - 1; i >= 0; i--) //+FIX { indErr = "2."; GameObject gobj = realObjects[i]; if (gobj == null || !gobj.activeSelf) { Debug.Log("***************** SaveListObjectsToData DESTROY GameObject field:" + p_nameField + " ind:" + i); continue; } indErr = "3."; int indData = dataObjects.FindIndex(p => p.NameObject == gobj.name); if (indData == -1) { indData = 0; bool isFind = false; foreach (var itemObj in ReaderScene.GetObjectsDataFromGrid(p_nameField)) { Debug.Log("[" + p_nameField + "] :: " + itemObj.NameObject); if (itemObj.NameObject == gobj.name) { Debug.Log(")))))))))))))))))))) [" + p_nameField + "] :: " + itemObj.NameObject + " index: " + indData); isFind = true; break; } indData++; } if (!isFind) { Debug.Log("################# SaveListObjectsToData 1. DataObject (" + gobj.name + ") not Find in DATA field: " + p_nameField); int newIndex = Storage.Log.ConflictLog(gobj, p_nameField, dataObjects); if (newIndex == -1) { Debug.Log("################# SaveListObjectsToData 2. DataObject (" + gobj.name + ") not Find in DATA field: " + p_nameField); continue; } else { indData = newIndex; } } } ModelNPC.ObjectData dataObj = dataObjects[indData]; if (ConfigDebug.IsTestDUBLICATE) { if (dataObj == null) { Debug.Log("################# SaveListObjectsToData 2. DataObject (" + gobj.name + ") not Find in DATA field: " + p_nameField); Storage.Log.GetHistory(gobj.name); continue; } if (dataObj.NameObject != gobj.name) { Debug.Log("################# SaveListObjectsToData 2. DataObject (" + gobj.name + ") <> (" + gobj.name + ") Gobj)"); Storage.Log.GetHistory(gobj.name); continue; } } indErr = "3.7."; var posD = dataObj.Position; var posR = gobj.transform.position; //!!!! indErr = "6."; string posFieldOld = Helper.GetNameFieldPosit(posD.x, posD.y); indErr = "7."; string posFieldReal = Helper.GetNameFieldPosit(posR.x, posR.y); if (posFieldOld != p_nameField) { Debug.Log("###### SaveListObjectsToData [" + gobj.name + "] posFieldOld(" + posFieldOld + ") != (" + p_nameField + ")p_nameField "); } indErr = "8."; //--------------------------------------------- if (posFieldOld != posFieldReal) { if (isDestroy) { dataObj.IsReality = false; gobj.SetActive(false); } indErr = "10. posFieldReal=" + posFieldReal + " <> posFieldOld=" + posFieldOld + " " + gobj.name; if (ReaderScene.IsGridDataFieldExist(posFieldReal)) { int indValid = ReaderScene.GetObjectsDataFromGrid(posFieldReal).FindIndex(p => p.NameObject == gobj.name); if (indValid != -1) { Debug.Log("################# SaveListObjectsToData )))))))))))))) Find " + gobj.name + " in " + posFieldReal); Storage.Data.UpdateDataObect(p_nameField, indData, dataObj, "SaveListObjectsToData", posR); //@<<@ continue; } } indErr = "11."; ModelNPC.ObjectData dataObjNew = (ModelNPC.ObjectData)dataObj.Clone(); var name = Helper.CreateName(dataObj.TypePrefabName, posFieldReal, "", gobj.name); indErr = "12."; indLast = -1; //---------- FIX@@DUBLICATE REM# if (!ConfigDebug.IsTestDUBLICATE) { indLast = ReaderScene.GetObjectsDataFromGrid(posFieldOld).FindIndex(p => p.NameObject == gobj.name); Storage.Data.RemoveDataObjectInGrid(posFieldOld, indData, "SaveListObjectsToData"); } else //------------------------------------------------------------------------- { if (ReaderScene.IsGridDataFieldExist(posFieldOld)) { indLast = ReaderScene.GetObjectsDataFromGrid(posFieldOld).FindIndex(p => p.NameObject == gobj.name); // FIX@@DUBLICATE REM# ------------------- if (indLast == -1) { indLast = ReaderScene.GetObjectsDataFromGrid(posFieldOld).FindIndex(p => p.Id == dataObj.Id); } if (indLast != -1) { Storage.Data.RemoveDataObjectInGrid(posFieldOld, indLast, "SaveListObjectsToData"); ////@<<@ } else { Debug.Log("#### SaveListObjectsToData DUBLICATE ERROR - not index " + dataObj.Id + " and " + gobj.name); } //-------------------- } else { Debug.Log("#### SaveListObjectsToData DUBLICATE ERROR - not field " + posFieldOld); } } //-------------------- indErr = "14."; dataObj = dataObjNew; indErr = "15."; dataObj.NameObject = name; indErr = "17."; //@SAVE@ ------ RESAVE PROPERTIES if (dataObj.NameObject != gobj.name) { if (!isDestroy) { dataObj.UpdateGameObject(gobj); } indErr = "18."; dataObj.SetPosition(gobj.transform.position); indErr = "19."; dataObj.UpdateGameObjectAndID(gobj); } dataObj.IsReality = false; indErr = "20."; Storage.Data.AddDataObjectInGrid(dataObj, posFieldReal, "SaveListObjectsToData"); indErr = "21."; //RESAVE REAL +++++++++++++++++++++++++++++++++++++++++++++++++++++ if (!Storage.Instance.GamesObjectsReal.ContainsKey(posFieldReal)) { indErr = "22."; Storage.Data.AddNewFieldInRealObject(posFieldReal, "SaveListObjectsToData"); } indErr = "23."; if (!isDestroy) { Debug.Log("SaveListObjectsToData -- AddRealObject -- " + gobj.name + " : " + posFieldReal); Storage.Data.AddRealObject(gobj, posFieldReal, "SaveListObjectsToData"); } indErr = "24."; Storage.Data.RemoveRealObject(i, p_nameField, "SaveListObjectsToData"); //+++++++++++++++++++++++++++++++++++++++++++++++++++++ indErr = "25."; //@SAVE@ if (!isDestroy) { GameObjectUpdatePersonData(gobj); } } else { //update if (isDestroy) { dataObj.IsReality = false; } //@@@TEST Storage.Data.UpdateDataObect(p_nameField, indData, dataObj, "SaveListObjectsToData", posR); //@<<@ //------------------------------------ } } } catch (Exception x) { Debug.Log("################# ERROR SaveListObjectsToData : " + x.Message + " #" + indErr); } }