Commit 37a8fe70 by liulongfei

导入模板时更新GEOM

parent cefa15e4
......@@ -76,7 +76,7 @@ namespace VIZ.Package.Domain
/// </summary>
/// <param name="pageBase">页或模板</param>
/// <returns>背景场景信息</returns>
public static TransitionLogicSceneInfoModel GetSceneInfoWithTransitionLogic(PageModelBase pageBase)
public static TransitionLogicSceneInfoModel GetSceneInfoWithTransitionLogic(ConnModel conn, PageModelBase pageBase)
{
if (string.IsNullOrWhiteSpace(pageBase.BackgroundScene))
return null;
......@@ -94,13 +94,17 @@ namespace VIZ.Package.Domain
collectionGroupID = page.ConnGroupID;
}
TransitionLogicSceneInfoModel sceneInfo = ApplicationDomainEx.SceneInfoListWithTransitionLogic.FirstOrDefault(p => p.ScenePath == bgScenePath && p.ConnGroupID == collectionGroupID);
TransitionLogicSceneInfoModel sceneInfo = ApplicationDomainEx.SceneInfoListWithTransitionLogic.FirstOrDefault(p => p.ScenePath == bgScenePath &&
p.ConnGroupID == collectionGroupID &&
p.Connection == conn);
if (sceneInfo != null)
return sceneInfo;
lock (ApplicationDomainEx.SceneInfoList)
{
TransitionLogicSceneInfoModel sceneInfoInner = ApplicationDomainEx.SceneInfoListWithTransitionLogic.FirstOrDefault(p => p.ScenePath == bgScenePath && p.ConnGroupID == collectionGroupID);
TransitionLogicSceneInfoModel sceneInfoInner = ApplicationDomainEx.SceneInfoListWithTransitionLogic.FirstOrDefault(p => p.ScenePath == bgScenePath &&
p.ConnGroupID == collectionGroupID &&
p.Connection == conn);
if (sceneInfoInner != null)
return sceneInfoInner;
......@@ -108,6 +112,7 @@ namespace VIZ.Package.Domain
sceneInfo.Scene = pageBase.BackgroundScene;
sceneInfo.ScenePath = bgScenePath;
sceneInfo.ConnGroupID = collectionGroupID;
sceneInfo.Connection = conn;
ApplicationDomainEx.SceneInfoListWithTransitionLogic.Add(sceneInfo);
}
......
......@@ -12,6 +12,20 @@ namespace VIZ.Package.Domain
/// </summary>
public class TransitionLogicSceneInfoModel : SceneInfoModel
{
#region Connection -- 连接
private ConnModel connection;
/// <summary>
/// 连接
/// </summary>
public ConnModel Connection
{
get { return connection; }
set { connection = value; this.RaisePropertyChanged(nameof(Connection)); }
}
#endregion
#region TransitionLogic -- 切换逻辑
private TransitionLogicModel transitionLogic = new TransitionLogicModel();
......
......@@ -83,7 +83,7 @@ namespace VIZ.Package.Module
// 场景信息
SceneInfoModel oldSceneInfo = oldPageBase.GetSceneInfo();
SceneInfoModel newSceneInfo = newPageBase.GetSceneInfo();
TransitionLogicSceneInfoModel bgSceneInfo = ApplicationDomainEx.GetSceneInfoWithTransitionLogic(newPageBase);
TransitionLogicSceneInfoModel bgSceneInfo = ApplicationDomainEx.GetSceneInfoWithTransitionLogic(conn, newPageBase);
// 切换逻辑层
TransitionLogicLayerInfo transitionLogicLayer = bgSceneInfo.TransitionLogic.LayerInfos.FirstOrDefault(p => p.LayerIdentifier == newPageBase.LayerIdentifier);
......@@ -218,7 +218,7 @@ namespace VIZ.Package.Module
}
// 切换逻辑层
TransitionLogicSceneInfoModel bgSceneInfo = ApplicationDomainEx.GetSceneInfoWithTransitionLogic(newPageBase);
TransitionLogicSceneInfoModel bgSceneInfo = ApplicationDomainEx.GetSceneInfoWithTransitionLogic(conn, newPageBase);
TransitionLogicLayerInfo logicLayer = bgSceneInfo.TransitionLogic.LayerInfos.FirstOrDefault(p => p.LayerIdentifier == newPageBase.LayerIdentifier);
if (logicLayer != null)
......@@ -255,7 +255,7 @@ namespace VIZ.Package.Module
public void TakeOutTransitionLogic(PageModelBase oldPageBase, PageModelBase newPageBase, ControlObjectModel obj, IPluginView view, ConnModel conn)
{
// 场景信息
TransitionLogicSceneInfoModel bgSceneInfo = ApplicationDomainEx.GetSceneInfoWithTransitionLogic(newPageBase);
TransitionLogicSceneInfoModel bgSceneInfo = ApplicationDomainEx.GetSceneInfoWithTransitionLogic(conn, newPageBase);
// 切换逻辑层
TransitionLogicLayerInfo transitionLogicLayer = bgSceneInfo.TransitionLogic.LayerInfos.FirstOrDefault(p => p.LayerIdentifier == newPageBase.LayerIdentifier);
......
......@@ -532,6 +532,7 @@ namespace VIZ.Package.Module
{
sceneInfo.TakeInitedProgress = 0d;
sceneInfo.TakeInitedMessage = null;
sceneInfo.Connection = null;
sceneInfo.TransitionLogic.LayerInfos.Clear();
}
}
......
......@@ -408,6 +408,16 @@ namespace VIZ.Package.Service
}
}
/// <summary>
/// 控制对象停止仓储
/// </summary>
/// <param name="conn">连接</param>
/// <param name="vizID">VizID</param>
public void ControlObjectStoreStops(ConnModel conn, string vizID)
{
conn.EndpointManager.Send($"#{vizID}*FUNCTION*ControlObject*store_stops INVOKE");
}
// --------------------------------------------------------------------------------------------------
// 切换场景
......
......@@ -309,7 +309,6 @@ namespace VIZ.Package.Service
return sceneName;
}
/// <summary>
/// 清理页
/// </summary>
......@@ -339,6 +338,115 @@ namespace VIZ.Package.Service
}
// --------------------------------------------------------------------------------------------------
// GROUP
/// <summary>
/// 设置分组名称
/// </summary>
/// <param name="conn">连接</param>
/// <param name="vizID">VizID</param>
/// <param name="name">名称</param>
public void GroupSetName(ConnModel conn, string vizID, string name)
{
conn.EndpointManager.Send($"#{vizID}*NAME SET {name}");
}
/// <summary>
/// 删除分组
/// </summary>
/// <param name="conn">连接</param>
/// <param name="vizID">VizID</param>
/// <param name="name">名称</param>
public void GroupDelete(ConnModel conn, string scenePath, string vizID)
{
conn.EndpointManager.Send($"SCENE*{scenePath}*TREE*#{vizID} DELETE ALL");
}
/// <summary>
/// 添加分组
/// </summary>
/// <param name="conn">连接</param>
/// <param name="scenePath">场景路径</param>
/// <param name="controlObjectVizID">控制对象ID</param>
/// <param name="direction">移动位置</param>
/// <returns>添加的分组树节点路径</returns>
public string GroupAdd(ConnModel conn, string scenePath, string controlObjectVizID, VizGroupMoveDirection direction)
{
return conn.EndpointManager.Request($"SCENE*{scenePath}*TREE*#{controlObjectVizID} ADD {direction}");
}
/// <summary>
/// 移动分组
/// </summary>
/// <param name="conn">连接</param>
/// <param name="scenePath">场景路径</param>
/// <param name="srcVizID">源VizID</param>
/// <param name="destVizID">目标VizID</param>
/// <param name="direction">移动位置</param>
public void GroupMove(ConnModel conn, string scenePath, string srcVizID, string destVizID, VizGroupMoveDirection direction)
{
conn.EndpointManager.Send($"SCENE*{scenePath}*TREE*#{srcVizID} MOVE SCENE*{scenePath}*TREE*#{destVizID} {direction}");
}
// --------------------------------------------------------------------------------------------------
// GEOM
/// <summary>
/// GEOM 打包
/// </summary>
/// <param name="conn">连接</param>
/// <param name="scenePath">场景</param>
/// <param name="vizID">VizID</param>
public void GeomGroup(ConnModel conn, string scenePath, string vizID)
{
conn.EndpointManager.Send($"SCENE*{scenePath}*TREE*#{vizID}*GEOM GROUP");
}
/// <summary>
/// GEOM 解包
/// </summary>
/// <param name="conn">连接</param>
/// <param name="scenePath">场景</param>
/// <param name="vizID">VizID</param>
public void GeomUnGroup(ConnModel conn, string scenePath, string vizID)
{
conn.EndpointManager.Send($"SCENE*{scenePath}*TREE*#{vizID}*GEOM UNGROUP");
}
/// <summary>
/// 获取GEOM
/// </summary>
/// <param name="conn">连接</param>
/// <param name="scenePath">场景</param>
/// <param name="vizID">VizID</param>
/// <returns>GEOM VizID</returns>
public string GeomGet(ConnModel conn, string scenePath, string vizID)
{
string result = conn.EndpointManager.Request($"SCENE*{scenePath}*TREE*#{vizID}*GEOM GET");
if (string.IsNullOrWhiteSpace(result) || result.StartsWith(ApplicationConstants.VIZ_COMMAND_RESULT_ERROR_PREFIX))
return null;
string[] pars = result.Split('#');
if (pars.Length < 2)
return null;
return pars[1];
}
/// <summary>
/// 拷贝GEOM
/// </summary>
/// <param name="conn">连接</param>
/// <param name="srcVizID">源VizID</param>
/// <param name="destPath">目标路径</param>
/// <returns>是否成功拷贝</returns>
public bool GeomCopy(ConnModel conn, string srcVizID, string destPath)
{
string result = conn.EndpointManager.Request($"GEOM*#{srcVizID} COPY GEOM*{destPath}");
return string.Equals(result, "1");
}
// --------------------------------------------------------------------------------------------------
// 切换场景
/// <summary>
......@@ -361,7 +469,7 @@ namespace VIZ.Package.Service
if (string.IsNullOrWhiteSpace(state))
throw new ArgumentNullException(nameof(state));
conn.EndpointManager.Send($"SCENE*{bgScenePath}*STAGE*DIRECTOR*P{layer} SHOW ${state}");
conn.EndpointManager.Send($"SCENE*{bgScenePath}*STAGE*DIRECTOR*{layer} SHOW ${state}");
}
/// <summary>
......
......@@ -52,8 +52,12 @@ namespace VIZ.Package.Service
{
Debug.WriteLine($"加载场景 开始 [ {page.Scene} ]");
// 执行加载
this.ExecuteLoadOnePage(page);
// 执行创建切换逻辑Geom
this.ExecuteCreateGeomWithTransitionLogic(page);
Debug.WriteLine($"加载场景 结束 [ {page.Scene} ]");
}
catch (Exception ex)
......@@ -92,6 +96,56 @@ namespace VIZ.Package.Service
}
/// <summary>
/// 执行创建切换逻辑Geom
/// </summary>
/// <param name="pageBase">模板或页</param>
private void ExecuteCreateGeomWithTransitionLogic(PageModelBase pageBase)
{
if (pageBase == null || !pageBase.TransitionLogic)
return;
ConnModel conn = ApplicationDomainEx.PreviewConn;
// 获取控制对象ID
List<string> ids = this.vizCommandControlObjectService.GetControlObjectIds(conn);
string objectId = ids.FirstOrDefault();
if (string.IsNullOrWhiteSpace(objectId))
return;
objectId = objectId.Substring(1, objectId.Length - 1);
// SCENE*TITLES/2022/YC/YC_CUP2*TREE*#32915 ADD BOTTOM
string groupPath = this.vizCommandService.GroupAdd(conn, pageBase.ScenePath, objectId, VizGroupMoveDirection.BOTTOM);
// SCENE*TITLES/2022/YC/YC_CUP2*TREE GET
List<VizTreeNodeInfo> treeNodeList = this.vizCommandControlObjectService.GetTreeNodeList(conn);
VizTreeNodeInfo groupNode = treeNodeList.FirstOrDefault(p => p.Path == groupPath);
if (groupNode == null)
return;
// #33608*NAME SET root
this.vizCommandService.GroupSetName(conn, groupNode.Num, "root");
// SCENE*TITLES/2022/YC/YC_CUP2*TREE*#32915 MOVE SCENE*TITLES/2022/YC/YC_CUP2*TREE*#33608 RIGHT
this.vizCommandService.GroupMove(conn, pageBase.ScenePath, objectId, groupNode.Num, VizGroupMoveDirection.RIGHT);
// #32915*FUNCTION*ControlObject*store_stops INVOKE
this.vizCommandControlObjectService.ControlObjectStoreStops(conn, objectId);
// SCENE*TITLES/2022/YC/YC_CUP2*TREE*#33608*GEOM GROUP
this.vizCommandService.GeomGroup(conn, pageBase.ScenePath, groupNode.Num);
// SCENE*TITLES/2022/YC/YC_CUP2*TREE*#33608*GEOM GET
string geomID = this.vizCommandService.GeomGet(conn, pageBase.ScenePath, groupNode.Num);
// GEOM*#33616 COPY GEOM*TITLES/2022/YC/YC_CUP2
if (!this.vizCommandService.GeomCopy(conn, geomID, pageBase.ScenePath))
return;
// SCENE*TITLES/2022/YC/YC_CUP2*TREE*#33608*GEOM UNGROUP
this.vizCommandService.GeomUnGroup(conn, pageBase.ScenePath, groupNode.Num);
// SCENE*TITLES/2022/YC/YC_CUP2*TREE*#32915 MOVE SCENE*TITLES/2022/YC/YC_CUP2*TREE*#33608 BOTTOM
this.vizCommandService.GroupMove(conn, pageBase.ScenePath, objectId, groupNode.Num, VizGroupMoveDirection.BOTTOM);
// SCENE*TITLES/2022/YC/YC_CUP2*TREE*#33608 DELETE ALL
this.vizCommandService.GroupDelete(conn, pageBase.ScenePath, groupNode.Num);
}
/// <summary>
/// 更新控制对象属性至页对象
/// </summary>
/// <param name="pageBase">页对象</param>
......
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace VIZ.Package.Storage
{
/// <summary>
/// VIZ分组移动方向
/// </summary>
public enum VizGroupMoveDirection
{
/// <summary>
/// 底部
/// </summary>
BOTTOM,
/// <summary>
/// 右侧
/// </summary>
RIGHT
}
}
......@@ -114,6 +114,7 @@
<Compile Include="CSV\RecordLog\RecordLogTrigger.cs" />
<Compile Include="Enum\VizControlFieldType.cs" />
<Compile Include="Enum\VizControlObjectParameters.cs" />
<Compile Include="Enum\VizGroupMoveDirection.cs" />
<Compile Include="Enum\VizLayer.cs" />
<Compile Include="Enum\EnginePreviewMode.cs" />
<Compile Include="Enum\VizScene.cs" />
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment