/// <summary> /// WorldAnchor保存完了処理 /// </summary> /// <param name="self"></param> /// <param name="go"></param> /// <param name="success"></param> private void SavedEvent(WorldAnchorControl self, GameObject go, bool success) { // WorldAnchor保存完了処理 var activeCount = 0; for (var i = 0; i < worldAnchorObjects.Length; i++) { if (go.name == worldAnchorObjects[i].name && success == true) { isWorldAnchorObjects[i] = true; } if (isWorldAnchorObjects[i] == true) { activeCount++; } } if (activeCount > worldAnchorObjects.Length * StaticParameter.minAnchorLength) { // HubAnchor組み立て if (SavedHubAnchor != null) { SavedHubAnchor(); } self.SavedEvent -= SavedEvent; } }
void Start() { anchor = GetComponent <WorldAnchorControl>(); if (anchor == null) { anchor = gameObject.AddComponent <WorldAnchorControl>(); } Init(); }
/// <summary> /// Anchor情報のWorldAnchorからの取得 /// </summary> public void LoadAnchorData(WorldAnchorControl anchor, JsonHubAnchor json) { jsonHubAnchor = json; // WorldAnchorの読み込み anchor.LoadedEvent += loadedEvent; for (int i = 0; i < worldAnchorObjects.Length; i++) { isWorldAnchorObjects[i] = false; anchor.LoadWorldAnchor(worldAnchorObjects[i]); } }
/// <summary> /// RootHubとCenterの設置とworldanchorの設置処理 /// </summary> /// <param name="rootHub"></param> /// <param name="center"></param> /// <param name="anchor"></param> public void SetRootHubAndRootObjectTransform(Transform rootHub, Transform center, WorldAnchorControl anchor) { rootHubObject.transform.SetPositionAndRotation(rootHub.position, rootHub.rotation); centerObject.transform.SetPositionAndRotation(center.position, center.rotation); frontHubObject.transform.position = centerObject.transform.position + new Vector3(centerObject.transform.forward.x, 0, centerObject.transform.forward.z); centerObject.transform.LookAt(frontHubObject.transform, Vector3.up); var r = new System.Random(); for (var i = 0; i < worldAnchorObjects.Length; i++) { anchor.DeleteWorldAnchor(worldAnchorObjects[i]); var buf = centerObject.transform.position; buf.x += ((float)r.NextDouble() - 0.5f) * StaticParameter.anchorDistance * 2.0f; buf.z += ((float)r.NextDouble() - 0.5f) * StaticParameter.anchorDistance * 2.0f; worldAnchorObjects[i].transform.position = buf; isWorldAnchorObjects[i] = false; anchor.SavedEvent += SavedEvent; anchor.SaveWorldAnchor(worldAnchorObjects[i]); } }