public override void WritePage(UdnManifest Manifest, string OutputPath)
        {
            using (UdnWriter Writer = new UdnWriter(OutputPath))
            {
                Writer.WritePageHeader("Getting started with the Unreal Engine API", PageCrumbs, "Getting started with the Unreal Engine API");

                Writer.WriteHeading(2, "Orientation");

                Writer.WriteLine("Games, programs and the Unreal Editor are all *targets* built by UnrealBuildTool. Each target is compiled from C++ *modules*, each implementing a particular area of functionality. Your game is a target, and your game code is implemented in one or more modules.");
                Writer.WriteLine();
                Writer.WriteLine("Code in each module can use other modules by referencing them in their *build rules*. Build rules for each module are given by C# scripts with the .build.cs extension. *Target rules* are given by C# scripts with the .target.cs extension.");
                Writer.WriteLine();
                Writer.WriteLine(Manifest, "Modules supplied with the Unreal Engine are divided into three categories; the {Runtime|ModuleIndex:Runtime Modules}, functionality for the {Editor|ModuleIndex:Editor Modules}, and {Developer|ModuleIndex:Developer Modules} utilities.");
                Writer.WriteLine();
                Writer.WriteLine(Manifest, "Most gameplay programming just uses runtime modules, and the three most commonly encountered are {Core|Filter:Core}, {CoreUObject|Filter:CoreUObject} and {Engine|Filter:Engine}.");
                Writer.WriteLine();

                Writer.WriteHeading(2, "Core");

                Writer.WriteLine(Manifest, "The **{Core|Filter:Core}** module provides a common framework for Unreal modules to communicate; a standard set of types, a {math library|Filter:Core.Math}, a {container|Filter:Core.Containers} library, and a lot of the hardware abstraction that allows Unreal to run on so many platforms.");
                Writer.WriteLine(Manifest, "Some common topics are listed below; full documentation is available {here|Filter:Core}.");
                Writer.WriteLine();
                List<UdnListItem> CoreItems = new List<UdnListItem>();
                CoreItems.Add(new UdnListItem("Basic types:", Manifest.FormatString("bool &middot; float/double &middot; {int8}/{int16}/{int32}/{int64} &middot; {uint8}/{uint16}/{uint32}/{uint64} &middot; {ANSICHAR} &middot; {TCHAR} &middot; {FString}"), null));
                CoreItems.Add(new UdnListItem("Math:", Manifest.FormatString("{FMath} &middot; {FVector} &middot; {FRotator} &middot; {FTransform} &middot; {FMatrix} &middot; {More...|Filter:Core.Math}"), null));
                CoreItems.Add(new UdnListItem("Containers:", Manifest.FormatString("{TArray} &middot; {TList} &middot; {TMap} &middot; {More...|Filter:Core.Containers}"), null));
                CoreItems.Add(new UdnListItem("Other:", Manifest.FormatString("{FName} &middot; {FArchive} &middot; {FOutputDevice}"), null));
                Writer.WriteList(CoreItems);

                Writer.WriteHeading(2, "CoreUObject");

                Writer.WriteLine(Manifest, "The **{CoreUObject|Filter:CoreUObject}** module defines UObject, the base class for all managed objects in Unreal. Managed objects are key to integrating with the editor, for serialization, network replication, and runtime type information. UObject derived classes are garbage collected.");
                Writer.WriteLine(Manifest, "Some common topics are listed below; full documentation is available {here|Filter:CoreUObject}.");
                Writer.WriteLine();
                List<UdnListItem> CoreUObjectItems = new List<UdnListItem>();
                CoreUObjectItems.Add(new UdnListItem("Classes:", Manifest.FormatString("{UObject} &middot; {UClass} &middot; {UProperty} &middot; {UPackage}"), null));
                CoreUObjectItems.Add(new UdnListItem("Functions:", Manifest.FormatString("{ConstructObject} &middot; {FindObject} &middot; {Cast} &middot; {CastChecked}"), null));
                Writer.WriteList(CoreUObjectItems);

                Writer.WriteHeading(2, "Engine");

                Writer.WriteLine(Manifest, "The **{Engine|Filter:Engine}** module contains functionality you’d associate with a game. The game world, actors, characters, physics and special effects are all defined here.");
                Writer.WriteLine(Manifest, "Some common topics are listed below; full documentation is available {here|Filter:Engine}.");
                Writer.WriteLine();
                List<UdnListItem> EngineItems = new List<UdnListItem>();
                EngineItems.Add(new UdnListItem("Actors:", Manifest.FormatString("{AActor} &middot; {AVolume} &middot; {AGameMode} &middot; {AHUD} &middot; {More...|Hierarchy:AActor}"), null));
                EngineItems.Add(new UdnListItem("Pawns:", Manifest.FormatString("{APawn} &middot; {ACharacter} &middot; {AWheeledVehicle}"), null));
                EngineItems.Add(new UdnListItem("Controllers:", Manifest.FormatString("{AController} &middot; {AAIController} &middot; {APlayerController}"), null));
                EngineItems.Add(new UdnListItem("Components:", Manifest.FormatString("{UActorComponent} &middot; {UBrainComponent} &middot; {UInputComponent} &middot; {USkeletalMeshComponent} &middot; {UParticleSystemComponent} &middot; {More...|Hierarchy:UActorComponent}"), null));
                EngineItems.Add(new UdnListItem("Gameplay:", Manifest.FormatString("{UPlayer} &middot; {ULocalPlayer} &middot; {UWorld} &middot; {ULevel}"), null));
                EngineItems.Add(new UdnListItem("Assets:", Manifest.FormatString("{UTexture} &middot; {UMaterial} &middot; {UStaticMesh} &middot; {USkeletalMesh} &middot; {UParticleSystem}"), null));
                Writer.WriteList(EngineItems);
            }
        }
