Пример #1
0
        void AddCollectibleToObject(ARWorldObject worldObj)
        {
            var collectible = FirstCollectible;

            if (!Task.IsHidden)
            {
                var text = IsTakeTask ?
                           Localize.GetLocalizedString("ARAnnotation.TapToTake", "Tap to Collect") :
                           (IsGiveTask ? Localize.GetLocalizedString("ARAnnotation.TapToPut", "Tap to Put") : null);

                ARAnnotationViewController.Instance.AddTapAnnotation(worldObj, text, () =>
                {
                    if (IsTakeTask)
                    {
                        CollectItemFromObject(worldObj);
                    }
                    else
                    {
                    }
                });

                if (collectible != null)
                {
                    ARAnnotationViewController.Instance.AddCollectibleAnnotation(worldObj, collectible, () =>
                    {
                        CollectItemFromObject(worldObj);
                    });
                }
            }

            worldObj.Clicked += worldObj_Selected;
        }
 public void Action(LocationTaskDriver driver, ARWorldObject worldObject)
 {
     if (OnAction != null)
     {
         OnAction.Invoke();
     }
 }
Пример #3
0
 public void Action(ARCatcherMinigameDriver driver, ARWorldObject worldObject)
 {
     if (OnAction != null)
     {
         OnAction.Invoke();
     }
 }
        public void SetFocus(LocationTaskDriver driver, ARWorldObject worldObject, bool focus)
        {
            if (worldObject != null)
            {
                var task = driver.Task;

                if (focus)
                {
                    m_guideData = new ARGuideData
                    {
                        Instructions = task.Title,
                        Range        = task.ActionRange,
                        WorldObject  = worldObject
                    };

                    ARViewManager.Instance.SetGuide(m_guideData);

                    var text = driver.IsTakeTask ?
                               Localize.GetLocalizedString("ARAnnotation.TapToTake", "Tap to Collect") :
                               (driver.IsGiveTask ? Localize.GetLocalizedString("ARAnnotation.TapToPut", "Tap to Put") : null);

                    ARAnnotationViewController.Instance.AddTapAnnotation(worldObject, text);
                }
                else
                {
                    if (m_guideData != null)
                    {
                        ARViewManager.Instance.ClearGuide(m_guideData);
                    }
                    ARAnnotationViewController.Instance.RemoveTapAnnotation(worldObject);
                }
            }
        }
        public void HideTask(LocationTaskDriver driver, ARWorldObject worldObject)
        {
            if (m_guideData != null)
            {
                ARViewManager.Instance.ClearGuide(m_guideData);
            }

            ARAnnotationViewController.Instance.RemoveTapAnnotation(worldObject);
        }
Пример #6
0
        public void HideTask(ARCatcherMinigameDriver minigameDriver, ARWorldObject worldObject)
        {
            if (m_guideData != null)
            {
                ARViewManager.Instance.ClearGuide(m_guideData);
            }

            ARAnnotationViewController.Instance.RemoveTapAnnotation(worldObject);
        }
Пример #7
0
        void AddTapAnnotation(ARWorldObject worldObj)
        {
            if (!Task.IsHidden)
            {
                ARAnnotationViewController.Instance.AddTapAnnotation(worldObj);

                worldObj.Clicked += worldObj_Selected;
            }
        }
Пример #8
0
 protected virtual void ObjectSelected(ARWorldObject obj)
 {
     if (TapObjectToCatch &&
         obj == m_worldObj &&
         IsInTarget)
     {
         CatchObject(m_worldObj);
     }
 }
Пример #9
0
        void CollectItemFromObject(ARWorldObject obj)
        {
            obj.Selected -= worldObj_Selected;

            RemoveCollectiblesFromObject(obj);

            ARAnnotationViewController.Instance.RemoveTapAnnotation(obj);

            Action();
        }
Пример #10
0
        void AddTapAnnotation(ARWorldObject worldObj)
        {
            if (!Task.IsHidden)
            {
                ARAnnotationViewController.Instance.AddTapAnnotation(worldObj, null, () =>
                {
                    CollectItemFromObject(worldObj);
                });

                worldObj.Clicked += worldObj_Selected;
            }
        }
Пример #11
0
        void RemoveCollectiblesFromObject(ARWorldObject worldObj)
        {
            ARAnnotationViewController.Instance.RemoveTapAnnotation(worldObj);

            var collectible = FirstCollectible;

            worldObj.Selected -= worldObj_Selected;

            if (collectible != null)
            {
                ARAnnotationViewController.Instance.RemoveCollectibleAnnotation(worldObj, collectible);
            }
        }
