megre
This commit is contained in:
File diff suppressed because it is too large
Load Diff
8
Assets/Resources/Prefabs/FunctionObject.meta
Normal file
8
Assets/Resources/Prefabs/FunctionObject.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: c701b220856e1d64db502102772b45e8
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
46
Assets/Resources/Prefabs/FunctionObject/AGV.prefab
Normal file
46
Assets/Resources/Prefabs/FunctionObject/AGV.prefab
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!1 &7546223715437955775
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 1858239574698213647}
|
||||||
|
- component: {fileID: 1872264545586947101}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: AGV
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &1858239574698213647
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 7546223715437955775}
|
||||||
|
serializedVersion: 2
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!114 &1872264545586947101
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 7546223715437955775}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 84ad40885a5aaa04e85eb7de0489cc8d, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
7
Assets/Resources/Prefabs/FunctionObject/AGV.prefab.meta
Normal file
7
Assets/Resources/Prefabs/FunctionObject/AGV.prefab.meta
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 9f3f188aaedffb849b17cd8f244d701c
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
52
Assets/Resources/Prefabs/FunctionObject/StackerCrane.prefab
Normal file
52
Assets/Resources/Prefabs/FunctionObject/StackerCrane.prefab
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!1 &7235216986221957541
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 6930180773710152322}
|
||||||
|
- component: {fileID: 1101601223343831244}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: StackerCrane
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &6930180773710152322
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 7235216986221957541}
|
||||||
|
serializedVersion: 2
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!114 &1101601223343831244
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 7235216986221957541}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 0671ba3dd5120d84fa95f82f0b7004ca, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
BANK:
|
||||||
|
BAY:
|
||||||
|
LEVEL:
|
||||||
|
lift: {fileID: 0}
|
||||||
|
bodyStart: {x: 0, y: 0, z: 0}
|
||||||
|
bodyEnd: {x: 0, y: 0, z: 0}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 2e9da99ebd525864aaaaa4ccd7b3fe61
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
8
Assets/Resources/Scriptable.meta
Normal file
8
Assets/Resources/Scriptable.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: c4a6655181f2dd848ba5f64243c9be45
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
14
Assets/Resources/Scriptable/AddComponetData.asset
Normal file
14
Assets/Resources/Scriptable/AddComponetData.asset
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 654aed6b109dc4b4da05e7feaa681bf0, type: 3}
|
||||||
|
m_Name: AddComponetData
|
||||||
|
m_EditorClassIdentifier:
|
||||||
8
Assets/Resources/Scriptable/AddComponetData.asset.meta
Normal file
8
Assets/Resources/Scriptable/AddComponetData.asset.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 9d76d7df8b332154782233db18d8b18d
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using Studio.UI;
|
using Studio.UI;
|
||||||
using Studio.Manage;
|
using Studio.Manage;
|
||||||
@@ -37,8 +37,7 @@ namespace Studio.AssetTool
|
|||||||
{
|
{
|
||||||
//interferedObjectManager = ManagerHub.instance.Get<InterferedObjectManager>();
|
//interferedObjectManager = ManagerHub.instance.Get<InterferedObjectManager>();
|
||||||
renderObjectPrefab = Resources.Load<GameObject>("Prefabs/PRF_RenderObject");
|
renderObjectPrefab = Resources.Load<GameObject>("Prefabs/PRF_RenderObject");
|
||||||
|
sceneDataContainer = GameObject.FindAnyObjectByType<SceneDataContainer>();
|
||||||
sceneDataContainer= GameObject.FindAnyObjectByType<SceneDataContainer>();
|
|
||||||
assetScrollRect = EventConnector.instance.GetCanvas<Canvas_Popup>().panel_assetlibrary.scrollRect;
|
assetScrollRect = EventConnector.instance.GetCanvas<Canvas_Popup>().panel_assetlibrary.scrollRect;
|
||||||
assetScrollView = EventConnector.instance.GetCanvas<Canvas_Popup>().panel_assetlibrary.scrollView;
|
assetScrollView = EventConnector.instance.GetCanvas<Canvas_Popup>().panel_assetlibrary.scrollView;
|
||||||
componentScrollView = EventConnector.instance.GetCanvas<Canvas_Popup>().panel_hierarchy.scrollView;
|
componentScrollView = EventConnector.instance.GetCanvas<Canvas_Popup>().panel_hierarchy.scrollView;
|
||||||
@@ -172,6 +171,7 @@ namespace Studio.AssetTool
|
|||||||
selectedAssetData.AddTransformToRender(selectedItem.transform);
|
selectedAssetData.AddTransformToRender(selectedItem.transform);
|
||||||
CoroutineRunner.instance.StartCoroutine(ChangeSelectedAssetTransform());
|
CoroutineRunner.instance.StartCoroutine(ChangeSelectedAssetTransform());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnAssetDropped(AssetLibraryItem item)
|
public void OnAssetDropped(AssetLibraryItem item)
|
||||||
{
|
{
|
||||||
if (selectedAssetData == null)
|
if (selectedAssetData == null)
|
||||||
@@ -232,7 +232,7 @@ namespace Studio.AssetTool
|
|||||||
public void OnDeselectAll()
|
public void OnDeselectAll()
|
||||||
{
|
{
|
||||||
var canvas_Popup = EventConnector.instance.GetCanvas<Canvas_Popup>();
|
var canvas_Popup = EventConnector.instance.GetCanvas<Canvas_Popup>();
|
||||||
canvas_Popup.panel_objectinfo.gameObject.SetActive(false);
|
canvas_Popup.panel_dynamicobjectinfo.gameObject.SetActive(false);
|
||||||
componentScrollView.DeselectAll();
|
componentScrollView.DeselectAll();
|
||||||
canvas_Popup.panel_objectdistance.SetSelecetedObjectToNull();
|
canvas_Popup.panel_objectdistance.SetSelecetedObjectToNull();
|
||||||
}
|
}
|
||||||
@@ -265,7 +265,8 @@ namespace Studio.AssetTool
|
|||||||
internal void OnSelectObjects(string name, List<GameObject> selectedObjects)
|
internal void OnSelectObjects(string name, List<GameObject> selectedObjects)
|
||||||
{
|
{
|
||||||
var canvas_Popup = EventConnector.instance.GetCanvas<Canvas_Popup>();
|
var canvas_Popup = EventConnector.instance.GetCanvas<Canvas_Popup>();
|
||||||
canvas_Popup.panel_objectinfo.SetObjectInfo(name, selectedObjects);
|
canvas_Popup.panel_dynamicobjectinfo.SetObjectInfo(name, selectedObjects);
|
||||||
|
canvas_Popup.panel_dynamicobjectinfo.SetActive(true);
|
||||||
canvas_Popup.panel_objectdistance.SelectObjectFromClick(name, selectedObjects);
|
canvas_Popup.panel_objectdistance.SelectObjectFromClick(name, selectedObjects);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Diagnostics.Contracts;
|
using System.Diagnostics.Contracts;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@@ -29,10 +29,15 @@ namespace Studio.AssetTool
|
|||||||
|
|
||||||
LayerMask twinObjectMask;
|
LayerMask twinObjectMask;
|
||||||
|
|
||||||
|
public GameObject RenderObject { get { return renderObject; } }
|
||||||
public event Action<TwinObject, TwinObject> OnOverlabBegin;
|
public event Action<TwinObject, TwinObject> OnOverlabBegin;
|
||||||
public event Action<TwinObject, TwinObject> OnOverlabEnd;
|
public event Action<TwinObject, TwinObject> OnOverlabEnd;
|
||||||
public event Action<CustomAssetRenderObject> OnSelected;
|
public event Action<CustomAssetRenderObject> OnSelected;
|
||||||
|
|
||||||
|
public string componetKey;
|
||||||
|
public string addTopic;
|
||||||
|
public bool isAutoId;
|
||||||
|
public string ID;
|
||||||
private void Awake()
|
private void Awake()
|
||||||
{
|
{
|
||||||
objectRenderer = GetComponentInChildren<MeshRenderer>();
|
objectRenderer = GetComponentInChildren<MeshRenderer>();
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using UnityEditor;
|
using UnityEditor;
|
||||||
@@ -47,7 +47,7 @@ namespace Studio.AssetTool
|
|||||||
private void OnMousePointerDown()
|
private void OnMousePointerDown()
|
||||||
{
|
{
|
||||||
clickBeginPos = Input.mousePosition;
|
clickBeginPos = Input.mousePosition;
|
||||||
//ui를 선택했을 경우에는 오브젝트 선택을 멈춘다.
|
//ui를 선택했을 경우에는 오브젝트 선택을 멈춘다.
|
||||||
PointerEventData pointerData = new PointerEventData(EventSystem.current)
|
PointerEventData pointerData = new PointerEventData(EventSystem.current)
|
||||||
{
|
{
|
||||||
position = Input.mousePosition
|
position = Input.mousePosition
|
||||||
@@ -62,14 +62,14 @@ namespace Studio.AssetTool
|
|||||||
}
|
}
|
||||||
private void OnMousePointerUp()
|
private void OnMousePointerUp()
|
||||||
{
|
{
|
||||||
//rtg 컨트롤러가 조작중일때 락을 건다.
|
//rtg 컨트롤러가 조작중일때 락을 건다.
|
||||||
//rtg 컨트롤러 조작 후 포커스가 바뀌는 것을 방지하기 위한 용도
|
//rtg 컨트롤러 조작 후 포커스가 바뀌는 것을 방지하기 위한 용도
|
||||||
if (lockHandler == true)
|
if (lockHandler == true)
|
||||||
{
|
{
|
||||||
lockHandler = false;
|
lockHandler = false;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
//ui를 선택했을 경우에는 오브젝트 선택을 멈춘다.
|
//ui를 선택했을 경우에는 오브젝트 선택을 멈춘다.
|
||||||
PointerEventData pointerData = new PointerEventData(EventSystem.current)
|
PointerEventData pointerData = new PointerEventData(EventSystem.current)
|
||||||
{
|
{
|
||||||
position = Input.mousePosition
|
position = Input.mousePosition
|
||||||
@@ -81,7 +81,7 @@ namespace Studio.AssetTool
|
|||||||
EventConnector.instance.GetCanvas<Canvas_DragArea>().panel_draghandler.ForceEndDrag();
|
EventConnector.instance.GetCanvas<Canvas_DragArea>().panel_draghandler.ForceEndDrag();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
//포인터 업 위치가 포인터 다운 위치에서 크게 벗어났을 경우는 클릭을 무시한다.
|
//포인터 업 위치가 포인터 다운 위치에서 크게 벗어났을 경우는 클릭을 무시한다.
|
||||||
if ((clickBeginPos - Input.mousePosition).magnitude > clickLengthThreshold)
|
if ((clickBeginPos - Input.mousePosition).magnitude > clickLengthThreshold)
|
||||||
{
|
{
|
||||||
DeselectAll();
|
DeselectAll();
|
||||||
@@ -100,7 +100,7 @@ namespace Studio.AssetTool
|
|||||||
}
|
}
|
||||||
if (raycastedTarget.Count > 0)
|
if (raycastedTarget.Count > 0)
|
||||||
{
|
{
|
||||||
//오브젝트가 여러개 겹쳐 있을 경우 뒤의 오브젝트를 순차적으로 선택해주기 위한 용도
|
//오브젝트가 여러개 겹쳐 있을 경우 뒤의 오브젝트를 순차적으로 선택해주기 위한 용도
|
||||||
if (selectIndex < raycastedTarget.Count && prevSelectedObject == raycastedTarget[selectIndex])
|
if (selectIndex < raycastedTarget.Count && prevSelectedObject == raycastedTarget[selectIndex])
|
||||||
{
|
{
|
||||||
selectIndex++;
|
selectIndex++;
|
||||||
@@ -110,7 +110,7 @@ namespace Studio.AssetTool
|
|||||||
selectIndex = 0;
|
selectIndex = 0;
|
||||||
}
|
}
|
||||||
renderObject = raycastedTarget[selectIndex];
|
renderObject = raycastedTarget[selectIndex];
|
||||||
//컨트롤이 눌려 있으면 오브젝트 선택을 토글한다. (유니티 기능과 일치)
|
//컨트롤이 눌려 있으면 오브젝트 선택을 토글한다. (유니티 기능과 일치)
|
||||||
if (Input.GetKey(KeyCode.LeftControl))
|
if (Input.GetKey(KeyCode.LeftControl))
|
||||||
{
|
{
|
||||||
if (renderObject.ToggleSelect())
|
if (renderObject.ToggleSelect())
|
||||||
@@ -122,12 +122,12 @@ namespace Studio.AssetTool
|
|||||||
RemoveSelection(renderObject);
|
RemoveSelection(renderObject);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//시프트 키가 눌려 있는 경우 다중 선택 기능으로 작용한다.
|
//시프트 키가 눌려 있는 경우 다중 선택 기능으로 작용한다.
|
||||||
else if (Input.GetKey(KeyCode.LeftShift))
|
else if (Input.GetKey(KeyCode.LeftShift))
|
||||||
{
|
{
|
||||||
AddSelection(renderObject);
|
AddSelection(renderObject);
|
||||||
}
|
}
|
||||||
//그 외는 선택된 아이템을 제외하고 다 비선택해준다.
|
//그 외는 선택된 아이템을 제외하고 다 비선택해준다.
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
RemoveAllSelections();
|
RemoveAllSelections();
|
||||||
@@ -153,7 +153,7 @@ namespace Studio.AssetTool
|
|||||||
RemoveAllSelections();
|
RemoveAllSelections();
|
||||||
|
|
||||||
var canvas_Popup = EventConnector.instance.GetCanvas<Canvas_Popup>();
|
var canvas_Popup = EventConnector.instance.GetCanvas<Canvas_Popup>();
|
||||||
canvas_Popup.panel_objectinfo.ResetObjectInfo();
|
canvas_Popup.panel_dynamicobjectinfo.ResetObjectInfo();
|
||||||
|
|
||||||
ManagerHub.instance.Get<CustomAssetConnector>().OnDeselectAll();
|
ManagerHub.instance.Get<CustomAssetConnector>().OnDeselectAll();
|
||||||
}
|
}
|
||||||
@@ -232,7 +232,7 @@ namespace Studio.AssetTool
|
|||||||
public void OnTransformChangedFromRTG(List<GameObject> transformObjects)
|
public void OnTransformChangedFromRTG(List<GameObject> transformObjects)
|
||||||
{
|
{
|
||||||
OnTransformChanged(transformObjects);
|
OnTransformChanged(transformObjects);
|
||||||
EventConnector.instance.GetCanvas<Canvas_Popup>().panel_objectinfo.OnTransformChanged(transformObjects);
|
EventConnector.instance.GetCanvas<Canvas_Popup>().panel_dynamicobjectinfo.OnTransformChanged(transformObjects);
|
||||||
EventConnector.instance.GetCanvas<Canvas_DragArea>().panel_draghandler.ForceEndDrag();
|
EventConnector.instance.GetCanvas<Canvas_DragArea>().panel_draghandler.ForceEndDrag();
|
||||||
}
|
}
|
||||||
public void OnTransformChanged(List<GameObject> transformObjects)
|
public void OnTransformChanged(List<GameObject> transformObjects)
|
||||||
@@ -304,7 +304,7 @@ namespace Studio.AssetTool
|
|||||||
renderObject.onTransformChanged?.Invoke();
|
renderObject.onTransformChanged?.Invoke();
|
||||||
}
|
}
|
||||||
|
|
||||||
EventConnector.instance.GetCanvas<Canvas_Popup>().panel_objectinfo.OnTransformChanged(objectsToAlign.Select(renderObject => renderObject.gameObject).ToList());
|
EventConnector.instance.GetCanvas<Canvas_Popup>().panel_dynamicobjectinfo.OnTransformChanged(objectsToAlign.Select(renderObject => renderObject.gameObject).ToList());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void UndoAlign(List<CustomAssetRenderObject> objectsToAlign, List<Vector3> originalPos)
|
private void UndoAlign(List<CustomAssetRenderObject> objectsToAlign, List<Vector3> originalPos)
|
||||||
@@ -315,7 +315,7 @@ namespace Studio.AssetTool
|
|||||||
renderObject.transform.position = originalPos[i];
|
renderObject.transform.position = originalPos[i];
|
||||||
renderObject.onTransformChanged?.Invoke();
|
renderObject.onTransformChanged?.Invoke();
|
||||||
}
|
}
|
||||||
EventConnector.instance.GetCanvas<Canvas_Popup>().panel_objectinfo.OnTransformChanged(objectsToAlign.Select(renderObject => renderObject.gameObject).ToList());
|
EventConnector.instance.GetCanvas<Canvas_Popup>().panel_dynamicobjectinfo.OnTransformChanged(objectsToAlign.Select(renderObject => renderObject.gameObject).ToList());
|
||||||
}
|
}
|
||||||
public void VertexSnap()
|
public void VertexSnap()
|
||||||
{
|
{
|
||||||
@@ -323,9 +323,9 @@ namespace Studio.AssetTool
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
//가장 가까운 오브젝트에 붙여준다.
|
//가장 가까운 오브젝트에 붙여준다.
|
||||||
//Transform.position이 가깝다고 오브젝트 사이 기리가 꼭 가장 가까운 것은 아니기 때문에
|
//Transform.position이 가깝다고 오브젝트 사이 기리가 꼭 가장 가까운 것은 아니기 때문에
|
||||||
//오버랩 박스에 충돌되는 모든 오브젝트의 버텍스로 KDTree를 구성해 볼까 하다가 관두었다.
|
//오버랩 박스에 충돌되는 모든 오브젝트의 버텍스로 KDTree를 구성해 볼까 하다가 관두었다.
|
||||||
float minDist = float.MaxValue;
|
float minDist = float.MaxValue;
|
||||||
CustomAssetRenderObject fromObject = selectedRenderObjects[0];
|
CustomAssetRenderObject fromObject = selectedRenderObjects[0];
|
||||||
CustomAssetRenderObject toObject = null;
|
CustomAssetRenderObject toObject = null;
|
||||||
@@ -347,9 +347,9 @@ namespace Studio.AssetTool
|
|||||||
}
|
}
|
||||||
if (toObject != null)
|
if (toObject != null)
|
||||||
{
|
{
|
||||||
//선택된 오브젝트의 ConvexHull 버텍스 점을 계산해준다.
|
//선택된 오브젝트의 ConvexHull 버텍스 점을 계산해준다.
|
||||||
//이는 iteration하는 버텍스 수를 줄이기 위해 해주며,
|
//이는 iteration하는 버텍스 수를 줄이기 위해 해주며,
|
||||||
//만약 선택된 오브젝트도 TDTree로 Nearest 포인트 탐지할 경우 toObject의 센터에 가장 가까운 포인트만 탐지되기 때문에 가장 가까운 버텍스 점이 골라지지 않는 경우가 있다.
|
//만약 선택된 오브젝트도 TDTree로 Nearest 포인트 탐지할 경우 toObject의 센터에 가장 가까운 포인트만 탐지되기 때문에 가장 가까운 버텍스 점이 골라지지 않는 경우가 있다.
|
||||||
List<Vector3> verts = new List<Vector3>();
|
List<Vector3> verts = new List<Vector3>();
|
||||||
List<int> tris = new List<int>();
|
List<int> tris = new List<int>();
|
||||||
List<Vector3> normals = new List<Vector3>();
|
List<Vector3> normals = new List<Vector3>();
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using Studio.AssetTool;
|
using Studio.AssetTool;
|
||||||
using Studio.HierarchyTree;
|
using Studio.HierarchyTree;
|
||||||
@@ -138,7 +138,7 @@ namespace Studio.Command
|
|||||||
}
|
}
|
||||||
ManagerHub.instance.Get<RenderObjectHandler>().DeselectAll();
|
ManagerHub.instance.Get<RenderObjectHandler>().DeselectAll();
|
||||||
var canvas = EventConnector.instance.GetCanvas<Canvas_Popup>();
|
var canvas = EventConnector.instance.GetCanvas<Canvas_Popup>();
|
||||||
canvas.panel_objectinfo.ResetObjectInfo();
|
canvas.panel_dynamicobjectinfo.ResetObjectInfo();
|
||||||
//connector.onRemoveObjects?.Invoke();
|
//connector.onRemoveObjects?.Invoke();
|
||||||
connector.componentScrollView.DeselectAll();
|
connector.componentScrollView.DeselectAll();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using Studio.AssetTool;
|
using Studio.AssetTool;
|
||||||
@@ -60,9 +60,9 @@ namespace Studio
|
|||||||
//connector.onRemoveObjects?.Invoke();
|
//connector.onRemoveObjects?.Invoke();
|
||||||
ManagerHub.instance.Get<RenderObjectHandler>().DeselectAll();
|
ManagerHub.instance.Get<RenderObjectHandler>().DeselectAll();
|
||||||
var canvas = EventConnector.instance.GetCanvas<Canvas_Popup>();
|
var canvas = EventConnector.instance.GetCanvas<Canvas_Popup>();
|
||||||
canvas.panel_objectinfo.ResetObjectInfo();
|
canvas.panel_dynamicobjectinfo.ResetObjectInfo();
|
||||||
connector.componentScrollView.DeselectAll();
|
connector.componentScrollView.DeselectAll();
|
||||||
EventConnector.instance.GetCanvas<Canvas_Popup>().panel_objectinfo.ResetObjectInfo();
|
EventConnector.instance.GetCanvas<Canvas_Popup>().panel_dynamicobjectinfo.ResetObjectInfo();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using Studio.AssetTool;
|
using Studio.AssetTool;
|
||||||
using Studio.HierarchyTree;
|
using Studio.HierarchyTree;
|
||||||
using Studio.Manage;
|
using Studio.Manage;
|
||||||
@@ -60,7 +60,7 @@ namespace Studio.Command
|
|||||||
renderObjectHandler.DeselectAll();
|
renderObjectHandler.DeselectAll();
|
||||||
connector.componentScrollView.DeselectAll();
|
connector.componentScrollView.DeselectAll();
|
||||||
var canvas = EventConnector.instance.GetCanvas<Canvas_Popup>();
|
var canvas = EventConnector.instance.GetCanvas<Canvas_Popup>();
|
||||||
canvas.panel_objectinfo.ResetObjectInfo();
|
canvas.panel_dynamicobjectinfo.ResetObjectInfo();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Undo()
|
public void Undo()
|
||||||
|
|||||||
@@ -191,6 +191,8 @@ namespace Studio
|
|||||||
}
|
}
|
||||||
public void RemoveTypeIdListener(string type,string id)
|
public void RemoveTypeIdListener(string type,string id)
|
||||||
{
|
{
|
||||||
|
if (!listenerIdMap.ContainsKey(type))
|
||||||
|
return;
|
||||||
if (!listenerIdMap[type].ContainsKey(id))
|
if (!listenerIdMap[type].ContainsKey(id))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
using System.Collections;
|
using System.Collections;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using TriLibCore;
|
using TriLibCore;
|
||||||
@@ -28,6 +28,7 @@ namespace Studio.Util
|
|||||||
public Texture2D thumbnail;
|
public Texture2D thumbnail;
|
||||||
public List<Transform> drawTransforms = new List<Transform>();
|
public List<Transform> drawTransforms = new List<Transform>();
|
||||||
public UnityEvent<float> onLoadProgress = new UnityEvent<float>();
|
public UnityEvent<float> onLoadProgress = new UnityEvent<float>();
|
||||||
|
|
||||||
|
|
||||||
private AssetLoaderOptions assetLoaderOptions;
|
private AssetLoaderOptions assetLoaderOptions;
|
||||||
private MatrixConverter matrixConverter;
|
private MatrixConverter matrixConverter;
|
||||||
|
|||||||
@@ -1,13 +1,12 @@
|
|||||||
using Studio.VirtualFactory;
|
using Studio.VirtualFactory.Info;
|
||||||
using System;
|
using System;
|
||||||
using System.Linq;
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using Studio.VirtualFactory.Info;
|
|
||||||
|
|
||||||
namespace Studio.Dynamic.TwinObject
|
namespace Studio.Dynamic.TwinObject
|
||||||
{
|
{
|
||||||
public class AGV : MonoBehaviour, IInfo
|
public class AGV : AbstractFunctionObject
|
||||||
{
|
{
|
||||||
float dp;
|
float dp;
|
||||||
Vector3 nextPos;
|
Vector3 nextPos;
|
||||||
@@ -28,7 +27,8 @@ namespace Studio.Dynamic.TwinObject
|
|||||||
|
|
||||||
private bool isPlay = false;
|
private bool isPlay = false;
|
||||||
|
|
||||||
public Dictionary<string, string> Info {
|
public override Dictionary<string, string> Info
|
||||||
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
//ToDo 보고싶은 정보 나열한.. 리스트 목록 가져온다..
|
//ToDo 보고싶은 정보 나열한.. 리스트 목록 가져온다..
|
||||||
@@ -36,7 +36,8 @@ namespace Studio.Dynamic.TwinObject
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public Dictionary<string, string> Label {
|
public override Dictionary<string, string> Label
|
||||||
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
//ToDo 보고싶은 정보 나열한.. 리스트 목록 가져온다..
|
//ToDo 보고싶은 정보 나열한.. 리스트 목록 가져온다..
|
||||||
@@ -44,7 +45,20 @@ namespace Studio.Dynamic.TwinObject
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Init(string type,Vector3 pos)
|
public override ObjectType ObjectType
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return ObjectType.Dynamic;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Run했을때 생성되면서 배치...
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="type"></param>
|
||||||
|
/// <param name="pos"></param>
|
||||||
|
public void Init(string type, Vector3 pos)
|
||||||
{
|
{
|
||||||
transform.position = pos;
|
transform.position = pos;
|
||||||
startX = transform.position.x;
|
startX = transform.position.x;
|
||||||
@@ -57,11 +71,11 @@ namespace Studio.Dynamic.TwinObject
|
|||||||
StudioService.instance.AddTypeIdListener(type, transform.name, OnUpdateData);
|
StudioService.instance.AddTypeIdListener(type, transform.name, OnUpdateData);
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void OnUpdateData(object sender, StudioServiceIdEventArgs e)
|
public override void OnUpdateData(object sender, StudioServiceIdEventArgs e)
|
||||||
{
|
{
|
||||||
CurrentEntity = e.Entity;
|
CurrentEntity = e.Entity;
|
||||||
var s = "{";
|
var s = "{";
|
||||||
foreach(var t in e.Entity)
|
foreach (var t in e.Entity)
|
||||||
{
|
{
|
||||||
s += $"{t.Key}: {t.Value},";
|
s += $"{t.Key}: {t.Value},";
|
||||||
}
|
}
|
||||||
@@ -91,7 +105,7 @@ namespace Studio.Dynamic.TwinObject
|
|||||||
|
|
||||||
//노드방향으로 회전값알기
|
//노드방향으로 회전값알기
|
||||||
|
|
||||||
var degree =CurrentEntity.FirstOrDefault(x => x.Key.Equals("DEGREE", StringComparison.OrdinalIgnoreCase));
|
var degree = CurrentEntity.FirstOrDefault(x => x.Key.Equals("DEGREE", StringComparison.OrdinalIgnoreCase));
|
||||||
|
|
||||||
var deg = float.Parse(degree.Value);
|
var deg = float.Parse(degree.Value);
|
||||||
deg = 360f - deg;
|
deg = 360f - deg;
|
||||||
@@ -115,7 +129,7 @@ namespace Studio.Dynamic.TwinObject
|
|||||||
}
|
}
|
||||||
void PerforcedMovement()
|
void PerforcedMovement()
|
||||||
{
|
{
|
||||||
|
|
||||||
xp += Time.deltaTime * moveSpeed;
|
xp += Time.deltaTime * moveSpeed;
|
||||||
yp += Time.deltaTime * moveSpeed;
|
yp += Time.deltaTime * moveSpeed;
|
||||||
|
|
||||||
|
|||||||
@@ -14,18 +14,20 @@ namespace Studio.Dynamic.M
|
|||||||
private HashSet<AGV> agvs = new();
|
private HashSet<AGV> agvs = new();
|
||||||
public float AGVMoveSpeed;
|
public float AGVMoveSpeed;
|
||||||
public float AGVRotateSpeed;
|
public float AGVRotateSpeed;
|
||||||
|
public Queue<Dictionary<string, Dictionary<string, string>>> createAgvs = new();
|
||||||
public void Init(string type)
|
|
||||||
|
|
||||||
|
public void Awake()
|
||||||
{
|
{
|
||||||
var assets = ConfigConnected.AssetSettings;
|
|
||||||
prf_AGV = assets[type].loadedObject;
|
//이벤트 걸어둔다..
|
||||||
if (prf_AGV == null)
|
//+= OnPlayStart
|
||||||
{
|
}
|
||||||
//todo::팝업메시지 나주엥 설정....
|
public void OnPlayStart()
|
||||||
return;
|
{
|
||||||
}
|
prf_AGV = Resources.Load<AGV>("TestAGV");
|
||||||
StudioService.instance.AddTypeListener(type, OnDataUpdate);
|
StudioService.instance.AddTypeListener("AGV", OnDataUpdate);
|
||||||
StudioService.instance.AddTypeIdListener(type);
|
StudioService.instance.AddTypeIdListener("AGV");
|
||||||
}
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// MQTT
|
/// MQTT
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using Studio.VirtualFactory.Info;
|
using Studio.AssetTool;
|
||||||
|
using Studio.VirtualFactory.Info;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
@@ -8,10 +9,10 @@ using UnityEngine;
|
|||||||
|
|
||||||
namespace Studio.Staic.STKC
|
namespace Studio.Staic.STKC
|
||||||
{
|
{
|
||||||
public class StackerCrane : MonoBehaviour, IInfo
|
public class StackerCrane : AbstractFunctionObject
|
||||||
{
|
{
|
||||||
private Dictionary<string, string> CurrentEntity;
|
private Dictionary<string, string> CurrentEntity;
|
||||||
public Dictionary<string, string> Info
|
public override Dictionary<string, string> Info
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
@@ -20,7 +21,7 @@ namespace Studio.Staic.STKC
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Dictionary<string, string> Label
|
public override Dictionary<string, string> Label
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
@@ -28,6 +29,14 @@ namespace Studio.Staic.STKC
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override ObjectType ObjectType
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return ObjectType.Dynamic;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public string BANK;
|
public string BANK;
|
||||||
public string BAY;
|
public string BAY;
|
||||||
public string LEVEL;
|
public string LEVEL;
|
||||||
@@ -47,13 +56,20 @@ namespace Studio.Staic.STKC
|
|||||||
|
|
||||||
private int[] values = new int[3];
|
private int[] values = new int[3];
|
||||||
private string curType;
|
private string curType;
|
||||||
public void Init(string type)
|
|
||||||
|
public override void AfterAwake()
|
||||||
{
|
{
|
||||||
curType = type;
|
|
||||||
bodySpeed = 0.3f;
|
bodySpeed = 0.3f;
|
||||||
liftSpeed = 0.3f;
|
liftSpeed = 0.3f;
|
||||||
StudioService.instance.AddTypeIdListener(type, transform.name, OnUpdateData);
|
|
||||||
onMotionStart = StartAnim;
|
onMotionStart = StartAnim;
|
||||||
|
//이벤트 걸어둔다..
|
||||||
|
//+= OnPlayStart
|
||||||
|
}
|
||||||
|
public void OnPlayStart()
|
||||||
|
{
|
||||||
|
var type = GetComponent<CustomAssetRenderObject>().addTopic;
|
||||||
|
curType = type;
|
||||||
|
StudioService.instance.AddTypeIdListener(type, transform.name, OnUpdateData);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AddInit(string type)
|
public void AddInit(string type)
|
||||||
@@ -107,7 +123,7 @@ namespace Studio.Staic.STKC
|
|||||||
lift.position = liftPos;
|
lift.position = liftPos;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnUpdateData(object sender, StudioServiceIdEventArgs e)
|
public override void OnUpdateData(object sender, StudioServiceIdEventArgs e)
|
||||||
{
|
{
|
||||||
CurrentEntity = e.Entity;
|
CurrentEntity = e.Entity;
|
||||||
|
|
||||||
@@ -153,6 +169,8 @@ namespace Studio.Staic.STKC
|
|||||||
|
|
||||||
private void OnDestroy()
|
private void OnDestroy()
|
||||||
{
|
{
|
||||||
|
if (curType == null)
|
||||||
|
return;
|
||||||
StudioService.instance.RemoveTypeIdListener(curType, transform.name);
|
StudioService.instance.RemoveTypeIdListener(curType, transform.name);
|
||||||
onMotionStart -= StartAnim;
|
onMotionStart -= StartAnim;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,14 +1,10 @@
|
|||||||
using UnityEngine;
|
using Studio.AssetTool;
|
||||||
|
using Studio.Command;
|
||||||
using Studio.Manage;
|
using Studio.Manage;
|
||||||
using Studio.UI;
|
using Studio.UI;
|
||||||
using Studio.Util;
|
using UnityEngine;
|
||||||
using Studio.Test;
|
|
||||||
using XRLib;
|
using XRLib;
|
||||||
using XRLib.UI;
|
using XRLib.UI;
|
||||||
using Studio;
|
|
||||||
using Studio.AssetTool;
|
|
||||||
using Studio.Command;
|
|
||||||
using static UnityEngine.Rendering.DebugUI;
|
|
||||||
|
|
||||||
namespace Studio
|
namespace Studio
|
||||||
{
|
{
|
||||||
@@ -38,7 +34,8 @@ namespace Studio
|
|||||||
public Panel_InterferedObjectList panel_interferedobjectlist;
|
public Panel_InterferedObjectList panel_interferedobjectlist;
|
||||||
public Panel_AssetProperties panel_assetproperties;
|
public Panel_AssetProperties panel_assetproperties;
|
||||||
public Panel_PredefinedType panel_predefinedtype;
|
public Panel_PredefinedType panel_predefinedtype;
|
||||||
public Panel_ObjectInfo panel_objectinfo;
|
public Panel_DynamicObjectInfo panel_dynamicobjectinfo;
|
||||||
|
// public Panel_ObjectInfo panel_objectinfo;
|
||||||
public Panel_ObjectAlign panel_objectalign;
|
public Panel_ObjectAlign panel_objectalign;
|
||||||
public Panel_Tooltip panel_tooltip;
|
public Panel_Tooltip panel_tooltip;
|
||||||
public Panel_PropertyViewer panel_propertyviewer;
|
public Panel_PropertyViewer panel_propertyviewer;
|
||||||
@@ -56,7 +53,6 @@ namespace Studio
|
|||||||
|
|
||||||
public Panel_DataConnectModal panel_dataconnectmodal;
|
public Panel_DataConnectModal panel_dataconnectmodal;
|
||||||
public Panel_AlarmConnectModal panel_alarmconnectmodal;
|
public Panel_AlarmConnectModal panel_alarmconnectmodal;
|
||||||
public Panel_DynamicObjectInfo panel_dynamicobjectinfo;
|
|
||||||
internal Panel_MQTTTestResult panel_mqtttestresult;
|
internal Panel_MQTTTestResult panel_mqtttestresult;
|
||||||
|
|
||||||
private void Awake()
|
private void Awake()
|
||||||
@@ -68,7 +64,7 @@ namespace Studio
|
|||||||
public override void AfterAwake()
|
public override void AfterAwake()
|
||||||
{
|
{
|
||||||
var renderObjectHandler = ManagerHub.instance.Get<RenderObjectHandler>();
|
var renderObjectHandler = ManagerHub.instance.Get<RenderObjectHandler>();
|
||||||
panel_objectinfo.onTransformChanged += renderObjectHandler.OnTransformChanged;
|
panel_dynamicobjectinfo.onTransformChanged += renderObjectHandler.OnTransformChanged;
|
||||||
|
|
||||||
var raycaster = GameObject.FindAnyObjectByType<Raycaster>();
|
var raycaster = GameObject.FindAnyObjectByType<Raycaster>();
|
||||||
raycaster.onUIHoverEvent += panel_tooltip.ActivateTooltip;
|
raycaster.onUIHoverEvent += panel_tooltip.ActivateTooltip;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using TMPro;
|
using TMPro;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using XRLib.UI;
|
using XRLib.UI;
|
||||||
@@ -8,11 +8,13 @@ using Studio.Core;
|
|||||||
using Studio.Command;
|
using Studio.Command;
|
||||||
using UnityEngine.UI;
|
using UnityEngine.UI;
|
||||||
using System;
|
using System;
|
||||||
|
using Studio.AssetTool;
|
||||||
|
using UnityEngine.Rendering.Universal;
|
||||||
|
|
||||||
namespace Studio.UI
|
namespace Studio.UI
|
||||||
{
|
{
|
||||||
public class Panel_DynamicObjectInfo : PanelBase
|
public class Panel_DynamicObjectInfo : PanelBase
|
||||||
{
|
{
|
||||||
public enum InputFieldType
|
public enum InputFieldType
|
||||||
{
|
{
|
||||||
none,
|
none,
|
||||||
@@ -30,32 +32,28 @@ namespace Studio.UI
|
|||||||
this.value = value;
|
this.value = value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
private TextMeshProUGUI Text_Name;
|
||||||
|
|
||||||
public TextMeshProUGUI Text_Name;
|
private TMP_InputField InputField_PositionX;
|
||||||
|
private TMP_InputField InputField_PositionY;
|
||||||
|
private TMP_InputField InputField_PositionZ;
|
||||||
|
private TMP_InputField InputField_RotationX;
|
||||||
|
private TMP_InputField InputField_RotationY;
|
||||||
|
private TMP_InputField InputField_RotationZ;
|
||||||
|
private TMP_InputField InputField_ScaleX;
|
||||||
|
private TMP_InputField InputField_ScaleY;
|
||||||
|
private TMP_InputField InputField_ScaleZ;
|
||||||
|
private TMP_InputField InputField_Name;
|
||||||
|
private TMP_InputField InputField_ID;
|
||||||
|
|
||||||
public TMP_InputField InputField_PositionX;
|
|
||||||
public TMP_InputField InputField_PositionY;
|
|
||||||
public TMP_InputField InputField_PositionZ;
|
|
||||||
public TMP_InputField InputField_RotationX;
|
|
||||||
public TMP_InputField InputField_RotationY;
|
|
||||||
public TMP_InputField InputField_RotationZ;
|
|
||||||
public TMP_InputField InputField_ScaleX;
|
|
||||||
public TMP_InputField InputField_ScaleY;
|
|
||||||
public TMP_InputField InputField_ScaleZ;
|
|
||||||
|
|
||||||
public TextMeshProUGUI Text_DataName;
|
private AddComponetModal addComponetModal;
|
||||||
public Button Button_ConnectData;
|
private ConnectionModal connectionModal;
|
||||||
public Button Button_RetouchData;
|
|
||||||
public Button Button_DeleteData;
|
|
||||||
|
|
||||||
public TextMeshProUGUI Text_AlarmName;
|
|
||||||
public Button Button_ConnectAlarm;
|
|
||||||
public Button Button_RetouchAlarm;
|
|
||||||
public Button Button_DeleteAlarm;
|
|
||||||
|
|
||||||
public event System.Action<List<GameObject>> onTransformChanged;
|
public event System.Action<List<GameObject>> onTransformChanged;
|
||||||
private List<GameObject> selectedObjects = new List<GameObject>();
|
private List<GameObject> selectedObjects = new List<GameObject>();
|
||||||
private SelectedInput lastSelectedInputField = new SelectedInput(InputFieldType.none ,0.0f);
|
private SelectedInput lastSelectedInputField = new SelectedInput(InputFieldType.none, 0.0f);
|
||||||
|
|
||||||
public Action onConnectedData;
|
public Action onConnectedData;
|
||||||
public Action<string> onRetouchData;
|
public Action<string> onRetouchData;
|
||||||
@@ -65,11 +63,15 @@ namespace Studio.UI
|
|||||||
public Action<string> onRetouchAlarm;
|
public Action<string> onRetouchAlarm;
|
||||||
public Action<string> onDeleteAlarm;
|
public Action<string> onDeleteAlarm;
|
||||||
|
|
||||||
public SaveConnectedData connectedData;
|
|
||||||
public SaveConnectAlarmData connectedAlarmData;
|
private SaveConnectedData connectedData;
|
||||||
|
private SaveConnectAlarmData connectedAlarmData;
|
||||||
|
|
||||||
|
private CustomAssetRenderObject singleSelectObject;
|
||||||
|
private AddComponetDataScriptable componetScriptable;
|
||||||
|
|
||||||
public override void AfterAwake()
|
public override void AfterAwake()
|
||||||
{
|
{
|
||||||
InputField_PositionX.onValueChanged.AddListener(OnPosXChanged);
|
InputField_PositionX.onValueChanged.AddListener(OnPosXChanged);
|
||||||
InputField_PositionY.onValueChanged.AddListener(OnPosYChanged);
|
InputField_PositionY.onValueChanged.AddListener(OnPosYChanged);
|
||||||
InputField_PositionZ.onValueChanged.AddListener(OnPosZChanged);
|
InputField_PositionZ.onValueChanged.AddListener(OnPosZChanged);
|
||||||
@@ -88,21 +90,35 @@ namespace Studio.UI
|
|||||||
InputField_ScaleX.onDeselect.AddListener(OnDeselectInputField);
|
InputField_ScaleX.onDeselect.AddListener(OnDeselectInputField);
|
||||||
InputField_ScaleY.onDeselect.AddListener(OnDeselectInputField);
|
InputField_ScaleY.onDeselect.AddListener(OnDeselectInputField);
|
||||||
InputField_ScaleZ.onDeselect.AddListener(OnDeselectInputField);
|
InputField_ScaleZ.onDeselect.AddListener(OnDeselectInputField);
|
||||||
|
InputField_ID.onValueChanged.AddListener(OnChangedID);
|
||||||
|
addComponetModal = GetComponentInChildren<AddComponetModal>();
|
||||||
|
connectionModal = GetComponentInChildren<ConnectionModal>();
|
||||||
|
addComponetModal.Init();
|
||||||
|
connectionModal.Init();
|
||||||
|
connectionModal.gameObject.SetActive(false);
|
||||||
|
|
||||||
|
addComponetModal.onSelectComponet = ChangeCompoentItem;
|
||||||
|
connectionModal.onTopicItem = ChangeTopicItem;
|
||||||
|
connectionModal.onIsAuto = ChangeToggleItem;
|
||||||
|
|
||||||
|
componetScriptable = Resources.Load<AddComponetDataScriptable>("Scriptable/AddComponetData");
|
||||||
|
componetScriptable.SetItem();
|
||||||
ResetObjectInfo();
|
ResetObjectInfo();
|
||||||
Text_DataName.SetText("없음");
|
//Text_DataName.SetText("없음");
|
||||||
Button_ConnectData.onClick.AddListener(OnClickConnectDataButton);
|
//Button_ConnectData.onClick.AddListener(OnClickConnectDataButton);
|
||||||
Button_RetouchData.onClick.AddListener(OnClickRetouchDataButton);
|
//Button_RetouchData.onClick.AddListener(OnClickRetouchDataButton);
|
||||||
Button_DeleteData.onClick.AddListener(OnClickDeleteDataButton);
|
//Button_DeleteData.onClick.AddListener(OnClickDeleteDataButton);
|
||||||
Text_AlarmName.SetText("없음");
|
//Text_AlarmName.SetText("없음");
|
||||||
Button_ConnectAlarm.onClick.AddListener(OnClickConnectAlarmButton);
|
//Button_ConnectAlarm.onClick.AddListener(OnClickConnectAlarmButton);
|
||||||
Button_RetouchAlarm.onClick.AddListener(OnClickRetouchAlarmButton);
|
//Button_RetouchAlarm.onClick.AddListener(OnClickRetouchAlarmButton);
|
||||||
Button_DeleteAlarm.onClick.AddListener(OnClickDeleteAlarmButton);
|
//Button_DeleteAlarm.onClick.AddListener(OnClickDeleteAlarmButton);
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnPosXChanged(string input)
|
void OnPosXChanged(string input)
|
||||||
{
|
{
|
||||||
OnTransformChanged(InputFieldType.posX, input);
|
OnTransformChanged(InputFieldType.posX, input);
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnPosYChanged(string input)
|
void OnPosYChanged(string input)
|
||||||
{
|
{
|
||||||
OnTransformChanged(InputFieldType.posY, input);
|
OnTransformChanged(InputFieldType.posY, input);
|
||||||
@@ -153,7 +169,7 @@ namespace Studio.UI
|
|||||||
lastSelectedInputField.value = value;
|
lastSelectedInputField.value = value;
|
||||||
foreach (GameObject gb in selectedObjects)
|
foreach (GameObject gb in selectedObjects)
|
||||||
{
|
{
|
||||||
ChangeTransformValue(gb.transform, type, value);
|
ChangeTransformValue(gb.transform, type, value);
|
||||||
}
|
}
|
||||||
onTransformChanged?.Invoke(selectedObjects);
|
onTransformChanged?.Invoke(selectedObjects);
|
||||||
}
|
}
|
||||||
@@ -205,11 +221,11 @@ namespace Studio.UI
|
|||||||
case InputFieldType.scaZ: origValues = transformsChanged.Select(t => t.transform.localScale.z).ToList(); break;
|
case InputFieldType.scaZ: origValues = transformsChanged.Select(t => t.transform.localScale.z).ToList(); break;
|
||||||
default: origValues = new List<float>(transformsChanged.Count); break;
|
default: origValues = new List<float>(transformsChanged.Count); break;
|
||||||
}
|
}
|
||||||
|
|
||||||
ActionCommand command = new ActionCommand(
|
ActionCommand command = new ActionCommand(
|
||||||
() =>
|
() =>
|
||||||
{
|
{
|
||||||
for (int i = 0; i< transformsChanged.Count; i++)
|
for (int i = 0; i < transformsChanged.Count; i++)
|
||||||
{
|
{
|
||||||
ChangeTransformValue(transformsChanged[i].transform, type, saveSelectedInput.value);
|
ChangeTransformValue(transformsChanged[i].transform, type, saveSelectedInput.value);
|
||||||
}
|
}
|
||||||
@@ -225,6 +241,7 @@ namespace Studio.UI
|
|||||||
});
|
});
|
||||||
CommandInvoker.instance.Invoke(command);
|
CommandInvoker.instance.Invoke(command);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ChangeTransformValue(Transform t, InputFieldType type, float v)
|
void ChangeTransformValue(Transform t, InputFieldType type, float v)
|
||||||
{
|
{
|
||||||
switch (type)
|
switch (type)
|
||||||
@@ -240,6 +257,7 @@ namespace Studio.UI
|
|||||||
case InputFieldType.scaZ: t.localScale = new Vector3(t.localScale.x, t.localScale.y, v); break;
|
case InputFieldType.scaZ: t.localScale = new Vector3(t.localScale.x, t.localScale.y, v); break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnDeselectInputField(string lastInput)
|
void OnDeselectInputField(string lastInput)
|
||||||
{
|
{
|
||||||
Debug.Log("Deselect Input Field");
|
Debug.Log("Deselect Input Field");
|
||||||
@@ -248,6 +266,12 @@ namespace Studio.UI
|
|||||||
lastSelectedInputField = new SelectedInput(InputFieldType.none, 0.0f);
|
lastSelectedInputField = new SelectedInput(InputFieldType.none, 0.0f);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void OnChangedID(string Id)
|
||||||
|
{
|
||||||
|
var searchAsset = GetConnectAsset(singleSelectObject);
|
||||||
|
searchAsset.renderObject.ID = Id;
|
||||||
|
}
|
||||||
public void SetObjectInfo(string name, List<GameObject> selectedObjects)
|
public void SetObjectInfo(string name, List<GameObject> selectedObjects)
|
||||||
{
|
{
|
||||||
ResetObjectInfo();
|
ResetObjectInfo();
|
||||||
@@ -256,24 +280,63 @@ namespace Studio.UI
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (selectedObjects.Count == 0)
|
if (selectedObjects.Count == 0)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
addComponetModal.Open();
|
||||||
|
connectionModal.gameObject.SetActive(false);
|
||||||
|
if (selectedObjects.Count == 1)
|
||||||
|
{
|
||||||
|
var renderObject = selectedObjects[0].GetComponent<CustomAssetRenderObject>();
|
||||||
|
if (renderObject != null)
|
||||||
|
{
|
||||||
|
singleSelectObject = renderObject;
|
||||||
|
var searchAsset = GetConnectAsset(renderObject);
|
||||||
|
var compKey = searchAsset.renderObject.componetKey;
|
||||||
|
addComponetModal.ChangeItem(searchAsset.renderObject.componetKey);
|
||||||
|
InputField_ID.SetTextWithoutNotify(searchAsset.renderObject.ID);
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(compKey))
|
||||||
|
{
|
||||||
|
connectionModal.gameObject.SetActive(true);
|
||||||
|
|
||||||
|
var topic = searchAsset.renderObject.addTopic;
|
||||||
|
var isAuto = searchAsset.renderObject.isAutoId;
|
||||||
|
if (!string.IsNullOrEmpty(topic))
|
||||||
|
{
|
||||||
|
connectionModal.SetAutoId(isAuto);
|
||||||
|
connectionModal.Open();
|
||||||
|
connectionModal.ChangeItem(topic,isAuto);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
InputField_Name.text = searchAsset.assetData.assetName;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
string append = "";
|
string append = "";
|
||||||
if (!name.Equals("-"))
|
if (!name.Equals("-"))
|
||||||
{
|
{
|
||||||
append = string.Format(" ({0})", selectedObjects.Count);
|
append = string.Format(" ({0})", selectedObjects.Count);
|
||||||
}
|
}
|
||||||
Text_Name.text = name + append;
|
//InputField_Name.
|
||||||
|
//Text_Name.text = name + append;
|
||||||
OnTransformChanged(selectedObjects);
|
OnTransformChanged(selectedObjects);
|
||||||
if (lastSelectedInputField.type != InputFieldType.none)
|
if (lastSelectedInputField.type != InputFieldType.none)
|
||||||
{
|
{
|
||||||
lastSelectedInputField = new SelectedInput(InputFieldType.none, 0.0f);
|
lastSelectedInputField = new SelectedInput(InputFieldType.none, 0.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private ConnectedAsset GetConnectAsset(CustomAssetRenderObject renderObject)
|
||||||
|
{
|
||||||
|
var connector = ManagerHub.instance.Get<CustomAssetConnector>();
|
||||||
|
ConnectedAsset searchAsset = connector.connectedAssets.FirstOrDefault(x => x.renderObject == renderObject);
|
||||||
|
return searchAsset;
|
||||||
}
|
}
|
||||||
public void ResetObjectInfo()
|
public void ResetObjectInfo()
|
||||||
{
|
{
|
||||||
Text_Name.text = "-";
|
|
||||||
InputField_PositionX.SetTextWithoutNotify("-");
|
InputField_PositionX.SetTextWithoutNotify("-");
|
||||||
InputField_PositionY.SetTextWithoutNotify("-");
|
InputField_PositionY.SetTextWithoutNotify("-");
|
||||||
InputField_PositionZ.SetTextWithoutNotify("-");
|
InputField_PositionZ.SetTextWithoutNotify("-");
|
||||||
@@ -288,53 +351,83 @@ namespace Studio.UI
|
|||||||
lastSelectedInputField = new SelectedInput(InputFieldType.none, 0.0f);
|
lastSelectedInputField = new SelectedInput(InputFieldType.none, 0.0f);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private void Update()
|
|
||||||
{
|
|
||||||
if (Text_DataName.text == "없음")
|
|
||||||
{
|
|
||||||
Button_ConnectData.gameObject.SetActive(true);
|
|
||||||
Button_RetouchData.gameObject.SetActive(false);
|
|
||||||
Button_DeleteData.gameObject.SetActive(false);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Button_ConnectData.gameObject.SetActive(false);
|
|
||||||
Button_RetouchData.gameObject.SetActive(true);
|
|
||||||
Button_DeleteData.gameObject.SetActive(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Text_AlarmName.text == "없음")
|
/// <summary>
|
||||||
|
/// 추가
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="key"></param>
|
||||||
|
private void AddCompoent(string key)
|
||||||
|
{
|
||||||
|
var component = componetScriptable.compoenets.FirstOrDefault(x => x.key.Equals(key));
|
||||||
|
var type = component.comp.GetType();
|
||||||
|
|
||||||
|
if (!singleSelectObject.TryGetComponent(type, out var com))
|
||||||
{
|
{
|
||||||
Button_ConnectAlarm.gameObject.SetActive(true);
|
singleSelectObject.gameObject.AddComponent(component.comp.GetType());
|
||||||
Button_RetouchAlarm.gameObject.SetActive(false);
|
var obj = component.comp as AbstractFunctionObject;
|
||||||
Button_DeleteAlarm.gameObject.SetActive(false);
|
var isAuto = obj.ObjectType.Equals(ObjectType.Dynamic) ? true : false;
|
||||||
}
|
connectionModal.SetAutoId(isAuto);
|
||||||
else
|
|
||||||
{
|
|
||||||
Button_ConnectAlarm.gameObject.SetActive(false);
|
|
||||||
Button_RetouchAlarm.gameObject.SetActive(true);
|
|
||||||
Button_DeleteAlarm.gameObject.SetActive(true);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 제거
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="key"></param>
|
||||||
|
private void RemoveAddCompoent(string key)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(key))
|
||||||
|
return;
|
||||||
|
|
||||||
|
var component = componetScriptable.compoenets.FirstOrDefault(x => x.key.Equals(key));
|
||||||
|
var type = component.comp.GetType();
|
||||||
|
if (singleSelectObject.TryGetComponent(type, out var com))
|
||||||
|
Destroy(com);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ChangeCompoentItem(string key)
|
||||||
|
{
|
||||||
|
var searchObject = GetConnectAsset(singleSelectObject);
|
||||||
|
var prevKey = searchObject.renderObject.componetKey;
|
||||||
|
if (!string.IsNullOrEmpty(prevKey) && !prevKey.Equals(key))
|
||||||
|
{
|
||||||
|
RemoveAddCompoent(searchObject.renderObject.componetKey);
|
||||||
|
}
|
||||||
|
bool isConnect = string.IsNullOrEmpty(key) ? false : true;
|
||||||
|
//이전의 키값을 가져와야 함.
|
||||||
|
//RemoveAddCompoent();
|
||||||
|
|
||||||
|
connectionModal.gameObject.SetActive(isConnect);
|
||||||
|
if (isConnect == false)
|
||||||
|
{
|
||||||
|
searchObject.renderObject.addTopic = null;
|
||||||
|
searchObject.renderObject.isAutoId = false;
|
||||||
|
searchObject.renderObject.componetKey = key;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
AddCompoent(key);
|
||||||
|
connectionModal.Open();
|
||||||
|
searchObject.renderObject.componetKey = key;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ChangeTopicItem(string key)
|
||||||
|
{
|
||||||
|
var searchObject = GetConnectAsset(singleSelectObject);
|
||||||
|
searchObject.renderObject.addTopic = key;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ChangeToggleItem(bool isAuto)
|
||||||
|
{
|
||||||
|
var searchObject = GetConnectAsset(singleSelectObject);
|
||||||
|
searchObject.renderObject.isAutoId = isAuto;
|
||||||
|
}
|
||||||
|
|
||||||
private void OnClickConnectDataButton()
|
private void OnClickConnectDataButton()
|
||||||
{
|
{
|
||||||
onConnectedData?.Invoke();
|
onConnectedData?.Invoke();
|
||||||
}
|
}
|
||||||
private void OnClickRetouchDataButton()
|
|
||||||
{
|
|
||||||
onRetouchData?.Invoke(Text_DataName.text);
|
|
||||||
}
|
|
||||||
private void OnClickDeleteDataButton()
|
|
||||||
{
|
|
||||||
onDeleteData?.Invoke(Text_DataName.text);
|
|
||||||
Text_DataName.SetText("없음");
|
|
||||||
}
|
|
||||||
|
|
||||||
public void OnConnectData(string saveDataName, SaveConnectedData saveData)
|
|
||||||
{
|
|
||||||
Text_DataName.SetText(saveDataName);
|
|
||||||
connectedData = saveData;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void OnClickConnectAlarmButton()
|
private void OnClickConnectAlarmButton()
|
||||||
{
|
{
|
||||||
@@ -342,18 +435,72 @@ namespace Studio.UI
|
|||||||
}
|
}
|
||||||
private void OnClickRetouchAlarmButton()
|
private void OnClickRetouchAlarmButton()
|
||||||
{
|
{
|
||||||
onRetouchAlarm?.Invoke(Text_AlarmName.text);
|
//onRetouchAlarm?.Invoke(Text_AlarmName.text);
|
||||||
}
|
|
||||||
private void OnClickDeleteAlarmButton()
|
|
||||||
{
|
|
||||||
onDeleteAlarm?.Invoke(Text_AlarmName.text);
|
|
||||||
Text_AlarmName.SetText("없음");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnConnectAlarm(string saveAlarmName, SaveConnectAlarmData saveData)
|
|
||||||
{
|
|
||||||
Text_AlarmName.SetText(saveAlarmName);
|
|
||||||
connectedAlarmData = saveData;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//private TextMeshProUGUI Text_DataName;
|
||||||
|
//private Button Button_ConnectData;
|
||||||
|
//private Button Button_RetouchData;
|
||||||
|
//private Button Button_DeleteData;
|
||||||
|
|
||||||
|
//private TextMeshProUGUI Text_AlarmName;
|
||||||
|
//private Button Button_ConnectAlarm;
|
||||||
|
//private Button Button_RetouchAlarm;
|
||||||
|
//private Button Button_DeleteAlarm;
|
||||||
|
//private void Update()
|
||||||
|
//{
|
||||||
|
// if (Text_DataName.text == "없음")
|
||||||
|
// {
|
||||||
|
// Button_ConnectData.gameObject.SetActive(true);
|
||||||
|
// Button_RetouchData.gameObject.SetActive(false);
|
||||||
|
// Button_DeleteData.gameObject.SetActive(false);
|
||||||
|
// }
|
||||||
|
// else
|
||||||
|
// {
|
||||||
|
// Button_ConnectData.gameObject.SetActive(false);
|
||||||
|
// Button_RetouchData.gameObject.SetActive(true);
|
||||||
|
// Button_DeleteData.gameObject.SetActive(true);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// if (Text_AlarmName.text == "없음")
|
||||||
|
// {
|
||||||
|
// Button_ConnectAlarm.gameObject.SetActive(true);
|
||||||
|
// Button_RetouchAlarm.gameObject.SetActive(false);
|
||||||
|
// Button_DeleteAlarm.gameObject.SetActive(false);
|
||||||
|
// }
|
||||||
|
// else
|
||||||
|
// {
|
||||||
|
// Button_ConnectAlarm.gameObject.SetActive(false);
|
||||||
|
// Button_RetouchAlarm.gameObject.SetActive(true);
|
||||||
|
// Button_DeleteAlarm.gameObject.SetActive(true);
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
//private void OnClickRetouchDataButton()
|
||||||
|
//{
|
||||||
|
// onRetouchData?.Invoke(Text_DataName.text);
|
||||||
|
//}
|
||||||
|
//private void OnClickDeleteDataButton()
|
||||||
|
//{
|
||||||
|
// onDeleteData?.Invoke(Text_DataName.text);
|
||||||
|
// Text_DataName.SetText("없음");
|
||||||
|
//}
|
||||||
|
|
||||||
|
//public void OnConnectData(string saveDataName, SaveConnectedData saveData)
|
||||||
|
//{
|
||||||
|
// Text_DataName.SetText(saveDataName);
|
||||||
|
// connectedData = saveData;
|
||||||
|
//}
|
||||||
|
//private void OnClickDeleteAlarmButton()
|
||||||
|
//{
|
||||||
|
// onDeleteAlarm?.Invoke(Text_AlarmName.text);
|
||||||
|
// Text_AlarmName.SetText("없음");
|
||||||
|
//}
|
||||||
|
|
||||||
|
//public void OnConnectAlarm(string saveAlarmName, SaveConnectAlarmData saveData)
|
||||||
|
//{
|
||||||
|
// Text_AlarmName.SetText(saveAlarmName);
|
||||||
|
// connectedAlarmData = saveData;
|
||||||
|
//}
|
||||||
Reference in New Issue
Block a user