Exemple #2
0
        public override void WritePage(UdnManifest Manifest, string OutputPath)
        {
            using (UdnWriter Writer = new UdnWriter(OutputPath))
            {
                Writer.WritePageHeader("Getting started with the Unreal Engine API", PageCrumbs, "Getting started with the Unreal Engine API");

                Writer.WriteHeading(2, "Orientation");

                Writer.WriteLine("Games, programs and the Unreal Editor are all *targets* built by UnrealBuildTool. Each target is compiled from C++ *modules*, each implementing a particular area of functionality. Your game is a target, and your game code is implemented in one or more modules.");
                Writer.WriteLine();
                Writer.WriteLine("Code in each module can use other modules by referencing them in their *build rules*. Build rules for each module are given by C# scripts with the .build.cs extension. *Target rules* are given by C# scripts with the .target.cs extension.");
                Writer.WriteLine();
                Writer.WriteLine(Manifest, "Modules supplied with the Unreal Engine are divided into three categories; the {Runtime|ModuleIndex:Runtime Modules}, functionality for the {Editor|ModuleIndex:Editor Modules}, and {Developer|ModuleIndex:Developer Modules} utilities.");
                Writer.WriteLine(Manifest, "Most gameplay programming just uses runtime modules, and the three most commonly encountered are {Core|Filter:Core}, {CoreUObject|Filter:CoreUObject} and {Engine|Filter:Engine}.");
                Writer.WriteLine();

                Writer.WriteHeading(2, "Core");

                Writer.WriteLine(Manifest, "The **{Core|Filter:Core}** module provides a common framework for Unreal modules to communicate; a standard set of types, a {math library|Filter:Core.Math}, a {container|Filter:Core.Containers} library, and a lot of the hardware abstraction that allows Unreal to run on so many platforms.");
                Writer.WriteLine(Manifest, "Some common topics are listed below; full documentation is available {here|Filter:Core}.");
                Writer.WriteLine();
                List <UdnListItem> CoreItems = new List <UdnListItem>();
                CoreItems.Add(new UdnListItem("Basic types:", Manifest.FormatString("bool &middot; float/double &middot; {int8}/{int16}/{int32}/{int64} &middot; {uint8}/{uint16}/{uint32}/{uint64} &middot; {ANSICHAR} &middot; {TCHAR} &middot; {FString}"), null));
                CoreItems.Add(new UdnListItem("Math:", Manifest.FormatString("{FMath} &middot; {FVector} &middot; {FRotator} &middot; {FTransform} &middot; {FMatrix} &middot; {More...|Filter:Core.Math}"), null));
                CoreItems.Add(new UdnListItem("Containers:", Manifest.FormatString("{TArray} &middot; {TList} &middot; {TMap} &middot; {More...|Filter:Core.Containers}"), null));
                CoreItems.Add(new UdnListItem("Other:", Manifest.FormatString("{FName} &middot; {FArchive} &middot; {FOutputDevice}"), null));
                Writer.WriteList(CoreItems);

                Writer.WriteHeading(2, "CoreUObject");

                Writer.WriteLine(Manifest, "The **{CoreUObject|Filter:CoreUObject}** module defines UObject, the base class for all managed objects in Unreal. Managed objects are key to integrating with the editor, for serialization, network replication, and runtime type information. UObject derived classes are garbage collected.");
                Writer.WriteLine(Manifest, "Some common topics are listed below; full documentation is available {here|Filter:CoreUObject}.");
                Writer.WriteLine();
                List <UdnListItem> CoreUObjectItems = new List <UdnListItem>();
                CoreUObjectItems.Add(new UdnListItem("Classes:", Manifest.FormatString("{UObject} &middot; {UClass} &middot; {UProperty} &middot; {UPackage}"), null));
                CoreUObjectItems.Add(new UdnListItem("Functions:", Manifest.FormatString("{ConstructObject} &middot; {FindObject} &middot; {Cast} &middot; {CastChecked}"), null));
                Writer.WriteList(CoreUObjectItems);

                Writer.WriteHeading(2, "Engine");

                Writer.WriteLine(Manifest, "The **{Engine|Filter:Engine}** module contains functionality you’d associate with a game. The game world, actors, characters, physics and special effects are all defined here.");
                Writer.WriteLine(Manifest, "Some common topics are listed below; full documentation is available {here|Filter:Engine}.");
                Writer.WriteLine();
                List <UdnListItem> EngineItems = new List <UdnListItem>();
                EngineItems.Add(new UdnListItem("Actors:", Manifest.FormatString("{AActor} &middot; {AVolume} &middot; {AGameMode} &middot; {AHUD} &middot; {More...|Hierarchy:AActor}"), null));
                EngineItems.Add(new UdnListItem("Pawns:", Manifest.FormatString("{APawn} &middot; {ACharacter} &middot; {AWheeledVehicle}"), null));
                EngineItems.Add(new UdnListItem("Controllers:", Manifest.FormatString("{AController} &middot; {AAIController} &middot; {APlayerController}"), null));
                EngineItems.Add(new UdnListItem("Components:", Manifest.FormatString("{UActorComponent} &middot; {UBrainComponent} &middot; {UInputComponent} &middot; {USkeletalMeshComponent} &middot; {UParticleSystemComponent} &middot; {More...|Hierarchy:UActorComponent}"), null));
                EngineItems.Add(new UdnListItem("Gameplay:", Manifest.FormatString("{UPlayer} &middot; {ULocalPlayer} &middot; {UWorld} &middot; {ULevel}"), null));
                EngineItems.Add(new UdnListItem("Assets:", Manifest.FormatString("{UTexture} &middot; {UMaterial} &middot; {UStaticMesh} &middot; {USkeletalMesh} &middot; {UParticleSystem}"), null));
                Writer.WriteList(EngineItems);
            }
        }
