Added many other
This commit is contained in:
@@ -0,0 +1,92 @@
|
||||
using UnityEngine;
|
||||
using UnityEditor;
|
||||
using UnityEngine.SceneManagement;
|
||||
|
||||
public class ftRestorePaddingMenu
|
||||
{
|
||||
#if BAKERY_TOOLSMENU
|
||||
[MenuItem("Tools/Bakery/Utilities/Re-adjust UV padding", false, 43)]
|
||||
#else
|
||||
[MenuItem("Bakery/Utilities/Re-adjust UV padding", false, 43)]
|
||||
#endif
|
||||
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");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user