Example #1
0
 public Icon(Icon other)
 {
     Id     = other.Id;
     Url    = other.Url;
     Size   = other.Size;
     Anchor = other.Anchor;
 }
Example #2
0
        ////////////////////////////////////////////
        #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;
 }