예제 #1
0
        public StreamingManager(ISceneResourceRequestHandler requestHandler,
                                IStreamingGoManager streamingGo,
                                StreamingData sceneDescription,
                                ScenesLightmapData.MeshRecords scenesLightmapRecords,
                                ScenesIndoorCullData.IndoorCullRecords scenesIndoorCullRecords,
                                WorldCompositionParam param,
                                int preloadSceneCount)
        {
            _requestHandler          = requestHandler;
            _sceneDescription        = sceneDescription;
            _scenesLightmapRecords   = scenesLightmapRecords;
            _scenesIndoorCullRecords = scenesIndoorCullRecords;
            _concurrentCount         = preloadSceneCount;

            _worldComposition = new WorldCompositionManager(this, param);
            _streamingGo      = streamingGo ?? new StreamingGoByScene();

            _streamingGo.SetResourceHandler(this);
            _triggerObjectManager = SingletonManager.Get <TriggerObjectManager>();
            if (_sceneDescription != null)
            {
                var count = _sceneDescription.Scenes.Count;
                for (int i = 0; i < count; i++)
                {
                    _sceneIndex.Add(_sceneDescription.Scenes[i].SceneName, i);
                }
            }

            _requestHandler.SceneLoaded   += SceneLoaded;
            _requestHandler.SceneUnloaded += SceneUnloaded;
            _requestHandler.GoLoaded      += GoLoaded;
            _requestHandler.GoUnloaded    += GoUnloaded;
        }
예제 #2
0
        public StreamingManager(ISceneResourceRequestHandler requestHandler,
                                IStreamingGoManager streamingGo,
                                StreamingData sceneDescription,
                                WorldCompositionParam param,
                                int preloadSceneCount)
        {
            _requestHandler   = requestHandler;
            _sceneDescription = sceneDescription;
            _concurrentCount  = preloadSceneCount;

            _worldComposition = new WorldCompositionManager(this, param);
            _streamingGo      = streamingGo ?? new StreamingGoByScene();

            _streamingGo.SetResourceHandler(this);

            if (_sceneDescription != null)
            {
                var count = _sceneDescription.Scenes.Count;
                for (int i = 0; i < count; i++)
                {
                    _sceneIndex.Add(_sceneDescription.Scenes[i].SceneName, i);
                }
            }

            _requestHandler.SceneLoaded   += SceneLoaded;
            _requestHandler.SceneUnloaded += SceneUnloaded;
            _requestHandler.GoLoaded      += GoLoaded;
            _requestHandler.GoUnloaded    += GoUnloaded;
        }
예제 #3
0
 protected void Add(StreamingData <EXTRA> data)
 {
     try
     {
         using (locker.WriterLock())
         {
             this.streams.Add(data);
         }
     }
     catch (ApplicationException ex)
     {
         ErrorCode.LockFailedError.Throw(ex);
     }
 }
예제 #4
0
        public StreamingManager(ResourceRequestCache requestHandler, StreamingData sceneDescription)
        {
            _requestHandler   = requestHandler;
            _sceneDescription = sceneDescription;

            var count = _sceneDescription.Scenes.Count;

            for (int i = 0; i < count; i++)
            {
                _sceneIndex.Add(_sceneDescription.Scenes[i].SceneName, i);
            }

            _requestHandler.SceneLoaded   += SceneLoaded;
            _requestHandler.SceneUnloaded += SceneUnloaded;
        }
예제 #5
0
        public void Add(HttpResponse response, AuthenticationData authData, Character chara, Action onRemoved)
        {
            this.Remove(s => s.ExtraData.Id == chara.Id);
            var data = new StreamingData <CharacterCache>
            {
                AuthData  = authData,
                Response  = response,
                ExtraData = chara.ToCache(),
            };

            if (onRemoved != null)
            {
                data.Removed += (sender, e) => onRemoved();
            }
            this.Add(data);
        }
예제 #6
0
        public void Add(HttpResponse response, Action onRemoved)
        {
            this.CleanAbortedResponses();

            var data = new StreamingData <object>
            {
                AuthData  = null,
                Response  = response,
                ExtraData = null,
            };

            if (onRemoved != null)
            {
                data.Removed += (sender, e) => onRemoved();
            }
            this.Add(data);
        }
예제 #7
0
        public override void ParseConfig(string xml)
        {
            Data = XmlConfigParser <StreamingData> .Load(xml);

            var count = Data.Scenes.Count;

            for (int i = 0; i < count; i++)
            {
                var scene = Data.Scenes[i];
                scene.Index = i;

                var goCount = scene.Objects.Count;
                for (int j = 0; j < goCount; j++)
                {
                    scene.Objects[j].ConvertFromSerialization(scene);
                    scene.Objects[j].Index = j;
                }
            }
        }
예제 #8
0
        /// <summary>
        /// Настройка видео-аудио конфигурации
        /// </summary>
        public static async Task <string> SetStreamConfigFromBody([FromBody] StreamingData data)
        {
            _logger.Info("[SetStreamConfigFromBody] Method started");
            try
            {
                using var xmlData = Converters.ToStringContent(data, "StreamingChannel");
                var response = await WebClient.Client.PutAsync("Streaming/channels/101", xmlData).Result.Content.ReadAsStringAsync();

                var jsonResponse = Converters.XmlToJson(response);
                var responseData = JsonConvert.DeserializeObject <CamResponses>(jsonResponse);

                _logger.Info("[SetTimeFromBody] Method has complete");
                return($"{responseData.responseStatus.StatusString,-10} Request url {responseData.responseStatus.RequestUrl}");
            }
            catch (Exception e)
            {
                _logger.Error($"[SetStreamConfigFromBody] Method failed. \nError message: {e.Message}");
                return(e.Message);
            }
        }
예제 #9
0
        public override void ParseConfig(string xml)
        {
            StreamingScene scene = StreamingSerialization.DeserializeByString <StreamingScene>(xml);

            //StreamingScene scene = XmlConfigParser<StreamingScene>.Load(xml);

            foreach (var obj in scene.Objects)
            {
                foreach (var compData in obj.CompDataList)
                {
                    compData.monoClassFullName.GetTypeByStr();
                }
            }


            if (Data == null)
            {
                Data = new StreamingData();
            }

            Data.AddScene(scene);
        }
예제 #10
0
 public override void ParseConfig(string xml)
 {
     Data = XmlConfigParser <StreamingData> .Load(xml);
 }
 private void Handler(object sender, StreamingData e)
 {
     _exporter.Export(new[] { e });
 }