wpf3d游戏引擎ProjectLayoutView实现

1.ProjectLayoutView.xaml.cs

using PrimalEditor.Components;

using PrimalEditor.GameProject;

using PrimalEditor.Utilities;

using System.Windows;

using System.Windows.Controls;

namespace PrimalEditor.Editors

{

/// <summary>

/// ProjectLayoutView.xaml 的交互逻辑

/// </summary>

public partial class ProjectLayoutView : UserControl

{

public ProjectLayoutView()

{

InitializeComponent();

}

private void OnAddGameEntity_Button_Click(object sender, RoutedEventArgs e)

{

var btn = sender as Button;

var vm = btn.DataContext as Scene;

vm.AddGameEntityCommand.Execute(new GameEntity(vm) { Name = "Empty Game Entity" });

}

private void OnGameEntities_ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)

{

GameEntityView.Instance.DataContext = null;

var listBox = sender as ListBox;

if (e.AddedItems.Count > 0)

{

GameEntityView.Instance.DataContext = listBox.SelectedItems[0];

}

var newSection = listBox.SelectedItems.Cast<GameEntity>().ToList();

var previousSelection = newSection.Except(e.AddedItems.Cast<GameEntity>()).Concat(e.RemovedItems.Cast<GameEntity>()).ToList();

Project.UndoRedo.Add(new UndoRedoAction(

() =>

{

listBox.UnselectAll();

previousSelection.ForEach(x => (listBox.ItemContainerGenerator.ContainerFromItem(x) as ListBoxItem).IsSelected = true);

},

() =>

{

listBox.UnselectAll();

newSection.ForEach(x => (listBox.ItemContainerGenerator.ContainerFromItem(x) as ListBoxItem).IsSelected = true);

},

"Selection changed"

));

}

}

}

相关推荐
Scout-leaf2 天前
WPF新手村教程(三)—— 路由事件
c#·wpf
爱搞虚幻的阿恺4 天前
Niagara粒子系统-超炫酷的闪电特效(加餐 纸牌螺旋上升效果)
游戏·游戏引擎
_Li.4 天前
Simulink - 6DOF (Euler Angles)
人工智能·算法·机器学习·游戏引擎·cocos2d
weixin_424294674 天前
Unity 调用Steamworks API 的 SteamUserStats.RequestCurrentStats()报错
unity·游戏引擎·steamwork
HoFunGames4 天前
Unity小地图,Easy Minimap System MT-GPS插件
unity·游戏引擎
wy3258643644 天前
Unity 新输入系统InputSystem(基本操作)
unity·c#·游戏引擎
星和月4 天前
Untiy使用说明
c#·游戏引擎
柒.梧.4 天前
基于SpringBoot+JWT 实现Token登录认证与登录人信息查询
wpf
小菱形_4 天前
【Unity】TimeLine
unity·游戏引擎
weixin_424294675 天前
Unity 使用Steamworks.NET
unity·游戏引擎