This commit is contained in:
2025-11-14 18:44:06 +08:00
parent 10156da245
commit 22e867d077
7013 changed files with 2572882 additions and 1804 deletions

View File

@@ -0,0 +1,80 @@
// Amplify Impostors
// Copyright (c) Amplify Creations, Lda <info@amplify.pt>
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
#if UNITY_EDITOR
using UnityEditor;
#endif
namespace AmplifyImpostors
{
public static class ImpostorBakingTools
{
#if UNITY_EDITOR
public static string OpenFolderForImpostor( this AmplifyImpostor instance )
{
string oneLevelUp = Application.dataPath + "/../";
string directory = Path.GetFullPath( oneLevelUp ).Replace( "\\", "/" );
string objectPath = AssetDatabase.GetAssetPath( instance.RootTransform );
// Find Path next to prefab
if( string.IsNullOrEmpty( objectPath ) )
{
objectPath = AssetDatabase.GetAssetPath( PrefabUtility.GetCorrespondingObjectFromSource( instance.RootTransform ) );
}
Preferences.GlobalRelativeFolder = EditorPrefs.GetString( Preferences.PrefGlobalRelativeFolder, "" );
string fullpath = string.Empty;
string suggestedRelativePath = directory + objectPath;
if( string.IsNullOrEmpty( objectPath ) )
suggestedRelativePath = Application.dataPath;
else
suggestedRelativePath = Path.GetDirectoryName( suggestedRelativePath ).Replace( "\\", "/" );
Preferences.GlobalFolder = EditorPrefs.GetString( Preferences.PrefGlobalFolder, "" );
// Find best match
if( Preferences.GlobalDefaultMode && AssetDatabase.IsValidFolder( Preferences.GlobalFolder.TrimStart( '/' ) ) )
fullpath = directory + Preferences.GlobalFolder;
else if( AssetDatabase.IsValidFolder( FileUtil.GetProjectRelativePath( suggestedRelativePath + Preferences.GlobalRelativeFolder ).TrimEnd( '/' ) ) )
fullpath = suggestedRelativePath + Preferences.GlobalRelativeFolder;
else if( AssetDatabase.IsValidFolder( FileUtil.GetProjectRelativePath( suggestedRelativePath ).TrimEnd( '/' ) ) )
fullpath = suggestedRelativePath;
else
fullpath = Application.dataPath;
string fileName = instance.name + "_Impostor";
if( !string.IsNullOrEmpty( instance.m_impostorName ) )
fileName = instance.m_impostorName;
//Debug.Log( fullpath );
//Debug.Log( fileName );
string folderpath = EditorUtility.SaveFilePanelInProject( "Save Impostor to folder", fileName, "asset", "", FileUtil.GetProjectRelativePath( fullpath ) );
fileName = Path.GetFileNameWithoutExtension( folderpath );
if( !string.IsNullOrEmpty( fileName ) )
{
folderpath = Path.GetDirectoryName( folderpath ).Replace( "\\", "/" );
if( !string.IsNullOrEmpty( folderpath ) )
{
folderpath += "/";
if( !Preferences.GlobalDefaultMode )
{
instance.m_folderPath = folderpath;
}
else
{
Preferences.GlobalFolder = folderpath;
EditorPrefs.SetString( Preferences.PrefGlobalFolder, Preferences.GlobalFolder );
}
instance.m_impostorName = fileName;
}
}
return folderpath;
}
#endif
}
}