Skip to content

Commit

Permalink
Allow "Upload to Importer" from LODGroups for AutoLOD generated LODs
Browse files Browse the repository at this point in the history
  • Loading branch information
amirebrahimi committed Apr 26, 2018
1 parent 14b2b7c commit 64715f0
Showing 1 changed file with 23 additions and 1 deletion.
24 changes: 23 additions & 1 deletion Scripts/Editor/ModelImporterLODGenerator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -239,18 +239,40 @@ void OnPostprocessModel(GameObject go)
maxLODFound++;
}

var importerRef = new SerializedObject(assetImporter);
var importerLODLevels = importerRef.FindProperty("m_LODScreenPercentages");
for (int i = 0; i <= maxLODFound; i++)
{
var lod = new LOD();
lod.renderers = lodData[i];
lod.screenRelativeTransitionHeight = i == maxLODFound ? 0.01f : Mathf.Pow(0.5f, i + 1);
var screenPercentage = i == maxLODFound ? 0.01f : Mathf.Pow(0.5f, i + 1);

// Use the model importer percentages if they exist
if (i < importerLODLevels.arraySize)
{
var element = importerLODLevels.GetArrayElementAtIndex(i);
screenPercentage = element.floatValue;
}

lod.screenRelativeTransitionHeight = screenPercentage;
lods.Add(lod);
}

var lodGroup = go.AddComponent<LODGroup>();
lodGroup.SetLODs(lods.ToArray());
lodGroup.RecalculateBounds();

// Keep model importer in sync
importerLODLevels.ClearArray();
for (int i = 0; i < lods.Count; i++)
{
var lod = lods[i];
importerLODLevels.InsertArrayElementAtIndex(i);
var element = importerLODLevels.GetArrayElementAtIndex(i);
element.floatValue = lod.screenRelativeTransitionHeight;
}
importerRef.ApplyModifiedPropertiesWithoutUndo();

s_ModelAssetsProcessed.Add(assetPath);
}
}
Expand Down

0 comments on commit 64715f0

Please sign in to comment.