using UnityEditor;
using UnityEngine;
using UnityEngine.SceneManagement;
namespace Unity.PlasticSCM.Editor
{
internal struct UnityObjectInstance
{
#if UNITY_6000_4_OR_NEWER
internal static UnityObjectInstance FromEntityId(EntityId entityId)
{
return new UnityObjectInstance
{
mEntityIdValue = entityId
};
}
EntityId mEntityIdValue;
#else
internal static UnityObjectInstance FromInstanceId(int instanceID)
{
return new UnityObjectInstance
{
mIntValue = instanceID
};
}
int mIntValue;
#endif
internal Object FindObject()
{
#if UNITY_6000_4_OR_NEWER
return EditorUtility.EntityIdToObject(mEntityIdValue);
#elif UNITY_6000_3_OR_NEWER
#pragma warning disable CS0618 // Type or member is obsolete
return EditorUtility.EntityIdToObject(mIntValue);
#pragma warning restore CS0618 // Type or member is obsolete
#else
return EditorUtility.InstanceIDToObject(mIntValue);
#endif
}
internal bool MatchesScene(Scene scene)
{
#if UNITY_6000_4_OR_NEWER
return scene.handle == SceneHandle.FromRawData(EntityId.ToULong(mEntityIdValue));
#else
return scene.handle == mIntValue;
#endif
}
}
}