diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index b154b06..0000000 --- a/.gitmodules +++ /dev/null @@ -1,6 +0,0 @@ -[submodule "Packages/CCU"] - path = Packages/CCU - url=https://github.com/Unity-Technologies/ConditionalCompilationUtility/ -[submodule "Packages/UnityMeshSimplifier"] - path = Packages/UnityMeshSimplifier - url=https://github.com/Unity-Technologies/UnityMeshSimplifier \ No newline at end of file diff --git a/AssemblyInfo.cs b/AssemblyInfo.cs deleted file mode 100644 index 5831b15..0000000 --- a/AssemblyInfo.cs +++ /dev/null @@ -1,9 +0,0 @@ -using System.Runtime.CompilerServices; - -// This is necessary to allow cross-communication between assemblies for classes in the Unity.AutoLOD -// namespace; The plan is that all code will eventually be within a single assembly. -#if UNITY_2017_3_OR_NEWER -[assembly: InternalsVisibleTo("AutoLOD-Editor")] -#else -[assembly: InternalsVisibleTo("Assembly-CSharp-Editor")] -#endif diff --git a/Scripts/Editor.meta b/Editor.meta similarity index 100% rename from Scripts/Editor.meta rename to Editor.meta diff --git a/Scripts/Editor/AutoLOD.cs b/Editor/AutoLOD.cs similarity index 87% rename from Scripts/Editor/AutoLOD.cs rename to Editor/AutoLOD.cs index 01a7df7..4c3ec50 100644 --- a/Scripts/Editor/AutoLOD.cs +++ b/Editor/AutoLOD.cs @@ -1,18 +1,16 @@ -#if UNITY_2018_1_OR_NEWER +#if UNITY_2018_4_OR_NEWER #define HAS_MINIMUM_REQUIRED_VERSION #endif -#if UNITY_2018_3_OR_NEWER -#pragma warning disable 0618 // TODO: Remove this when minimum version is 2018.3 -#endif - using System; using System.Collections; using System.Collections.Generic; using System.IO; using System.Linq; +using System.Reflection; using Unity.AutoLOD.Utilities; using UnityEditor; +using UnityEditor.PackageManager; using UnityEngine; using UnityObject = UnityEngine.Object; @@ -21,13 +19,14 @@ namespace Unity.AutoLOD [InitializeOnLoad] class AutoLOD { - const string k_MinimumRequiredVersion = "AutoLOD requires Unity 2018.1 or a later version"; + const string k_MinimumRequiredVersion = "AutoLOD requires Unity 2018.4 or a later version"; const HideFlags k_DefaultHideFlags = HideFlags.None; const string k_MaxExecutionTime = "AutoLOD.MaxExecutionTime"; const int k_DefaultMaxExecutionTime = 8; const string k_DefaultMeshSimplifier = "AutoLOD.DefaultMeshSimplifier"; const string k_DefaultMeshSimplifierDefault = "QuadricMeshSimplifier"; + const string k_DefaultMeshSimplifierDefine = "ENABLE_UNITYMESHSIMPLIFIER"; const string k_DefaultBatcher = "AutoLOD.DefaultBatcher"; const string k_MaxLOD = "AutoLOD.MaxLOD"; const int k_DefaultMaxLOD = 2; @@ -175,12 +174,91 @@ static List batchers static List s_Batchers; static IPreferences s_SimplifierPreferences; +#if HAS_MINIMUM_REQUIRED_VERSION + static IEnumerator GetDefaultSimplifier() + { + var list = Client.List(true); + while (!list.IsCompleted) + yield return null; + + PackageStatus status = PackageStatus.Unknown; + if (list.Status == StatusCode.Success) + { + foreach (var package in list.Result) + { + if (package.name == "com.whinarn.unitymeshsimplifier") + { + status = package.status; + break; + } + } + } + + if (status != PackageStatus.Available + && EditorUtility.DisplayDialog("Install Default Mesh Simplifier?", + "You are missing a default mesh simplifier. Would you like to install one?", + "Yes", "No")) + { + var request = Client.Add("https://github.com/Unity-Technologies/UnityMeshSimplifier.git"); + while (!request.IsCompleted) + yield return null; + + switch (request.Status) + { + case StatusCode.Success: + status = PackageStatus.Available; + break; + case StatusCode.InProgress: + status = PackageStatus.InProgress; + break; + case StatusCode.Failure: + Debug.LogError($"AutoLOD: {request.Error.message}"); + break; + } + } + + if (status == PackageStatus.Available) + { + // Cribbed from ConditionalCompilationUtility + // TODO: Remove when minimum version is 2019 LTS and use define constraints instead + var buildTargetGroup = EditorUserBuildSettings.selectedBuildTargetGroup; + if (buildTargetGroup == BuildTargetGroup.Unknown) + { + var propertyInfo = typeof(EditorUserBuildSettings).GetProperty("activeBuildTargetGroup", + BindingFlags.Static | BindingFlags.NonPublic); + if (propertyInfo != null) + buildTargetGroup = (BuildTargetGroup)propertyInfo.GetValue(null, null); + } + + var previousProjectDefines = PlayerSettings.GetScriptingDefineSymbolsForGroup(buildTargetGroup); + var projectDefines = previousProjectDefines.Split(';').ToList(); + if (!projectDefines.Contains(k_DefaultMeshSimplifierDefine, StringComparer.OrdinalIgnoreCase)) + { + EditorApplication.LockReloadAssemblies(); + + projectDefines.Add(k_DefaultMeshSimplifierDefine); + + // This will trigger another re-compile, which needs to happen, so all the custom attributes will be visible + PlayerSettings.SetScriptingDefineSymbolsForGroup(buildTargetGroup, string.Join(";", projectDefines.ToArray())); + + // Let other systems execute before reloading assemblies + yield return null; + EditorApplication.UnlockReloadAssemblies(); + } + } + else if (status != PackageStatus.InProgress) + { + Debug.LogError("AutoLOD: You must set a valid Default Mesh Simplifier under Edit -> Preferences"); + } + } +#endif + static void UpdateDependencies() { #if HAS_MINIMUM_REQUIRED_VERSION if (meshSimplifierType == null) { - Debug.LogError("AutoLOD: You must set a valid Default Mesh Simplifier under Edit -> Preferences"); + MonoBehaviourHelper.StartCoroutine(GetDefaultSimplifier()); ModelImporterLODGenerator.enabled = false; return; } @@ -343,8 +421,8 @@ static void ForceGenerateLOD() var selection = Selection.activeGameObject; if (selection) { - var prefabType = PrefabUtility.GetPrefabType(selection); - if (prefabType == PrefabType.ModelPrefab) + var prefabType = PrefabUtility.GetPrefabAssetType(selection); + if (prefabType == PrefabAssetType.Model) { var assetPath = AssetDatabase.GetAssetPath(selection); @@ -361,7 +439,7 @@ static void ForceGenerateLOD() AssetDatabase.ImportAsset(assetPath); } - else if (prefabType == PrefabType.Prefab) + else if (prefabType == PrefabAssetType.Regular) { GenerateLODs(new MenuCommand(null)); } @@ -372,8 +450,8 @@ static void ForceGenerateLOD() static bool CanForceGenerateLOD() { var selection = Selection.activeGameObject; - var prefabType = selection ? PrefabUtility.GetPrefabType(selection) : PrefabType.None; - return selection && prefabType == PrefabType.ModelPrefab || prefabType == PrefabType.Prefab; + var prefabType = selection ? PrefabUtility.GetPrefabAssetType(selection) : PrefabAssetType.NotAPrefab; + return selection && prefabType == PrefabAssetType.Model || prefabType == PrefabAssetType.Regular; } @@ -449,11 +527,11 @@ static void IterateOverSelectedGameObjects(Action callback) if (EditorUtility.DisplayCancelableProgressBar("Prefabs", selection.name, i / (float)count)) break; - if (selection && PrefabUtility.GetPrefabType(selection) == PrefabType.Prefab) + if (selection && PrefabUtility.GetPrefabAssetType(selection) == PrefabAssetType.Regular) { var go = (GameObject)PrefabUtility.InstantiatePrefab(selection); callback(go); - PrefabUtility.ReplacePrefab(go, selection); + PrefabUtility.SaveAsPrefabAsset(go, AssetDatabase.GetAssetPath(selection)); UnityObject.DestroyImmediate(go); } else @@ -550,11 +628,7 @@ static void GenerateLODs(GameObject go) lodGroup.RecalculateBounds(); lodGroup.ForceLOD(-1); -#if UNITY_2018_2_OR_NEWER var prefab = PrefabUtility.GetCorrespondingObjectFromSource(go); -#else - var prefab = PrefabUtility.GetPrefabParent(go); -#endif if (prefab) { var lodsAssetPath = GetLODAssetPath(prefab); @@ -601,11 +675,7 @@ static void RemoveLODs(GameObject go) UnityObject.DestroyImmediate(mf.gameObject); } -#if UNITY_2018_2_OR_NEWER var prefab = PrefabUtility.GetCorrespondingObjectFromSource(go); -#else - var prefab = PrefabUtility.GetPrefabParent(go); -#endif if (prefab) { var lodAssetPath = GetLODAssetPath(prefab); diff --git a/Scripts/Editor/AutoLOD.cs.meta b/Editor/AutoLOD.cs.meta similarity index 100% rename from Scripts/Editor/AutoLOD.cs.meta rename to Editor/AutoLOD.cs.meta diff --git a/Scripts/Editor/Batchers.meta b/Editor/Batchers.meta similarity index 100% rename from Scripts/Editor/Batchers.meta rename to Editor/Batchers.meta diff --git a/Scripts/Editor/Batchers/MaterialPreservingBatcher.cs b/Editor/Batchers/MaterialPreservingBatcher.cs similarity index 100% rename from Scripts/Editor/Batchers/MaterialPreservingBatcher.cs rename to Editor/Batchers/MaterialPreservingBatcher.cs diff --git a/Scripts/Editor/Batchers/MaterialPreservingBatcher.cs.meta b/Editor/Batchers/MaterialPreservingBatcher.cs.meta similarity index 100% rename from Scripts/Editor/Batchers/MaterialPreservingBatcher.cs.meta rename to Editor/Batchers/MaterialPreservingBatcher.cs.meta diff --git a/Scripts/Editor/Batchers/SimpleBatcher.cs b/Editor/Batchers/SimpleBatcher.cs similarity index 99% rename from Scripts/Editor/Batchers/SimpleBatcher.cs rename to Editor/Batchers/SimpleBatcher.cs index 68f234f..1a346de 100644 --- a/Scripts/Editor/Batchers/SimpleBatcher.cs +++ b/Editor/Batchers/SimpleBatcher.cs @@ -167,9 +167,7 @@ public IEnumerator Batch(GameObject go) } var combinedMesh = new Mesh(); -#if UNITY_2017_3_OR_NEWER combinedMesh.indexFormat = IndexFormat.UInt32; -#endif combinedMesh.CombineMeshes(combine.ToArray(), true, true); combinedMesh.RecalculateBounds(); var meshFilter = go.AddComponent(); diff --git a/Scripts/Editor/Batchers/SimpleBatcher.cs.meta b/Editor/Batchers/SimpleBatcher.cs.meta similarity index 100% rename from Scripts/Editor/Batchers/SimpleBatcher.cs.meta rename to Editor/Batchers/SimpleBatcher.cs.meta diff --git a/Scripts/Editor/GridPlacementUtility.cs b/Editor/GridPlacementUtility.cs similarity index 100% rename from Scripts/Editor/GridPlacementUtility.cs rename to Editor/GridPlacementUtility.cs diff --git a/Scripts/Editor/GridPlacementUtility.cs.meta b/Editor/GridPlacementUtility.cs.meta similarity index 100% rename from Scripts/Editor/GridPlacementUtility.cs.meta rename to Editor/GridPlacementUtility.cs.meta diff --git a/Scripts/Editor/Helpers.meta b/Editor/Helpers.meta similarity index 100% rename from Scripts/Editor/Helpers.meta rename to Editor/Helpers.meta diff --git a/Scripts/Editor/Helpers/ProfileAnimation.cs b/Editor/Helpers/ProfileAnimation.cs similarity index 91% rename from Scripts/Editor/Helpers/ProfileAnimation.cs rename to Editor/Helpers/ProfileAnimation.cs index 35ca58f..ac82711 100644 --- a/Scripts/Editor/Helpers/ProfileAnimation.cs +++ b/Editor/Helpers/ProfileAnimation.cs @@ -18,13 +18,9 @@ IEnumerator Start() ProfilerDriver.ClearAllFrames(); // Skip first frame stutter -#if UNITY_2017_3_OR_NEWER ProfilerDriver.enabled = false; -#endif yield return null; -#if UNITY_2017_3_OR_NEWER ProfilerDriver.enabled = true; -#endif if (showProfilerWindow) { @@ -35,9 +31,7 @@ IEnumerator Start() while (playableDirector.playableGraph.IsValid() && playableDirector.playableGraph.IsPlaying()) yield return null; -#if UNITY_2017_3_OR_NEWER ProfilerDriver.enabled = false; -#endif EditorApplication.isPlaying = false; } } diff --git a/Scripts/Editor/Helpers/ProfileAnimation.cs.meta b/Editor/Helpers/ProfileAnimation.cs.meta similarity index 100% rename from Scripts/Editor/Helpers/ProfileAnimation.cs.meta rename to Editor/Helpers/ProfileAnimation.cs.meta diff --git a/Scripts/Editor/LODData.cs b/Editor/LODData.cs similarity index 100% rename from Scripts/Editor/LODData.cs rename to Editor/LODData.cs diff --git a/Scripts/Editor/LODData.cs.meta b/Editor/LODData.cs.meta similarity index 100% rename from Scripts/Editor/LODData.cs.meta rename to Editor/LODData.cs.meta diff --git a/Scripts/Editor/LODDataEditor.cs b/Editor/LODDataEditor.cs similarity index 100% rename from Scripts/Editor/LODDataEditor.cs rename to Editor/LODDataEditor.cs diff --git a/Scripts/Editor/LODDataEditor.cs.meta b/Editor/LODDataEditor.cs.meta similarity index 100% rename from Scripts/Editor/LODDataEditor.cs.meta rename to Editor/LODDataEditor.cs.meta diff --git a/Scripts/Editor/LODImportSettings.cs b/Editor/LODImportSettings.cs similarity index 100% rename from Scripts/Editor/LODImportSettings.cs rename to Editor/LODImportSettings.cs diff --git a/Scripts/Editor/LODImportSettings.cs.meta b/Editor/LODImportSettings.cs.meta similarity index 100% rename from Scripts/Editor/LODImportSettings.cs.meta rename to Editor/LODImportSettings.cs.meta diff --git a/Scripts/Editor/LODImportSettingsDrawer.cs b/Editor/LODImportSettingsDrawer.cs similarity index 100% rename from Scripts/Editor/LODImportSettingsDrawer.cs rename to Editor/LODImportSettingsDrawer.cs diff --git a/Scripts/Editor/LODImportSettingsDrawer.cs.meta b/Editor/LODImportSettingsDrawer.cs.meta similarity index 100% rename from Scripts/Editor/LODImportSettingsDrawer.cs.meta rename to Editor/LODImportSettingsDrawer.cs.meta diff --git a/Scripts/Editor/MeshSimplifiers.meta b/Editor/MeshSimplifiers.meta similarity index 100% rename from Scripts/Editor/MeshSimplifiers.meta rename to Editor/MeshSimplifiers.meta diff --git a/Scripts/Editor/MeshSimplifiers/InstaLODMeshSimplifier.cs b/Editor/MeshSimplifiers/InstaLODMeshSimplifier.cs similarity index 95% rename from Scripts/Editor/MeshSimplifiers/InstaLODMeshSimplifier.cs rename to Editor/MeshSimplifiers/InstaLODMeshSimplifier.cs index c7a7e6d..687fa1b 100644 --- a/Scripts/Editor/MeshSimplifiers/InstaLODMeshSimplifier.cs +++ b/Editor/MeshSimplifiers/InstaLODMeshSimplifier.cs @@ -10,10 +10,6 @@ using UnityObject = UnityEngine.Object; #endif -#if UNITY_2017_3_OR_NEWER -[assembly: Unity.AutoLOD.OptionalDependency("InstaLOD.InstaLODNative", "ENABLE_INSTALOD")] -#endif - #if ENABLE_INSTALOD namespace Unity.AutoLOD { diff --git a/Scripts/Editor/MeshSimplifiers/InstaLODMeshSimplifier.cs.meta b/Editor/MeshSimplifiers/InstaLODMeshSimplifier.cs.meta similarity index 100% rename from Scripts/Editor/MeshSimplifiers/InstaLODMeshSimplifier.cs.meta rename to Editor/MeshSimplifiers/InstaLODMeshSimplifier.cs.meta diff --git a/Scripts/Editor/MeshSimplifiers/MeshDecimatorSimplifier.cs b/Editor/MeshSimplifiers/MeshDecimatorSimplifier.cs similarity index 98% rename from Scripts/Editor/MeshSimplifiers/MeshDecimatorSimplifier.cs rename to Editor/MeshSimplifiers/MeshDecimatorSimplifier.cs index f6f5b5b..d0cf010 100644 --- a/Scripts/Editor/MeshSimplifiers/MeshDecimatorSimplifier.cs +++ b/Editor/MeshSimplifiers/MeshDecimatorSimplifier.cs @@ -15,10 +15,6 @@ using WMesh = Unity.AutoLOD.WorkingMesh; #endif -#if UNITY_2017_3_OR_NEWER -[assembly: Unity.AutoLOD.OptionalDependency("MeshDecimator.MeshDecimation", "ENABLE_MESHDECIMATOR")] -#endif - #if ENABLE_MESHDECIMATOR namespace Unity.AutoLOD { diff --git a/Scripts/Editor/MeshSimplifiers/MeshDecimatorSimplifier.cs.meta b/Editor/MeshSimplifiers/MeshDecimatorSimplifier.cs.meta similarity index 100% rename from Scripts/Editor/MeshSimplifiers/MeshDecimatorSimplifier.cs.meta rename to Editor/MeshSimplifiers/MeshDecimatorSimplifier.cs.meta diff --git a/Scripts/Editor/MeshSimplifiers/QuadricMeshSimplifier.cs b/Editor/MeshSimplifiers/QuadricMeshSimplifier.cs similarity index 97% rename from Scripts/Editor/MeshSimplifiers/QuadricMeshSimplifier.cs rename to Editor/MeshSimplifiers/QuadricMeshSimplifier.cs index 4cffff0..477a1ab 100644 --- a/Scripts/Editor/MeshSimplifiers/QuadricMeshSimplifier.cs +++ b/Editor/MeshSimplifiers/QuadricMeshSimplifier.cs @@ -6,10 +6,6 @@ using Mesh = Unity.AutoLOD.WorkingMesh; #endif -#if UNITY_2017_3_OR_NEWER -[assembly: Unity.AutoLOD.OptionalDependency("UnityMeshSimplifier.MeshSimplifier", "ENABLE_UNITYMESHSIMPLIFIER")] -#endif - #if ENABLE_UNITYMESHSIMPLIFIER namespace Unity.AutoLOD { diff --git a/Scripts/Editor/MeshSimplifiers/QuadricMeshSimplifier.cs.meta b/Editor/MeshSimplifiers/QuadricMeshSimplifier.cs.meta similarity index 100% rename from Scripts/Editor/MeshSimplifiers/QuadricMeshSimplifier.cs.meta rename to Editor/MeshSimplifiers/QuadricMeshSimplifier.cs.meta diff --git a/Scripts/Editor/MeshSimplifiers/SimplygonMeshSimplifier.cs b/Editor/MeshSimplifiers/SimplygonMeshSimplifier.cs similarity index 97% rename from Scripts/Editor/MeshSimplifiers/SimplygonMeshSimplifier.cs rename to Editor/MeshSimplifiers/SimplygonMeshSimplifier.cs index 590e228..490f865 100644 --- a/Scripts/Editor/MeshSimplifiers/SimplygonMeshSimplifier.cs +++ b/Editor/MeshSimplifiers/SimplygonMeshSimplifier.cs @@ -16,10 +16,6 @@ using UnityObject = UnityEngine.Object; #endif -#if UNITY_2017_3_OR_NEWER -[assembly: Unity.AutoLOD.OptionalDependency("Simplygon.Unity.EditorPlugin.Window", "ENABLE_SIMPLYGON")] -#endif - #if ENABLE_SIMPLYGON namespace Unity.AutoLOD { diff --git a/Scripts/Editor/MeshSimplifiers/SimplygonMeshSimplifier.cs.meta b/Editor/MeshSimplifiers/SimplygonMeshSimplifier.cs.meta similarity index 100% rename from Scripts/Editor/MeshSimplifiers/SimplygonMeshSimplifier.cs.meta rename to Editor/MeshSimplifiers/SimplygonMeshSimplifier.cs.meta diff --git a/Scripts/Editor/MeshSimplifiers/SimulatedMeshSimplifier.cs b/Editor/MeshSimplifiers/SimulatedMeshSimplifier.cs similarity index 100% rename from Scripts/Editor/MeshSimplifiers/SimulatedMeshSimplifier.cs rename to Editor/MeshSimplifiers/SimulatedMeshSimplifier.cs diff --git a/Scripts/Editor/MeshSimplifiers/SimulatedMeshSimplifier.cs.meta b/Editor/MeshSimplifiers/SimulatedMeshSimplifier.cs.meta similarity index 100% rename from Scripts/Editor/MeshSimplifiers/SimulatedMeshSimplifier.cs.meta rename to Editor/MeshSimplifiers/SimulatedMeshSimplifier.cs.meta diff --git a/Scripts/Editor/ModelImporterLODGenerator.cs b/Editor/ModelImporterLODGenerator.cs similarity index 100% rename from Scripts/Editor/ModelImporterLODGenerator.cs rename to Editor/ModelImporterLODGenerator.cs diff --git a/Scripts/Editor/ModelImporterLODGenerator.cs.meta b/Editor/ModelImporterLODGenerator.cs.meta similarity index 100% rename from Scripts/Editor/ModelImporterLODGenerator.cs.meta rename to Editor/ModelImporterLODGenerator.cs.meta diff --git a/Scripts/Editor/SceneLOD.cs b/Editor/SceneLOD.cs similarity index 98% rename from Scripts/Editor/SceneLOD.cs rename to Editor/SceneLOD.cs index 7091dd1..65ae95b 100644 --- a/Scripts/Editor/SceneLOD.cs +++ b/Editor/SceneLOD.cs @@ -108,7 +108,6 @@ static void SaveUniqueHLODAsset(UnityObject asset, string scenePath) void OnEnable() { -#if UNITY_2017_3_OR_NEWER if (LayerMask.NameToLayer(LODVolume.HLODLayer) == -1) { var layers = TagManager.GetRequiredLayers(); @@ -128,7 +127,6 @@ void OnEnable() AddCallbacks(); ResetServiceCoroutineQueue(); -#endif } void OnDisable() @@ -140,11 +138,7 @@ void OnDisable() void AddCallbacks() { EditorApplication.update += EditorUpdate; -#if UNITY_2018_1_OR_NEWER EditorApplication.hierarchyChanged += OnHierarchyChanged; -#else - EditorApplication.hierarchyWindowChanged += OnHierarchyChanged; -#endif Selection.selectionChanged += OnSelectionChanged; Camera.onPreCull += PreCull; #if UNITY_2019_1_OR_NEWER @@ -157,11 +151,7 @@ void AddCallbacks() void RemoveCallbacks() { EditorApplication.update -= EditorUpdate; -#if UNITY_2018_1_OR_NEWER EditorApplication.hierarchyChanged -= OnHierarchyChanged; -#else - EditorApplication.hierarchyWindowChanged -= OnHierarchyChanged; -#endif Selection.selectionChanged -= OnSelectionChanged; Camera.onPreCull -= PreCull; #if UNITY_2019_1_OR_NEWER diff --git a/Scripts/Editor/SceneLOD.cs.meta b/Editor/SceneLOD.cs.meta similarity index 100% rename from Scripts/Editor/SceneLOD.cs.meta rename to Editor/SceneLOD.cs.meta diff --git a/Scripts/Editor/TagManager.cs b/Editor/TagManager.cs similarity index 100% rename from Scripts/Editor/TagManager.cs rename to Editor/TagManager.cs diff --git a/Scripts/Editor/TagManager.cs.meta b/Editor/TagManager.cs.meta similarity index 100% rename from Scripts/Editor/TagManager.cs.meta rename to Editor/TagManager.cs.meta diff --git a/Scripts/Editor/TextureAtlas.cs b/Editor/TextureAtlas.cs similarity index 100% rename from Scripts/Editor/TextureAtlas.cs rename to Editor/TextureAtlas.cs diff --git a/Scripts/Editor/TextureAtlas.cs.meta b/Editor/TextureAtlas.cs.meta similarity index 100% rename from Scripts/Editor/TextureAtlas.cs.meta rename to Editor/TextureAtlas.cs.meta diff --git a/Scripts/Editor/TextureAtlasModule.cs b/Editor/TextureAtlasModule.cs similarity index 100% rename from Scripts/Editor/TextureAtlasModule.cs rename to Editor/TextureAtlasModule.cs diff --git a/Scripts/Editor/TextureAtlasModule.cs.meta b/Editor/TextureAtlasModule.cs.meta similarity index 100% rename from Scripts/Editor/TextureAtlasModule.cs.meta rename to Editor/TextureAtlasModule.cs.meta diff --git a/Scripts/Editor/_AutoLOD-Editor.asmdef b/Editor/Unity.AutoLOD.Editor.asmdef similarity index 75% rename from Scripts/Editor/_AutoLOD-Editor.asmdef rename to Editor/Unity.AutoLOD.Editor.asmdef index d68edc3..cbb0082 100644 --- a/Scripts/Editor/_AutoLOD-Editor.asmdef +++ b/Editor/Unity.AutoLOD.Editor.asmdef @@ -1,7 +1,7 @@ { - "name": "AutoLOD-Editor", + "name": "Unity.AutoLOD.Editor", "references": [ - "AutoLOD", + "Unity.AutoLOD", "Whinarn.UnityMeshSimplifier.Runtime" ], "optionalUnityReferences": [], @@ -13,6 +13,5 @@ "overrideReferences": false, "precompiledReferences": [], "autoReferenced": true, - "defineConstraints": [], - "versionDefines": [] + "defineConstraints": [] } \ No newline at end of file diff --git a/Scripts/Editor/_AutoLOD-Editor.asmdef.meta b/Editor/Unity.AutoLOD.Editor.asmdef.meta similarity index 100% rename from Scripts/Editor/_AutoLOD-Editor.asmdef.meta rename to Editor/Unity.AutoLOD.Editor.asmdef.meta diff --git a/Packages.meta b/Packages.meta deleted file mode 100644 index 8af0c22..0000000 --- a/Packages.meta +++ /dev/null @@ -1,10 +0,0 @@ -fileFormatVersion: 2 -guid: c6d98674b28a0c14ebd3d129678f5e6d -folderAsset: yes -timeCreated: 1515545556 -licenseType: Pro -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/CCU b/Packages/CCU deleted file mode 160000 index f364090..0000000 --- a/Packages/CCU +++ /dev/null @@ -1 +0,0 @@ -Subproject commit f364090bbda3728e1662074c969c2b7c3c34199b diff --git a/Packages/UnityMeshSimplifier b/Packages/UnityMeshSimplifier deleted file mode 160000 index d856c3b..0000000 --- a/Packages/UnityMeshSimplifier +++ /dev/null @@ -1 +0,0 @@ -Subproject commit d856c3b3343d73124efe5d93477508ac8d1cc54b diff --git a/Packages/UnityMeshSimplifier.meta b/Packages/UnityMeshSimplifier.meta deleted file mode 100644 index e6d7aa4..0000000 --- a/Packages/UnityMeshSimplifier.meta +++ /dev/null @@ -1,10 +0,0 @@ -fileFormatVersion: 2 -guid: a6cf40e52c6a96c4eb81d9913965fd3d -folderAsset: yes -timeCreated: 1516908019 -licenseType: Pro -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/README.md b/README.md index 1252d93..eb381f3 100644 --- a/README.md +++ b/README.md @@ -29,21 +29,35 @@ Experimental means this: - [WorkingMesh](Scripts/Helpers/WorkingMesh.cs) - a thread-safe mesh (_and now job-friendly!_) struct ## Evaluating -Unity 2018.1 or a later version is required +Unity 2018.4 (LTS) or a later version is required -### Git Dependencies -- [git-lfs](https://git-lfs.github.com/) -- [git-submodule](https://git-scm.com/docs/git-submodule) +### Install via package manager +- Using the UI + 1. Follow the steps provided [here](https://docs.unity3d.com/Manual/upm-ui-giturl.html). + 2. The Git URL to use is `https://github.com/Unity-Technologies/AutoLOD.git` +- Manually through editing manifest.json + 1. Read the instructions from the official documentation [here](https://docs.unity3d.com/Manual/upm-git.html). + 2. Open up *manifest.json* inside the *Packages* directory in your Unity project using a text editor. + 3. Under the dependencies section of this file, you should add the following line at the top: +```"com.unity.autolod": "https://github.com/Unity-Technologies/AutoLOD.git",``` + 1. You should now see something like this: + ```json + { + "dependencies": { + "com.unity.autolod": "https://github.com/Unity-Technologies/AutoLOD.git", + "com.unity.ads": "2.0.8", + "com.unity.analytics": "3.2.3", + "com.unity.collab-proxy": "1.2.15", + "...": "...", + } + } + ``` + -### Cloning +### Cloning locally to your project (requires [git-lfs](https://git-lfs.github.com/)) 1. Create a new Unity project or use an existing one -2. From the command line change directory to your project's `Assets` directory. -3. Run `git lfs clone --recursive https://github.com/Unity-Technologies/AutoLOD` - -### Updating -Because this project uses [git-submodule](https://git-scm.com/docs/git-submodule), you'll need to execute `git submodule update` after pulling whenever a submodule is updated. You could execute this command always just to be safe or if you notice that a submodule is showing as modified after pulling changes. - -Optionally, you could add a [git hook for post-checkout](https://ttboj.wordpress.com/2014/05/06/keeping-git-submodules-in-sync-with-your-branches/) or use a GUI (e.g. SourceTree) that does this automatically for you. +2. From the command line change directory to your project's `Packages` directory. +3. Run `git lfs clone https://github.com/Unity-Technologies/AutoLOD` ### Project Settings If you plan on making changes to AutoLOD and/or contributing back, then you'll need to set the `Asset Serialization` property under Edit->Project Settings->Editor to `Force Text`. @@ -58,3 +72,6 @@ By making a pull request, you are confirming agreement to the terms and conditio [Amir Ebrahimi](https://github.com/amirebrahimi/)
[Elliot Cuzzillo](https://github.com/ecuzzillo)
[Yuangguang Liao](https://github.com/liaoyg) + +## Community Contributors +[@Camarent](https://github.com/Camarent), [@LoneDev6](https://github.com/LoneDev6), [@marwie](https://github.com/marwie), [@msellens](https://github.com/msellens), [@redwyre](https://github.com/redwyre) \ No newline at end of file diff --git a/Packages/CCU.meta b/Runtime.meta similarity index 62% rename from Packages/CCU.meta rename to Runtime.meta index 43a6ba3..8b74ee2 100644 --- a/Packages/CCU.meta +++ b/Runtime.meta @@ -1,8 +1,6 @@ fileFormatVersion: 2 -guid: 5bb9a167dcb548f44b9a66ce11a56872 +guid: cd116cf9a374a6245b0ca348f8002c58 folderAsset: yes -timeCreated: 1515545556 -licenseType: Pro DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/AssemblyInfo.cs b/Runtime/AssemblyInfo.cs new file mode 100644 index 0000000..4ea1d0c --- /dev/null +++ b/Runtime/AssemblyInfo.cs @@ -0,0 +1,3 @@ +using System.Runtime.CompilerServices; + +[assembly: InternalsVisibleTo("Unity.AutoLOD.Editor")] \ No newline at end of file diff --git a/AssemblyInfo.cs.meta b/Runtime/AssemblyInfo.cs.meta similarity index 100% rename from AssemblyInfo.cs.meta rename to Runtime/AssemblyInfo.cs.meta diff --git a/Scripts/Extensions.meta b/Runtime/Extensions.meta similarity index 100% rename from Scripts/Extensions.meta rename to Runtime/Extensions.meta diff --git a/Scripts/Extensions/IEnumeratorExtensions.cs b/Runtime/Extensions/IEnumeratorExtensions.cs similarity index 100% rename from Scripts/Extensions/IEnumeratorExtensions.cs rename to Runtime/Extensions/IEnumeratorExtensions.cs diff --git a/Scripts/Extensions/IEnumeratorExtensions.cs.meta b/Runtime/Extensions/IEnumeratorExtensions.cs.meta similarity index 100% rename from Scripts/Extensions/IEnumeratorExtensions.cs.meta rename to Runtime/Extensions/IEnumeratorExtensions.cs.meta diff --git a/Scripts/Extensions/LODGroupExtensions.cs b/Runtime/Extensions/LODGroupExtensions.cs similarity index 100% rename from Scripts/Extensions/LODGroupExtensions.cs rename to Runtime/Extensions/LODGroupExtensions.cs diff --git a/Scripts/Extensions/LODGroupExtensions.cs.meta b/Runtime/Extensions/LODGroupExtensions.cs.meta similarity index 100% rename from Scripts/Extensions/LODGroupExtensions.cs.meta rename to Runtime/Extensions/LODGroupExtensions.cs.meta diff --git a/Scripts/Helpers.meta b/Runtime/Helpers.meta similarity index 100% rename from Scripts/Helpers.meta rename to Runtime/Helpers.meta diff --git a/Scripts/Helpers/MeshLOD.cs b/Runtime/Helpers/MeshLOD.cs similarity index 100% rename from Scripts/Helpers/MeshLOD.cs rename to Runtime/Helpers/MeshLOD.cs diff --git a/Scripts/Helpers/MeshLOD.cs.meta b/Runtime/Helpers/MeshLOD.cs.meta similarity index 100% rename from Scripts/Helpers/MeshLOD.cs.meta rename to Runtime/Helpers/MeshLOD.cs.meta diff --git a/Scripts/Helpers/MonoBehaviourHelper.cs b/Runtime/Helpers/MonoBehaviourHelper.cs similarity index 100% rename from Scripts/Helpers/MonoBehaviourHelper.cs rename to Runtime/Helpers/MonoBehaviourHelper.cs diff --git a/Scripts/Helpers/MonoBehaviourHelper.cs.meta b/Runtime/Helpers/MonoBehaviourHelper.cs.meta similarity index 100% rename from Scripts/Helpers/MonoBehaviourHelper.cs.meta rename to Runtime/Helpers/MonoBehaviourHelper.cs.meta diff --git a/Scripts/Helpers/OptionalDependencyAttribute.cs b/Runtime/Helpers/OptionalDependencyAttribute.cs similarity index 100% rename from Scripts/Helpers/OptionalDependencyAttribute.cs rename to Runtime/Helpers/OptionalDependencyAttribute.cs diff --git a/Scripts/Helpers/OptionalDependencyAttribute.cs.meta b/Runtime/Helpers/OptionalDependencyAttribute.cs.meta similarity index 100% rename from Scripts/Helpers/OptionalDependencyAttribute.cs.meta rename to Runtime/Helpers/OptionalDependencyAttribute.cs.meta diff --git a/Scripts/Helpers/RequiresLayerAttribute.cs b/Runtime/Helpers/RequiresLayerAttribute.cs similarity index 100% rename from Scripts/Helpers/RequiresLayerAttribute.cs rename to Runtime/Helpers/RequiresLayerAttribute.cs diff --git a/Scripts/Helpers/RequiresLayerAttribute.cs.meta b/Runtime/Helpers/RequiresLayerAttribute.cs.meta similarity index 100% rename from Scripts/Helpers/RequiresLayerAttribute.cs.meta rename to Runtime/Helpers/RequiresLayerAttribute.cs.meta diff --git a/Scripts/Helpers/RequiresTagAttribute.cs b/Runtime/Helpers/RequiresTagAttribute.cs similarity index 100% rename from Scripts/Helpers/RequiresTagAttribute.cs rename to Runtime/Helpers/RequiresTagAttribute.cs diff --git a/Scripts/Helpers/RequiresTagAttribute.cs.meta b/Runtime/Helpers/RequiresTagAttribute.cs.meta similarity index 100% rename from Scripts/Helpers/RequiresTagAttribute.cs.meta rename to Runtime/Helpers/RequiresTagAttribute.cs.meta diff --git a/Scripts/Helpers/TimedEnumerator.cs b/Runtime/Helpers/TimedEnumerator.cs similarity index 100% rename from Scripts/Helpers/TimedEnumerator.cs rename to Runtime/Helpers/TimedEnumerator.cs diff --git a/Scripts/Helpers/TimedEnumerator.cs.meta b/Runtime/Helpers/TimedEnumerator.cs.meta similarity index 100% rename from Scripts/Helpers/TimedEnumerator.cs.meta rename to Runtime/Helpers/TimedEnumerator.cs.meta diff --git a/Scripts/Helpers/WorkingMesh.cs b/Runtime/Helpers/WorkingMesh.cs similarity index 100% rename from Scripts/Helpers/WorkingMesh.cs rename to Runtime/Helpers/WorkingMesh.cs diff --git a/Scripts/Helpers/WorkingMesh.cs.meta b/Runtime/Helpers/WorkingMesh.cs.meta similarity index 100% rename from Scripts/Helpers/WorkingMesh.cs.meta rename to Runtime/Helpers/WorkingMesh.cs.meta diff --git a/Scripts/Interfaces.meta b/Runtime/Interfaces.meta similarity index 100% rename from Scripts/Interfaces.meta rename to Runtime/Interfaces.meta diff --git a/Scripts/Interfaces/IBatcher.cs b/Runtime/Interfaces/IBatcher.cs similarity index 100% rename from Scripts/Interfaces/IBatcher.cs rename to Runtime/Interfaces/IBatcher.cs diff --git a/Scripts/Interfaces/IBatcher.cs.meta b/Runtime/Interfaces/IBatcher.cs.meta similarity index 100% rename from Scripts/Interfaces/IBatcher.cs.meta rename to Runtime/Interfaces/IBatcher.cs.meta diff --git a/Scripts/Interfaces/IMeshSimplifier.cs b/Runtime/Interfaces/IMeshSimplifier.cs similarity index 100% rename from Scripts/Interfaces/IMeshSimplifier.cs rename to Runtime/Interfaces/IMeshSimplifier.cs diff --git a/Scripts/Interfaces/IMeshSimplifier.cs.meta b/Runtime/Interfaces/IMeshSimplifier.cs.meta similarity index 100% rename from Scripts/Interfaces/IMeshSimplifier.cs.meta rename to Runtime/Interfaces/IMeshSimplifier.cs.meta diff --git a/Scripts/Interfaces/IPreferences.cs b/Runtime/Interfaces/IPreferences.cs similarity index 100% rename from Scripts/Interfaces/IPreferences.cs rename to Runtime/Interfaces/IPreferences.cs diff --git a/Scripts/Interfaces/IPreferences.cs.meta b/Runtime/Interfaces/IPreferences.cs.meta similarity index 100% rename from Scripts/Interfaces/IPreferences.cs.meta rename to Runtime/Interfaces/IPreferences.cs.meta diff --git a/Scripts/LODVolume.cs b/Runtime/LODVolume.cs similarity index 99% rename from Scripts/LODVolume.cs rename to Runtime/LODVolume.cs index a233b05..1aa2e41 100644 --- a/Scripts/LODVolume.cs +++ b/Runtime/LODVolume.cs @@ -647,9 +647,7 @@ public IEnumerator GenerateHLOD(bool propagateUpwards = true) } var sharedMesh = new Mesh(); -#if UNITY_2017_3_OR_NEWER sharedMesh.indexFormat = IndexFormat.UInt32; -#endif sharedMesh.CombineMeshes(combine, true, true); sharedMesh.RecalculateBounds(); var meshFilter = hlodRoot.AddComponent(); @@ -788,11 +786,7 @@ void GenerateLODs() lodGroup.RecalculateBounds(); lodGroup.ForceLOD(-1); -#if UNITY_2018_2_OR_NEWER var prefab = PrefabUtility.GetCorrespondingObjectFromSource(go); -#else - var prefab = PrefabUtility.GetPrefabParent(go); -#endif if (prefab) { var assetPath = AssetDatabase.GetAssetPath(prefab); diff --git a/Scripts/LODVolume.cs.meta b/Runtime/LODVolume.cs.meta similarity index 100% rename from Scripts/LODVolume.cs.meta rename to Runtime/LODVolume.cs.meta diff --git a/Shaders.meta b/Runtime/Shaders.meta similarity index 100% rename from Shaders.meta rename to Runtime/Shaders.meta diff --git a/Shaders/SimpleBatcher.shader b/Runtime/Shaders/SimpleBatcher.shader similarity index 100% rename from Shaders/SimpleBatcher.shader rename to Runtime/Shaders/SimpleBatcher.shader diff --git a/Shaders/SimpleBatcher.shader.meta b/Runtime/Shaders/SimpleBatcher.shader.meta similarity index 100% rename from Shaders/SimpleBatcher.shader.meta rename to Runtime/Shaders/SimpleBatcher.shader.meta diff --git a/_AutoLOD.asmdef b/Runtime/Unity.AutoLOD.asmdef similarity index 63% rename from _AutoLOD.asmdef rename to Runtime/Unity.AutoLOD.asmdef index ac7aadb..593fc00 100644 --- a/_AutoLOD.asmdef +++ b/Runtime/Unity.AutoLOD.asmdef @@ -1,5 +1,5 @@ { - "name": "AutoLOD", + "name": "Unity.AutoLOD", "references": [], "optionalUnityReferences": [], "includePlatforms": [ @@ -12,5 +12,9 @@ "WindowsStandalone64" ], "excludePlatforms": [], - "allowUnsafeCode": false + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [] } \ No newline at end of file diff --git a/_AutoLOD.asmdef.meta b/Runtime/Unity.AutoLOD.asmdef.meta similarity index 100% rename from _AutoLOD.asmdef.meta rename to Runtime/Unity.AutoLOD.asmdef.meta diff --git a/Scripts/Utilities.meta b/Runtime/Utilities.meta similarity index 100% rename from Scripts/Utilities.meta rename to Runtime/Utilities.meta diff --git a/Scripts/Utilities/ObjectUtils.cs b/Runtime/Utilities/ObjectUtils.cs similarity index 100% rename from Scripts/Utilities/ObjectUtils.cs rename to Runtime/Utilities/ObjectUtils.cs diff --git a/Scripts/Utilities/ObjectUtils.cs.meta b/Runtime/Utilities/ObjectUtils.cs.meta similarity index 100% rename from Scripts/Utilities/ObjectUtils.cs.meta rename to Runtime/Utilities/ObjectUtils.cs.meta diff --git a/Scripts.meta b/Scripts.meta deleted file mode 100644 index c62155d..0000000 --- a/Scripts.meta +++ /dev/null @@ -1,10 +0,0 @@ -fileFormatVersion: 2 -guid: 39c8ebcb7bf08ac48b54ad167e9ca2a4 -folderAsset: yes -timeCreated: 1508522727 -licenseType: Pro -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/package.json b/package.json new file mode 100644 index 0000000..d9c1156 --- /dev/null +++ b/package.json @@ -0,0 +1,23 @@ +{ + "name": "com.unity.autolod", + "displayName": "AutoLOD", + "version": "0.0.1", + "unity": "2018.4", + "description": "Automatic LOD generation", + "keywords": [ + "autolod", + "lod", + "3d", + "mesh", + "polygon", + "triangle", + "simplification", + "decimation", + "reduction", + "optimization" + ], + "author": { + "name": "Unity" + }, + "bugs": "https://github.com/Unity-Technologies/AutoLOD/issues" +} diff --git a/package.json.meta b/package.json.meta new file mode 100644 index 0000000..da23712 --- /dev/null +++ b/package.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 07638e4f8d5370d4cb709121dd1daa1a +PackageManifestImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: