public void LoadPlaneList(JToken mapMetadata) { //placenoteARAnchorManager = new PlacenoteARAnchorManager (); foreach (var planeGo in loadedPlaneList) { GameObject.Destroy(planeGo); } loadedPlaneList.Clear(); if (mapMetadata is JObject && mapMetadata ["planes"] is JObject) { PlaneMeshList planeList = mapMetadata ["planes"].ToObject <PlaneMeshList> (); if (planeList == null) { Debug.Log("Empty list of planes in metadata"); return; } Debug.Log("Loading + " + planeList.meshList.Length.ToString() + " planes"); foreach (var plane in planeList.meshList) { GameObject go = PlacenotePlaneUtility.CreatePlaneInScene(plane); go.AddComponent <DontDestroyOnLoad> (); //this is so these GOs persist across scene loads loadedPlaneList.AddLast(go); } placenoteARAnchorManager.Destroy(); //stop detecting new planes } else { Debug.Log("No plane metadata available"); return; } }
public JObject GetCurrentPlaneList() { LinkedList <ARPlaneAnchorGameObject> list = placenoteARAnchorManager.GetCurrentPlaneAnchors(); PlaneMeshList saveList = new PlaneMeshList(); saveList.meshList = new ARPlaneMesh[list.Count]; int planeNum = 0; Debug.Log("Creating list of + " + list.Count.ToString() + " planes"); foreach (var plane in list) { ARPlaneMesh planeSaved = new ARPlaneMesh(); planeSaved.transform = plane.planeAnchor.transform; planeSaved.center = plane.planeAnchor.center; planeSaved.extent = plane.planeAnchor.extent; if (UnityARSessionNativeInterface.IsARKit_1_5_Supported()) { planeSaved.vertices = plane.planeAnchor.planeGeometry.vertices; planeSaved.texture = plane.planeAnchor.planeGeometry.textureCoordinates; planeSaved.trIndices = plane.planeAnchor.planeGeometry.triangleIndices; planeSaved.boundaryVertices = plane.planeAnchor.planeGeometry.boundaryVertices; } planeSaved.id = plane.planeAnchor.identifier; saveList.meshList [planeNum] = planeSaved; planeNum++; } return(JObject.FromObject(saveList)); }