public static String PluginsScripts(this HtmlHelper html, IEnumerable <ICorePlugin> plugins)
        {
            var sb = new StringBuilder();

            var externalScripts = new List <String>();

            foreach (var plugin in plugins)
            {
                //get plugin inner scripts package path
                var path = AssetsHelper.GetPluginInnerJsVirtualPath(plugin, ApplicationUtility.Path, html.ViewContext.HttpContext.Request.PhysicalApplicationPath);

                if (!String.IsNullOrEmpty(path))
                {
                    sb.Append(AssetsExtensions.JavascriptHelper(html.ViewContext.HttpContext, path));
                }

                if (!String.IsNullOrEmpty(plugin.CssJsConfigPath) && !String.IsNullOrEmpty(plugin.JsPack))
                {
                    externalScripts.AddRange(AssetsHelper.GetPluginJsPackFiles(plugin.JsPack, Path.Combine(plugin.PluginDirectory, plugin.CssJsConfigPath),
                                                                               OuterPluginTypeName));
                }
            }

            externalScripts.Distinct();

            //add external scripts
            foreach (var item in externalScripts)
            {
                sb.Append(html.JavascriptInclude(item));
            }

            return(sb.ToString());
        }
        private void Start()
        {
            foreach (R.E.Scene scene in scenes)
            {
                string sceneName = R.S.Scene.ToString(scene);

#if UNITY_EDITOR
                //Can't load scene if it is not in the BuildSettings. Can only check this while in Editor.
                string scenePath = AssetsExtensions.FindScenePath(sceneName).Replace("\\", "/");

                bool founded = false;
                foreach (UnityEditor.EditorBuildSettingsScene sceneInBuildSettings in UnityEditor.EditorBuildSettings.scenes)
                {
                    if (sceneInBuildSettings.path == scenePath)
                    {
                        founded = true;
                        break;
                    }
                }

                if (!founded)
                {
                    throw new Exception("Unable to load utilitary scene named \"" + sceneName + "\". It is not in the Unity BuildSettings. " +
                                        "Thus, Unity can't load it. To solve this, go to the \"Harmony/Settings\" menu and add it to the Utilitary" +
                                        "Scenes. If it's already added, just click the \"Harmony/Generate Build Settings From Activities\" " +
                                        "and try again.");
                }
#endif
                SceneManager.LoadScene(sceneName, mode);
            }
        }
示例#3
0
        private Activity GetCurrentPreloadedActivityInEditor()
        {
            foreach (Activity activity in AssetsExtensions.FindAssets <Activity>())
            {
                bool hasAllScenesLoaded = true;

                if (activity.Scene != R.E.Scene.None)
                {
                    hasAllScenesLoaded &= SceneManagerExtensions.IsSceneLoaded(R.S.Scene.ToString(activity.Scene));
                }

                foreach (Fragment fragment in activity.Fragments)
                {
                    if (fragment.Scene != R.E.Scene.None)
                    {
                        hasAllScenesLoaded &= SceneManagerExtensions.IsSceneLoaded(R.S.Scene.ToString(fragment.Scene));
                    }
                }

                foreach (Menu menu in activity.Menus)
                {
                    if (menu.Scene != R.E.Scene.None)
                    {
                        hasAllScenesLoaded &= SceneManagerExtensions.IsSceneLoaded(R.S.Scene.ToString(menu.Scene));
                    }
                }

                if (hasAllScenesLoaded)
                {
                    return(activity);
                }
            }
            return(null);
        }
        private Activity GetCurrentPreloadedActivityInEditor()
        {
            IList <string> loadedScenes = SceneManagerExtensions.GetLoadedScenes();

            //Startup scene and Utilitary scenes should be ignored. They should not
            //be in any activity.
            Configuration configuration = Configuration.Get();

            loadedScenes.Remove(R.S.Scene.ToString(configuration.StartingScene));
            foreach (R.E.Scene scene in configuration.UtilitaryScenes)
            {
                loadedScenes.Remove(R.S.Scene.ToString(scene));
            }

            //If any activity scenes matches the currently loaded scenes, then this is
            //the current activity.
            foreach (Activity activity in AssetsExtensions.FindAssets <Activity>())
            {
                bool hasAllScenesLoaded = true;

                foreach (string scene in activity.GetScenes())
                {
                    hasAllScenesLoaded &= loadedScenes.Contains(scene);
                }

                if (hasAllScenesLoaded)
                {
                    return(activity);
                }
            }
            return(null);
        }
示例#5
0
        public void ProcessRequest(HttpContext context)
        {
            String common  = context.Request.QueryString[CommonPackage];
            String package = context.Request.QueryString[SinglePackage];

            context.Response.ContentType = CssContentType;

            context.Response.Cache.VaryByHeaders["Accept-Encoding"] = true;
            context.Response.Cache.SetExpires(DateTime.Now.AddYears(1));
            //context.Response.Cache.SetCacheability(HttpCacheability.Public);

            if (!String.IsNullOrEmpty(common))
            {
                var ids     = common.Split('_').ToList();
                var idsLong = new List <long>();
                ids.ForEach(t => { long id; if (long.TryParse(t, out id))
                                   {
                                       idsLong.Add(id);
                                   }
                            });
                var plugins = ServiceLocator.Current.GetInstance <IPluginService>().FindPluginsByIds(idsLong);
                var file    = AssetsExtensions.CssPluginPackHelper(context, Application.Plugins.Where(t => plugins.Any(temp => temp.Identifier == t.Identifier)), common, null);
                if (!String.IsNullOrEmpty(file))
                {
                    context.Response.WriteFile(file);
                    return;
                }
            }
            if (!String.IsNullOrEmpty(package))
            {
                var file = AssetsHelper.BuildPluginCssPack(Application.Plugins.Where(t => t.Identifier == package).SingleOrDefault(), context.Request.PhysicalApplicationPath);
                if (!String.IsNullOrEmpty(file))
                {
                    context.Response.WriteFile(file);
                    return;
                }
            }
        }