Exemple #3
0
        public void Write(UdnWriter Writer, int Depth)
        {
            if (!IsEmpty)
            {
                // CSS region for indenting
                Writer.EnterRegion("module-sections-list");

                // Find all the modules in this category
                if (Modules.Count > 0)
                {
                    Writer.WriteList(Modules.OrderBy(x => x.Name).Select(x => x.GetListItem()));
                }

                // Write all the subcategories
                foreach (APIModuleCategory Category in Categories.OrderBy(x => x.Name))
                {
                    Writer.WriteHeading(Depth, Category.Name);
                    Writer.WriteLine();
                    Category.Write(Writer, Depth + 1);
                }

                // End of CSS region
                Writer.LeaveRegion();
            }
        }
        public void Write(UdnWriter Writer, int Depth)
        {
            if (!IsEmpty)
            {
                // CSS region for indenting
                Writer.EnterRegion("module-sections-list");

                // Find all the modules in this category
                if(Modules.Count > 0)
                {
                    Writer.WriteList(Modules.OrderBy(x => x.Name).Select(x => x.GetListItem()));
                }

                // Write all the subcategories
                foreach (APIModuleCategory Category in Categories.OrderBy(x => x.Name))
                {
                    Writer.WriteHeading(Depth, Category.Name);
                    Writer.WriteLine();
                    Category.Write(Writer, Depth + 1);
                }

                // End of CSS region
                Writer.LeaveRegion();
            }
        }
