in src/dotnet/RiderPlugin.UnrealLink/PluginInstaller/UnrealPluginInstaller.cs [74:111]
private void HandleAutoUpdatePlugin(UnrealPluginInstallInfo unrealPluginInstallInfo)
{
var status = PluginInstallStatus.NoPlugin;
var outOfSync = true;
if (unrealPluginInstallInfo.Location == PluginInstallLocation.Engine)
{
status = PluginInstallStatus.InEngine;
outOfSync = !unrealPluginInstallInfo.EnginePlugin.PluginChecksum.SequenceEqual(myPathsProvider.CurrentPluginChecksum);
}
if (unrealPluginInstallInfo.Location == PluginInstallLocation.Game)
{
status = PluginInstallStatus.InGame;
outOfSync = unrealPluginInstallInfo.ProjectPlugins.Any(description =>
!description.PluginChecksum.SequenceEqual(myPathsProvider.CurrentPluginChecksum)
);
}
if (!outOfSync) return;
if(myBoundSettingsStore.GetValue((UnrealLinkSettings s) => s.AutoUpdateRiderLinkPlugin))
{
var installLocation = unrealPluginInstallInfo.Location;
if (installLocation == PluginInstallLocation.NotInstalled)
{
installLocation = GetInstallLocationFromSettings();
}
QueueAutoUpdate(installLocation);
return;
}
myLogger.Warn("[UnrealLink]: Plugin is out of sync");
myUnrealHost.PerformModelAction(model =>
{
var isGameAvailable = !unrealPluginInstallInfo.ProjectPlugins.IsEmpty();
model.OnEditorPluginOutOfSync(new EditorPluginOutOfSync(status, isGameAvailable));
});
}