Skip to content

Commit 4ffdfa7

Browse files
author
András Kurai
committed
Merge branch 'feature/nicer-code-generation' into develop
2 parents 85de654 + c215089 commit 4ffdfa7

File tree

8 files changed

+64
-31
lines changed

8 files changed

+64
-31
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
# 0.4.0
2+
- More nicely formatted output
3+
14
# 0.3.0
25
- Support for files with non-alphanumeric characters
36
- Support for file starting with numeric characters

UnityResourceGenerator/Assets/AutSoft.UnityResourceGenerator.Sample/ResourcePaths.cs

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,64 +5,75 @@ namespace AutSoft.UnityResourceGenerator.Sample
55
{
66
// ReSharper disable PartialTypeWithSinglePart
77
// ReSharper disable InconsistentNaming
8+
// ReSharper disable IncorrectBlankLinesNearBraces
89
public static partial class ResourcePaths
910
{
10-
1111
public static partial class Scenes
1212
{
13+
1314
public const string CreatePrefab = "AutSoft.UnityResourceGenerator.Sample/Scenes/CreatePrefab";
1415
public static void LoadCreatePrefab(LoadSceneMode mode = LoadSceneMode.Single) => SceneManager.LoadScene(CreatePrefab, mode);
1516
public static AsyncOperation LoadAsyncCreatePrefab(LoadSceneMode mode = LoadSceneMode.Single) => SceneManager.LoadSceneAsync(CreatePrefab, mode);
17+
1618
public const string LoadSceneInitial = "AutSoft.UnityResourceGenerator.Sample/Scenes/LoadSceneInitial";
1719
public static void LoadLoadSceneInitial(LoadSceneMode mode = LoadSceneMode.Single) => SceneManager.LoadScene(LoadSceneInitial, mode);
1820
public static AsyncOperation LoadAsyncLoadSceneInitial(LoadSceneMode mode = LoadSceneMode.Single) => SceneManager.LoadSceneAsync(LoadSceneInitial, mode);
21+
1922
public const string LoadSceneNext = "AutSoft.UnityResourceGenerator.Sample/Scenes/LoadSceneNext";
2023
public static void LoadLoadSceneNext(LoadSceneMode mode = LoadSceneMode.Single) => SceneManager.LoadScene(LoadSceneNext, mode);
2124
public static AsyncOperation LoadAsyncLoadSceneNext(LoadSceneMode mode = LoadSceneMode.Single) => SceneManager.LoadSceneAsync(LoadSceneNext, mode);
22-
}
2325

26+
}
2427

2528
public static partial class Prefabs
2629
{
30+
2731
public const string Cube = "Cube";
2832
public static GameObject LoadCube() => Resources.Load<GameObject>(Cube);
29-
}
3033

34+
}
3135

3236
public static partial class Materials
3337
{
38+
3439
public const string Cube = "Cube";
3540
public static Material LoadCube() => Resources.Load<Material>(Cube);
41+
3642
public const string CubeAlt = "CubeAlt";
3743
public static Material LoadCubeAlt() => Resources.Load<Material>(CubeAlt);
44+
3845
public const string LiberationSansSDF_DropShadow = "Fonts & Materials/LiberationSans SDF - Drop Shadow";
3946
public static Material LoadLiberationSansSDF_DropShadow() => Resources.Load<Material>(LiberationSansSDF_DropShadow);
47+
4048
public const string LiberationSansSDF_Outline = "Fonts & Materials/LiberationSans SDF - Outline";
4149
public static Material LoadLiberationSansSDF_Outline() => Resources.Load<Material>(LiberationSansSDF_Outline);
42-
}
4350

51+
}
4452

4553
public static partial class AudioClips
4654
{
55+
4756
public const string CoinSpin = "Coin Spin";
4857
public static AudioClip LoadCoinSpin() => Resources.Load<AudioClip>(CoinSpin);
58+
4959
public const string _1Coin1 = "1Coin 1";
5060
public static AudioClip Load_1Coin1() => Resources.Load<AudioClip>(_1Coin1);
61+
5162
public const string Coin = "Coin";
5263
public static AudioClip LoadCoin() => Resources.Load<AudioClip>(Coin);
53-
}
54-
5564

65+
}
5666

5767
public static partial class TextAssets
5868
{
69+
5970
public const string LineBreakingFollowingCharacters = "LineBreaking Following Characters";
6071
public static TextAsset LoadLineBreakingFollowingCharacters() => Resources.Load<TextAsset>(LineBreakingFollowingCharacters);
72+
6173
public const string LineBreakingLeadingCharacters = "LineBreaking Leading Characters";
6274
public static TextAsset LoadLineBreakingLeadingCharacters() => Resources.Load<TextAsset>(LineBreakingLeadingCharacters);
63-
}
64-
6575

76+
}
6677

6778
}
68-
}
79+
}

UnityResourceGenerator/Assets/AutSoft.UnityResourceGenerator/Editor/Generation/Modules/AllResources.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,12 @@ private static string Generate(ResourceContext context, IResourceData data)
2424

