void TwitterFeedShowTweetState::Update(float dt) { if(m_toursCameraTransitionController.IsTransitionComplete() && !m_cameraTransitionComplete) { m_cameraTransitionComplete = true; if(m_isInterior) { m_interiorVisibilityUpdater.SetInteriorShouldDisplay(true); } rapidjson::Document jsonDocument; jsonDocument.SetObject(); jsonDocument.AddMember("pinImageUrl", m_pinImageUrl.c_str(), jsonDocument.GetAllocator()); jsonDocument.AddMember("pinContentUrl", m_pinContentUrl.c_str(), jsonDocument.GetAllocator()); jsonDocument.AddMember("isVideo", m_hasAttachedVideo, jsonDocument.GetAllocator()); rapidjson::StringBuffer buffer; rapidjson::Writer<rapidjson::StringBuffer> writer(buffer); jsonDocument.Accept(writer); ExampleApp::WorldPins::SdkModel::WorldPinFocusData worldPinFocusData(m_pinPlacename, buffer.GetString(), Search::TourTwitterVendorName); Eegeo::Space::LatLong location = m_pinLocation; const int twitterIconIndex = 13; const float heightOffsetAboveTerrainMetres = 0.f; m_pPinModel = m_worldPinsService.AddPin(Eegeo_NEW(TwitterFeedPinSelectionHandler)(m_stateModel, m_messageBus), NULL, worldPinFocusData, m_isInterior, m_worldPinInteriorData, location, twitterIconIndex, heightOffsetAboveTerrainMetres, WorldPins::SdkModel::WorldPinVisibility::TourPin); // Hide hovercard if no image to show if(m_pinImageUrl.empty()) { m_pPinModel->SetFocusable(false); } } else if(!m_interiorTransitionComplete && m_isInterior && m_interiorController.InteriorInScene()) { m_interiorTransitionComplete = true; m_interiorController.SetCurrentFloor(m_worldPinInteriorData.floor); } }
void InteriorWorldPinController::HandleMarkerAdded(const Eegeo::Resources::Interiors::Markers::InteriorMarkerModel& markerModel) { if(m_deferedRemovalMap.erase(markerModel.GetInteriorId().Value()) != 0) { return; } Eegeo_ASSERT(m_interiorIdToWorldPinMap.find(markerModel.GetInteriorId().Value()) == m_interiorIdToWorldPinMap.end(), "InteriorWorldPinController already has a pin with that Id"); const float heightOffsetMetres = 0.0f; const bool isInterior = false; const int iconIndex = 11; WorldPins::SdkModel::WorldPinInteriorData worldPinInteriorData; ExampleApp::WorldPins::SdkModel::WorldPinFocusData worldPinFocusData(markerModel.GetInteriorName(), markerModel.GetInteriorOwner(), Search::InteriorVendorName); Eegeo::Space::LatLong location = Eegeo::Space::LatLong::FromDegrees(markerModel.GetMarkerLatLongAltitude().GetLatitudeInDegrees(), markerModel.GetMarkerLatLongAltitude().GetLongitudeInDegrees()); InteriorWorldPinSelectionHandler* pSelectionHandler = Eegeo_NEW(InteriorWorldPinSelectionHandler)(markerModel.GetInteriorId(), m_interiorSelectionModel, m_cameraController, markerModel.GetMarkerLatLongAltitude().ToECEF(), *this); WorldPins::SdkModel::WorldPinItemModel* pItemModel = m_worldPinsService.AddPin(pSelectionHandler, NULL, worldPinFocusData, isInterior, worldPinInteriorData, location, iconIndex, heightOffsetMetres, WorldPins::SdkModel::WorldPinVisibility::World); m_interiorIdToWorldPinMap[markerModel.GetInteriorId().Value()] = pItemModel; }