51 lines
1.2 KiB
C#
51 lines
1.2 KiB
C#
using System.Linq;
|
|
using UniGLTF;
|
|
using UnityEditor;
|
|
using UnityEngine;
|
|
using UniGLTF.MeshUtility;
|
|
|
|
namespace VRM
|
|
{
|
|
public static class VrmPrefabUtility
|
|
{
|
|
const string BACKUP_DIR = "MeshIntegratorBackup";
|
|
|
|
public static GameObject InstantiatePrefab(GameObject prefab)
|
|
{
|
|
if (!IsPrefab(prefab)) return null;
|
|
|
|
return (GameObject)PrefabUtility.InstantiatePrefab(prefab);
|
|
}
|
|
|
|
static bool IsPrefab(Object instance)
|
|
{
|
|
if (instance == null)
|
|
{
|
|
return false;
|
|
}
|
|
if (PrefabUtility.GetPrefabAssetType(instance) != PrefabAssetType.Regular)
|
|
{
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
public static void ApplyChangesToPrefab(GameObject instance)
|
|
{
|
|
var prefab = instance.GetPrefab();
|
|
if (prefab == null)
|
|
{
|
|
return;
|
|
}
|
|
|
|
var path = AssetDatabase.GetAssetPath(prefab);
|
|
if (string.IsNullOrEmpty(path))
|
|
{
|
|
return;
|
|
}
|
|
|
|
PrefabUtility.SaveAsPrefabAssetAndConnect(instance, path, InteractionMode.AutomatedAction);
|
|
}
|
|
}
|
|
}
|