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);
            }
        }