wpf游戏引擎的script实现

1.script.cs

using System.IO;

using System.Runtime.Serialization;

using System.Text;

namespace PrimalEditor.Components

{

DataContract

class Script : Component

{

private string _name;

DataMember

public string Name

{

get => _name;

set

{

if (_name != value)

{

_name = value;

OnPropertyChanged(Name);

}

}

}

public override IMSComponent GetMultiselectionComponent(MSEntity msEntity) => new MSScript(msEntity);

public override void WriteToBinary(BinaryWriter bw)

{

var nameBytes = Encoding.UTF8.GetBytes(Name);

bw.Write(nameBytes.Length);

bw.Write(nameBytes);

}

public Script(GameEntity owner) : base(owner)

{

}

}

sealed class MSScript : MSComponent<Script>

{

private string _name;

DataMember

public string Name

{

get => _name;

set

{

if (_name != value)

{

_name = value;

OnPropertyChanged(Name);

}

}

}

protected override bool UpdateComponents(string propertyName)

{

if (propertyName == nameof(Name))

{

SelectedComponents.ForEach(c => c.Name = _name);

return true;

}

return false;

}

protected override bool UpdateMSComponent()

{

Name = MSEntity.GetMixedValue(SelectedComponents, new Func<Script, string>(x => x.Name));

return true;

}

public MSScript(MSEntity msEntity) : base(msEntity)

{

Refresh();

}

}

}

相关推荐
c#上位机29 分钟前
wpf之 Popup
wpf
Dream achiever41 分钟前
4.WPF控件---Border
wpf
syty202017 小时前
shardingsphere加载过程
wpf
Dream achiever17 小时前
7.WPF 的 TextBox 和 TextBlock 控件
开发语言·c#·wpf
玖笙&17 小时前
✨WPF编程基础【1.1】:XAML文档框架
c++·visualstudio·wpf
爱吃小胖橘17 小时前
Unity-动画子状态机
3d·unity·c#·游戏引擎
玉龙202521 小时前
使用虚幻引擎|UE5制作自动开关门
ue5·游戏引擎·虚幻·虚幻引擎教程
Dream achiever1 天前
8.WPFTextBox控件的鼠标和键盘事件
开发语言·c#·wpf
Dream achiever1 天前
10.WPF布局
开发语言·c#·wpf
多多*1 天前
linux安装hbase(完)
java·分布式·算法·c#·wpf