Exemple #5
0
        public override void WritePage(UdnManifest Manifest, string OutputPath)
        {
            using (UdnWriter Writer = new UdnWriter(OutputPath))
            {
                Writer.WritePageHeader(Name, PageCrumbs, Description);

                // Create an array of links for each letter
                string[] CategoryLinks = new string[Categories.Count];
                for (int Idx = 0; Idx < Categories.Count; Idx++)
                {
                    if (Categories[Idx].Entries.Count == 0)
                    {
                        CategoryLinks[Idx] = Categories[Idx].Name;
                    }
                    else
                    {
                        CategoryLinks[Idx] = String.Format("[{0}](#idx_{0})", Categories[Idx].Name);
                    }
                }

                // Write the link section
                Writer.WriteLine("[REGION:memberindexlinks]");
                Writer.WriteLine(String.Join(" &middot; ", CategoryLinks));
                Writer.WriteLine("[/REGION]");

                // Write each letter
                for (int Idx = 0; Idx < Categories.Count; Idx++)
                {
                    if (Categories[Idx].Entries.Count > 0)
                    {
                        Writer.WriteLine();
                        Writer.WriteLine("(#idx_{0})", Categories[Idx].Name);
                        Writer.WriteHeading(2, Categories[Idx].Name);
                        foreach (Entry Entry in Categories[Idx].Entries)
                        {
                            Writer.WriteLine("[REGION:memberindexitem]");
                            Writer.WriteLine("[{0}]({1})", Entry.Name, Entry.LinkPath);
                            Writer.WriteLine("[/REGION]");
                        }
                    }
                }
            }
        }
Exemple #6
0
		public override void WritePage(UdnManifest Manifest, string OutputPath)
		{
			using (UdnWriter Writer = new UdnWriter(OutputPath))
			{
				Writer.WritePageHeader(Name, PageCrumbs, Description);

				// Create an array of links for each letter
				string[] CategoryLinks = new string[Categories.Count];
				for (int Idx = 0; Idx < Categories.Count; Idx++)
				{
					if (Categories[Idx].Entries.Count == 0)
					{
						CategoryLinks[Idx] = Categories[Idx].Name;
					}
					else
					{
						CategoryLinks[Idx] = String.Format("[{0}](#idx_{0})", Categories[Idx].Name);
					}
				}

				// Write the link section
				Writer.WriteLine("[REGION:memberindexlinks]");
				Writer.WriteLine(String.Join(" &middot; ", CategoryLinks));
				Writer.WriteLine("[/REGION]");

				// Write each letter
				for(int Idx = 0; Idx < Categories.Count; Idx++)
				{
					if (Categories[Idx].Entries.Count > 0)
					{
						Writer.WriteLine();
						Writer.WriteLine("(#idx_{0})", Categories[Idx].Name);
						Writer.WriteHeading(2, Categories[Idx].Name);
						foreach (Entry Entry in Categories[Idx].Entries)
						{
							Writer.WriteLine("[REGION:memberindexitem]");
							Writer.WriteLine("[{0}]({1})", Entry.Name, Entry.LinkPath);
							Writer.WriteLine("[/REGION]");
						}
					}
				}
			}
		}
        public override void WritePage(UdnManifest Manifest, string OutputPath)
        {
            using (UdnWriter Writer = new UdnWriter(OutputPath))
            {

                if (bIsRootCategory)
                {
                    Writer.WritePageHeader("Unreal Engine Blueprint API Reference", PageCrumbs, "Unreal Engine Blueprint API Reference");

                    Writer.WriteHeading(2, "Disclaimer");

                    Writer.WriteLine("The Blueprint API reference is an early work in progress, and some information may be missing or out of date. It strives to reflect all available nodes, but it is not guaranteed to be an exhaustive list.");
                    Writer.WriteLine("For tutorials, walkthroughs and detailed guides to using Blueprints in UE4, please see the [Introduction to Blueprints](http://docs.unrealengine.com/latest/INT/Engine/Blueprints/GettingStarted/index.html) on the web.");
                }
                else
                {
                    Writer.WritePageHeader(Name, PageCrumbs, Name);
                }

                if (Actions.Count > 0)
                {
                    Writer.WriteHeading(2, "Actions");
                    Writer.WriteList(Actions.OrderBy(x => x.Name).Select(x => x.GetListItem()));
                }

                if (SubCategories.Count > 0)
                {
                    Writer.WriteHeading(2, "Categories");
                    Writer.WriteList(SubCategories.OrderBy(x => x.Key).Select(x => x.Value.GetListItem()));
                }
            }
        }
