1
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEditor;
|
||||
|
||||
namespace MeshCombineStudio
|
||||
{
|
||||
[CustomEditor(typeof(LODGroupSetup))]
|
||||
public class LODGroupSetupEditor : Editor
|
||||
{
|
||||
LODGroupSetup lodGroupSetup;
|
||||
LOD[] oldLods;
|
||||
bool animateCrossFadingOld;
|
||||
LODFadeMode fadeModeOld;
|
||||
|
||||
void OnEnable()
|
||||
{
|
||||
lodGroupSetup = (LODGroupSetup)target;
|
||||
LODGroup lodGroup = lodGroupSetup.lodGroup;
|
||||
|
||||
oldLods = lodGroup.GetLODs();
|
||||
animateCrossFadingOld = lodGroup.animateCrossFading;
|
||||
fadeModeOld = lodGroup.fadeMode;
|
||||
|
||||
UnityEditor.EditorApplication.update += MyUpdate;
|
||||
}
|
||||
|
||||
void OnDisable()
|
||||
{
|
||||
UnityEditor.EditorApplication.update -= MyUpdate;
|
||||
}
|
||||
|
||||
void MyUpdate()
|
||||
{
|
||||
LODGroup lodGroup = lodGroupSetup.lodGroup;
|
||||
lodGroup.size = lodGroupSetup.meshCombiner.cellSize;
|
||||
LOD[] lods = lodGroup.GetLODs();
|
||||
|
||||
if (lods.Length != oldLods.Length)
|
||||
{
|
||||
Debug.LogError("Mesh Combine Studio -> Please don't change the amount of LODs, this is just a dummy LOD Group to apply settings to the LOD Groups in all children.");
|
||||
lodGroup.SetLODs(oldLods);
|
||||
return;
|
||||
}
|
||||
|
||||
bool hasChanged = false;
|
||||
|
||||
if (lodGroup.animateCrossFading != animateCrossFadingOld || lodGroup.fadeMode != fadeModeOld)
|
||||
{
|
||||
hasChanged = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int i = 0; i < lods.Length; i++)
|
||||
{
|
||||
if (lods[i].renderers.Length != 0)
|
||||
{
|
||||
Debug.LogError("Mesh Combine Studio -> Please don't add any renderes, this is just a dummy LOD Group to apply settings to the LOD Groups in all children.");
|
||||
lods[i].renderers = null;
|
||||
lodGroup.SetLODs(lods);
|
||||
return;
|
||||
}
|
||||
if (lods[i].screenRelativeTransitionHeight != oldLods[i].screenRelativeTransitionHeight) { hasChanged = true; break; }
|
||||
if (lods[i].fadeTransitionWidth != oldLods[i].fadeTransitionWidth) { hasChanged = true; break; }
|
||||
}
|
||||
}
|
||||
|
||||
if (hasChanged)
|
||||
{
|
||||
lodGroupSetup.ApplySetup();
|
||||
oldLods = lods;
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnInspectorGUI()
|
||||
{
|
||||
GUIDraw.DrawSpacer();
|
||||
GUI.color = Color.red;
|
||||
EditorGUILayout.BeginVertical("Box");
|
||||
GUI.color = Color.white;
|
||||
GUIDraw.Label("Modifications to this LOD Group will apply to all children", 12);
|
||||
EditorGUILayout.EndVertical();
|
||||
GUIDraw.DrawSpacer();
|
||||
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user