Пример #12
0
        public void RemoveCollectibleAnnotation(ARWorldObject worldObject, Collectible collectible)
        {
            ARAnnotationContainer container = null;

            if (m_containers.TryGetValue(worldObject, out container))
            {
                container.RemoveCollectibleAnnotation(collectible);

                if (!container.HasAnnotations)
                {
                    RemoveContainer(worldObject, container);
                }
            }
        }
Пример #13
0
        internal void RemoveTapAnnotation(ARWorldObject worldObject)
        {
            ARAnnotationContainer container = null;

            if (m_containers.TryGetValue(worldObject, out container))
            {
                container.RemoveTapAnnotation();

                if (!container.HasAnnotations)
                {
                    RemoveContainer(worldObject, container);
                }
            }
        }
Пример #14
0
        ARAnnotationContainer GetOrCreateContainer(ARWorldObject worldObject)
        {
            ARAnnotationContainer container = null;

            if (!m_containers.TryGetValue(worldObject, out container))
            {
                container = Instantiate(ContainerPrefab);
                container.gameObject.transform.SetParent(this.transform, false);

                PositionContainer(worldObject, container);

                m_containers[worldObject] = container;
            }

            return(container);
        }
Пример #15
0
        public override ARWorldObject GetNearestWorldObject()
        {
            ARWorldObject worldObj = null;

            if (ForegroundPositionService.Instance.HasLocationData)
            {
                var coords = ForegroundPositionService.Instance.Position;

                worldObj = m_worldObjects
                           .OfType <LocationARWorldObject>()
                           .OrderBy(o => coords.GetDistanceFrom(o.Location.Coordinates))
                           .FirstOrDefault();
            }

            if (worldObj == null)
            {
                worldObj = m_worldObjects.FirstOrDefault();
            }

            return(worldObj);
        }
Пример #16
0
        private void PositionContainer(ARWorldObject worldObject, ARAnnotationContainer container)
        {
            if (worldObject.IsVisible && worldObject.GameObject)
            {
                container.gameObject.SetActive(true);

                var bounds = ARWorld.Instance.GetScreenBounds(worldObject);

                var ctlRect = (RectTransform)this.transform;
                var rect    = (RectTransform)container.transform;

                //var x = Screen.width * pos.x - (Screen.width / 2);
                //var y = Screen.height * pos.y - (Screen.height / 2);

                var minx = container.MinSize.x / ctlRect.rect.width;
                var miny = container.MinSize.y / ctlRect.rect.height;

                Vector2 max = bounds.max;
                Vector2 min = bounds.min;

                var size = bounds.max - bounds.min;

                if (size.x < minx || size.y < miny)
                {
                    bounds.size = new Vector2(Mathf.Max(size.x, minx), Mathf.Max(size.y, miny));
                }

                rect.anchorMax = bounds.max;
                rect.anchorMin = bounds.min;
                rect.sizeDelta = Vector3.zero;

                //rect.anchorMin = new Vector2(pos.x, pos.y);
                //rect.anchoredPosition = new Vector2(0, 0);
            }
            else
            {
                container.gameObject.SetActive(false);
            }
        }
Пример #17
0
        public void AddCollectibleAnnotation(ARWorldObject worldObject, Collectible collectible, Action onClick = null)
        {
            var container = GetOrCreateContainer(worldObject);

            container.AddCollectibleAnnotation(collectible, onClick);
        }
Пример #18
0
 public void Complete(ARCatcherMinigameDriver driver, ARWorldObject worldObject)
 {
     ARViewManager.Instance.SetTaskComplete(driver.TaskDriver);
 }
Пример #19
0
 private void RemoveContainer(ARWorldObject worldObject, ARAnnotationContainer container)
 {
     m_containers.Remove(worldObject);
     Destroy(container.gameObject);
 }
Пример #20
0
        void RemoveTapAnnotation(ARWorldObject worldObj)
        {
            ARAnnotationViewController.Instance.RemoveTapAnnotation(worldObj);

            worldObj.Clicked -= worldObj_Selected;
        }
Пример #21
0
        public void AddTapAnnotation(ARWorldObject worldObject, string text = null, Action onClick = null)
        {
            var container = GetOrCreateContainer(worldObject);

            container.AddTapAnnotation(text, onClick);
        }
 public void Complete(LocationTaskDriver driver, ARWorldObject worldObject)
 {
     ARViewManager.Instance.SetTaskComplete(driver);
 }
 public void ShowTask(LocationTaskDriver driver, ARWorldObject worldObject)
 {
 }