public static void SaveArItem(Transform arItem) { // Convert the AR item's Unity data into serializable format that can be saved ArItemData arItemData = new ArItemData(); arItemData.ItemType = (int)arItem.GetComponent <ArItem>().ItemType; QuaternionSerializable newQuat = new QuaternionSerializable(); newQuat.Fill(arItem.rotation); arItemData.Orientation = newQuat; var rawGpsPos = XRSessionManager.GetSession().LocalPositionToGps(arItem.position); GpsSerializable gpsPos = new GpsSerializable(); gpsPos.Height = rawGpsPos.Height; gpsPos.Latitude = rawGpsPos.Latitude; gpsPos.Longitude = rawGpsPos.Longitude; arItemData.GpsPos = gpsPos; // Create (almost) unique ID for this AR item string itemId = arItem.GetInstanceID().ToString() + "." + rawGpsPos.Latitude.ToString() + "." + rawGpsPos.Longitude.ToString(); arItemData.Id = itemId; arItem.GetComponent <ArItem> ().Id = itemId; Debug.Log("Added AR item to save data"); ArItemList.Add(arItemData); Save(); }
public static void LoadGameData() { for (int i = 0; i < ArItemList.Count; i++) { // Convert serialized data back into usaarItemDatable data objects ArItemData arItemData = ArItemList [i]; Quaternion quat = arItemData.Orientation.GetQuaternion; GpsSerializable gpsPos = arItemData.GpsPos; var gps = new GpsPosition { Latitude = gpsPos.Latitude, Longitude = gpsPos.Longitude, Height = gpsPos.Height }; Vector3 pos = XRSessionManager.GetSession().GpsToLocalPosition(gps); // GameObject spawnItem; // if (arItemData.ItemType == (int)ArItemType.tier1) // { // spawnItem = GameManager.Instance.Tier1ItemPrefab; // } // else if (arItemData.ItemType == (int)ArItemType.tier2) // { // spawnItem = GameManager.Instance.Tier2ItemPrefab; // } // else // { // spawnItem = GameManager.Instance.Tier3ItemPrefab; // } // //PlayerMapTouchController.Instance.SpawnSavedFlag (pos, quat, arItemData.Id); // GameObject arItem = Instantiate (PlayerMapTouchController.Instance.FlagPrefab, pos, quat); // arItem.GetComponent<ArItem> ().Id = arItemData.Id; } }
public static void LoadGameData() { for (int i = 0; i < ArItemList.Count; i++) { // Convert serialized data back into usable data objects ArItemData arItemData = ArItemList [i]; Quaternion quat = arItemData.Orientation.GetQuaternion; GpsSerializable gpsPos = arItemData.GpsPos; var gps = new GpsPosition { Latitude = gpsPos.Latitude, Longitude = gpsPos.Longitude, Height = gpsPos.Height }; Vector3 pos = XRSessionManager.GetSession().GpsToLocalPosition(gps); GameObject spawnItem; if (arItemData.ItemType == (int)ArItemType.level1) { spawnItem = GameManager.Instance.Level1ItemPrefab; } else if (arItemData.ItemType == (int)ArItemType.level2) { spawnItem = GameManager.Instance.Level2ItemPrefab; } else { spawnItem = GameManager.Instance.Level3ItemPrefab; } GameObject arItem = Instantiate(spawnItem, pos, quat); arItem.GetComponent <ArItem> ().Id = arItemData.Id; } }