private void UpdateWorldObjectState(StatefulWorldObject statefulWorldObject) { if (statefulWorldObject == null || !gameObjectIdToTransformMap.ContainsKey(statefulWorldObject.Id.Id)) { return; } Transform transform = gameObjectIdToTransformMap[statefulWorldObject.Id.Id]; if (!(transform != null)) { return; } switch (statefulWorldObject.State) { case ScheduledWorldObjectState.Active: { StatefulWorldObjectMonobehaviour statefulWorldObjectMonobehaviour = transform.gameObject.GetComponent <StatefulWorldObjectMonobehaviour>(); if (statefulWorldObjectMonobehaviour == null) { statefulWorldObjectMonobehaviour = transform.gameObject.AddComponent <StatefulWorldObjectMonobehaviour>(); } statefulWorldObjectMonobehaviour.StatefulWorldObject = statefulWorldObject; transform.gameObject.SetActive(value: true); break; } case ScheduledWorldObjectState.Inactive: transform.gameObject.SetActive(value: false); break; } }
private void startScheduledWorldObjects() { ScheduledWorldObjectConfiguration[] array = UnityEngine.Object.FindObjectsOfType <ScheduledWorldObjectConfiguration>(); foreach (ScheduledWorldObjectConfiguration scheduledWorldObjectConfiguration in array) { List <StatefulWorldObject> list = new List <StatefulWorldObject>(); Transform[] componentsInChildren = scheduledWorldObjectConfiguration.GetComponentsInChildren <Transform>(); foreach (Transform transform in componentsInChildren) { if (!(transform == scheduledWorldObjectConfiguration.transform)) { StatefulWorldObject statefulWorldObject = new StatefulWorldObject(); statefulWorldObject.CreatorId = -1L; statefulWorldObject.Id = new CPMMOItemId(generateMMOItemId(), CPMMOItemId.CPMMOItemParent.WORLD); statefulWorldObject.State = ScheduledWorldObjectState.Inactive; statefulWorldObject.Path = transform.GetPath(); statefulWorldObject.Timestamp = 0L; StatefulWorldObject statefulWorldObject2 = statefulWorldObject; processEvent(GameServerEvent.SERVER_ITEM_ADDED, statefulWorldObject2); CPMMOItemPosition cPMMOItemPosition = default(CPMMOItemPosition); cPMMOItemPosition.Id = statefulWorldObject2.Id; cPMMOItemPosition.Position = transform.position; processEvent(GameServerEvent.SERVER_ITEM_MOVED, cPMMOItemPosition); list.Add(statefulWorldObject2); } } coroutines.Add(CoroutineRunner.StartPersistent(triggerScheduledWorldObjects(scheduledWorldObjectConfiguration, list), this, "triggerScheduledWorldObjects")); } }
private void setWorldObjectNewState(StatefulWorldObject worldObject, ScheduledWorldObjectState state) { if (worldObject.State != state) { worldObject.State = state; worldObject.Timestamp = DateTime.UtcNow.GetTimeInMilliseconds(); processEvent(GameServerEvent.SERVER_ITEM_CHANGED, worldObject); } }
private void onServerObjectItemAdded(DataEntityHandle handle, ServerObjectItemData obj) { StatefulWorldObject statefulWorldObject = obj.Item as StatefulWorldObject; if (statefulWorldObject == null) { return; } if (!dataModelHandleListenersMap.ContainsKey(handle) && childrenPaths.Contains(statefulWorldObject.Path)) { Transform transform = base.gameObject.transform.Find(statefulWorldObject.Path); if (transform != null) { dataModelHandleListenersMap[handle] = obj; obj.ItemChanged += onServerObjectChanged; gameObjectIdToTransformMap[statefulWorldObject.Id.Id] = transform; } } if (dataModelHandleListenersMap.ContainsKey(handle)) { UpdateWorldObjectState(statefulWorldObject); } }