Created
April 9, 2017 16:23
-
-
Save naruse/409649dfd65958f4a8ebc3b9cdd348d8 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using UnityEngine; | |
using System.Collections; | |
using System.Collections.Generic; | |
using UnityEditor; | |
public class LODFixer { | |
[MenuItem("Window/FixLODRendeer")] | |
static void LODRendeer() | |
{ | |
LODGroup[] lodgroups = (LODGroup[])GameObject.FindObjectsOfType(typeof(LODGroup)); | |
//For every LOD group: get the current groups and get the renderer names.. | |
foreach (LODGroup lodgroup in lodgroups) | |
{ | |
SerializedObject obj = new SerializedObject(lodgroup); | |
LOD[] newLods = new LOD[lodgroup.lodCount]; | |
//For every LOD level in this lodgroup.. | |
for(int groupNR=0; groupNR < lodgroup.lodCount; groupNR++){ | |
List<Renderer> newRens = new List<Renderer>(); | |
//For every renderer in this lodgroup... | |
for(int i=0; i< obj.FindProperty("m_LODs.Array.data["+groupNR+"].renderers").arraySize;i++){ | |
SerializedProperty prop = (SerializedProperty)obj.FindProperty("m_LODs.Array.data["+groupNR+"].renderers").GetArrayElementAtIndex(i); | |
SerializedProperty propRenderer = prop.FindPropertyRelative("renderer"); | |
Renderer ren = propRenderer.objectReferenceValue as System.Object as Renderer; | |
if(ren!=null){ | |
string targetName = ren.name+".ODCObj"; | |
Transform target = ren.transform.parent.FindChild(targetName); | |
if(target==null){ | |
Debug.LogWarning("No coversion found for "+targetName+ " has "+ren.sharedMaterial.shader); | |
newRens.Add (ren); | |
if(!ren.enabled) | |
Debug.LogError("Renderer disabled: "+ren.name); | |
}else{ | |
newRens.Add (target.GetComponent<Renderer>()); | |
if(!target.GetComponent<Renderer>().enabled){ | |
Debug.LogError("Renderer disabled: "+target.GetComponent<Renderer>().name); | |
} | |
if(ren.enabled) | |
Debug.LogError("Renderer ENAbled but not added to LOD! "+ren.name); | |
} | |
Debug.Log (lodgroup.name+" ["+groupNR+"] - "+ren.name); | |
} | |
} | |
SerializedProperty screenHei = obj.FindProperty("m_LODs.Array.data["+groupNR+"].screenRelativeHeight"); | |
newLods[groupNR] = new LOD(screenHei.floatValue, newRens.ToArray() ); | |
} | |
if(newLods.Length>0){ | |
Debug.Log ("Setting: "+lodgroup.name); | |
lodgroup.SetLODS(newLods); | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment