From bb6c2cec4388685fddc6717d9e0cba5036e5feaa Mon Sep 17 00:00:00 2001 From: Mikhail <99481254+DCFApixels@users.noreply.github.com> Date: Tue, 1 Oct 2024 07:42:54 +0800 Subject: [PATCH] stash --- src/RefRepairer/Editor/RefRepairerWindow.cs | 27 ++++++++++++++++--- src/RefRepairer/MissingRefContainer.cs | 6 +++++ src/RefRepairer/RepairerFile.cs | 17 ++++++------ ...ta => CollectedAssetMissingRecord.cs.meta} | 2 +- src/RefRepairer/Utils/ContainerMissingRefs.cs | 21 --------------- src/RefRepairer/Utils/MissingTypeData.cs | 18 ------------- src/RefRepairer/Utils/MissingTypeData.cs.meta | 11 -------- ....cs.meta => MissingsResolvingData.cs.meta} | 2 +- src/RefRepairer/Utils/SceneObjectData.cs | 19 ------------- src/RefRepairer/Utils/UnityObjectData.cs | 19 ------------- src/RefRepairer/Utils/UnityObjectData.cs.meta | 11 -------- src/RefRepairer/Utils/UnityObjectDataBase.cs | 27 ++++++++++++++++++- 12 files changed, 66 insertions(+), 114 deletions(-) rename src/RefRepairer/Utils/{SceneObjectData.cs.meta => CollectedAssetMissingRecord.cs.meta} (83%) delete mode 100644 src/RefRepairer/Utils/ContainerMissingRefs.cs delete mode 100644 src/RefRepairer/Utils/MissingTypeData.cs delete mode 100644 src/RefRepairer/Utils/MissingTypeData.cs.meta rename src/RefRepairer/Utils/{ContainerMissingRefs.cs.meta => MissingsResolvingData.cs.meta} (83%) delete mode 100644 src/RefRepairer/Utils/SceneObjectData.cs delete mode 100644 src/RefRepairer/Utils/UnityObjectData.cs delete mode 100644 src/RefRepairer/Utils/UnityObjectData.cs.meta diff --git a/src/RefRepairer/Editor/RefRepairerWindow.cs b/src/RefRepairer/Editor/RefRepairerWindow.cs index cdeeec5..956a68e 100644 --- a/src/RefRepairer/Editor/RefRepairerWindow.cs +++ b/src/RefRepairer/Editor/RefRepairerWindow.cs @@ -1,6 +1,5 @@ п»ї#if UNITY_EDITOR using DCFApixels.DragonECS.Unity.RefRepairer.Editors; -using System.Collections.Generic; using System.Linq; using UnityEditor; using UnityEditor.SceneManagement; @@ -20,8 +19,28 @@ namespace DCFApixels.DragonECS.Unity.Editors wnd.Show(); } - //private List _missingTypes; - //private readonly CollectorMissingTypes _collectorMissingTypes = new CollectorMissingTypes(); + private MissingRefContainer _missingRefContainer = new MissingRefContainer(); + + + private void OnGUI() + { + if (_missingRefContainer.IsEmplty) + { + if(GUILayout.Button("Collect missing references")) + { + if (TryInit()) + { + _missingRefContainer.Collect(); + } + } + return; + } + + + _missingRefContainer.MissingsResolvingDatas + } + + private bool TryInit() { @@ -47,7 +66,7 @@ namespace DCFApixels.DragonECS.Unity.Editors EditorSceneManager.SaveScene(dirtyScene); } - //_missingTypes = _collectorMissingTypes.Collect(); + _missingRefContainer.Collect(); return true; } } diff --git a/src/RefRepairer/MissingRefContainer.cs b/src/RefRepairer/MissingRefContainer.cs index b7be9c6..70e25c4 100644 --- a/src/RefRepairer/MissingRefContainer.cs +++ b/src/RefRepairer/MissingRefContainer.cs @@ -17,6 +17,11 @@ namespace DCFApixels.DragonECS.Unity.RefRepairer.Editors public CollectedAssetMissingRecord[] collectedMissingTypesBuffer = null; public int collectedMissingTypesBufferCount = 0; public readonly Dictionary MissingsResolvingDatas = new Dictionary(); + public MissingsResolvingData[] MissingsResolvingDataValues; + public bool IsEmplty + { + get { return collectedMissingTypesBufferCount == 0; } + } #region Clear/RemoveResolved public void Clear() @@ -93,6 +98,7 @@ namespace DCFApixels.DragonECS.Unity.RefRepairer.Editors CollectByScriptableObjects(); CollectByScenes(); + MissingsResolvingDataValues = MissingsResolvingDatas.Values.ToArray(); for (int i = collectedMissingTypesBufferCount; i < oldCollectedMissingTypesBufferCount; i++) { collectedMissingTypesBuffer[i] = default; diff --git a/src/RefRepairer/RepairerFile.cs b/src/RefRepairer/RepairerFile.cs index e0f8b7c..cda71a6 100644 --- a/src/RefRepairer/RepairerFile.cs +++ b/src/RefRepairer/RepairerFile.cs @@ -40,21 +40,21 @@ namespace DCFApixels.DragonECS.Unity.RefRepairer.Editors { if (container.collectedMissingTypesBufferCount <= 0) { return; } - MissingsResolvingData[] missingsResolvingDatas = container.MissingsResolvingDatas.Values.Where(o => o.IsResolved).ToArray(); + //MissingsResolvingData[] missingsResolvingDatas = container.MissingsResolvingDatas.Values.Where(o => o.IsResolved).ToArray(); for (int i = 0; i < container.collectedMissingTypesBufferCount; i++) { ref var missing = ref container.collectedMissingTypesBuffer[i]; if (missing.IsNull) { continue; } var unityObjectData = missing.UnityObject; - using (var file = new FileScope(AssetDatabase.GUIDToAssetPath(unityObjectData.AssetGuid))) + using (var file = new FileScope(unityObjectData.GetLocalAssetPath())) { int startRepaierLineIndex = 0;//Это нужно чтобы скипать уже "отремонтированную" часть файл. // тут итерируюсь по блоку missingsResolvingDatas с одинаковым юнити объектом, так как такие идеут подрят do { - bool isAnySkiped = false; + //bool isAnySkiped = false; int lineIndex = NextRefLine(file.lines, startRepaierLineIndex); while (lineIndex > 0) { @@ -71,14 +71,15 @@ namespace DCFApixels.DragonECS.Unity.RefRepairer.Editors if (isChanged == false) { - isAnySkiped = true; + //isAnySkiped = true; } else { - if (isAnySkiped == false) - { - startRepaierLineIndex = lineIndex; - } + break; + //if (isAnySkiped == false) + //{ + // startRepaierLineIndex = lineIndex; + //} } lineIndex = NextRefLine(file.lines, lineIndex); } diff --git a/src/RefRepairer/Utils/SceneObjectData.cs.meta b/src/RefRepairer/Utils/CollectedAssetMissingRecord.cs.meta similarity index 83% rename from src/RefRepairer/Utils/SceneObjectData.cs.meta rename to src/RefRepairer/Utils/CollectedAssetMissingRecord.cs.meta index f27167a..7f3a9c7 100644 --- a/src/RefRepairer/Utils/SceneObjectData.cs.meta +++ b/src/RefRepairer/Utils/CollectedAssetMissingRecord.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 495419751a448a848853d4df10955da7 +guid: 7fb76d31aa28c1d42b68087f23db29ec MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/src/RefRepairer/Utils/ContainerMissingRefs.cs b/src/RefRepairer/Utils/ContainerMissingRefs.cs deleted file mode 100644 index 1a4fff3..0000000 --- a/src/RefRepairer/Utils/ContainerMissingRefs.cs +++ /dev/null @@ -1,21 +0,0 @@ -п»ї#if UNITY_EDITOR -using DCFApixels.DragonECS.Unity.RefRepairer.Internal; -using System.Collections.Generic; - -namespace DCFApixels.DragonECS.Unity.RefRepairer.Editors -{ - //internal class ContainerMissingRefs - //{ - // public readonly TypeData TypeData; - // public readonly string ReplacedLine; - // public readonly List ManagedReferencesMissingTypeDatas = new List(4); - // public readonly bool IsHasMetaIDRegistry; - // public ContainerMissingRefs(TypeData typeData) - // { - // TypeData = typeData; - // ReplacedLine = RepaireFileUtility.GenerateReplacedLine(typeData); - // IsHasMetaIDRegistry = MetaIDRegistry.instance.TryGetMetaID(TypeData, out _); - // } - //} -} -#endif \ No newline at end of file diff --git a/src/RefRepairer/Utils/MissingTypeData.cs b/src/RefRepairer/Utils/MissingTypeData.cs deleted file mode 100644 index 4fd8b22..0000000 --- a/src/RefRepairer/Utils/MissingTypeData.cs +++ /dev/null @@ -1,18 +0,0 @@ -п»ї#if UNITY_EDITOR -using UnityEditor; - -namespace DCFApixels.DragonECS.Unity.RefRepairer.Editors -{ - //internal readonly struct MissingTypeData - //{ - // public readonly ManagedReferenceMissingType Data; - // public readonly UnityObjectDataBase UnityObject; - // - // public MissingTypeData(ManagedReferenceMissingType missingType, UnityObjectDataBase unityObject) - // { - // Data = missingType; - // UnityObject = unityObject; - // } - //} -} -#endif \ No newline at end of file diff --git a/src/RefRepairer/Utils/MissingTypeData.cs.meta b/src/RefRepairer/Utils/MissingTypeData.cs.meta deleted file mode 100644 index c97f73a..0000000 --- a/src/RefRepairer/Utils/MissingTypeData.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 447f4a0f7419475438468e8f08d8b7cd -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/src/RefRepairer/Utils/ContainerMissingRefs.cs.meta b/src/RefRepairer/Utils/MissingsResolvingData.cs.meta similarity index 83% rename from src/RefRepairer/Utils/ContainerMissingRefs.cs.meta rename to src/RefRepairer/Utils/MissingsResolvingData.cs.meta index c098b7b..c12770c 100644 --- a/src/RefRepairer/Utils/ContainerMissingRefs.cs.meta +++ b/src/RefRepairer/Utils/MissingsResolvingData.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 7999f2711e8e3e040b8ae48ce5acec71 +guid: f41c9df5930a6b44cbe9d043e224b514 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/src/RefRepairer/Utils/SceneObjectData.cs b/src/RefRepairer/Utils/SceneObjectData.cs deleted file mode 100644 index eea6246..0000000 --- a/src/RefRepairer/Utils/SceneObjectData.cs +++ /dev/null @@ -1,19 +0,0 @@ -п»ї#if UNITY_EDITOR -using UnityEditor; -using UnityEngine.SceneManagement; - -namespace DCFApixels.DragonECS.Unity.RefRepairer.Editors -{ - internal class SceneObjectData : UnityObjectDataBase - { - private readonly GUID _assetGUID; - public readonly string SceneName; - public sealed override GUID AssetGuid { get { return _assetGUID; } } - public SceneObjectData(Scene scene) - { - _assetGUID = AssetDatabase.GUIDFromAssetPath(scene.path); - SceneName = scene.name; - } - } -} -#endif \ No newline at end of file diff --git a/src/RefRepairer/Utils/UnityObjectData.cs b/src/RefRepairer/Utils/UnityObjectData.cs deleted file mode 100644 index 1ada726..0000000 --- a/src/RefRepairer/Utils/UnityObjectData.cs +++ /dev/null @@ -1,19 +0,0 @@ -п»ї#if UNITY_EDITOR -using UnityEditor; -using UnityObject = UnityEngine.Object; - -namespace DCFApixels.DragonECS.Unity.RefRepairer.Editors -{ - internal class UnityObjectData : UnityObjectDataBase - { - private readonly GUID _assetGUID; - public readonly UnityObject UnityObject; - public sealed override GUID AssetGuid { get { return _assetGUID; } } - public UnityObjectData(UnityObject unityObject, string pathToPrefab) - { - _assetGUID = AssetDatabase.GUIDFromAssetPath(pathToPrefab); - UnityObject = unityObject; - } - } -} -#endif \ No newline at end of file diff --git a/src/RefRepairer/Utils/UnityObjectData.cs.meta b/src/RefRepairer/Utils/UnityObjectData.cs.meta deleted file mode 100644 index 3426824..0000000 --- a/src/RefRepairer/Utils/UnityObjectData.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 0037513c31abb5d4ebd572d2fd17ccec -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/src/RefRepairer/Utils/UnityObjectDataBase.cs b/src/RefRepairer/Utils/UnityObjectDataBase.cs index 497ff7d..0e22918 100644 --- a/src/RefRepairer/Utils/UnityObjectDataBase.cs +++ b/src/RefRepairer/Utils/UnityObjectDataBase.cs @@ -1,16 +1,41 @@ п»ї#if UNITY_EDITOR using UnityEditor; +using UnityEngine.SceneManagement; +using UnityObject = UnityEngine.Object; namespace DCFApixels.DragonECS.Unity.RefRepairer.Editors { internal abstract class UnityObjectDataBase { - //public string LocalAssetPath => AssetDatabase.GUIDToAssetPath(AssetGuid); public abstract GUID AssetGuid { get; } public string GetLocalAssetPath() { return AssetDatabase.GUIDToAssetPath(AssetGuid); } } + + internal class UnityObjectData : UnityObjectDataBase + { + private readonly GUID _assetGUID; + public readonly UnityObject UnityObject; + public sealed override GUID AssetGuid { get { return _assetGUID; } } + public UnityObjectData(UnityObject unityObject, string pathToPrefab) + { + _assetGUID = AssetDatabase.GUIDFromAssetPath(pathToPrefab); + UnityObject = unityObject; + } + } + + internal class SceneObjectData : UnityObjectDataBase + { + private readonly GUID _assetGUID; + public readonly string SceneName; + public sealed override GUID AssetGuid { get { return _assetGUID; } } + public SceneObjectData(Scene scene) + { + _assetGUID = AssetDatabase.GUIDFromAssetPath(scene.path); + SceneName = scene.name; + } + } } #endif \ No newline at end of file