Exemple #8
0
        public override void WritePage(UdnManifest Manifest, string OutputPath)
        {
            using (UdnWriter Writer = new UdnWriter(OutputPath))
            {
                Writer.WritePageHeader("Unreal Engine API Reference", PageCrumbs, "Unreal Engine API Reference");

                Writer.WriteHeading(2, "Disclaimer");

                Writer.WriteLine("The API reference is an early work in progress, and some information may be missing or out of date. It serves mainly as a low level index of Engine classes and functions.");
                Writer.WriteLine("For tutorials, walkthroughs and detailed guides to programming with Unreal, please see the [Unreal Engine Programming](http://docs.unrealengine.com/latest/INT/Programming/index.html) home on the web.");

                Writer.WriteHeading(2, "Orientation");

                Writer.WriteLine("Games, programs and the Unreal Editor are all *targets* built by UnrealBuildTool. Each target is compiled from C++ *modules*, each implementing a particular area of functionality. Your game is a target, and your game code is implemented in one or more modules.");
                Writer.WriteLine();
                Writer.WriteLine("Code in each module can use other modules by referencing them in their *build rules*. Build rules for each module are given by C# scripts with the .build.cs extension. *Target rules* are given by C# scripts with the .target.cs extension.");
                Writer.WriteLine();
                Writer.WriteLine(Manifest, "The Unreal Engine consists of a large number of modules divided into three categories: the common {Runtime|ModuleIndex:Runtime}, {Editor|ModuleIndex:Editor} specific functionality, and {Developer|ModuleIndex:Developer} utilities. Three of the most important runtime modules are {Core|Filter:Core}, {CoreUObject|Filter:CoreUObject} and {Engine|Filter:Engine}.");

                Writer.WriteHeading(2, "Core");

                Writer.WriteLine(Manifest, "The **{Core|Filter:Core}** module provides a common framework for Unreal modules to communicate; a standard set of types, a {math library|Filter:Core.Math}, a {container|Filter:Core.Containers} library, and a lot of the hardware abstraction that allows Unreal to run on so many platforms.");
                Writer.WriteLine();
                Writer.WriteLine("| Topic | Links |");
                Writer.WriteLine("| ----- | ----- |");
                Writer.WriteLine(Manifest, "|Basic types:| bool &middot; float/double &middot; {int8}/{int16}/{int32}/{int64} &middot; {uint8}/{uint16}/{uint32}/{uint64} &middot; {ANSICHAR} &middot; {TCHAR} &middot; {FString}|");
                Writer.WriteLine(Manifest, "|Math:| {FMath} &middot; {FVector} &middot; {FRotator} &middot; {FTransform} &middot; {FMatrix} &middot; {More...|Filter:Core.Math} |");
                Writer.WriteLine(Manifest, "|Containers:| {TArray} &middot; {TList} &middot; {TMap} &middot; {More...|Filter:Core.Containers} |");
                Writer.WriteLine(Manifest, "|Other:| {FName} &middot; {FArchive} &middot; {FOutputDevice} |");
                Writer.WriteLine();

                Writer.WriteHeading(2, "CoreUObject");

                Writer.WriteLine(Manifest, "The **{CoreUObject|Filter:CoreUObject}** module defines UObject, the base class for all managed objects in Unreal. Managed objects are key to integrating with the editor, for serialization, network replication, and runtime type information. UObject derived classes are garbage collected.");
                Writer.WriteLine();
                Writer.WriteLine("| Topic | Links |");
                Writer.WriteLine("| ----- | ----- |");
                Writer.WriteLine(Manifest, "|Classes:|{UObject} &middot; {UClass} &middot; {UProperty} &middot; {UPackage}|");
                Writer.WriteLine(Manifest, "|Functions:|{ConstructObject} &middot; {FindObject} &middot; {Cast} &middot; {CastChecked}|");
                Writer.WriteLine();

                Writer.WriteHeading(2, "Engine");

                Writer.WriteLine(Manifest, "The **{Engine|Filter:Engine}** module contains functionality you’d associate with a game. The game world, actors, characters, physics and special effects are all defined here.");
                Writer.WriteLine();
                Writer.WriteLine("| Topic | Links |");
                Writer.WriteLine("| ----- | ----- |");
                Writer.WriteLine(Manifest, "|Actors:|{AActor} &middot; {AVolume} &middot; {AGameMode} &middot; {AHUD} &middot; {More...|Hierarchy:AActor}");
                Writer.WriteLine(Manifest, "|Pawns:|{APawn} &middot; {ACharacter} &middot; {AWheeledVehicle}");
                Writer.WriteLine(Manifest, "|Controllers:|{AController} &middot; {AAIController} &middot; {APlayerController}");
                Writer.WriteLine(Manifest, "|Components:|{UActorComponent} &middot; {UBrainComponent} &middot; {UInputComponent} &middot; {USkeletalMeshComponent} &middot; {UParticleSystemComponent} &middot; {More...|Hierarchy:UActorComponent}|");
                Writer.WriteLine(Manifest, "|Gameplay:|{UPlayer} &middot; {ULocalPlayer} &middot; {UWorld} &middot; {ULevel}");
                Writer.WriteLine(Manifest, "|Assets:|{UTexture} &middot; {UMaterial} &middot; {UStaticMesh} &middot; {USkeletalMesh} &middot; {UParticleSystem}|");

                Writer.WriteLine("<br>");
            }
        }
        public void Write(UdnWriter Writer, int Depth, Dictionary<string, APIModule> Modules)
        {
            if (!IsEmpty)
            {
                // Find all the major modules in this category
                if (MajorModules.Count > 0)
                {
                    Writer.WriteList("Name", "Description", MajorModules.Select(x => Modules[x].GetListItem()));
                }

                // Write all the minor modules in this category
                if (MinorModules.Count > 0)
                {
                    Writer.EnterRegion("syntax");
                    Writer.WriteFilterList(MinorModules.Select(x => Modules[x].GetFilterListItem()).ToArray());
                    Writer.LeaveRegion();
                }

                // Write all the subcategories
                foreach (APIModuleCategory Category in Categories)
                {
                    Writer.WriteHeading(Depth, Category.Name);
                    Writer.WriteLine();
                    Category.Write(Writer, Depth + 1, Modules);
                }
            }
        }
