|
using UnityEngine;
|
|
#if UNITY_EDITOR
|
|
using UnityEditor;
|
|
#endif
|
|
|
|
public class SimpleMeshCombineMaster : MonoBehaviour {
|
|
public bool generateLightmapUV;
|
|
}
|
|
|
|
#if UNITY_EDITOR
|
|
[CustomEditor(typeof(SimpleMeshCombineMaster))]
|
|
public class SimpleMeshCombineMasterEditor : Editor {
|
|
SimpleMeshCombineMaster masterTarget;
|
|
|
|
void AttachCombineScriptToChildren() {
|
|
for (int i = 0; i < masterTarget.transform.childCount; i++) {
|
|
Transform t = masterTarget.transform.GetChild(i);
|
|
SimpleMeshCombine smc = t.GetComponent<SimpleMeshCombine>();
|
|
if (!smc) {
|
|
t.gameObject.AddComponent<SimpleMeshCombine>();
|
|
}
|
|
}
|
|
}
|
|
|
|
void CombineAll(bool combine, SimpleMeshCombine[] arr) {
|
|
for (int i = 0; i < arr.Length; i++) {
|
|
SimpleMeshCombine smc = arr[i];
|
|
if (combine && !smc.combined) {
|
|
if (masterTarget.generateLightmapUV) smc.generateLightmapUV = true;
|
|
smc.CombineMeshes();
|
|
} else if (!combine && smc.combined) {
|
|
smc.EnableRenderers(true);
|
|
if (smc.combined != null) DestroyImmediate(smc.combined);
|
|
smc.combinedGameOjects = null;
|
|
}
|
|
}
|
|
}
|
|
|
|
void OnEnable() {
|
|
masterTarget = target as SimpleMeshCombineMaster;
|
|
}
|
|
|
|
public override void OnInspectorGUI() {
|
|
if (GUILayout.Button("Attach SMC to Children")) AttachCombineScriptToChildren();
|
|
GUILayout.Space(25);
|
|
masterTarget.generateLightmapUV = EditorGUILayout.Toggle("Create Lightmap UV", masterTarget.generateLightmapUV);
|
|
if (GUILayout.Button("Combine All Children"))
|
|
CombineAll(true, masterTarget.transform.GetComponentsInChildren<SimpleMeshCombine>());
|
|
if (GUILayout.Button("Release All Children"))
|
|
CombineAll(false, masterTarget.transform.GetComponentsInChildren<SimpleMeshCombine>());
|
|
GUILayout.Space(25);
|
|
if (GUILayout.Button("Combine All in Scene"))
|
|
CombineAll(true, FindObjectsOfType<SimpleMeshCombine>());
|
|
if (GUILayout.Button("Release All in Scene"))
|
|
CombineAll(false, FindObjectsOfType<SimpleMeshCombine>());
|
|
}
|
|
}
|
|
#endif
|