add SFMLRenderWindow
This commit is contained in:
@@ -17,9 +17,10 @@ namespace SpineViewer.ViewModels.MainWindow
|
||||
{
|
||||
private static readonly Logger _logger = LogManager.GetCurrentClassLogger();
|
||||
|
||||
public MainWindowViewModel(ISFMLRenderer sfmlRenderer)
|
||||
public MainWindowViewModel(ISFMLRenderer sfmlRenderer, ISFMLRenderer wallpaperRenderer)
|
||||
{
|
||||
_sfmlRenderer = sfmlRenderer;
|
||||
_wallpaperRenderer = wallpaperRenderer;
|
||||
_explorerListViewModel = new(this);
|
||||
_spineObjectListViewModel = new(this);
|
||||
_sfmlRendererViewModel = new(this);
|
||||
@@ -34,6 +35,9 @@ namespace SpineViewer.ViewModels.MainWindow
|
||||
public ISFMLRenderer SFMLRenderer => _sfmlRenderer;
|
||||
private readonly ISFMLRenderer _sfmlRenderer;
|
||||
|
||||
public ISFMLRenderer WallpaperRenderer => _wallpaperRenderer;
|
||||
private readonly ISFMLRenderer _wallpaperRenderer;
|
||||
|
||||
public TaskbarItemProgressState ProgressState { get => _progressState; set => SetProperty(ref _progressState, value); }
|
||||
private TaskbarItemProgressState _progressState = TaskbarItemProgressState.None;
|
||||
|
||||
@@ -133,19 +137,5 @@ namespace SpineViewer.ViewModels.MainWindow
|
||||
_spineObjectListViewModel.LoadedSpineObjects = value.LoadedSpineObjects;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 调试命令
|
||||
/// </summary>
|
||||
public RelayCommand Cmd_Debug => _cmd_Debug ??= new(Debug_Execute);
|
||||
private RelayCommand? _cmd_Debug;
|
||||
|
||||
private void Debug_Execute()
|
||||
{
|
||||
#if DEBUG
|
||||
|
||||
MessagePopupService.Quest("测试一下");
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -35,6 +35,7 @@ namespace SpineViewer.ViewModels.MainWindow
|
||||
private readonly MainWindowViewModel _vmMain;
|
||||
private readonly ObservableCollectionWithLock<SpineObjectModel> _models;
|
||||
private readonly ISFMLRenderer _renderer;
|
||||
private readonly ISFMLRenderer _wallpaperRenderer;
|
||||
|
||||
/// <summary>
|
||||
/// 被选中对象的背景颜色
|
||||
@@ -90,6 +91,7 @@ namespace SpineViewer.ViewModels.MainWindow
|
||||
_vmMain = vmMain;
|
||||
_models = _vmMain.SpineObjects;
|
||||
_renderer = _vmMain.SFMLRenderer;
|
||||
_wallpaperRenderer = _vmMain.WallpaperRenderer;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -443,6 +445,7 @@ namespace SpineViewer.ViewModels.MainWindow
|
||||
{
|
||||
try
|
||||
{
|
||||
_wallpaperRenderer.SetActive(true);
|
||||
_renderer.SetActive(true);
|
||||
|
||||
float delta;
|
||||
@@ -461,7 +464,11 @@ namespace SpineViewer.ViewModels.MainWindow
|
||||
_forwardDelta = 0;
|
||||
}
|
||||
|
||||
using var v = _renderer.GetView();
|
||||
_wallpaperRenderer.SetView(v);
|
||||
|
||||
_renderer.Clear(_backgroundColor);
|
||||
_wallpaperRenderer.Clear(_backgroundColor);
|
||||
|
||||
// 渲染背景
|
||||
lock (_bgLock)
|
||||
@@ -492,6 +499,7 @@ namespace SpineViewer.ViewModels.MainWindow
|
||||
bg.Position = view.Center;
|
||||
bg.Rotation = view.Rotation;
|
||||
_renderer.Draw(bg);
|
||||
_wallpaperRenderer.Draw(bg);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -531,10 +539,12 @@ namespace SpineViewer.ViewModels.MainWindow
|
||||
sp.EnableDebug = true;
|
||||
_renderer.Draw(sp);
|
||||
sp.EnableDebug = false;
|
||||
_wallpaperRenderer.Draw(sp);
|
||||
}
|
||||
}
|
||||
|
||||
_renderer.Display();
|
||||
_wallpaperRenderer.Display();
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
@@ -546,6 +556,7 @@ namespace SpineViewer.ViewModels.MainWindow
|
||||
finally
|
||||
{
|
||||
_renderer.SetActive(false);
|
||||
_wallpaperRenderer.SetActive(false);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user