Exemple #10
0
		public override void WritePage(UdnManifest Manifest, string OutputPath)
		{
			using (UdnWriter Writer = new UdnWriter(OutputPath))
			{
				Writer.WritePageHeader("Unreal Engine API Reference", PageCrumbs, "Unreal Engine API Reference");

				Writer.WriteHeading(2, "Disclaimer");

				Writer.WriteLine("The API reference is an early work in progress, and some information may be missing or out of date. It serves mainly as a low level index of Engine classes and functions.");
				Writer.WriteLine("For tutorials, walkthroughs and detailed guides to programming with Unreal, please see the [Unreal Engine Programming](http://docs.unrealengine.com/latest/INT/Programming/index.html) home on the web.");
				Writer.WriteLine();
				Writer.WriteLine("To explore the API from some of the most frequently encountered Unreal concepts and types, see the API __[getting started](" + GettingStarted.LinkPath + ")__ page.");

				Writer.WriteHeading(2, "Contents");

				Writer.EnterRegion("memberindexlinks");
				Writer.WriteLine("[Getting started]({0}) &middot; [All constants]({1}) &middot; [All functions]({2}) &middot; [All enums]({3}) &middot; [All classes]({4}) &middot; [Class hierarchy]({5})", GettingStarted.LinkPath, ConstantIndex.LinkPath, FunctionIndex.LinkPath, EnumIndex.LinkPath, RecordIndex.LinkPath, RecordHierarchy.LinkPath);
				Writer.LeaveRegion();

				foreach(APIModuleIndex ChildModuleIndex in ChildModuleIndexes)
				{
					Writer.WriteHeading(2, ChildModuleIndex.Name);
					Writer.EnterRegion("modules-list");
					ChildModuleIndex.WriteModuleList(Writer, 3);
					Writer.LeaveRegion();
				}

				Writer.WriteLine("<br>");
			}
		}