示例#1
0
 public override void Deactivate(LocationAttraction attraction)
 {
     // We're not removing per attraction. This could lead to a bug
     // where you activate this item for multiple attractions, then
     // deactivate one attraction. The rest of the items would
     // disappear as well. We'd need to start tracking specific
     // instanceIds for each handler/attraction, but I don't think
     // it's worthwhile at this stage.
     ThreadHelper.Instance.CallOnMainThread(() =>
     {
         ARWorld.Instance.RemoveLocationAugmented3dAsset(ActivationContext.InstanceId);
     });
 }
示例#2
0
        public override void Activate(LocationAttraction attraction, bool autoplay)
        {
            ThreadHelper.Instance.CallOnMainThread(() =>
            {
                // Use attraction locations unless the item has its own
                var locations = Item.Locations ?? attraction.Locations;

                if (locations != null)
                {
                    ARWorld.Instance.AddLocationAugmented3dAsset(ActivationContext, Item, locations);
                }
            });
        }
        public override void Activate(LocationAttraction attraction, bool autoplay)
        {
            // Activate (with autoplay)
            if (autoplay && Item != null)
            {
                var playable = new PlayableContent
                {
                    Content = Item,
                    Route   = PlayableContentRoute.Screen
                };

                PlayableContentHandler.Instance.Play(ActivationContext, playable);
            }
        }
 public override void Deactivate(LocationAttraction attraction)
 {
     // No-op?
     // PlayableContentHandler.Instance.StopPlaying(ActivationContext);
 }
示例#5
0
 public ActivatedAttractionContext(LocationAttraction attraction)
 {
     Attraction           = attraction;
     m_activationContexts = new Dictionary <string, ActiveResourceContainer <LocationAttractionActivator> >();
     m_itemHandlers       = new Dictionary <string, IAttractionItemHandler>();
 }
示例#6
0
 public abstract void Deactivate(LocationAttraction attraction);
示例#7
0
 public abstract void Activate(LocationAttraction attraction, bool autoplay);
示例#8
0
        private void DeactivateAttraction(ResourceActivationContext ctxt, LocationAttractionActivator activator, LocationAttraction attraction)
        {
            ActivatedAttractionContext atctxt = null;

            if (m_atrractionActivators.TryGetValue(attraction.Id, out atctxt))
            {
                atctxt.RemoveActivator(ctxt.InstanceId);

                if (!atctxt.IsActive)
                {
                    m_atrractionActivators.Remove(attraction.Id);

                    RemoveAnnotation(atctxt.Attraction.Id);
                }

                var handlers = atctxt.ItemHandlers.ToArray();

                foreach (var handler in handlers)
                {
                    DetachHandlerFromAttraction(atctxt, handler);
                }
            }
        }
示例#9
0
        private void ActivateAttraction(ResourceActivationContext ctxt, LocationAttractionActivator activator, LocationAttraction attraction)
        {
            ActivatedAttractionContext atctxt = null;

            if (!m_atrractionActivators.TryGetValue(attraction.Id, out atctxt))
            {
                atctxt = new ActivatedAttractionContext(attraction);

                m_atrractionActivators.Add(attraction.Id, atctxt);

                var annotation = new MapAnnotation <ActivatedAttractionContext>(attraction.Locations.First(), atctxt);

                AddAnnotation(attraction.Id, annotation);

                var handlers = m_attractionItemHandlers[attraction.Id];

                if (handlers != null)
                {
                    foreach (var handler in handlers)
                    {
                        AttachHandlerToAttraction(atctxt, handler);
                    }
                }
            }

            atctxt.AddActivator(ctxt, activator);
        }