mirror of
https://github.com/Artemis-RGB/Artemis
synced 2026-01-01 02:03:32 +00:00
Core - Added method to reactivate a module, reusing its profile
Profile editor - Improved performance when moving between modules Profile editor - Fixed editor sometimes going blank when moving between modules
This commit is contained in:
parent
ceccc7ceec
commit
cf16b9c218
@ -222,6 +222,15 @@ namespace Artemis.Core.Modules
|
|||||||
ModuleDeactivated(isOverride);
|
ModuleDeactivated(isOverride);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal virtual void Reactivate(bool isDeactivateOverride, bool isActivateOverride)
|
||||||
|
{
|
||||||
|
if (!IsActivated)
|
||||||
|
return;
|
||||||
|
|
||||||
|
Deactivate(isDeactivateOverride);
|
||||||
|
Activate(isActivateOverride);
|
||||||
|
}
|
||||||
|
|
||||||
internal void ApplyToEntity()
|
internal void ApplyToEntity()
|
||||||
{
|
{
|
||||||
if (Entity == null)
|
if (Entity == null)
|
||||||
|
|||||||
@ -232,6 +232,16 @@ namespace Artemis.Core.Modules
|
|||||||
profile?.Dispose();
|
profile?.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal override void Reactivate(bool isDeactivateOverride, bool isActivateOverride)
|
||||||
|
{
|
||||||
|
if (!IsActivated)
|
||||||
|
return;
|
||||||
|
|
||||||
|
// Avoid disposing the profile
|
||||||
|
base.Deactivate(isDeactivateOverride);
|
||||||
|
Activate(isActivateOverride);
|
||||||
|
}
|
||||||
|
|
||||||
#region Events
|
#region Events
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@ -58,7 +58,7 @@ namespace Artemis.Core.Services
|
|||||||
// Always deactivate all other modules whenever override is called
|
// Always deactivate all other modules whenever override is called
|
||||||
List<Module> modules = _pluginService.GetPluginsOfType<Module>().ToList();
|
List<Module> modules = _pluginService.GetPluginsOfType<Module>().ToList();
|
||||||
foreach (Module module in modules.Where(m => m != overrideModule))
|
foreach (Module module in modules.Where(m => m != overrideModule))
|
||||||
OverrideDeactivate(module);
|
OverrideDeactivate(module, overrideModule != null);
|
||||||
|
|
||||||
ActiveModuleOverride = overrideModule;
|
ActiveModuleOverride = overrideModule;
|
||||||
}
|
}
|
||||||
@ -84,13 +84,11 @@ namespace Artemis.Core.Services
|
|||||||
bool shouldBeActivated = ActiveModuleOverride.EvaluateActivationRequirements();
|
bool shouldBeActivated = ActiveModuleOverride.EvaluateActivationRequirements();
|
||||||
if (shouldBeActivated && ActiveModuleOverride.IsActivatedOverride)
|
if (shouldBeActivated && ActiveModuleOverride.IsActivatedOverride)
|
||||||
{
|
{
|
||||||
ActiveModuleOverride.Deactivate(true);
|
ActiveModuleOverride.Reactivate(true, false);
|
||||||
ActiveModuleOverride.Activate(false);
|
|
||||||
}
|
}
|
||||||
else if (!shouldBeActivated && !ActiveModuleOverride.IsActivatedOverride)
|
else if (!shouldBeActivated && !ActiveModuleOverride.IsActivatedOverride)
|
||||||
{
|
{
|
||||||
ActiveModuleOverride.Deactivate(false);
|
ActiveModuleOverride.Reactivate(false, true);
|
||||||
ActiveModuleOverride.Activate(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
@ -171,31 +169,12 @@ namespace Artemis.Core.Services
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OverrideActivate(Module module)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
if (module.IsActivated)
|
|
||||||
return;
|
|
||||||
|
|
||||||
module.Activate(true);
|
|
||||||
|
|
||||||
// If this is a profile module, activate the last active profile after module activation
|
|
||||||
if (module is ProfileModule profileModule)
|
|
||||||
_profileService.ActivateLastProfile(profileModule);
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
_logger.Error(new ArtemisPluginException(module.PluginInfo, "Failed to activate module and last profile.", e), "Failed to activate module and last profile");
|
|
||||||
throw;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private async Task DeactivateModule(Module module)
|
private async Task DeactivateModule(Module module)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
// If this is a profile module, activate the last active profile after module activation
|
// If this is a profile module, animate profile disable
|
||||||
|
// module.Deactivate would do the same but without animation
|
||||||
if (module.IsActivated && module is ProfileModule profileModule)
|
if (module.IsActivated && module is ProfileModule profileModule)
|
||||||
await profileModule.ChangeActiveProfileAnimated(null, null);
|
await profileModule.ChangeActiveProfileAnimated(null, null);
|
||||||
|
|
||||||
@ -208,17 +187,41 @@ namespace Artemis.Core.Services
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OverrideDeactivate(Module module)
|
private void OverrideActivate(Module module)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (module.IsActivated)
|
||||||
|
return;
|
||||||
|
|
||||||
|
// If activating while it should be deactivated, its an override
|
||||||
|
bool shouldBeActivated = module.EvaluateActivationRequirements();
|
||||||
|
module.Activate(!shouldBeActivated);
|
||||||
|
|
||||||
|
// If this is a profile module, activate the last active profile after module activation
|
||||||
|
if (module is ProfileModule profileModule)
|
||||||
|
_profileService.ActivateLastProfile(profileModule);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
_logger.Error(new ArtemisPluginException(module.PluginInfo, "Failed to activate module and last profile.", e), "Failed to activate module and last profile");
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OverrideDeactivate(Module module, bool clearingOverride)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (!module.IsActivated)
|
if (!module.IsActivated)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// If this is a profile module, activate the last active profile after module activation
|
// If deactivating while it should be activated, its an override
|
||||||
if (module is ProfileModule profileModule)
|
bool shouldBeActivated = module.EvaluateActivationRequirements();
|
||||||
profileModule.ChangeActiveProfile(null, null);
|
// No need to deactivate if it is not in an overridden state
|
||||||
|
if (shouldBeActivated && !module.IsActivatedOverride && !clearingOverride)
|
||||||
|
return;
|
||||||
|
|
||||||
module.Deactivate(true);
|
module.Deactivate(true);
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
|
|||||||
@ -361,7 +361,8 @@ namespace Artemis.UI.Shared.Services
|
|||||||
|
|
||||||
private void SelectedProfileOnDeactivated(object sender, EventArgs e)
|
private void SelectedProfileOnDeactivated(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Execute.PostToUIThread(() => ChangeSelectedProfile(null));
|
// Execute.PostToUIThread(() => ChangeSelectedProfile(null));
|
||||||
|
ChangeSelectedProfile(null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user