159 lines
8.8 KiB
C#
159 lines
8.8 KiB
C#
using UnityEngine;
|
|
using XRLib;
|
|
using XED.UI;
|
|
using XRLib.UI;
|
|
using XED.Util;
|
|
using XED.Manage;
|
|
using XED.Asset;
|
|
using XED.Machine;
|
|
using System.Collections.Generic;
|
|
using System;
|
|
|
|
namespace XED.Manage
|
|
{
|
|
[DefaultExecutionOrder(int.MaxValue)]
|
|
public class EventConnector : MonoBehaviour, ISingle
|
|
{
|
|
public override void AfterAwake()
|
|
{
|
|
var rayCaster = FindSingle<Raycaster>();
|
|
var statusPanel = FindSingle<ModePanel>();
|
|
|
|
var canvas_static = FindSingle<Canvas_Static>();
|
|
var canvas_Popup = FindSingle<Canvas_Popup>();
|
|
var canvas_Windows = FindSingle<Canvas_Windows>();
|
|
|
|
var agvManager = FindSingle<AGV_Manager>();
|
|
var wallBuilder = FindSingle<WallBuilder>();
|
|
var agvNodeManager = FindSingle<AGVNodeManager>();
|
|
var userInputManager = FindSingle<UserInputManager>();
|
|
var agvNodeLinkManager = FindSingle<AGVNodeLinkManager>();
|
|
var nodeGizmoController = FindSingle<NodeGizmoController>();
|
|
var customAssetConnector = FindSingle<CustomAssetConnector>();
|
|
var renderObjectHandler = FindFirstObjectByType<RenderObjectHandler>();
|
|
|
|
GameObject assetWindow = canvas_Windows.panel_assetlibrary.gameObject;
|
|
SaveLoadFBXData saveLoadFBXData = customAssetConnector.saveLoadFBXData;
|
|
GameObject componentWindow = canvas_Windows.panel_componentlibrary.gameObject;
|
|
|
|
UIConnection();
|
|
StatusConnection();
|
|
ManagerConnection();
|
|
DefaultActionSetting();
|
|
|
|
void ManagerConnection()
|
|
{
|
|
customAssetConnector.onRemoveObjects += renderObjectHandler.DeselectAll;
|
|
customAssetConnector.onSelectObjects += ((name, objects) => { canvas_Windows.panel_objectinfo.gameObject.SetActive(true); });
|
|
customAssetConnector.onSelectObjects += ((name, objects) => { canvas_Windows.panel_objectalign.gameObject.SetActive(true); });
|
|
customAssetConnector.onSelectObjects += canvas_Windows.panel_objectinfo.SetObjectInfo;
|
|
customAssetConnector.onRemoveObjects += canvas_Windows.panel_objectinfo.ResetObjectInfo;
|
|
customAssetConnector.onDeselectObjects += (() => { canvas_Windows.panel_objectinfo.gameObject.SetActive(false); });
|
|
customAssetConnector.onDeselectObjects += (() => { canvas_Windows.panel_objectalign.gameObject.SetActive(false); });
|
|
//customAssetConnector.onAssetDropped += (() => componentWindow.SetActive(true));
|
|
|
|
renderObjectHandler.onDeselectAll += canvas_Windows.panel_objectinfo.ResetObjectInfo;
|
|
renderObjectHandler.onTransformChanged += canvas_Windows.panel_objectinfo.OnTransformChanged;
|
|
renderObjectHandler.onDragBegin += canvas_Popup.panel_draghandler.OnBeginDrag;
|
|
renderObjectHandler.onDragEnd += canvas_Popup.panel_draghandler.OnEndDrag;
|
|
renderObjectHandler.onDragForceEnd += canvas_Popup.panel_draghandler.ForceEndDrag;
|
|
|
|
saveLoadFBXData.onBeginLoadAsset += (() => assetWindow.SetActive(true));
|
|
canvas_Windows.panel_objectinfo.onTransformChanged += renderObjectHandler.OnTransformChanged;
|
|
|
|
agvNodeManager.onNodeConnectionAdded += agvNodeLinkManager.AddLine;
|
|
agvNodeManager.onNodeConnectionUpdated += agvNodeLinkManager.UpdateLine;
|
|
agvNodeManager.onNodeConnectionRemoved += agvNodeLinkManager.RemoveLine;
|
|
|
|
agvNodeManager.onNodeGizmoSelected += nodeGizmoController.Attach;
|
|
agvNodeManager.onNodeDeselected += nodeGizmoController.Detach;
|
|
agvNodeManager.onNodeSettingSelected += canvas_Popup.agvnodepopup.Popup;
|
|
agvNodeManager.onNodeDeselected += canvas_Popup.agvnodepopup.Popdown;
|
|
agvNodeManager.onNodeSequenceOrdered += agvManager.ordertoAGV;
|
|
agvNodeManager.onNodeSequenceUpdated += canvas_Popup.agvnodemodepopup.UpdateTextSelectedAGVNode;
|
|
agvNodeManager.onNodeSequenceOrdered += agvNodeLinkManager.AddLines;
|
|
}
|
|
|
|
void UIConnection()
|
|
{
|
|
//Panel_ShortCut
|
|
canvas_static.panel_shortcuts.onClickOpenAssetWindow += (() => assetWindow.SetActive(!assetWindow.activeSelf));
|
|
canvas_static.panel_shortcuts.onClickOpenComponentWindow += (() => componentWindow.SetActive(!componentWindow.activeSelf));
|
|
canvas_static.panel_shortcuts.onClickUndo += CommandManager.I.Undo;
|
|
canvas_static.panel_shortcuts.onClickRedo += CommandManager.I.Redo;
|
|
|
|
//Panel Header
|
|
canvas_static.panel_topbar.onClickLoadAssets += saveLoadFBXData.LoadLocalFBXDirectory;
|
|
canvas_static.panel_topbar.onClickAssetWindow += (() => assetWindow.SetActive(!assetWindow.activeSelf));
|
|
canvas_static.panel_topbar.onClickComponentWindow += (() => componentWindow.SetActive(!componentWindow.activeSelf));
|
|
|
|
//Panel Toolbar
|
|
canvas_static.panel_toolbar.onClickMove += renderObjectHandler.SetRTGMove;
|
|
canvas_static.panel_toolbar.onClickExpand += renderObjectHandler.SetRTGScale;
|
|
canvas_static.panel_toolbar.onClickRotate += renderObjectHandler.SetRTGRotate;
|
|
canvas_static.panel_toolbar.onClickRemove += renderObjectHandler.RemoveItem;
|
|
canvas_static.panel_toolbar.onClickCopy += renderObjectHandler.CopyItem;
|
|
|
|
canvas_static.panel_toolbar.onClickStartDrawWall += wallBuilder.DrawWallStart;
|
|
|
|
canvas_static.panel_toolbar.onClickModifyWall += wallBuilder.SetDrawState;
|
|
canvas_static.panel_toolbar.onClickRemoveWall += wallBuilder.SetDrawState;
|
|
canvas_static.panel_toolbar.onClickEndWall += wallBuilder.SetDrawState;
|
|
|
|
canvas_Popup.agvnodepopup.Button_Plus.onClick.AddListener(agvNodeManager.AddNode);
|
|
canvas_Popup.agvnodepopup.Button_Minus.onClick.AddListener(agvNodeManager.RemoveNode);
|
|
canvas_Popup.agvnodepopup.DropDown_AGVNodeType.onValueChanged.AddListener(agvNodeManager.NodeTypeChange);
|
|
|
|
canvas_Popup.agvnodemodepopup.Button_AGVPlay.onClick.AddListener(agvNodeManager.ordertoAGV);
|
|
canvas_Popup.agvnodemodepopup.Button_AGVNodeLoad.onClick.AddListener(agvNodeManager.Load);
|
|
canvas_Popup.agvnodemodepopup.Button_AGVNodeSave.onClick.AddListener(agvNodeManager.Save);
|
|
canvas_Popup.agvnodemodepopup.onAGVNodeModeChanged += agvNodeManager.ChangeSelectMode;
|
|
canvas_Popup.panel_draghandler.onDragBoxSelect += customAssetConnector.OnDragBoxSelect;
|
|
|
|
canvas_static.panel_toolbar.onClickAGVMode += () => statusPanel.SetMode(ModePanel.ProgramMode.AGVPathDrawing);
|
|
canvas_static.panel_toolbar.onClickStartDrawWall += ()=>statusPanel.SetMode(ModePanel.ProgramMode.WallDrawing);
|
|
}
|
|
|
|
void StatusConnection()
|
|
{
|
|
statusPanel.AddController(renderObjectHandler);
|
|
statusPanel.AddController(wallBuilder);
|
|
statusPanel.AddController(agvNodeManager);
|
|
|
|
statusPanel.AddModeEnterEvent(ModePanel.ProgramMode.AGVPathDrawing, canvas_Popup.agvnodemodepopup.Open);
|
|
|
|
statusPanel.SetMode(ModePanel.ProgramMode.ObjectLayout);
|
|
}
|
|
|
|
void DefaultActionSetting()
|
|
{
|
|
var commandHandler = CommandManager.I.GetInputHandler();
|
|
userInputManager.SetHandler(GetDefaultInputHandler());
|
|
userInputManager.SetHandler(commandHandler);
|
|
canvas_static.panel_modecontrol.onClickObjectMode += () => statusPanel.SetMode(ModePanel.ProgramMode.ObjectLayout);
|
|
//canvas_static.panel_modecontrol.onClickPropertyMode += () => statusPanel.SetMode(ModePanel.ProgramMode.None);
|
|
|
|
rayCaster.onUIHoverEvent += canvas_Popup.panel_tooltip.ActivateTooltip;
|
|
rayCaster.onUIHoverExitEvent += canvas_Popup.panel_tooltip.DeactivateTooltip;
|
|
//rayCaster.AddEvent(Raycaster.EventType.FirstRightClickOnly, typeof(TwinObject), canvas_Popup.panel_propertyviewer.Activate);
|
|
}
|
|
}
|
|
|
|
InputHandler defaultInputHandler;
|
|
InputHandler GetDefaultInputHandler()
|
|
{
|
|
if (defaultInputHandler == null)
|
|
{
|
|
Dictionary<KeyCode, Action> upKeyActions = new();
|
|
Dictionary<KeyCode, Action> getKeyActions = new();
|
|
Dictionary<KeyCode, Action> downKeyActions = new();
|
|
Dictionary<KeyCode, Dictionary<KeyCode, Action>> hotkeyActions = new();
|
|
|
|
defaultInputHandler = new InputHandler(getKeyActions, downKeyActions, upKeyActions, hotkeyActions);
|
|
}
|
|
|
|
return defaultInputHandler;
|
|
}
|
|
}
|
|
}
|