重新优化了NodeModel类;从硬编码类型改为“注册/获取”的方式,为下一步解耦Workbench与节点UI做准备。

新增了“全局数据节点”;保存项目文件时,不同节点可以使用自定义数据保存自身独特的数据,不再借用“方法参数”。
重新设计了运行时的环境输出;增量式生成器现在可以选择在属性变更的前后时间点插入自定义代码;重写了加载项目、保存项目的方法。
This commit is contained in:
fengjiayi
2024-12-12 20:31:50 +08:00
parent dbbaa10cc0
commit 49603bb58f
40 changed files with 999 additions and 681 deletions

View File

@@ -22,6 +22,14 @@ namespace Serein.Library.Api
/// </summary>
public delegate void ProjectLoadedHandler(ProjectLoadedEventArgs eventArgs);
/// <summary>
/// 项目准备保存
/// </summary>
/// <param name="eventArgs"></param>
public delegate void ProjectSavingHandler(ProjectSavingEventArgs eventArgs);
/// <summary>
/// 加载项目文件时成功加载了DLL文件
/// </summary>
@@ -136,6 +144,13 @@ namespace Serein.Library.Api
{
}
}
public class ProjectSavingEventArgs : FlowEventArgs
{
public ProjectSavingEventArgs()
{
}
}
public class LoadDllEventArgs : FlowEventArgs
{
@@ -259,11 +274,23 @@ namespace Serein.Library.Api
public class NodeCreateEventArgs : FlowEventArgs
{
/// <summary>
/// 节点添加事件参数
/// </summary>
/// <param name="nodeModel">节点对象</param>
/// <param name="position">位置</param>
public NodeCreateEventArgs(object nodeModel, PositionOfUI position)
{
this.NodeModel = nodeModel;
this.Position = position;
}
/// <summary>
/// 区域子项节点添加事件参数
/// </summary>
/// <param name="nodeModel">节点对象</param>
/// <param name="isAddInRegion">是否添加在区域中</param>
/// <param name="regeionGuid">区域Guid</param>
public NodeCreateEventArgs(object nodeModel, bool isAddInRegion, string regeionGuid)
{
this.NodeModel = nodeModel;
@@ -564,6 +591,11 @@ namespace Serein.Library.Api
/// </summary>
event ProjectLoadedHandler OnProjectLoaded;
/// <summary>
/// 项目准备保存
/// </summary>
event ProjectSavingHandler OnProjectSaving;
/// <summary>
/// 节点连接属性改变事件
/// </summary>
@@ -656,18 +688,24 @@ namespace Serein.Library.Api
/// </summary>
void StopRemoteServer();
/// <summary>
/// 保存当前项目
/// </summary>
/// <returns></returns>
Task<SereinProjectData> GetProjectInfoAsync();
/// <summary>
/// 加载项目文件
/// </summary>
/// <param name="flowEnvInfo">包含项目信息的远程环境</param>
/// <param name="filePath"></param>
void LoadProject(FlowEnvInfo flowEnvInfo, string filePath);
/// <summary>
/// 保存项目
/// </summary>
void SaveProject();
/// <summary>
/// 获取当前项目信息
/// </summary>
/// <returns></returns>
Task<SereinProjectData> GetProjectInfoAsync();
/// <summary>
/// 加载远程环境
/// </summary>