2525
// ReSharper disable once MissingIndent
2626
var classBegin =
27-
$@"
28-
public static partial class {data.ClassName}
27+
$@" public static partial class {data.ClassName}
2928
{{
29+
3030
";
3131
// ReSharper disable once MissingIndent
32-
const string classEnd = " }";
32+
const string classEnd = @" }";
3333

3434
var values = data
3535
.FileExtensions
@@ -99,6 +99,8 @@ public static partial class {data.ClassName}
9999
sb.Append(" public static ").Append(data.DataType).Append(" Load").Append(s.name).Append("() => Resources.Load<").Append(data.DataType).Append(">(").Append(s.name).AppendLine(");");
100100
}
101101

102+
sb.AppendLine();
103+
102104
return sb;
103105
})
104106
.AppendLine(classEnd)

UnityResourceGenerator/Assets/AutSoft.UnityResourceGenerator/Editor/Generation/PostProcessors.meta

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
using System;
2+
using System.Text.RegularExpressions;
3+
4+
namespace AutSoft.UnityResourceGenerator.Editor.Generation.PostProcessors
5+
{
6+
public sealed class RemoveDuplicateNewLines : IResourcePostProcessor
7+
{
8+
private static readonly Regex MultipleNewLines = new Regex(@"(?:\r\n|\r(?!\n)|(?!<\r)\n){2,}", RegexOptions.Compiled, TimeSpan.FromSeconds(10));
9+
10+
public int PostProcessPriority { get; } = 0;
11+
12+
public string PostProcess(ResourceContext context, string resourceFileContent) => MultipleNewLines.Replace(resourceFileContent, Environment.NewLine + Environment.NewLine);
13+
}
14+
}

UnityResourceGenerator/Assets/AutSoft.UnityResourceGenerator/Editor/Generation/PostProcessors/RemoveDuplicateNewLines.cs.meta

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

UnityResourceGenerator/Assets/AutSoft.UnityResourceGenerator/Editor/Generation/ResourceFileGenerator.cs

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ namespace {0}
1616
{
1717
// ReSharper disable PartialTypeWithSinglePart
1818
// ReSharper disable InconsistentNaming
19+
// ReSharper disable IncorrectBlankLinesNearBraces
1920
public static partial class {1}
2021
{";
2122

@@ -29,36 +30,32 @@ public static partial class {1}
2930
@"
3031
// ReSharper disable PartialTypeWithSinglePart
3132
// ReSharper disable InconsistentNaming
33+
// ReSharper disable IncorrectBlankLinesNearBraces
3234
public static partial class {1}
3335
{";
3436

3537
const string fileEndNoNamespace = "}";
3638

37-
var builder = new StringBuilder();
38-
3939
var allConcreteTypes = AppDomain
4040
.CurrentDomain
4141
.GetAssemblies()
4242
.SelectMany(a => a.GetTypes())
4343
.Where(t => !t.IsAbstract && !t.IsGenericType && !t.IsInterface)
4444
.ToArray();
4545

46-
builder.AppendMultipleLines(context.Usings.Select(u => $"using {u};"));
47-
48-
builder.AppendLine(
49-
(string.IsNullOrWhiteSpace(context.BaseNamespace) ? fileBeginNoNamespace : fileBeginHasNamespace)
50-
.Replace("{0}", context.BaseNamespace)
51-
.Replace("{1}", context.ClassName));
52-
53-
allConcreteTypes
54-
.Where(t => t.GetInterfaces().Any(i => typeof(IModuleGenerator).IsAssignableFrom(i)))
55-
.Select(t => (IModuleGenerator)Activator.CreateInstance(t))
56-
.Select(m => m.Generate(context))
57-
.ForEach(m => builder.AppendLine(m));
58-
59-
builder.AppendLine(string.IsNullOrWhiteSpace(context.BaseNamespace) ? fileEndNoNamespace : fileEndHasNamespace);
60-
61-
var fileContent = builder.ToString();
46+
var fileContent = new StringBuilder()
47+
.AppendMultipleLines(context.Usings.Select(u => $"using {u};"))
48+
.AppendLine(
49+
(string.IsNullOrWhiteSpace(context.BaseNamespace) ? fileBeginNoNamespace : fileBeginHasNamespace)
50+
.Replace("{0}", context.BaseNamespace)
51+
.Replace("{1}", context.ClassName))
52+
.AppendMultipleLines(
53+
allConcreteTypes
54+
.Where(t => t.GetInterfaces().Any(i => typeof(IModuleGenerator).IsAssignableFrom(i)))
55+
.Select(t => (IModuleGenerator)Activator.CreateInstance(t))
56+
.Select(m => m.Generate(context)))
57+
.Append(string.IsNullOrWhiteSpace(context.BaseNamespace) ? fileEndNoNamespace : fileEndHasNamespace)
58+
.ToString();
6259

6360
fileContent = allConcreteTypes
6461
.Where(t => t.GetInterfaces().Any(i => typeof(IResourcePostProcessor).IsAssignableFrom(i)))

UnityResourceGenerator/Assets/AutSoft.UnityResourceGenerator/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "com.autsoft.unityresourcegenerator",
3-
"version": "0.3.0",
3+
"version": "0.4.0",
44
"displayName": "Unity Resource Generator",
55
"description": "Generate path strings for Resources.Load",
66
"license": "MIT",

0 commit comments

Comments
 (0)