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); }); }
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); }
public ActivatedAttractionContext(LocationAttraction attraction) { Attraction = attraction; m_activationContexts = new Dictionary <string, ActiveResourceContainer <LocationAttractionActivator> >(); m_itemHandlers = new Dictionary <string, IAttractionItemHandler>(); }
public abstract void Deactivate(LocationAttraction attraction);
public abstract void Activate(LocationAttraction attraction, bool autoplay);
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); } } }
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); }