public Icon(Icon other) { Id = other.Id; Url = other.Url; Size = other.Size; Anchor = other.Anchor; }
//////////////////////////////////////////// #region 创建、删除、本地存储Anchor相关内容 //////////////////////////////////////////// /// <summary> /// 将指定的物体设置为Anchor /// </summary> /// <param name="name"></param> /// <param name="obj"></param> public AnchorObjectInfo AddAnchorObject(string name, GameObject obj) { AnchorObjectInfo info = new AnchorObjectInfo(); info.anchorName = name; info.rootTrans = obj.transform; AnchorDefinition define = obj.GetComponent <AnchorDefinition>(); if (define == null) { define = obj.AddComponent <AnchorDefinition>(); define.anchorName = name; } info.definition = define; // 创建mark物体 GameObject markObj = PrefabUtils.CreateGameObjectToParent(anchorMarkRoot, markPrefab); AnchorMark mark = markObj.GetComponent <AnchorMark>(); mark.Init(name, info); mark.rootObjectTransform = obj.transform; // 创建指引箭头 GameObject arrowObj = PrefabUtils.CreateGameObjectToParent(gameObject, arrowPrefab); info.arrowTrans = arrowObj.transform; arrowObj.SetActive(false); // 设置位置 Vector3 originPos = obj.transform.position; markObj.transform.position = originPos; info.mark = mark; AddAnchor(info); //info.mark.followRoot = true; //info.FollowRootObject(); //mark.gameObject.SetActive(false); anchorObjectList.Add(info); Debug.Log("Add anchor [" + name + "] to obj [" + obj.name + "]"); return(info); }
/// <summary> /// 初始化,仅设置信息,并不投入使用 /// </summary> protected override void _Init() { appId = MEHoloEntrance.Instance.AppID; roomId = Network.RoomManager.Instance.GetCurrentRoom(); Utility.AppConfig config = Utility.AppConfig.Instance; config.LoadConfig(MEHoloConstant.NetworkConfigFile); serverHost = Utility.AppConfig.Instance.GetConfigByFileName(MEHoloConstant.NetworkConfigFile, "Server_Host", "127.0.0.1"); spatialMappingManager = SpatialMappingManager.Instance; meshObserver = spatialMappingManager.gameObject.GetComponent <MeshSurfaceObserver>(); inputManager = MultiInputManager.Instance; anchorShared = gameObject.AddComponent <AnchorShared>(); anchorShared.Init(); // 设置所有的anchor信息 AnchorDefinition[] defines = GameObject.FindObjectsOfType <AnchorDefinition>(); for (int i = 0; i < defines.Length; i++) { AnchorDefinition define = defines[i]; GameObject obj = define.gameObject; int find = anchorRootList.IndexOf(obj); if (find >= 0) { anchorNameList.RemoveAt(find); anchorRootList.RemoveAt(find); } string aName = define.anchorName; if (string.IsNullOrEmpty(aName)) { aName = obj.name; define.anchorName = obj.name; } AddAnchorObject(aName, obj); } // 兼容老数据 for (int i = 0; i < anchorNameList.Count; i++) { if (anchorRootList[i] != null) { AddAnchorObject(anchorNameList[i], anchorRootList[i]); Debug.Log("Fit old anchor [" + anchorNameList[i] + "]"); } } FitCamera(); /* * DataMesh.AR.Common.FollowMainCamera follow = markCameraObj.AddComponent<DataMesh.AR.Common.FollowMainCamera>(); * follow.positionOffset = Vector3.zero; * follow.rotationOffset = Vector3.zero; */ markCamera.gameObject.SetActive(false); Debug.Log("Anchor count=" + anchorObjectList.Count); }
void OnEnable() { define = (AnchorDefinition)target; }