89 lines
3.7 KiB
C#
89 lines
3.7 KiB
C#
using UnityEngine;
|
|
using UnityEditor;
|
|
using UnityEngine.SceneManagement;
|
|
|
|
public class ftRestorePaddingMenu
|
|
{
|
|
[MenuItem("Bakery/Utilities/Re-adjust UV padding", false, 43)]
|
|
private static void RestorePadding()
|
|
{
|
|
var bakeryRuntimePath = ftLightmaps.GetRuntimePath();
|
|
var gstorage = AssetDatabase.LoadAssetAtPath(bakeryRuntimePath + "ftGlobalStorage.asset", typeof(ftGlobalStorage)) as ftGlobalStorage;
|
|
|
|
if (gstorage == null)
|
|
{
|
|
Debug.Log("Bakery is not initalized");
|
|
return;
|
|
}
|
|
|
|
if (EditorUtility.DisplayDialog("Bakery", "Re-unwrap and reimport lightmapped scene models to match last bake?", "OK", "Cancel"))
|
|
{
|
|
var sceneCount = SceneManager.sceneCount;
|
|
int reimported = 0;
|
|
for(int i=0; i<sceneCount; i++)
|
|
{
|
|
var scene = SceneManager.GetSceneAt(i);
|
|
if (!scene.isLoaded) continue;
|
|
var go = ftLightmaps.FindInScene("!ftraceLightmaps", scene);
|
|
if (go == null) continue;
|
|
var store = go.GetComponent<ftLightmapsStorage>();
|
|
if (store == null) continue;
|
|
|
|
for(int j=0; j<store.modifiedAssetPathList.Count; j++)
|
|
{
|
|
bool updated = false;
|
|
var path = store.modifiedAssetPathList[j];
|
|
var data = store.modifiedAssets[j];
|
|
int mstoreIndex = gstorage.modifiedAssetPathList.IndexOf(path);
|
|
if (mstoreIndex < 0)
|
|
{
|
|
mstoreIndex = gstorage.modifiedAssetPathList.Count;
|
|
gstorage.modifiedAssetPathList.Add(path);
|
|
gstorage.modifiedAssets.Add(data);
|
|
updated = true;
|
|
}
|
|
else
|
|
{
|
|
var dataExisting = gstorage.modifiedAssets[mstoreIndex];
|
|
for(int k=0; k<data.meshName.Count; k++)
|
|
{
|
|
int ind = dataExisting.meshName.IndexOf( data.meshName[k] );
|
|
if (ind >= 0)
|
|
{
|
|
if (dataExisting.padding[ind] != data.padding[k])
|
|
{
|
|
dataExisting.padding[ind] = data.padding[k];
|
|
updated = true;
|
|
}
|
|
if (dataExisting.unwrapper[ind] != data.unwrapper[k])
|
|
{
|
|
dataExisting.unwrapper[ind] = data.unwrapper[k];
|
|
updated = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
dataExisting.meshName.Add( data.meshName[k] );
|
|
dataExisting.padding.Add( data.padding[k] );
|
|
dataExisting.unwrapper.Add( data.unwrapper[k] );
|
|
updated = true;
|
|
}
|
|
}
|
|
}
|
|
if (updated)
|
|
{
|
|
#if UNITY_2017_1_OR_NEWER
|
|
gstorage.SyncModifiedAsset(mstoreIndex);
|
|
#endif
|
|
EditorUtility.SetDirty(gstorage);
|
|
(AssetImporter.GetAtPath(path) as ModelImporter).SaveAndReimport();
|
|
reimported++;
|
|
}
|
|
}
|
|
}
|
|
Debug.Log(reimported > 0 ? ("Updated " + reimported + " models") : "No changes detected");
|
|
}
|
|
}
|
|
}
|
|
|