private bool createRemotePlayer(DataEntityHandle remotePlayerHandle, bool attemptSpawn = true) { if (!dataEntityCollection.HasComponent <GameObjectReferenceData>(remotePlayerHandle)) { dataEntityCollection.AddComponent <GameObjectReferenceData>(remotePlayerHandle); } if (!dataEntityCollection.HasComponent <AirBubbleData>(remotePlayerHandle)) { dataEntityCollection.AddComponent <AirBubbleData>(remotePlayerHandle); } PositionData component = dataEntityCollection.GetComponent <PositionData>(remotePlayerHandle); RemotePlayerData component2 = dataEntityCollection.GetComponent <RemotePlayerData>(remotePlayerHandle); component2.PlayerRemoved += onPlayerRemoved; playerRemovedListeners.Add(component2); PresenceData component3 = dataEntityCollection.GetComponent <PresenceData>(remotePlayerHandle); if (component3 != null) { component3.PresenceDataUpdated += onPresenceDataUpdated; } if (!dataEntityCollection.HasComponent <LODRequestReference>(remotePlayerHandle)) { LODRequestData requestData = new LODRequestData(LODSystem.REMOTE_PLAYER, remotePlayerHandle, component); requestData.OnGameObjectGeneratedEvent += onLODGameObjectGenerated; requestData.OnGameObjectRevokedEvent += onLODGameObjectRevoked; LODRequest request = Service.Get <LODService>().Request(requestData, attemptSpawn); dataEntityCollection.AddComponent <LODRequestReference>(remotePlayerHandle).Request = request; } return(false); }
private void getRoomPopulations() { PresenceData component = Service.Get <CPDataEntityCollection>().GetComponent <PresenceData>(Service.Get <CPDataEntityCollection>().LocalPlayerHandle); Service.Get <EventDispatcher>().AddListener <WorldServiceEvents.RoomPopulationReceivedEvent>(onRoomPopulationReceived); Service.Get <INetworkServicesManager>().WorldService.GetRoomPopulation(component.World, Service.Get <Localizer>().LanguageString); }
private void logStoreVisit() { CPDataEntityCollection cPDataEntityCollection = Service.Get <CPDataEntityCollection>(); PresenceData component = cPDataEntityCollection.GetComponent <PresenceData>(cPDataEntityCollection.LocalPlayerHandle); Service.Get <ICPSwrveService>().Action("game.disney_store_visit", component.Room); }
/// <summary> /// Send Inventory message. Required at least once before sending data /// </summary> /// <returns></returns> public async Task SendInventoryMessage(IEnumerable <Sensor> sensors) { var payload = new Inventory(Node, sensors).ToJson(); // Publish DeviceNodeInventory var inventoryMessage = new MqttApplicationMessageBuilder() .WithTopic($"{ClientId}/publish/DeviceProfile/Status/DeviceNodeInventory") .WithPayload(payload) .WithExactlyOnceQoS() .WithRetainFlag() .Build(); await mqttClient.PublishAsync(inventoryMessage); // Publish DeviceNodePresence payload = new PresenceData(sensors.Select(s => new InventoryItem(Node, s.Id, null, 1))).ToJson(); var presenceMessage = new MqttApplicationMessageBuilder() .WithTopic($"{ClientId}/publish/DeviceProfile/Status/DeviceNodePresence") .WithPayload(payload) .WithExactlyOnceQoS() .WithRetainFlag() .Build(); await mqttClient.PublishAsync(presenceMessage); }
public bool ReportAgent(UUID sessionID, UUID regionID) { try { PresenceData presence = m_Database.Get(sessionID); bool success; if (presence == null) { success = false; } else { success = m_Database.ReportAgent(sessionID, regionID); } m_log.DebugFormat("[PRESENCE SERVICE]: ReportAgent{0}: session {1}, user {2}, region {3}. Previously: {4}", success ? "" : " failed", sessionID, (presence == null) ? null : presence.UserID, regionID, (presence == null) ? "not logged-in" : "region " + presence.RegionID); return(success); } catch (Exception e) { m_log.Debug(string.Format("[PRESENCE SERVICE]: ReportAgent for session {0} threw exception ", sessionID), e); return(false); } }
public bool LoginAgent(string userID, UUID sessionID, UUID secureSessionID) { PresenceData prevUser = GetUser(userID); if (!m_allowDuplicatePresences && (prevUser != null)) { m_Database.Delete("UserID", userID.ToString()); } PresenceData data = new PresenceData(); data.UserID = userID; data.RegionID = UUID.Zero; data.SessionID = sessionID; data.Data = new Dictionary <string, string>(); data.Data["SecureSessionID"] = secureSessionID.ToString(); m_Database.Store(data); string prevUserStr = ""; if (prevUser != null) { prevUserStr = string.Format(". This user was already logged-in: session {0}, region {1}", prevUser.SessionID, prevUser.RegionID); } m_log.DebugFormat("[PRESENCE SERVICE]: LoginAgent: session {0}, user {1}, region {2}, secure session {3}{4}", data.SessionID, data.UserID, data.RegionID, secureSessionID, prevUserStr); return(true); }
public static PresenceData GetPresenceData() { PresenceData presenceData = PresenceData.GetDefaultData(); string jsonPath = GetPresenceFilePath(); try { using (StreamReader reader = new StreamReader(jsonPath)) { string json = reader.ReadToEnd(); presenceData = json.FromJson <PresenceData>(); if (presenceData == null || presenceData.status == null) { throw new JsonReaderException(); } } } catch (Exception exception) { if (exception is FileNotFoundException || exception is JsonReaderException) { presenceData = PresenceData.GetDefaultData(); using (TextWriter writer = new StreamWriter(jsonPath, false)) { writer.Write(presenceData.ToJson()); } } } return(presenceData); }
public bool LoginAgent(string userID, UUID sessionID, UUID secureSessionID) { //PresenceData[] d = m_Database.Get("UserID", userID); //m_Database.Get("UserID", userID); if (!m_allowDuplicatePresences) { m_Database.Delete("UserID", userID.ToString()); } PresenceData data = new PresenceData(); data.UserID = userID; data.RegionID = UUID.Zero; data.SessionID = sessionID; data.Data = new Dictionary <string, string>(); data.Data["SecureSessionID"] = secureSessionID.ToString(); m_Database.Store(data); m_log.DebugFormat("[PRESENCE SERVICE]: LoginAgent {0} with session {1} and ssession {2}", userID, sessionID, secureSessionID); return(true); }
private bool isLocalAndRemoteInTheSameRoom(PresenceData remotePresenceData, PresenceData localPresenceData) { if (localPresenceData.IsNotInCurrentRoomsScene) { return(false); } return((!localPresenceData.IsInInstancedRoom && remotePresenceData.Room == localPresenceData.Room && remotePresenceData.World == localPresenceData.World) || (localPresenceData.IsInInstancedRoom && dataEntityCollection.HasComponent <GameObjectReferenceData>(Handle))); }
private void onTemporaryHeadStatusUpdated(PresenceData presenceData) { HeadStatusView component = base.gameObject.GetComponent <HeadStatusView>(); if (component != null) { component.LoadParticlePrefab(presenceData.TemporaryHeadStatusType); } }
private bool onPresenceDataAdded(DataEntityEvents.ComponentAddedEvent <PresenceData> evt) { if (evt.Handle == Handle) { presenceData = evt.Component; presenceData.PresenceDataUpdated += onPresenceDataUpdated; } return(false); }
public bool Store(PresenceData data) { if (Instance != this) { return(Instance.Store(data)); } m_presenceData[data.SessionID] = data; return(true); }
private void Start() { CPDataEntityCollection cPDataEntityCollection = Service.Get <CPDataEntityCollection>(); PresenceData component = cPDataEntityCollection.GetComponent <PresenceData>(cPDataEntityCollection.LocalPlayerHandle); if (component == null || string.IsNullOrEmpty(component.World)) { base.gameObject.SetActive(value: false); } }
public void PresenceDataUpdated(FriendStatus friendStatus, PresenceData presenceData) { playerWorld = presenceData.World; if (friendStatus == FriendStatus.Friend) { bool flag = isPresenceDataValidForJump(presenceData); JumpToFriendButton.SetActive(flag); InactiveJumpToFriendButton.SetActive(!flag); } }
public void Start() { CPDataEntityCollection cPDataEntityCollection = Service.Get <CPDataEntityCollection>(); PresenceData component = cPDataEntityCollection.GetComponent <PresenceData>(cPDataEntityCollection.LocalPlayerHandle); if (component != null) { GetComponent <Text>().text = $"{component.World} "; } }
public bool Store(PresenceData data) { if (Instance != this) return Instance.Store(data); // m_log.DebugFormat("[NULL PRESENCE DATA]: Storing presence {0}", data.UserID); // Console.WriteLine("HOME for " + data.UserID + " is " + (data.Data.ContainsKey("HomeRegionID") ? data.Data["HomeRegionID"] : "Not found")); m_presenceData[data.SessionID] = data; return true; }
public void OnPresenceCallback(string in_message) { PresenceData presenceData = new PresenceData(); GFriendsManager.Instance.ParsePresenceCallback(in_message, ref presenceData); if (presenceData.ProfileId.Length > 0) { // Refresh our friend's online status UpdateFriendOnlineStatus(m_friendsListItem, presenceData); } }
private void logClaimBI() { PresenceData component = Service.Get <CPDataEntityCollection>().GetComponent <PresenceData>(Service.Get <CPDataEntityCollection>().LocalPlayerHandle); string tier = ""; if (component != null) { tier = component.World; } Service.Get <ICPSwrveService>().Action("daily_task." + task.Definition.Group.ToString().ToLower() + ".claim_daily_reward", task.Definition.name, tier); }
private bool UpdateFriendOnlineStatus(List <FriendsListItem> in_listItem, PresenceData in_presenceData) { for (int i = 0; i < in_listItem.Count; ++i) { if (in_listItem[i].ProfileId.Equals(in_presenceData.ProfileId)) { in_listItem[i].UpdateOnlineStatus(in_presenceData); return(true); } } return(false); }
public static void ClaimDailyTaskReward(Task dailyTask) { Service.Get <DailyChallengeService>().ClaimTaskReward(dailyTask); PresenceData component = Service.Get <CPDataEntityCollection>().GetComponent <PresenceData>(Service.Get <CPDataEntityCollection>().LocalPlayerHandle); string tier = ""; if (component != null) { tier = component.World; } Service.Get <ICPSwrveService>().Action("daily_task." + dailyTask.Definition.Group.ToString().ToLower() + ".claim_daily_reward", dailyTask.Definition.name, tier); Service.Get <EventDispatcher>().DispatchEvent(new TaskEvents.TaskRewardClaimed(dailyTask)); }
public bool Store(PresenceData data) { if (Instance != this) { return(Instance.Store(data)); } // m_log.DebugFormat("[NULL PRESENCE DATA]: Storing presence {0}", data.UserID); // Console.WriteLine("HOME for " + data.UserID + " is " + (data.Data.ContainsKey("HomeRegionID") ? data.Data["HomeRegionID"] : "Not found")); m_presenceData[data.SessionID] = data; return(true); }
private async void CyclePresence() { m_currentPresenceId = (m_currentPresenceId + 1) % m_presenceIds.Length; try { PresenceData data = new PresenceData(m_context.AppConfig.ServiceConfigurationId, m_presenceIds[m_currentPresenceId]); await m_context.PresenceService.SetPresenceAsync(true, data); } catch (Exception ex) { LogLine("CyclePresence failed: " + ex.ToString()); } }
private void setPresenceData() { CPDataEntityCollection cPDataEntityCollection = Service.Get <CPDataEntityCollection>(); localPresenceData = cPDataEntityCollection.GetComponent <PresenceData>(cPDataEntityCollection.LocalPlayerHandle); if (localPresenceData != null) { localPresenceData.IsNotInCurrentRoomsScene = true; } else { Log.LogError(this, "Unable to set IsNotInCurrentRoomsScene. Jump to friends may be broken."); } }
private bool isPresenceDataValidForJump(PresenceData remotePresenceData) { if (!string.IsNullOrEmpty(remotePresenceData.World) && !string.IsNullOrEmpty(remotePresenceData.Room)) { ZoneDefinition zone = Service.Get <ZoneTransitionService>().GetZone(remotePresenceData.Room); if (zone != null) { CPDataEntityCollection cPDataEntityCollection = Service.Get <CPDataEntityCollection>(); if (cPDataEntityCollection.TryGetComponent <PresenceData>(cPDataEntityCollection.LocalPlayerHandle, out var component) && component.ContentIdentifier == remotePresenceData.ContentIdentifier) { return(!zone.IsQuestOnly && (zone.Type != ZoneDefinition.ZoneType.Igloo || remotePresenceData.IsInInstancedRoom)); } } } return(false); }
public PresenceInfo GetAgent(UUID sessionID) { PresenceInfo ret = new PresenceInfo(); PresenceData data = m_Database.Get(sessionID); if (data == null) { return(null); } ret.UserID = data.UserID; ret.RegionID = data.RegionID; return(ret); }
private void onPresenceDataUpdated(PresenceData presenceData) { DataEntityHandle entityByComponent = dataEntityCollection.GetEntityByComponent(presenceData); if (!entityByComponent.IsNull && dataEntityCollection.TryGetComponent(entityByComponent, out LODRequestReference component)) { if (presenceData.AFKState.Type == AwayFromKeyboardStateType.AwayFromWorld) { Service.Get <LODService>().PauseRequest(component.Request); } else if (component.Request.IsPaused) { Service.Get <LODService>().UnpauseRequest(component.Request); } } }
private void setUpPresenceData(PresenceData presenceData) { DetailsController.PresenceDataUpdated(FriendStatus, presenceData); Localizer localizer = Service.Get <Localizer>(); bool flag = false; ZoneDefinition zoneDefinition = null; if (presenceData.IsInInstancedRoom && !string.IsNullOrEmpty(presenceData.InstanceRoom.name)) { zoneDefinition = Service.Get <ZoneTransitionService>().GetZone(presenceData.InstanceRoom.name); } else if (!presenceData.IsInInstancedRoom && !string.IsNullOrEmpty(presenceData.Room)) { zoneDefinition = Service.Get <ZoneTransitionService>().GetZone(presenceData.Room); } if (zoneDefinition != null) { OnlineSpriteSelector.IsOn = true; flag = true; bool flag2 = false; if (dataEntityCollection.TryGetComponent <PresenceData>(dataEntityCollection.LocalPlayerHandle, out var component)) { flag2 = component.ContentIdentifier == presenceData.ContentIdentifier; } if (flag2) { if (zoneDefinition.Type == ZoneDefinition.ZoneType.Igloo) { StatusText.text = localizer.GetTokenTranslation("PlayerCard.FriendStatus.OwnIgloo"); } else { StatusText.text = localizer.GetTokenTranslationFormatted("PlayerCard.InZoneText", zoneDefinition.ZoneToken); } } else { StatusText.text = localizer.GetTokenTranslation("GlobalUI.JumpToFriend.Disabled"); } } if (!flag) { StatusText.text = localizer.GetTokenTranslation("PlayerCard.OfflineText"); OnlineSpriteSelector.IsOn = false; } StatusText.gameObject.SetActive(value: true); }
public bool LoginAgent(string userID, UUID sessionID, UUID secureSessionID) { bool inCache = ByUserCache.TryGetValue(userID, out PresenceData prevUser); if (!inCache) { PresenceData[] dataprv = m_Database.Get("UserID", userID); if (dataprv.Length > 0) { prevUser = dataprv[0]; } } if (!m_allowDuplicatePresences && (prevUser != null)) { m_Database.Delete("UserID", userID.ToString()); if (inCache) { BySessionCache.Remove(prevUser.SessionID); ByUserCache.Remove(userID); } } PresenceData data = new PresenceData(); data.UserID = userID; data.RegionID = UUID.Zero; data.SessionID = sessionID; data.Data = new Dictionary <string, string>(); data.Data["SecureSessionID"] = secureSessionID.ToString(); m_Database.Store(data); BySessionCache.Add(sessionID, data, EXPIREMS); ByUserCache.Add(userID, data, EXPIREMS); string prevUserStr = ""; if (prevUser != null) { prevUserStr = string.Format(". This user was already logged-in: session {0}, region {1}", prevUser.SessionID, prevUser.RegionID); } m_log.DebugFormat("[PRESENCE SERVICE]: LoginAgent: session {0}, user {1}, region {2}, secure session {3}{4}", data.SessionID, data.UserID, data.RegionID, secureSessionID, prevUserStr); return(true); }
public void OnJumpToFriendButtonClicked() { if (!playerCardController.IsShowingJumpPrompt) { playerCardController.IsShowingJumpPrompt = true; CPDataEntityCollection cPDataEntityCollection = Service.Get <CPDataEntityCollection>(); PresenceData component = cPDataEntityCollection.GetComponent <PresenceData>(cPDataEntityCollection.LocalPlayerHandle); if (component.World == playerWorld) { Service.Get <PromptManager>().ShowPrompt("JumpToFriendPrompt", onJumpToFriendPromptButtonClicked); return; } PromptDefinition promptDefinition = Service.Get <PromptManager>().GetPromptDefinition("JumpToFriendServerPrompt"); PromptLoaderCMD promptLoaderCMD = new PromptLoaderCMD(this, promptDefinition, showJumpToFriendServerPrompt); promptLoaderCMD.Execute(); } }
private void returnToPreviousScene() { isCancelledSceneTransitionRequested = false; PresenceData component = dataEntityCollection.GetComponent <PresenceData>(dataEntityCollection.LocalPlayerHandle); dataEntityCollection.ClearZoneScope(); Service.Get <GameStateController>().GoOffline(); Service.Get <LoadingController>().ClearAllLoadingSystems(); if (component.IsInInstancedRoom) { LoadIgloo(component.InstanceRoom, Service.Get <Localizer>().Language, SceneStateData.SceneState.Play, Service.Get <GameStateController>().SceneConfig.TransitionSceneName); } else { LoadZone(component.Room, Service.Get <GameStateController>().SceneConfig.TransitionSceneName, component.World); } Service.Get <GameStateController>().TriggerZoneConnectingEvent(); }
private void UpdateFriendOnlineStatus(List <FriendsListItem> in_listItem, PresenceData in_presenceData) { int nbrOnline = 0; for (int i = 0; i < in_listItem.Count; ++i) { if (in_listItem[i].ProfileId.Equals(in_presenceData.ProfileId)) { in_listItem[i].UpdateOnlineStatus(in_presenceData); in_listItem[i].RefreshOnlineVisibility(); } if (in_listItem[i].ItemData.Presence.IsOnline) { nbrOnline++; } } NoFriendsOnline.gameObject.SetActive(nbrOnline == 0); }