Skip to content

Commit 630f550

Browse files
committed
fix: settings refactor
1 parent 5c6678b commit 630f550

File tree

6 files changed

+152
-197
lines changed

6 files changed

+152
-197
lines changed

Scripts/Editor/Core/CodeGenerationUtility.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -307,17 +307,17 @@ public static void DisablePartialClassGenerationIfDisallowed(ScriptableObjectCol
307307
SOCSettings.Instance.SetWriteAsPartialClass(collection, false);
308308
}
309309
}
310-
public static bool CheckIfCanBePartial(ScriptableObjectCollection collection)
310+
public static bool CheckIfCanBePartial(ScriptableObjectCollection collection, string destinationFolder = "")
311311
{
312312
string baseClassPath = AssetDatabase.GetAssetPath(MonoScript.FromScriptableObject(collection));
313313
string baseAssembly = CompilationPipeline.GetAssemblyNameFromScriptPath(baseClassPath);
314-
string targetGeneratedCodePath = CompilationPipeline.GetAssemblyNameFromScriptPath(
315-
AssetDatabase.GetAssetPath(SOCSettings.Instance.GetGeneratedScriptsParentFolder(collection)));
314+
if(string.IsNullOrEmpty(destinationFolder))
315+
destinationFolder = CompilationPipeline.GetAssemblyNameFromScriptPath(SOCSettings.Instance.GetParentFolderPathForCollection(collection));
316316

317317
// NOTE: If you're not using assemblies for your code, it's expected that 'targetGeneratedCodePath' would
318318
// be the same as 'baseAssembly', but it isn't. 'targetGeneratedCodePath' seems to be empty in that case.
319-
bool canBePartial = baseAssembly.Equals(targetGeneratedCodePath, StringComparison.Ordinal) ||
320-
string.IsNullOrEmpty(targetGeneratedCodePath);
319+
bool canBePartial = baseAssembly.Equals(destinationFolder, StringComparison.Ordinal) ||
320+
string.IsNullOrEmpty(destinationFolder);
321321

322322
return canBePartial;
323323
}
@@ -374,10 +374,10 @@ public static void GenerateStaticCollectionScript(ScriptableObjectCollection col
374374

375375
string fileName = SOCSettings.Instance.GetStaticFilenameForCollection(collection);
376376
string nameSpace = SOCSettings.Instance.GetNamespaceForCollection(collection);
377-
string finalFolder = AssetDatabase.GetAssetPath(SOCSettings.Instance.GetGeneratedScriptsParentFolder(collection));
377+
string finalFolder = AssetDatabase.GetAssetPath(SOCSettings.Instance.GetParentDefaultAssetScriptsFolderForCollection(collection));
378378

379379
bool writeAsPartial = SOCSettings.Instance.GetWriteAsPartialClass(collection);
380-
bool useBaseClass = SOCSettings.Instance.GetUseBaseClassForITems(collection);
380+
bool useBaseClass = SOCSettings.Instance.GetUseBaseClassForItem(collection);
381381

382382

383383
AssetDatabaseUtils.CreatePathIfDoesntExist(finalFolder);
@@ -620,7 +620,7 @@ private static void WriteNonAutomaticallyLoadedCollectionItems(ScriptableObjectC
620620
public static bool DoesStaticFileForCollectionExist(ScriptableObjectCollection collection)
621621
{
622622
return File.Exists(Path.Combine(
623-
AssetDatabase.GetAssetPath(SOCSettings.Instance.GetGeneratedScriptsParentFolder(collection)),
623+
AssetDatabase.GetAssetPath(SOCSettings.Instance.GetParentDefaultAssetScriptsFolderForCollection(collection)),
624624
$"{SOCSettings.Instance.GetStaticFilenameForCollection(collection)}.g.cs"));
625625
}
626626
}
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
using System;
2+
using System.IO;
3+
using UnityEditor;
4+
5+
namespace BrunoMikoski.ScriptableObjectCollections
6+
{
7+
[Serializable]
8+
public class CollectionSettings
9+
{
10+
public LongGuid Guid;
11+
public string Namespace;
12+
public string StaticFilename;
13+
public string ParentFolderPath;
14+
public bool WriteAsPartialClass;
15+
public bool UseBaseClassForItems;
16+
public bool EnforceIndirectAccess;
17+
18+
public CollectionSettings(ScriptableObjectCollection targetCollection)
19+
{
20+
Guid = targetCollection.GUID;
21+
string targetNamespace = targetCollection.GetItemType().Namespace;
22+
if (!string.IsNullOrEmpty(SOCSettings.Instance.NamespacePrefix))
23+
targetNamespace = $"{SOCSettings.Instance.NamespacePrefix}";
24+
25+
Namespace = targetNamespace;
26+
27+
if (!string.IsNullOrEmpty(SOCSettings.Instance.generatedScriptsDefaultFilePath))
28+
{
29+
ParentFolderPath = SOCSettings.Instance.generatedScriptsDefaultFilePath;
30+
}
31+
else
32+
{
33+
string baseClassPath = AssetDatabase.GetAssetPath(MonoScript.FromScriptableObject(targetCollection));
34+
string parentFolder = Path.GetDirectoryName(baseClassPath);
35+
ParentFolderPath = parentFolder;
36+
}
37+
38+
bool canBePartial = CodeGenerationUtility.CheckIfCanBePartial(targetCollection, ParentFolderPath);
39+
40+
if (!canBePartial)
41+
StaticFilename = $"{targetCollection.GetType().Name}Static".FirstToUpper();
42+
else
43+
StaticFilename = $"{targetCollection.GetType().Name}".FirstToUpper();
44+
45+
WriteAsPartialClass = canBePartial;
46+
UseBaseClassForItems = false;
47+
EnforceIndirectAccess = false;
48+
}
49+
}
50+
}

Scripts/Editor/Core/CollectionSettings.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.

0 commit comments

Comments
 (0)