Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixed very heavy process when there are many assets in the project #162

Open
wants to merge 10 commits into
base: 1.7/release
Choose a base branch
from
Binary file modified Editor/SettingTemplate/setting.fbx
Binary file not shown.
61 changes: 49 additions & 12 deletions Editor/SettingTemplate/setting.fbx.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 0 additions & 3 deletions Editor/SettingTemplate/setting.m4v.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Editor/System/Core/AssetGraphPostprocessor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@ private void DoPostprocessWithContext(AssetPostprocessorContext ctx) {

private void NotifyAssetPostprocessorGraphs(AssetPostprocessorContext ctx)
{
var guids = AssetDatabase.FindAssets(Model.Settings.GRAPH_SEARCH_CONDITION);
var guids = AssetDatabase.FindAssets(Model.Settings.GRAPH_SEARCH_CONDITION, new string[] { "Assets" });

var executingGraphs = new List<Model.ConfigGraph> ();

Expand Down
2 changes: 1 addition & 1 deletion Editor/System/Filters/FilterByNameAndType.cs
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ public bool FilterAsset(AssetReference a) {
CheckVersionAndUpgrade ();

bool keywordMatch = Regex.IsMatch(a.importFrom, m_filterKeyword,
RegexOptions.IgnoreCase | RegexOptions.IgnorePatternWhitespace);
RegexOptions.IgnorePatternWhitespace);

bool match = keywordMatch;

Expand Down
34 changes: 24 additions & 10 deletions Editor/System/Importers/ModelImporterConfigurator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -158,8 +158,15 @@ private bool IsEqual(ModelImporter target, ModelImporter reference)
if (Math.Abs(target.clipAnimations[i].additiveReferencePoseFrame -
reference.clipAnimations[i].additiveReferencePoseFrame) > kTOLERANCE)
return false;
if (target.clipAnimations[i].curves != reference.clipAnimations[i].curves)
if (target.clipAnimations[i].curves.Length != reference.clipAnimations[i].curves.Length)
return false;
for (var j = 0; j < target.clipAnimations[i].curves.Length; ++j)
{
if (target.clipAnimations[i].curves[j].name != reference.clipAnimations[i].curves[j].name)
return false;
if (!target.clipAnimations[i].curves[j].curve.Equals(reference.clipAnimations[i].curves[j].curve))
return false;
}
if (Math.Abs(target.clipAnimations[i].cycleOffset - reference.clipAnimations[i].cycleOffset) >
kTOLERANCE)
return false;
Expand Down Expand Up @@ -326,12 +333,15 @@ private bool IsEqual(ModelImporter target, ModelImporter reference)
return false;

#if UNITY_2019_2_OR_NEWER
if (target.maxBonesPerVertex != reference.maxBonesPerVertex)
return false;
if (reference.skinWeights == ModelImporterSkinWeights.Custom)
{
if (target.maxBonesPerVertex != reference.maxBonesPerVertex)
return false;
if (Math.Abs(target.minBoneWeight - reference.minBoneWeight) > kTOLERANCE)
return false;
}
if (target.meshOptimizationFlags != reference.meshOptimizationFlags)
return false;
if (Math.Abs(target.minBoneWeight - reference.minBoneWeight) > kTOLERANCE)
return false;
if (target.skinWeights != reference.skinWeights)
return false;
if (target.sortHierarchyByName != reference.sortHierarchyByName)
Expand Down Expand Up @@ -427,9 +437,6 @@ private void OverwriteImportSettings(ModelImporter target, ModelImporter referen

target.animationType = reference.animationType;
target.animationWrapMode = reference.animationWrapMode;
#if UNITY_2019_3_OR_NEWER
target.avatarSetup = reference.avatarSetup;
#endif

target.bakeIK = reference.bakeIK;
if (reference.importAnimation && m_overwriteAnimationClipSettings)
Expand Down Expand Up @@ -475,14 +482,17 @@ private void OverwriteImportSettings(ModelImporter target, ModelImporter referen
target.materialSearch = reference.materialSearch;

#if UNITY_2019_2_OR_NEWER
target.maxBonesPerVertex = reference.maxBonesPerVertex;
if (reference.skinWeights == ModelImporterSkinWeights.Custom)
{
target.maxBonesPerVertex = reference.maxBonesPerVertex;
target.minBoneWeight = reference.minBoneWeight;
}
#endif

target.meshCompression = reference.meshCompression;

#if UNITY_2019_2_OR_NEWER
target.meshOptimizationFlags = reference.meshOptimizationFlags;
target.minBoneWeight = reference.minBoneWeight;
#endif
target.motionNodeName = reference.motionNodeName;

Expand Down Expand Up @@ -517,6 +527,10 @@ private void OverwriteImportSettings(ModelImporter target, ModelImporter referen
target.useFileUnits = reference.useFileUnits;
target.useSRGBMaterialColor = reference.useSRGBMaterialColor;
target.weldVertices = reference.weldVertices;

#if UNITY_2019_3_OR_NEWER
target.avatarSetup = reference.avatarSetup;
#endif
}
}
}
9 changes: 7 additions & 2 deletions Editor/System/Model/SerializableMultiTargetInstance.cs
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,9 @@ public T Get<T> () {
[SerializeField] private string m_className;
[SerializeField] private List<Entry> m_values;

MonoScript m_Monoscript;
public MonoScript MonoScript => m_Monoscript ?? (m_Monoscript = TypeUtility.LoadMonoScript(ClassName));

public SerializableMultiTargetInstance(SerializableMultiTargetInstance rhs) {
m_className = rhs.m_className;
m_values = new List<Entry>(rhs.m_values.Count);
Expand Down Expand Up @@ -156,7 +159,7 @@ public void Set(BuildTargetGroup g, object value) {
}

int i = m_values.FindIndex(v => v.targetGroup == g);
var json = CustomScriptUtility.EncodeString(JsonUtility.ToJson(value));
var json = CustomScriptUtility.EncodeString(EditorJsonUtility.ToJson(value));
if(i >= 0) {
m_values [i].value = json;
m_values [i].instance = value;
Expand Down Expand Up @@ -203,7 +206,9 @@ public T GetDefaultValue<T>() {
return default(T);
}
UnityEngine.Assertions.Assert.IsTrue( typeof(T).IsAssignableFrom(t) );
return (T) JsonUtility.FromJson(CustomScriptUtility.DecodeString(m_values[i].value), t);
var instanse = (T)Activator.CreateInstance(t);
EditorJsonUtility.FromJsonOverwrite(CustomScriptUtility.DecodeString(m_values[i].value), instanse);
return instanse;
} else {
return default(T);
}
Expand Down
9 changes: 6 additions & 3 deletions Editor/System/Model/SerializedInstance.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System;
using UnityEditor;

namespace UnityEngine.AssetGraph {
[System.Serializable]
Expand Down Expand Up @@ -44,7 +45,7 @@ public SerializedInstance(T obj) {
UnityEngine.Assertions.Assert.IsNotNull(obj);

m_className = obj.GetType().AssemblyQualifiedName;
m_instanceData = CustomScriptUtility.EncodeString(JsonUtility.ToJson(obj));
m_instanceData = CustomScriptUtility.EncodeString(EditorJsonUtility.ToJson(obj));
}

public void OnBeforeSerialize()
Expand All @@ -69,7 +70,9 @@ private T Deserialize() {

if(!string.IsNullOrEmpty(m_instanceData) && instanceType != null) {
string data = CustomScriptUtility.DecodeString(m_instanceData);
return (T)JsonUtility.FromJson(data, instanceType);
var instance = System.Activator.CreateInstance(instanceType) as T;
EditorJsonUtility.FromJsonOverwrite(data, instance);
return instance;
}

return default(T);
Expand All @@ -78,7 +81,7 @@ private T Deserialize() {
public void Save() {
if(m_object != null) {
m_className = m_object.GetType().AssemblyQualifiedName;
m_instanceData = CustomScriptUtility.EncodeString(JsonUtility.ToJson(m_object));
m_instanceData = CustomScriptUtility.EncodeString(EditorJsonUtility.ToJson(m_object));
}
}

Expand Down
4 changes: 4 additions & 0 deletions Editor/System/Model/V2/ConfigGraph.cs
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,8 @@ public bool UseAsAssetPostprocessor
get { return m_useAsAssetPostprocessor; }
set
{
if (m_useAsAssetPostprocessor == value)
return;
m_useAsAssetPostprocessor = value;
SetGraphDirty();
}
Expand All @@ -95,6 +97,8 @@ public string Descrption
get { return m_graphDescription; }
set
{
if (m_graphDescription == value)
return;
m_graphDescription = value;
SetGraphDirty();
}
Expand Down
4 changes: 2 additions & 2 deletions Editor/System/Modifiers/SetProperty.cs
Original file line number Diff line number Diff line change
Expand Up @@ -329,7 +329,7 @@ private void UpdateFieldInfo ()
m_properties = new List<FieldEditInfo> ();
}

var infos = m_type.GetFields (BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.DeclaredOnly);
var infos = m_type.GetFields (BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
foreach (var info in infos) {
if (!info.IsPublic) {
var attr = info.GetCustomAttributes (typeof(SerializeField), true);
Expand All @@ -347,7 +347,7 @@ private void UpdateFieldInfo ()
}
}

var props = m_type.GetProperties (BindingFlags.Instance);
var props = m_type.GetProperties (BindingFlags.Instance | BindingFlags.Public);
foreach (var p in props) {

if (!p.CanWrite) {
Expand Down
Loading