Skip to content
This repository was archived by the owner on Dec 13, 2025. It is now read-only.

Commit 9d81cde

Browse files
committed
Fixed the problems with the documentation generator
1 parent 440e531 commit 9d81cde

6 files changed

Lines changed: 216 additions & 115 deletions

File tree

Source/DocGen2/Services/MarkdownGenerators/TypeGenerator.cs

Lines changed: 26 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
1-
using System;
1+
using Mal.DocGen2.Services.Markdown;
2+
using Mal.DocGen2.Services.XmlDocs;
3+
using System;
24
using System.Collections.Generic;
35
using System.Diagnostics;
46
using System.IO;
57
using System.Linq;
68
using System.Net;
79
using System.Reflection;
810
using System.Threading.Tasks;
9-
using Mal.DocGen2.Services.Markdown;
10-
using Mal.DocGen2.Services.XmlDocs;
1111

1212
namespace Mal.DocGen2.Services.MarkdownGenerators
1313
{
14-
class TypeGenerator : DocumentGenerator
14+
class TypeGenerator: DocumentGenerator
1515
{
1616
readonly TypeDefinitions _typeDefinitions;
1717

@@ -84,7 +84,14 @@ async Task GeneratePage(ProgrammableBlockApi api, DirectoryInfo directory, ApiEn
8484

8585
async Task WriteTypeDefinitions(ApiEntry entry, MarkdownWriter writer)
8686
{
87-
var defs = _typeDefinitions.Definitions.Where(d => d.TypeName == entry.FullName).ToList();
87+
if (entry.Name == null
88+
|| entry.Name.EndsWith("IMyFunctionalBlock")
89+
|| entry.Name.EndsWith("IMyTerminalBlock")
90+
|| entry.Name.EndsWith("IMyCubeBlock")
91+
|| entry.Name.EndsWith("IMyEntity"))
92+
return;
93+
94+
var defs = _typeDefinitions.Definitions.Where(d => IsRelevantDefinition(entry, d)).ToList();
8895
if (!defs.Any())
8996
return;
9097
await writer.BeginParagraphAsync();
@@ -99,9 +106,16 @@ async Task WriteTypeDefinitions(ApiEntry entry, MarkdownWriter writer)
99106
await writer.EndParagraphAsync();
100107
}
101108

109+
private bool IsRelevantDefinition(ApiEntry entry, TypeDefinitions.Definition definition)
110+
{
111+
if (definition.TypeName == entry.FullName)
112+
return true;
113+
return entry.InheritorEntries.Any(e => IsRelevantDefinition(e, definition));
114+
}
115+
102116
string ConstructOf(ApiEntry entry)
103117
{
104-
var type = (Type) entry.Member;
118+
var type = (Type)entry.Member;
105119
if (typeof(Delegate).IsAssignableFrom(type))
106120
return "Delegate";
107121
if (type.IsEnum)
@@ -127,11 +141,7 @@ async Task WriteInterfaces(ApiEntry entry, MarkdownWriter writer)
127141
await writer.BeginParagraphAsync();
128142
await writer.WriteLineAsync(MarkdownInline.Strong("Implements: "));
129143

130-
var lines = entry.InheritedEntries.Select(iface => new
131-
{
132-
Text = iface.ToString(ApiEntryStringFlags.ShortDisplayName),
133-
Interface = iface
134-
})
144+
var lines = entry.InheritedEntries.Select(iface => new { Text = iface.ToString(ApiEntryStringFlags.ShortDisplayName), Interface = iface })
135145
.OrderBy(o => o.Text)
136146
.Select(o => MemberGenerator.LinkTo(o.Text, o.Interface))
137147
.ToList();
@@ -145,11 +155,7 @@ async Task WriteInheritors(ApiEntry entry, MarkdownWriter writer)
145155
await writer.BeginParagraphAsync();
146156
await writer.WriteLineAsync(MarkdownInline.Strong("Inheritors: "));
147157

148-
var lines = entry.InheritorEntries.Select(iface => new
149-
{
150-
Text = iface.ToString(ApiEntryStringFlags.ShortDisplayName),
151-
Interface = iface
152-
})
158+
var lines = entry.InheritorEntries.Select(iface => new { Text = iface.ToString(ApiEntryStringFlags.ShortDisplayName), Interface = iface })
153159
.OrderBy(o => o.Text)
154160
.Select(o => MemberGenerator.LinkTo(o.Text, o.Interface))
155161
.ToList();
@@ -190,8 +196,11 @@ IEnumerable<ApiEntry> AllInheritedEntriesOf(ApiEntry entry)
190196
if (item.BaseEntry != null && visitedMembers.Add(item.BaseEntry))
191197
stack.Push(item.BaseEntry);
192198
foreach (var iface in item.InheritedEntries)
199+
{
193200
if (visitedMembers.Add(iface))
194201
stack.Push(iface);
202+
}
203+
195204
foreach (var member in item.MemberEntries)
196205
yield return member;
197206
}
@@ -235,6 +244,7 @@ async Task WriteTable(string title, IEnumerable<ApiEntry> entries, ProgrammableB
235244
await writer.WriteAsync(MarkdownInline.Emphasized($"Inherited from {MemberGenerator.LinkTo(item.DeclaringEntry.ToString(ApiEntryStringFlags.ShortDisplayName), item.DeclaringEntry)}"));
236245
await writer.EndParagraphAsync();
237246
}
247+
238248
await writer.EndQuoteAsync();
239249

240250
//await writer.EndTableCellAsync();

Source/MDKWhitelistExtractor/Digi/TempBlockSpawn.cs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using Sandbox.Definitions;
33
using Sandbox.Game.Entities;
44
using Sandbox.ModAPI;
5+
using System.Threading.Tasks;
56
using VRage;
67
using VRage.Game;
78
using VRage.Game.ModAPI;
@@ -17,23 +18,23 @@ namespace Digi.BuildInfo.Features.LiveData
1718
{
1819
public struct TempBlockSpawn
1920
{
20-
public static void Spawn(MyCubeBlockDefinition def, bool deleteGridOnSpawn = true, Action<IMySlimBlock> callback = null)
21+
public static void Spawn(MyCubeBlockDefinition def, bool deleteGridOnSpawn = true, Action<IMySlimBlock> callback = null, Vector3D? spawnPos = null)
2122
{
22-
new TempBlockSpawn(def, deleteGridOnSpawn, callback);
23+
new TempBlockSpawn(def, deleteGridOnSpawn, callback, spawnPos);
2324
}
2425

2526
readonly bool _deleteGrid;
2627
readonly MyCubeBlockDefinition _blockDef;
2728
readonly Action<IMySlimBlock> _callback;
2829

29-
TempBlockSpawn(MyCubeBlockDefinition def, bool deleteGridOnSpawn = true, Action<IMySlimBlock> callback = null)
30+
TempBlockSpawn(MyCubeBlockDefinition def, bool deleteGridOnSpawn = true, Action<IMySlimBlock> callback = null, Vector3D? spawnAt = null)
3031
{
3132
_blockDef = def;
3233
_deleteGrid = deleteGridOnSpawn;
3334
_callback = callback;
3435

3536
MatrixD camMatrix = MyAPIGateway.Session.Camera.WorldMatrix;
36-
Vector3D spawnPos = camMatrix.Translation + camMatrix.Backward * 100;
37+
var spawnPos = spawnAt ?? camMatrix.Translation + camMatrix.Backward * 100;
3738

3839
MyObjectBuilder_CubeBlock blockOB = CreateBlockOB(def.Id);
3940

0 commit comments

Comments
 (0)