예제 #1
0
 // Init rabbit from first launch not on editor!
 // ReSharper disable once InconsistentNaming
 // ReSharper disable once UnusedMember.Local
 private void ReadStartUpSettings()
 {
     try
     {
         string[] args       = Environment.GetCommandLineArgs();
         string   amqpBase64 = args[1];
         string   amqpJson   = Base64Decode(amqpBase64);
         _logger.Info(amqpJson);    //currently it's somewhat the only way to debug client
         Rabbitmq rabbitmq = amqpJson.JsonDeserialize <Rabbitmq>();
         AMQPClient.Init(rabbitmq);
         LoaderAdapter.Init(new ApiLoader());
         LogManager.GetCurrentClassLogger().Info("RabbitMQ init settings = " + amqpJson);
     }
     catch (Exception e)
     {
         try
         {
             ReadStartUpFile();
         }
         catch (Exception exception)
         {
             string message = "Cant read AMQP settings! Trying to get file params";
             LogManager.GetCurrentClassLogger().Fatal(message + " stackTrace = " + e.StackTrace);
             LauncherErrorManager.Instance.ShowFatal(message, exception.StackTrace);
         }
     }
 }
예제 #2
0
        private void LoadConfigurationFromStorage(int projectConfigurationId)
        {
            LoaderAnime.StartLoaderAnimation();
            LoaderSystems loaderSystems = new LoaderSystems(Contexts.sharedInstance);

            loaderSystems.Initialize();
            ProjectDataListener.OnUpdate = () => loaderSystems.Execute();
            LoaderAdapter.LoadProjectConfiguration(projectConfigurationId);
        }
예제 #3
0
        private void LoadCustomAssetApi(AssetInfo assetInfo, PrefabObject o)
        {
            string assetName      = assetInfo.AssetName;
            string assetBundleUri = ProjectData.IsMobileVr() ? o.AndroidBundleResource : o.BundleResource;

            RequestAsset requestAsset =
                new RequestAsset(assetName, assetBundleUri, new object[] { o, assetInfo });

            requestAsset.OnFinish += responseAsset =>
            {
                FeedBackText = LanguageManager.Instance.GetTextValue("LOADING")
                               + " "
                               + o.Config.i18n.GetCurrentLocale()
                               + "...";
                CountLoadedObjects++;

                if (LoaderAdapter.OnDownLoadUpdate != null)
                {
                    LoaderAdapter.OnDownLoadUpdate(CountLoadedObjects
                                                   / (float)LoadCounter.loadObjectsCounter.PrefabsCount);
                }

                RequestTexture requestDownLoad = new RequestTexture(Settings.Instance().ApiHost + o.IconResource,
                                                                    128,
                                                                    128,
                                                                    ProjectData.IsMobileVr() ? TextureFormat.ASTC_RGB_6x6 : TextureFormat.DXT1);

                requestDownLoad.OnFinish += responseUri =>
                {
                    ResponseTexture responseTexture = (ResponseTexture)responseUri;
                    Texture2D       texture2D       = responseTexture.Texture;

                    Sprite sprite = Sprite.Create(texture2D,
                                                  new Rect(0,
                                                           0,
                                                           128,
                                                           128),
                                                  Vector2.zero);
                    CreatePrefabEntity(responseAsset, o, sprite);
                };

                requestDownLoad.OnError += s => { CreatePrefabEntity(responseAsset, o); };
            };
        }
예제 #4
0
        private void StartLoadFile()
        {
            LogManager.GetCurrentClassLogger().Info("File name = " + Settings.Instance().StoragePath);
            ProjectData.GameMode = GameMode.View;

            if (LoaderAnime != null)
            {
                LoaderAnime.StartLoaderAnimation();
            }

            LoaderAdapter.LoadProjectStructure(0, OnProjectStructureRead);


            void OnProjectStructureRead(ProjectStructure projectStructure)
            {
                ProjectData.ProjectStructure = projectStructure;

                if (ProjectData.ProjectStructure.ProjectConfigurations.Count == 0)
                {
                    LauncherErrorManager.Instance.Show(
                        ErrorHelper.GetErrorDescByCode(Errors.ErrorCode.ProjectConfigNullError),
                        null);

                    return;
                }

                if (ProjectData.ProjectStructure.ProjectConfigurations.Count == 1)
                {
                    var projectConfigurationId = ProjectData.ProjectStructure.ProjectConfigurations[0].Id;
                    LoadConfigurationFromStorage(projectConfigurationId);
                }
                else
                {
                    UIChooseProjectConfig.Instance.UpdateDropDown(
                        ProjectData.ProjectStructure.ProjectConfigurations.GetNames(),
                        LoadConfigurationFromStorage);
                    UIChooseProjectConfig.Instance.Show();
                    LoaderAnime.StopLoaderAnimation();
                }
            }
        }
예제 #5
0
        private void ShowHtml()
        {
            string uri = Settings.Instance().WebHost + "/mypad?lang=" + Settings.Instance().Language + "&scene_id=" + ProjectData.SceneId;

            //string uri = "http://192.168.33.91:8080" + "/mypad?lang=" + Settings.Instance().Language;

            Browser.LoadURL(uri, true);

            Browser.RegisterFunction("spawnObject",
                                     args =>
            {
                var logger          = LogManager.GetCurrentClassLogger();
                string objectString = args[0].AsJSON;

                PrefabObject prefabObject = objectString.JsonDeserialize <PrefabObject>();

                ObjectDto existedObject = ProjectData.ProjectStructure.Scenes.GetProjectScene(ProjectData.SceneId)
                                          .SceneObjects.Find(p => p.ObjectId == prefabObject.Id);


                Debug.Log("Object to spawn: " + prefabObject.Guid);
                int objectId = prefabObject.Id;

                if (GameStateData.GetPrefabGameObject(objectId) != null)
                {
                    Helper.SetSpawnedObject(objectId);
                    logger.Info("Spawn existed object: " + objectId);
                }
                else if (existedObject != null)
                {
                    logger.Info("Object " + prefabObject.Guid + " is already loading!");
                    HideMenu();

                    return;
                }
                else
                {
                    ProjectData.ProjectStructure.Objects.Add(prefabObject);
                    var po = new List <PrefabObject> {
                        prefabObject
                    };


                    void OnLoadObjects()
                    {
                        if (GameStateData.GetPrefabGameObject(objectId) != null && !BrowserWindow.activeSelf)
                        {
                            Helper.SetSpawnedObject(objectId);
                            logger.Info("New object spawned: " + objectId);
                        }

                        ObjectLoader.StopLoaderAnimation();
                        ProjectData.ObjectsLoaded -= OnLoadObjects;
                    }


                    LoaderAdapter.LoadPrefabObjects(po);
                    ProjectData.ObjectsLoaded += OnLoadObjects;
                    ObjectLoader.StartLoaderAnimation();
                }

                HideMenu();
            });

            Browser.RegisterFunction("undo", args => { CommandsManager.Undo(); });
            Browser.RegisterFunction("redo", args => { CommandsManager.Redo(); });
            Browser.RegisterFunction("switchMode", args => { SwitchGameMode(); });
            Browser.RegisterFunction("save", args => { Helper.SaveSceneObjects(); });

            SetRender();
            _htmlLoaded = true;
        }