From 34f6e9b705eb3da53851b97d9313bac1d290135d Mon Sep 17 00:00:00 2001 From: SullyunShin Date: Thu, 20 Feb 2025 10:42:44 +0900 Subject: [PATCH] =?UTF-8?q?=EC=98=A4=EB=B8=8C=EC=A0=9D=ED=8A=B8=20?= =?UTF-8?q?=EC=A0=95=EB=A0=AC=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 오브젝트 정렬 기능 추가 하이라키 윈도우 디자인 변경 드래그 핸들러 추가 --- Assets/Prefabs/UI/Assets.prefab | 20 +- Assets/Prefabs/UI/Hierarchy.prefab | 22 +- Assets/Prefabs/UI/Panel_DragHandler.prefab | 126 +++++ .../Prefabs/UI/Panel_DragHandler.prefab.meta | 7 + Assets/Prefabs/UI/Panel_ObjectAlign.prefab | 16 +- Assets/Prefabs/UI/Pooled Scroll View.prefab | 92 +++- .../Prefabs/UI/PRF_HierarchyItem.prefab | 8 +- Assets/Scenes/0.18.2.unity | 445 +++++++++++++++++- .../XED/AssetTool/CustomAssetConnector.cs | 107 +++-- .../XED/AssetTool/RenderObjectHandler.cs | 265 +++++------ .../Scripts/XED/AssetTool/SaveLoadFBXData.cs | 96 ++-- Assets/Scripts/XED/Managers/EventConnector.cs | 14 +- Assets/Scripts/XED/UI/Canvas/Canvas_Popup.cs | 1 + .../Scripts/XED/UI/Canvas/Canvas_Windows.cs | 1 + .../Scripts/XED/UI/Panel/Panel_DragHandler.cs | 97 ++++ .../XED/UI/Panel/Panel_DragHandler.cs.meta | 2 + .../Scripts/XED/UI/Panel/Panel_ObjectAlign.cs | 40 +- 17 files changed, 1085 insertions(+), 274 deletions(-) create mode 100644 Assets/Prefabs/UI/Panel_DragHandler.prefab create mode 100644 Assets/Prefabs/UI/Panel_DragHandler.prefab.meta create mode 100644 Assets/Scripts/XED/UI/Panel/Panel_DragHandler.cs create mode 100644 Assets/Scripts/XED/UI/Panel/Panel_DragHandler.cs.meta diff --git a/Assets/Prefabs/UI/Assets.prefab b/Assets/Prefabs/UI/Assets.prefab index a2cc7335..43c0ecd3 100644 --- a/Assets/Prefabs/UI/Assets.prefab +++ b/Assets/Prefabs/UI/Assets.prefab @@ -59,7 +59,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Color: {r: 0, g: 0, b: 0, a: 1} m_RaycastTarget: 1 m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 @@ -253,7 +253,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_Material: {fileID: 0} - m_Color: {r: 0, g: 0.011764706, b: 0.1764706, a: 0.78431374} + m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 @@ -330,7 +330,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_Material: {fileID: 0} - m_Color: {r: 0, g: 0.011764706, b: 0.1764706, a: 0.2} + m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 @@ -436,8 +436,8 @@ MonoBehaviour: m_fontMaterials: [] m_fontColor32: serializedVersion: 2 - rgba: 4294967295 - m_fontColor: {r: 1, g: 1, b: 1, a: 1} + rgba: 4278190080 + m_fontColor: {r: 0, g: 0, b: 0, a: 1} m_enableVertexGradient: 0 m_colorMode: 3 m_fontColorGradient: @@ -564,6 +564,8 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: a494c2f167427fd4a99187ffa99cb757, type: 3} m_Name: m_EditorClassIdentifier: + scrollRect: {fileID: 0} + scrollView: {fileID: 0} --- !u!1001 &3219924497284413818 PrefabInstance: m_ObjectHideFlags: 0 @@ -626,19 +628,19 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4494893725557815844, guid: c7fa5154df436e54bb0b444dfc25575d, type: 3} propertyPath: m_Size - value: 0.9893966 + value: 0.9894008 objectReference: {fileID: 0} - target: {fileID: 4494893725557815844, guid: c7fa5154df436e54bb0b444dfc25575d, type: 3} propertyPath: m_Value - value: 1.0000051 + value: 1.0000204 objectReference: {fileID: 0} - target: {fileID: 5672874548983414067, guid: c7fa5154df436e54bb0b444dfc25575d, type: 3} propertyPath: m_AnchoredPosition.x - value: -2.9995284 + value: -2.9996562 objectReference: {fileID: 0} - target: {fileID: 5672874548983414067, guid: c7fa5154df436e54bb0b444dfc25575d, type: 3} propertyPath: m_AnchoredPosition.y - value: 0.000116338735 + value: 0.00002207278 objectReference: {fileID: 0} - target: {fileID: 5781062250184041115, guid: c7fa5154df436e54bb0b444dfc25575d, type: 3} propertyPath: m_Pivot.x diff --git a/Assets/Prefabs/UI/Hierarchy.prefab b/Assets/Prefabs/UI/Hierarchy.prefab index 4b2d83b2..356955d8 100644 --- a/Assets/Prefabs/UI/Hierarchy.prefab +++ b/Assets/Prefabs/UI/Hierarchy.prefab @@ -134,7 +134,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Color: {r: 0, g: 0, b: 0, a: 1} m_RaycastTarget: 1 m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 @@ -261,6 +261,8 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: dcaf5c160a5eafd4888ef1224800d878, type: 3} m_Name: m_EditorClassIdentifier: + scrollRect: {fileID: 0} + scrollView: {fileID: 0} --- !u!1 &5153900539240009752 GameObject: m_ObjectHideFlags: 0 @@ -335,8 +337,8 @@ MonoBehaviour: m_fontMaterials: [] m_fontColor32: serializedVersion: 2 - rgba: 4294967295 - m_fontColor: {r: 1, g: 1, b: 1, a: 1} + rgba: 4278190080 + m_fontColor: {r: 0, g: 0, b: 0, a: 1} m_enableVertexGradient: 0 m_colorMode: 3 m_fontColorGradient: @@ -457,7 +459,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_Material: {fileID: 0} - m_Color: {r: 0, g: 0.011764706, b: 0.1764706, a: 0.2} + m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 @@ -545,7 +547,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_Material: {fileID: 0} - m_Color: {r: 0, g: 0.011764706, b: 0.1764706, a: 0.78431374} + m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 @@ -608,7 +610,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 2671136523485413361, guid: c7fa5154df436e54bb0b444dfc25575d, type: 3} propertyPath: m_Size - value: 0.99999094 + value: 1 objectReference: {fileID: 0} - target: {fileID: 3853414527505018043, guid: c7fa5154df436e54bb0b444dfc25575d, type: 3} propertyPath: m_AnchorMax.x @@ -652,19 +654,19 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4494893725557815844, guid: c7fa5154df436e54bb0b444dfc25575d, type: 3} propertyPath: m_Size - value: 0.9889386 + value: 0.9894008 objectReference: {fileID: 0} - target: {fileID: 4494893725557815844, guid: c7fa5154df436e54bb0b444dfc25575d, type: 3} propertyPath: m_Value - value: 1.0001628 + value: 1 objectReference: {fileID: 0} - target: {fileID: 5672874548983414067, guid: c7fa5154df436e54bb0b444dfc25575d, type: 3} propertyPath: m_AnchoredPosition.x - value: -3.00006 + value: -2.999582 objectReference: {fileID: 0} - target: {fileID: 5672874548983414067, guid: c7fa5154df436e54bb0b444dfc25575d, type: 3} propertyPath: m_AnchoredPosition.y - value: 0.00009338284 + value: -0.000010907401 objectReference: {fileID: 0} - target: {fileID: 5781062250184041115, guid: c7fa5154df436e54bb0b444dfc25575d, type: 3} propertyPath: m_Pivot.x diff --git a/Assets/Prefabs/UI/Panel_DragHandler.prefab b/Assets/Prefabs/UI/Panel_DragHandler.prefab new file mode 100644 index 00000000..c30d99a2 --- /dev/null +++ b/Assets/Prefabs/UI/Panel_DragHandler.prefab @@ -0,0 +1,126 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1185472671663402474 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6104386061645465781} + - component: {fileID: 6156216054905447384} + - component: {fileID: 7241376036255963641} + m_Layer: 0 + m_Name: SelectionBox + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &6104386061645465781 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1185472671663402474} + 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: 1086541728698475203} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 960, y: 540} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6156216054905447384 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1185472671663402474} + m_CullTransparentMesh: 1 +--- !u!114 &7241376036255963641 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1185472671663402474} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0.39215687} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &3736084005689246203 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1086541728698475203} + - component: {fileID: 8534877828189409926} + m_Layer: 0 + m_Name: Panel_DragHandler + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1086541728698475203 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3736084005689246203} + 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: + - {fileID: 6104386061645465781} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &8534877828189409926 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3736084005689246203} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: cdd8bb536a64a014785b009185af4d29, type: 3} + m_Name: + m_EditorClassIdentifier: diff --git a/Assets/Prefabs/UI/Panel_DragHandler.prefab.meta b/Assets/Prefabs/UI/Panel_DragHandler.prefab.meta new file mode 100644 index 00000000..40abf89c --- /dev/null +++ b/Assets/Prefabs/UI/Panel_DragHandler.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ab86017dea8f4f549b71b4a6fa12b3ec +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/UI/Panel_ObjectAlign.prefab b/Assets/Prefabs/UI/Panel_ObjectAlign.prefab index 3e5aec53..6a6b244a 100644 --- a/Assets/Prefabs/UI/Panel_ObjectAlign.prefab +++ b/Assets/Prefabs/UI/Panel_ObjectAlign.prefab @@ -2641,7 +2641,7 @@ GameObject: - component: {fileID: 2136756930563110099} - component: {fileID: 7152092958078005519} m_Layer: 5 - m_Name: InputField_RowX + m_Name: InputField_Row m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -3207,7 +3207,7 @@ GameObject: - component: {fileID: 3830935198293741201} - component: {fileID: 2577566099563960335} m_Layer: 5 - m_Name: Button_AlighZAxis + m_Name: Button_AlignZAxis m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -3415,7 +3415,7 @@ GameObject: - component: {fileID: 1643216501148625476} - component: {fileID: 721381776748410442} m_Layer: 5 - m_Name: InputField_ColZ + m_Name: InputField_Col m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -4346,6 +4346,10 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 271fc4cf2e70c7146938aaf9384c212f, type: 3} m_Name: m_EditorClassIdentifier: - InputField_GapX: {fileID: 0} - InputField_GapZ: {fileID: 0} - Button_Apply: {fileID: 0} + InputField_GapX: {fileID: 774488603182085883} + InputField_GapZ: {fileID: 2428612344838025271} + InputField_Row: {fileID: 7152092958078005519} + InputField_Col: {fileID: 721381776748410442} + Button_AlignXAxis: {fileID: 2859805591241900362} + Button_AlignZAxis: {fileID: 0} + Button_AlignGrid: {fileID: 6149089688842269376} diff --git a/Assets/Prefabs/UI/Pooled Scroll View.prefab b/Assets/Prefabs/UI/Pooled Scroll View.prefab index 8d40f2a7..101ac7f3 100644 --- a/Assets/Prefabs/UI/Pooled Scroll View.prefab +++ b/Assets/Prefabs/UI/Pooled Scroll View.prefab @@ -122,9 +122,6 @@ MonoBehaviour: setToNextSiblingItem: m_PersistentCalls: m_Calls: [] - onSelect: - m_PersistentCalls: - m_Calls: [] onDragBegin: m_PersistentCalls: m_Calls: [] @@ -132,6 +129,7 @@ MonoBehaviour: m_PersistentCalls: m_Calls: [] itemPopup: {fileID: 0} + menuPopup: {fileID: 0} --- !u!114 &3692082455671801088 MonoBehaviour: m_ObjectHideFlags: 0 @@ -144,6 +142,12 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 02c8aba09b6cf79448d6d0699308f932, type: 3} m_Name: m_EditorClassIdentifier: + onSelect: + m_PersistentCalls: + m_Calls: [] + onParentChanged: + m_PersistentCalls: + m_Calls: [] --- !u!1 &1054829719865186487 GameObject: m_ObjectHideFlags: 0 @@ -705,7 +709,7 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 0.0000009536743, y: 0.00008143007} + m_AnchoredPosition: {x: 0.0000009536743, y: 0.00060980837} m_SizeDelta: {x: 282.99957, y: 2} m_Pivot: {x: 0, y: 1} --- !u!114 &1134704777518231049 @@ -823,6 +827,81 @@ MonoBehaviour: m_FillOrigin: 0 m_UseSpriteMesh: 0 m_PixelsPerUnitMultiplier: 1 +--- !u!1 &5208196936687214603 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5298001966367028606} + - component: {fileID: 1822305268980125542} + - component: {fileID: 5681900736418180477} + m_Layer: 5 + m_Name: Image + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5298001966367028606 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5208196936687214603} + 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: 7333730248286312492} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -137, y: 0} + m_SizeDelta: {x: 24, y: 24} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1822305268980125542 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5208196936687214603} + m_CullTransparentMesh: 1 +--- !u!114 &5681900736418180477 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5208196936687214603} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 81b1a05534a2b49109c084189ba3f5e8, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 --- !u!1 &5374529121170564152 GameObject: m_ObjectHideFlags: 0 @@ -889,7 +968,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_text: Enter text... + m_text: Search m_isRightToLeft: 0 m_fontAsset: {fileID: 11400000, guid: 69abd87f38225ed46aa612577c25f379, type: 2} m_sharedMaterial: {fileID: -7290017371581542385, guid: 69abd87f38225ed46aa612577c25f379, type: 2} @@ -1011,6 +1090,7 @@ RectTransform: m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: + - {fileID: 5298001966367028606} - {fileID: 493963855316554531} - {fileID: 5143485001752436147} m_Father: {fileID: 5781062250184041115} @@ -1602,7 +1682,7 @@ RectTransform: m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} m_AnchoredPosition: {x: 0, y: -0.5} - m_SizeDelta: {x: -20, y: -13} + m_SizeDelta: {x: -50, y: -13} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &3257810534314104275 MonoBehaviour: diff --git a/Assets/Resources/Prefabs/UI/PRF_HierarchyItem.prefab b/Assets/Resources/Prefabs/UI/PRF_HierarchyItem.prefab index 42d0b996..41c099a8 100644 --- a/Assets/Resources/Prefabs/UI/PRF_HierarchyItem.prefab +++ b/Assets/Resources/Prefabs/UI/PRF_HierarchyItem.prefab @@ -126,7 +126,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Color: {r: 0, g: 0, b: 0, a: 1} m_RaycastTarget: 1 m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 @@ -405,8 +405,8 @@ MonoBehaviour: m_fontMaterials: [] m_fontColor32: serializedVersion: 2 - rgba: 4294967295 - m_fontColor: {r: 1, g: 1, b: 1, a: 1} + rgba: 4278190080 + m_fontColor: {r: 0, g: 0, b: 0, a: 1} m_enableVertexGradient: 0 m_colorMode: 3 m_fontColorGradient: @@ -967,7 +967,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Color: {r: 0, g: 0, b: 0, a: 1} m_RaycastTarget: 1 m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 diff --git a/Assets/Scenes/0.18.2.unity b/Assets/Scenes/0.18.2.unity index b6f5fcda..2242ec4e 100644 --- a/Assets/Scenes/0.18.2.unity +++ b/Assets/Scenes/0.18.2.unity @@ -3792,6 +3792,7 @@ RectTransform: - {fileID: 1439596647} - {fileID: 1085911555} - {fileID: 1712022043} + - {fileID: 916751974} m_Father: {fileID: 1981809316} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} @@ -3815,6 +3816,7 @@ MonoBehaviour: agvnodemodepopup: {fileID: 0} panel_tooltip: {fileID: 0} panel_propertyviewer: {fileID: 0} + panel_draghandler: {fileID: 0} --- !u!114 &545811783 MonoBehaviour: m_ObjectHideFlags: 0 @@ -4581,6 +4583,11 @@ RectTransform: m_CorrespondingSourceObject: {fileID: 6291666171046911034, guid: 1bc9e043f1497cd4fbb8e241c26966c1, type: 3} m_PrefabInstance: {fileID: 669513040} m_PrefabAsset: {fileID: 0} +--- !u!224 &670251071 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 1670299614426086028, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + m_PrefabInstance: {fileID: 1976685923} + m_PrefabAsset: {fileID: 0} --- !u!114 &712266949 MonoBehaviour: m_ObjectHideFlags: 0 @@ -5935,6 +5942,108 @@ MonoBehaviour: m_OnClick: m_PersistentCalls: m_Calls: [] +--- !u!1001 &916751973 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 545811781} + m_Modifications: + - target: {fileID: 1086541728698475203, guid: ab86017dea8f4f549b71b4a6fa12b3ec, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1086541728698475203, guid: ab86017dea8f4f549b71b4a6fa12b3ec, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1086541728698475203, guid: ab86017dea8f4f549b71b4a6fa12b3ec, type: 3} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1086541728698475203, guid: ab86017dea8f4f549b71b4a6fa12b3ec, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1086541728698475203, guid: ab86017dea8f4f549b71b4a6fa12b3ec, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1086541728698475203, guid: ab86017dea8f4f549b71b4a6fa12b3ec, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1086541728698475203, guid: ab86017dea8f4f549b71b4a6fa12b3ec, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1086541728698475203, guid: ab86017dea8f4f549b71b4a6fa12b3ec, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1086541728698475203, guid: ab86017dea8f4f549b71b4a6fa12b3ec, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1086541728698475203, guid: ab86017dea8f4f549b71b4a6fa12b3ec, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1086541728698475203, guid: ab86017dea8f4f549b71b4a6fa12b3ec, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1086541728698475203, guid: ab86017dea8f4f549b71b4a6fa12b3ec, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1086541728698475203, guid: ab86017dea8f4f549b71b4a6fa12b3ec, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1086541728698475203, guid: ab86017dea8f4f549b71b4a6fa12b3ec, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1086541728698475203, guid: ab86017dea8f4f549b71b4a6fa12b3ec, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1086541728698475203, guid: ab86017dea8f4f549b71b4a6fa12b3ec, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1086541728698475203, guid: ab86017dea8f4f549b71b4a6fa12b3ec, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1086541728698475203, guid: ab86017dea8f4f549b71b4a6fa12b3ec, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1086541728698475203, guid: ab86017dea8f4f549b71b4a6fa12b3ec, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1086541728698475203, guid: ab86017dea8f4f549b71b4a6fa12b3ec, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3736084005689246203, guid: ab86017dea8f4f549b71b4a6fa12b3ec, type: 3} + propertyPath: m_Name + value: Panel_DragHandler + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: ab86017dea8f4f549b71b4a6fa12b3ec, type: 3} +--- !u!224 &916751974 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 1086541728698475203, guid: ab86017dea8f4f549b71b4a6fa12b3ec, type: 3} + m_PrefabInstance: {fileID: 916751973} + m_PrefabAsset: {fileID: 0} --- !u!1 &918697618 GameObject: m_ObjectHideFlags: 0 @@ -8295,6 +8404,7 @@ RectTransform: - {fileID: 7047787819321409150} - {fileID: 6779400300325097680} - {fileID: 394283230} + - {fileID: 670251071} m_Father: {fileID: 1981809316} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} @@ -8382,6 +8492,7 @@ MonoBehaviour: panel_componentlibrary: {fileID: 0} panel_assetlibrary: {fileID: 0} panel_objectinfo: {fileID: 0} + panel_objectalign: {fileID: 0} --- !u!1 &1195629653 GameObject: m_ObjectHideFlags: 0 @@ -15933,7 +16044,7 @@ GameObject: - component: {fileID: 1715748517} - component: {fileID: 1715748519} m_Layer: 5 - m_Name: Panel_Header + m_Name: Panel_TopBar m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -16008,9 +16119,20 @@ MonoBehaviour: m_GameObject: {fileID: 1715748515} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: cb774b2f3bebecd448d68beda0137368, type: 3} + m_Script: {fileID: 11500000, guid: eeb29fdb1a9fc134aa57e1efd67b4848, type: 3} m_Name: m_EditorClassIdentifier: + Button_NewProject: {fileID: 0} + Button_SaveProject: {fileID: 0} + Button_LoadProject: {fileID: 0} + Button_DownloadLayout: {fileID: 0} + Button_ExportAGVPath: {fileID: 0} + Button_ImportAGVPath: {fileID: 0} + Button_LoadAssets: {fileID: 0} + Button_AssetWindow: {fileID: 0} + Button_ComponentWindow: {fileID: 0} + Button_Tools: {fileID: 0} + button_Icon: {fileID: 0} --- !u!1 &1728035472 GameObject: m_ObjectHideFlags: 0 @@ -16578,7 +16700,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: panel_shortcuts: {fileID: 0} - panel_header: {fileID: 0} + panel_topbar: {fileID: 0} panel_toolbar: {fileID: 0} --- !u!4 &1805249248 stripped Transform: @@ -17650,6 +17772,323 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1960288572} m_CullTransparentMesh: 0 +--- !u!1001 &1976685923 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 1187423310} + m_Modifications: + - target: {fileID: 64760076949688941, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 64760076949688941, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 64760076949688941, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_AnchoredPosition.x + value: 64.125 + objectReference: {fileID: 0} + - target: {fileID: 64760076949688941, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_AnchoredPosition.y + value: -14 + objectReference: {fileID: 0} + - target: {fileID: 322483231651427656, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 322483231651427656, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 322483231651427656, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_AnchoredPosition.x + value: 64.125 + objectReference: {fileID: 0} + - target: {fileID: 322483231651427656, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_AnchoredPosition.y + value: -14 + objectReference: {fileID: 0} + - target: {fileID: 495174325582678740, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_SizeDelta.x + value: 25.18 + objectReference: {fileID: 0} + - target: {fileID: 1389570078669053979, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1389570078669053979, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1389570078669053979, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_AnchoredPosition.x + value: 141 + objectReference: {fileID: 0} + - target: {fileID: 1389570078669053979, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_AnchoredPosition.y + value: -61.1 + objectReference: {fileID: 0} + - target: {fileID: 1670299614426086028, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1670299614426086028, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1670299614426086028, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_AnchorMax.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1670299614426086028, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_AnchorMax.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1670299614426086028, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_AnchorMin.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1670299614426086028, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_AnchorMin.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1670299614426086028, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_SizeDelta.x + value: 318 + objectReference: {fileID: 0} + - target: {fileID: 1670299614426086028, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_SizeDelta.y + value: 260.74 + objectReference: {fileID: 0} + - target: {fileID: 1670299614426086028, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1670299614426086028, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1670299614426086028, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1670299614426086028, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1670299614426086028, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1670299614426086028, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1670299614426086028, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1670299614426086028, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_AnchoredPosition.x + value: -380.2 + objectReference: {fileID: 0} + - target: {fileID: 1670299614426086028, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_AnchoredPosition.y + value: -281 + objectReference: {fileID: 0} + - target: {fileID: 1670299614426086028, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1670299614426086028, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1670299614426086028, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1733309631157010962, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1733309631157010962, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1733309631157010962, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_AnchoredPosition.x + value: 141 + objectReference: {fileID: 0} + - target: {fileID: 1733309631157010962, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_AnchoredPosition.y + value: -121.1 + objectReference: {fileID: 0} + - target: {fileID: 2815481224497491875, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_SizeDelta.x + value: 38.26 + objectReference: {fileID: 0} + - target: {fileID: 3263565422826670613, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_SizeDelta.x + value: 9.52 + objectReference: {fileID: 0} + - target: {fileID: 3263565422826670613, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_SizeDelta.y + value: 19.1 + objectReference: {fileID: 0} + - target: {fileID: 3759358454249268061, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_SizeDelta.x + value: 13.83 + objectReference: {fileID: 0} + - target: {fileID: 3759358454249268061, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_SizeDelta.y + value: 19.1 + objectReference: {fileID: 0} + - target: {fileID: 3963263371466394407, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3963263371466394407, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3963263371466394407, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_SizeDelta.y + value: 19.1 + objectReference: {fileID: 0} + - target: {fileID: 3963263371466394407, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_AnchoredPosition.x + value: 161.97249 + objectReference: {fileID: 0} + - target: {fileID: 3963263371466394407, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_AnchoredPosition.y + value: -9.55 + objectReference: {fileID: 0} + - target: {fileID: 4383763207084752213, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4383763207084752213, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4383763207084752213, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_AnchoredPosition.x + value: 217.875 + objectReference: {fileID: 0} + - target: {fileID: 4383763207084752213, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_AnchoredPosition.y + value: -14 + objectReference: {fileID: 0} + - target: {fileID: 4734915358213925375, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4734915358213925375, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4734915358213925375, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_AnchoredPosition.x + value: 8.972496 + objectReference: {fileID: 0} + - target: {fileID: 4734915358213925375, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_AnchoredPosition.y + value: -9.55 + objectReference: {fileID: 0} + - target: {fileID: 4815791146998578607, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_SizeDelta.x + value: 9.8 + objectReference: {fileID: 0} + - target: {fileID: 4815791146998578607, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_SizeDelta.y + value: 19.1 + objectReference: {fileID: 0} + - target: {fileID: 6150045885068456404, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6150045885068456404, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6150045885068456404, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_AnchoredPosition.x + value: 141 + objectReference: {fileID: 0} + - target: {fileID: 6150045885068456404, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_AnchoredPosition.y + value: -181.1 + objectReference: {fileID: 0} + - target: {fileID: 6823706270529186750, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6823706270529186750, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6823706270529186750, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_SizeDelta.y + value: 27.1 + objectReference: {fileID: 0} + - target: {fileID: 6823706270529186750, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_AnchoredPosition.x + value: 141 + objectReference: {fileID: 0} + - target: {fileID: 6823706270529186750, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_AnchoredPosition.y + value: -13.55 + objectReference: {fileID: 0} + - target: {fileID: 6929874536063340863, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_SizeDelta.x + value: -36 + objectReference: {fileID: 0} + - target: {fileID: 6929874536063340863, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_SizeDelta.y + value: -53.639984 + objectReference: {fileID: 0} + - target: {fileID: 7422702907034326837, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7422702907034326837, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7422702907034326837, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_AnchoredPosition.x + value: 217.875 + objectReference: {fileID: 0} + - target: {fileID: 7422702907034326837, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_AnchoredPosition.y + value: -14 + objectReference: {fileID: 0} + - target: {fileID: 8351774369622538081, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_SizeDelta.x + value: 13.83 + objectReference: {fileID: 0} + - target: {fileID: 8351774369622538081, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_SizeDelta.y + value: 19.1 + objectReference: {fileID: 0} + - target: {fileID: 9168477493309714298, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_Name + value: Panel_ObjectAlign + objectReference: {fileID: 0} + - target: {fileID: 9168477493309714298, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3} --- !u!1 &1981809315 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/XED/AssetTool/CustomAssetConnector.cs b/Assets/Scripts/XED/AssetTool/CustomAssetConnector.cs index 54a54b93..cdff8353 100644 --- a/Assets/Scripts/XED/AssetTool/CustomAssetConnector.cs +++ b/Assets/Scripts/XED/AssetTool/CustomAssetConnector.cs @@ -1,6 +1,6 @@ -using System.Collections.Generic; -using UnityEngine; -using XED.UI; +using System.Collections.Generic; +using UnityEngine; +using XED.UI; using WI; using XED.Manage; using XED.Util; @@ -26,7 +26,9 @@ namespace XED.Asset public SaveLoadFBXData saveLoadFBXData; public RenderObjectHandler renderObjectHandler; public event System.Action> onSelectObjects; + public event System.Action onDeselectObjects; public event System.Action onRemoveObjects; + public event System.Action onAssetDropped; void Awake() { saveLoadFBXData = FindFirstObjectByType(); @@ -36,7 +38,7 @@ namespace XED.Asset { assetScrollRect = FindSingle().panel_assetlibrary.scrollRect; assetScrollView = FindSingle().panel_assetlibrary.scrollView; - componentScrollView = FindSingle().panel_componentlibrary.scrollView; + componentScrollView = FindSingle().panel_componentlibrary.scrollView; renderObjectPrefab = Resources.Load("Prefabs/PRF_RenderObject"); assetScrollRect.onDragBegin.AddListener(OnAssetSelected); @@ -72,7 +74,7 @@ namespace XED.Asset connectedAsset.assetData = selectedAssetData; connectedAsset.hierarchyItem = componentScrollView.AddItem(selectedAssetData.assetName, selectedItem, HierarchyItemType.obj); connectedAsset.renderObject = selectRenderObject; - connectedAsset.renderObject.onTransformChanged = connectedAsset.assetData.OnTransformDataChanged; + connectedAsset.renderObject.onTransformChanged = connectedAsset.assetData.OnTransformDataChanged; var command = new ActionCommand( () => { @@ -80,9 +82,9 @@ namespace XED.Asset { connectedAsset.assetData.AddTransformToRender(connectedAsset.renderObject.transform); connectedAsset.renderObject.gameObject.SetActive(true); - componentScrollView.AddItem(connectedAsset.hierarchyItem); + componentScrollView.AddItem(connectedAsset.hierarchyItem); } - connectedAsset.renderObject.Hide(); + connectedAsset.renderObject.Hide(); connectedAssets.Add(connectedAsset); }, () => @@ -103,14 +105,14 @@ namespace XED.Asset } HierarchyItem item = assetScrollView.AddItem(objectName, assetData.gameObject, HierarchyItemType.file, parent); assetData.onLoadProgress.RemoveAllListeners(); - assetData.onLoadProgress.AddListener((x) => item.onLoadProgress?.Invoke(x)); + assetData.onLoadProgress.AddListener((x) => item.onLoadProgress?.Invoke(x)); } public void OnRemoveFbxFile(string objectName) { assetScrollView.RemoveItem(objectName, HierarchyItemType.file); } public void OnAssetSelected(HierarchyItem item) - { + { if (item == null || item.linkedObject == null) { selectedAssetData = null; @@ -121,14 +123,14 @@ namespace XED.Asset { selectedAssetData = null; return; - } + } selectedItem = Instantiate(renderObjectPrefab); selectRenderObject = selectedItem.GetComponent(); selectRenderObject.instantiateObject = selectedAssetData.InstantiateLoadedObject; selectRenderObject.getBounds = selectedAssetData.GetCombinedBoundary; selectRenderObject.CreateRenderObject(); selectRenderObject.Select(); - selectedAssetData.AddTransformToRender(selectedItem.transform); + selectedAssetData.AddTransformToRender(selectedItem.transform); } public void OnAssetDropped(HierarchyItem item) { @@ -137,16 +139,17 @@ namespace XED.Asset bool isPointerOutScrollRect = !assetScrollRect.IsPointerOverScrollRect(); if (item != null && isPointerOutScrollRect) { - CreateConnectedAsset(); + CreateConnectedAsset(); } else - { + { selectedAssetData.RemoveTransform(selectedItem.transform); Destroy(selectedItem); } selectRenderObject.Deselect(); selectedAssetData = null; - } + onAssetDropped?.Invoke(); + } public void OnSelectObjectFromHierarchy(List selectedItems) { if (selectedItems.Count == 0) @@ -162,7 +165,7 @@ namespace XED.Asset renderObjectHandler.RemoveAllSelections(); for (int i = 0; i < selectedItems.Count; i++) { - ConnectedAsset searchAsset = connectedAssets.Find((x) => x.hierarchyItem == selectedItems[i]); + ConnectedAsset searchAsset = connectedAssets.Find((x) => x.hierarchyItem == selectedItems[i]); name = i == 0 ? searchAsset.hierarchyItem.name : name.Equals(searchAsset.hierarchyItem.name) ? searchAsset.hierarchyItem.name : "-"; selectedObjects.Add(searchAsset.renderObject.gameObject); renderObjectHandler.AddSelection(searchAsset.renderObject); @@ -199,7 +202,7 @@ namespace XED.Asset } string name = ""; List selectedObjects = new List(); - List selectedItems = new List(); + List selectedItems = new List(); for (int i = 0; i < objects.Count; i++) { ConnectedAsset searchAsset = connectedAssets.Find((x) => x.renderObject == objects[i]); @@ -209,13 +212,38 @@ namespace XED.Asset } componentScrollView.OnSelect(selectedItems); onSelectObjects?.Invoke(name, selectedObjects); - } + } + public void OnDragBoxSelect(Rect selectionBoxRect) + { + List activeAssets = connectedAssets.FindAll(x => x.renderObject != null && x.renderObject.gameObject.activeSelf); + if (activeAssets.Count == 0) + { + return; + } + string name = ""; + List selectedObjects = new List(); + List selectedItems = new List(); + renderObjectHandler.RemoveAllSelections(); + for (int i = 0; i < activeAssets.Count; i++) + { + ConnectedAsset activeAsset = activeAssets[i]; + if (selectionBoxRect.Contains(Camera.main.WorldToScreenPoint(activeAsset.renderObject.transform.position))) + { + name = i == 0 ? activeAsset.hierarchyItem.name : name.Equals(activeAsset.hierarchyItem.name) ? activeAsset.hierarchyItem.name : "-"; + selectedItems.Add(activeAsset.hierarchyItem); + selectedObjects.Add(activeAsset.renderObject.gameObject); + renderObjectHandler.AddSelection(activeAsset.renderObject); + } + } + componentScrollView.OnSelect(selectedItems); + onSelectObjects?.Invoke(name, selectedObjects); + } public void OnRemoveObject(List objects) { if (objects.Count == 0) { return; - } + } List removeList = new List(); List siblingIndex = new List(); for (int i = 0; i < objects.Count; i++) @@ -223,13 +251,13 @@ namespace XED.Asset ConnectedAsset searchAsset = connectedAssets.Find((x) => x.renderObject == objects[i]); removeList.Add(searchAsset); siblingIndex.Add(searchAsset.hierarchyItem.GetSiblingIndex()); - } + } var command = new ActionCommand( () => { for (int i = 0; i < removeList.Count; i++) { - ConnectedAsset connectedAsset = removeList[i]; + ConnectedAsset connectedAsset = removeList[i]; componentScrollView.RemoveItem(connectedAsset.hierarchyItem); connectedAsset.assetData.RemoveTransform(connectedAsset.renderObject.transform); connectedAsset.renderObject.gameObject.SetActive(false); @@ -239,7 +267,7 @@ namespace XED.Asset { ConnectedAsset searchAsset = connectedAssets.Find((x) => x.hierarchyItem == childItems[k]); searchAsset.assetData.RemoveTransform(searchAsset.renderObject.transform); - searchAsset.renderObject.gameObject.SetActive(false); + searchAsset.renderObject.gameObject.SetActive(false); } } onRemoveObjects?.Invoke(); @@ -249,7 +277,7 @@ namespace XED.Asset { for (int i = 0; i < removeList.Count; i++) { - ConnectedAsset connectedAsset = removeList[i]; + ConnectedAsset connectedAsset = removeList[i]; componentScrollView.AttachItem(connectedAsset.hierarchyItem.parent, connectedAsset.hierarchyItem, siblingIndex[i]); connectedAsset.assetData.AddTransformToRender(connectedAsset.renderObject.transform); connectedAsset.renderObject.gameObject.SetActive(true); @@ -262,7 +290,7 @@ namespace XED.Asset { ConnectedAsset searchAsset = connectedAssets.Find((x) => x.hierarchyItem == childItems[k]); searchAsset.assetData.AddTransformToRender(searchAsset.renderObject.transform); - searchAsset.renderObject.gameObject.SetActive(true); + searchAsset.renderObject.gameObject.SetActive(true); } } }); @@ -275,7 +303,7 @@ namespace XED.Asset return; } List copySources = new List(); - List copyList = new List(); + List copyList = new List(); for (int i = 0; i < objects.Count; i++) { ConnectedAsset searchAsset = connectedAssets.Find((x) => x.renderObject == objects[i]); @@ -296,11 +324,11 @@ namespace XED.Asset GameObject copyObject = Instantiate(renderObjectPrefab); copyAsset.assetData = copySource.assetData; copyAsset.hierarchyItem = copySource.hierarchyItem.Copy(); - copyAsset.renderObject = copyObject.GetComponent(); + copyAsset.renderObject = copyObject.GetComponent(); copyAsset.renderObject.getBounds = copySource.assetData.GetCombinedBoundary; copyAsset.renderObject.onTransformChanged = copySource.assetData.OnTransformDataChanged; copyAsset.renderObject.instantiateObject = copySource.assetData.InstantiateLoadedObject; - copyAsset.renderObject.CreateRenderObject(); + copyAsset.renderObject.CreateRenderObject(); copyAsset.renderObject.transform.position = copySource.renderObject.transform.position; copyAsset.renderObject.transform.rotation = copySource.renderObject.transform.rotation; copyAsset.renderObject.transform.localScale = copySource.renderObject.transform.localScale; @@ -318,13 +346,13 @@ namespace XED.Asset ConnectedAsset childSource = connectedAssets.Find((x) => x.hierarchyItem == srcChildren[k]); GameObject copyChildObject = Instantiate(renderObjectPrefab); ConnectedAsset childAsset = new ConnectedAsset(); - childAsset.assetData = childSource.assetData; + childAsset.assetData = childSource.assetData; childAsset.hierarchyItem = dstChildren[k]; childAsset.renderObject = copyChildObject.GetComponent(); ; childAsset.renderObject.getBounds = childAsset.assetData.GetCombinedBoundary; childAsset.renderObject.onTransformChanged = childAsset.assetData.OnTransformDataChanged; childAsset.renderObject.instantiateObject = copySource.assetData.InstantiateLoadedObject; - childAsset.renderObject.CreateRenderObject(); + childAsset.renderObject.CreateRenderObject(); childAsset.renderObject.transform.position = childSource.renderObject.transform.position; childAsset.renderObject.transform.rotation = childSource.renderObject.transform.rotation; childAsset.renderObject.transform.localScale = childSource.renderObject.transform.localScale; @@ -344,7 +372,7 @@ namespace XED.Asset copyAsset.renderObject.gameObject.SetActive(true); copyAsset.renderObject.Hide(); componentScrollView.AddItem(copyAsset.hierarchyItem); - } + } for (int i = 0; i < copyList.Count; i++) { ConnectedAsset connectedAsset = copyList[i]; @@ -355,13 +383,13 @@ namespace XED.Asset searchAsset.assetData.AddTransformToRender(searchAsset.renderObject.transform); searchAsset.renderObject.gameObject.SetActive(true); } - } + } }, () => { for (int i = 0; i < copyList.Count; i++) { - ConnectedAsset connectedAsset = copyList[i]; + ConnectedAsset connectedAsset = copyList[i]; componentScrollView.RemoveItem(connectedAsset.hierarchyItem); connectedAsset.assetData.RemoveTransform(connectedAsset.renderObject.transform); connectedAsset.renderObject.gameObject.SetActive(false); @@ -393,9 +421,10 @@ namespace XED.Asset return; } childAsset.renderObject.transform.parent = parentAsset.renderObject.transform; - } + } public void OnDeselectAll() { + onDeselectObjects?.Invoke(); componentScrollView.DeselectAll(); } public void SaveSelectedAssetDatasToLocal() @@ -407,7 +436,7 @@ namespace XED.Asset saveLoadFBXData.LoadLocalData(); } public void OrderByHierarchy(List objectsToOrder) - { + { SortedDictionary itemToObject = new SortedDictionary(); for (int i = 0; i < objectsToOrder.Count; i++) { @@ -418,16 +447,16 @@ namespace XED.Asset objectsToOrder = itemToObject.Values.ToList(); } Vector3? GetMousePointOnYPlane(float maxDistance) - { - Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); - Plane yPlane = new Plane(Vector3.up, Vector3.zero); + { + Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); + Plane yPlane = new Plane(Vector3.up, Vector3.zero); if (yPlane.Raycast(ray, out float distance)) - { + { if (distance <= maxDistance) { return ray.GetPoint(distance); } - } + } return null; } } @@ -437,4 +466,4 @@ namespace XED.Asset public CustomAssetData assetData; public CustomAssetRenderObject renderObject; } -} +} \ No newline at end of file diff --git a/Assets/Scripts/XED/AssetTool/RenderObjectHandler.cs b/Assets/Scripts/XED/AssetTool/RenderObjectHandler.cs index 0694ead4..6d3bbb27 100644 --- a/Assets/Scripts/XED/AssetTool/RenderObjectHandler.cs +++ b/Assets/Scripts/XED/AssetTool/RenderObjectHandler.cs @@ -1,27 +1,31 @@ using System; using System.Collections.Generic; using System.Linq; +using UnityEditor; using UnityEngine; -using UnityEngine.Events; -using UnityEngine.EventSystems; +using UnityEngine.Events; +using UnityEngine.EventSystems; using XED.Interfaces; using XED.Manage; -using XED.RuntimeGizmo; +using XED.RuntimeGizmo; namespace XED.Util { public class RenderObjectHandler : MonoBehaviour, IStatusController, IInputHandler { - public List selectedRenderObjects = new List(); + List selectedRenderObjects = new List(); + List copyRenderObjects = new List(); List selectedGameObjects = new List(); CustomAssetRenderObject prevSelectedObject; - RTGController rtgController; + RTGController rtgController; Vector3 clickBeginPos; float clickLengthThreshold = 5.0f; int uiLayer; int selectIndex; bool lockHandler = false; - public UnityEvent onClickBegin; + public event System.Action onDragBegin; + public event System.Action onDragEnd; + public event System.Action onDragForceEnd; public UnityEvent> onSelectObject; public UnityEvent> onRemoveObject; public UnityEvent> onCopyObject; @@ -34,30 +38,19 @@ namespace XED.Util myHandler = GetInputHandler(); } private void Start() - { + { rtgController = new RTGController(); rtgController.onTransformBegin = OnTransformBegin; rtgController.onTransformChanged = OnTransformChangedFromRTG; uiLayer = LayerMask.NameToLayer("UI"); //var inputManager = FindSingle(); - + selectIndex = 0; } private void OnMousePointerDown() { clickBeginPos = Input.mousePosition; - onClickBegin?.Invoke(clickBeginPos); - } - private void OnMousePointerUp() - { - //rtg Ʈѷ ϶ Ǵ. - //rtg Ʈѷ Ŀ ٲ ϱ 뵵 - if (lockHandler == true) - { - lockHandler = false; - return; - } //ui 쿡 Ʈ . PointerEventData pointerData = new PointerEventData(EventSystem.current) { @@ -69,22 +62,47 @@ namespace XED.Util { return; } + onDragBegin?.Invoke(clickBeginPos); + } + private void OnMousePointerUp() + { + //rtg Ʈѷ ϶ Ǵ. + //rtg Ʈѷ Ŀ ٲ ϱ 뵵 + if (lockHandler == true) + { + lockHandler = false; + onDragForceEnd?.Invoke(); + return; + } + //ui 쿡 Ʈ . + PointerEventData pointerData = new PointerEventData(EventSystem.current) + { + position = Input.mousePosition + }; + List raycastResults = new List(); + EventSystem.current.RaycastAll(pointerData, raycastResults); + if (raycastResults.Any(x => x.gameObject.layer == uiLayer)) + { + onDragForceEnd?.Invoke(); + return; + } // ġ ٿ ġ ũ  Ŭ Ѵ. if ((clickBeginPos - Input.mousePosition).magnitude > clickLengthThreshold) { DeselectAll(); + onDragEnd?.Invoke(Input.mousePosition); return; } List raycastedTarget = new List(); CustomAssetRenderObject renderObject = null; foreach (var result in raycastResults) - { + { renderObject = result.gameObject.GetComponent(); if (renderObject != null) { raycastedTarget.Add(renderObject); } - } + } if (raycastedTarget.Count > 0) { //Ʈ Ʈ ֱ 뵵 @@ -119,7 +137,7 @@ namespace XED.Util { RemoveAllSelections(); AddSelection(renderObject); - } + } prevSelectedObject = renderObject; OnSelect(); } @@ -127,7 +145,8 @@ namespace XED.Util { ResetRTG(); DeselectAll(); - } + } + onDragForceEnd?.Invoke(); } public void DeselectAll() { @@ -166,7 +185,7 @@ namespace XED.Util rtgController.SetGizmoTargetObjects(selectedGameObjects); } private void OnSelect() - { + { onSelectObject?.Invoke(selectedRenderObjects); rtgController.SetGizmoTargetObjects(selectedGameObjects); } @@ -196,16 +215,16 @@ namespace XED.Util onTransformChanged?.Invoke(selectedGameObjects); } public void OnTransformChanged(List transformObjects) - { + { foreach (GameObject gb in transformObjects) { CustomAssetRenderObject renderObject = gb.GetComponent(); if (renderObject != null) { - renderObject.onTransformChanged?.Invoke(); + renderObject.onTransformChanged?.Invoke(); } - } - } + } + } public void RemoveItem() { if (selectedRenderObjects.Count == 0) return; @@ -216,120 +235,76 @@ namespace XED.Util if (selectedRenderObjects.Count == 0) return; onCopyObject?.Invoke(selectedRenderObjects); } + public void SaveItemsToCopy() + { + copyRenderObjects.Clear(); + copyRenderObjects.AddRange(selectedRenderObjects); + } + public void CopySavedItems() + { + if (copyRenderObjects.Count == 0) return; + onCopyObject?.Invoke(copyRenderObjects); + } public void ResetGizmoTargetObjects() { rtgController.SetGizmoTargetObjects(selectedGameObjects); } - // public void AlignObjects(Vector2 space) - // { - // if (selectedRenderObjects.Count <= 1) - // { - // return; - // } - // onOrderByHierachy?.Invoke(selectedRenderObjects); - // List objectsToAlign = new List(selectedRenderObjects); - // List originalPos = objectsToAlign.Select(x => x.transform.position).ToList(); - // - // ActionCommand command = new ActionCommand( - // () => - // { - // for (int i = 1; i < objectsToAlign.Count; i++) - // { - // CustomAssetRenderObject renderObject = objectsToAlign[i]; - // renderObject.transform.position = new Vector3( - // objectsToAlign[i - 1].transform.position.x + space.x, - // renderObject.transform.position.y, - // objectsToAlign[i - 1].transform.position.z + space.y); - // renderObject.onTransformChanged?.Invoke(); - // } - // onTransformChanged?.Invoke(objectOrderByX.Select(renderObject => renderObject.transform).ToList()); - // }, - // () => - // { - // for (int i = 1; i < objectsToAlign.Count; i++) - // { - // CustomAssetRenderObject renderObject = objectOrderByX[i]; - // float origX = originalPos[i]; - // renderObject.transform.position = new Vector3(origX, renderObject.transform.position.y, renderObject.transform.position.z); - // renderObject.onTransformChanged?.Invoke(); - // } - // onTransformChanged?.Invoke(objectOrderByX.Select(renderObject => renderObject.transform).ToList()); - // }); - // CommandManager.I.ExecuteCommand(command); - // } - // - //public void ObjectSpacingX(float space) - //{ - // if (selectedRenderObjects.Count <= 1) - // { - // return; - // } - // List objectOrderByX = selectedRenderObjects.OrderBy(x => x.transform.position.x).ToList(); - // List originalPosX = objectOrderByX.Select(x => x.transform.position.x).ToList(); - // - // ActionCommand command = new ActionCommand( - // () => - // { - // for (int i = 1; i < objectOrderByX.Count; i++) - // { - // CustomAssetRenderObject renderObject = objectOrderByX[i]; - // renderObject.transform.position = new Vector3( - // objectOrderByX[i - 1].transform.position.x + space, - // renderObject.transform.position.y, - // renderObject.transform.position.z); - // renderObject.onTransformChanged?.Invoke(); - // } - // onTransformChanged?.Invoke(objectOrderByX.Select(renderObject => renderObject.transform).ToList()); - // }, - // () => - // { - // for (int i = 1; i < objectOrderByX.Count; i++) - // { - // CustomAssetRenderObject renderObject = objectOrderByX[i]; - // float origX = originalPosX[i]; - // renderObject.transform.position = new Vector3(origX, renderObject.transform.position.y, renderObject.transform.position.z); - // renderObject.onTransformChanged?.Invoke(); - // } - // onTransformChanged?.Invoke(objectOrderByX.Select(renderObject => renderObject.transform).ToList()); - // }); - // CommandManager.I.ExecuteCommand(command); - //} - //public void ObjectSpacingZ(float space) - //{ - // if (selectedRenderObjects.Count <= 1) - // { - // return; - // } - // List objectOrderByZ = selectedRenderObjects.OrderBy(x => x.transform.position.z).ToList(); - // List originalPosZ = objectOrderByZ.Select(x => x.transform.position.z).ToList(); - // - // ActionCommand command = new ActionCommand( - // () => - // { - // for (int i = 1; i < objectOrderByZ.Count; i++) - // { - // CustomAssetRenderObject renderObject = objectOrderByZ[i]; - // renderObject.transform.position = new Vector3( - // renderObject.transform.position.x, - // renderObject.transform.position.y, - // objectOrderByZ[i - 1].transform.position.z + space); - // renderObject.onTransformChanged?.Invoke(); - // } - // onTransformChanged?.Invoke(objectOrderByZ.Select(renderObject => renderObject.transform).ToList()); - // }, - // () => - // { - // for (int i = 1; i < objectOrderByZ.Count; i++) - // { - // CustomAssetRenderObject renderObject = objectOrderByZ[i]; - // float origZ = originalPosZ[i]; - // renderObject.transform.position = new Vector3(renderObject.transform.position.x, renderObject.transform.position.y, origZ); - // renderObject.onTransformChanged?.Invoke(); - // } - // onTransformChanged?.Invoke(objectOrderByZ.Select(renderObject => renderObject.transform).ToList()); - // }); - // CommandManager.I.ExecuteCommand(command); - //} + public void AlignObjects(int row, int col, float spaceX, float spaceZ, int direction) + { + if (selectedRenderObjects.Count <= 1) + { + return; + } + onOrderByHierachy?.Invoke(selectedRenderObjects); + List objectsToAlign = new List(selectedRenderObjects); + List originalPos = objectsToAlign.Select(x => x.transform.position).ToList(); + + direction = ((direction % 8) + 8) % 8; + int primary = direction % 2 == 0 ? col : row; + Vector3 primaryDir = Vector3.zero; + Vector3 secondaryDir = Vector3.zero; + primaryDir = (direction == 0 || direction == 2) ? Vector3.right * spaceX : + (direction == 4 || direction == 6) ? -Vector3.right * spaceX : + (direction == 1 || direction == 7) ? Vector3.forward * spaceZ : -Vector3.forward * spaceZ; + secondaryDir = (direction == 1 || direction == 3) ? Vector3.right * spaceX : + (direction == 5 || direction == 7) ? -Vector3.right * spaceX : + (direction == 0 || direction == 6) ? Vector3.forward * spaceZ : -Vector3.forward * spaceZ; + + ActionCommand command = new ActionCommand( + () => + { + int countP = 0; + int countS = 0; + Vector3 referencePoint = objectsToAlign[0].transform.position; + for (int i = 1; i < objectsToAlign.Count; i++) + { + CustomAssetRenderObject renderObject = objectsToAlign[i]; + if (countP < primary - 1 || primary == 0) + { + countP++; + } + else + { + countS++; + countP = 0; + } + renderObject.transform.position = referencePoint + primaryDir * countP + secondaryDir * countS; + renderObject.onTransformChanged?.Invoke(); + } + onTransformChanged?.Invoke(objectsToAlign.Select(renderObject => renderObject.gameObject).ToList()); + }, + () => + { + for (int i = 1; i < objectsToAlign.Count; i++) + { + CustomAssetRenderObject renderObject = objectsToAlign[i]; + renderObject.transform.position = originalPos[i]; + renderObject.onTransformChanged?.Invoke(); + } + onTransformChanged?.Invoke(objectsToAlign.Select(renderObject => renderObject.gameObject).ToList()); + }); + CommandManager.I.ExecuteCommand(command); + } InputHandler myHandler; public void CurrentStatusEvent() @@ -354,7 +329,19 @@ namespace XED.Util getKeyActions.Add(KeyCode.W, SetRTGRotate); getKeyActions.Add(KeyCode.E, SetRTGScale); getKeyActions.Add(KeyCode.R, ResetRTG); - var handler = new InputHandler(getKeyActions, downKeyActions, upKeyActions); + + var shortcutTable = new Dictionary>(); +#if UNITY_EDITOR + shortcutTable.Add(KeyCode.LeftShift, new Dictionary()); + shortcutTable[KeyCode.LeftShift].Add(KeyCode.C, SaveItemsToCopy); + shortcutTable[KeyCode.LeftShift].Add(KeyCode.V, CopySavedItems); +#else + shortcutTable.Add(KeyCode.LeftControl, new Dictionary()); + shortcutTable[KeyCode.LeftControl].Add(KeyCode.C, SaveItemsToCopy); + shortcutTable[KeyCode.LeftControl].Add(KeyCode.V, CopySavedItems); +#endif + + var handler = new InputHandler(getKeyActions, downKeyActions, upKeyActions, shortcutTable); return handler; } } diff --git a/Assets/Scripts/XED/AssetTool/SaveLoadFBXData.cs b/Assets/Scripts/XED/AssetTool/SaveLoadFBXData.cs index b7b17668..76ebc826 100644 --- a/Assets/Scripts/XED/AssetTool/SaveLoadFBXData.cs +++ b/Assets/Scripts/XED/AssetTool/SaveLoadFBXData.cs @@ -4,26 +4,28 @@ using System.IO; using UnityEngine.Events; using System.Collections; using TriLibCore.SFB; -using XED.Util; +using XED.Util; using System.Threading.Tasks; -using MessagePack; +using MessagePack; using System; using Newtonsoft.Json; using System.Text; -using System.Linq; +using System.Linq; +using UnityEngine.EventSystems; namespace XED.Asset { public class SaveLoadFBXData : MonoBehaviour { public string identifier; - public string password; + public string password; public UnityEvent onLoadFbxFile; public UnityEvent onRemoveFbxFile; + public event System.Action onBeginLoadAsset; private SaveData saveData; - private List listAssets = new List(); + private List listAssets = new List(); private Queue loadFilePath = new Queue(); - private SharedMaterial sharedMaterial; + private SharedMaterial sharedMaterial; private MessagePackFileManager fileManager; private bool isSaveTaskComplete = true; private bool isLoadTaskComplete = true; @@ -36,18 +38,19 @@ namespace XED.Asset StartCoroutine(CoroutineLoadLocalFiles()); string baseDataPath = Application.streamingAssetsPath + "/baseAssetData"; LoadLocalData(baseDataPath); - } + } bool IsWebURL(string path) { return path.StartsWith("http://") || path.StartsWith("https://"); } public void LoadLocalFBXFile() - { + { TriLibCore.SFB.StandaloneFileBrowser.OpenFilePanelAsync("Load Local (File)", "C:\\Users", "fbx", false, OnLoadLocalFBXFile); } private void OnLoadLocalFBXFile(IList list) { + onBeginLoadAsset?.Invoke(); for (int i = 0; i < list.Count; i++) { if (!list[i].HasData) @@ -72,7 +75,7 @@ namespace XED.Asset continue; var path = list[i].Name; - var files = Directory.GetFiles(path, "*.fbx", SearchOption .AllDirectories); + var files = Directory.GetFiles(path, "*.fbx", SearchOption.AllDirectories); if (listAssets.Find((x) => x.localFBXPath == path) != null) return; foreach (var file in files) @@ -80,7 +83,7 @@ namespace XED.Asset loadFilePath.Enqueue(file); } } - } + } public void SaveToLocalData(string path = "") { if (isSaveTaskComplete == false) @@ -103,8 +106,9 @@ namespace XED.Asset { return; } + onBeginLoadAsset?.Invoke(); StartCoroutine(CoroutineLoadFromLocalData(path)); - } + } public void OnLoadLocalFBXFile(string[] paths) { if (paths != null && paths.Length > 0 && !string.IsNullOrEmpty(paths[0])) @@ -198,7 +202,7 @@ namespace XED.Asset { listAssets.Remove(assetData); onRemoveFbxFile?.Invoke(name); - } + } yield return null; } } @@ -231,10 +235,10 @@ namespace XED.Asset //Task task = SaveAsync(identifier, saveData); string filePath = string.IsNullOrEmpty(path) ? Path.Combine(Application.persistentDataPath, identifier) : path; - Task task = Task.Run(() => fileManager.SaveAsync(filePath, saveData)); + Task task = Task.Run(() => fileManager.SaveAsync(filePath, saveData)); - yield return new WaitUntil(() => task.IsCompleted); - isSaveTaskComplete = true; + yield return new WaitUntil(() => task.IsCompleted); + isSaveTaskComplete = true; yield return null; } IEnumerator CoroutineLoadFromLocalData(string path) @@ -244,7 +248,7 @@ namespace XED.Asset //Task task = LoadAsync(identifier); - string filePath = string.IsNullOrEmpty(path) ? Path.Combine(Application.persistentDataPath, identifier) : path; + string filePath = string.IsNullOrEmpty(path) ? Path.Combine(Application.persistentDataPath, identifier) : path; if (!System.IO.File.Exists(filePath)) { Debug.Log("No File Found At : " + filePath); @@ -296,7 +300,7 @@ namespace XED.Asset yield return null; } } - isLoadTaskComplete = true; + isLoadTaskComplete = true; yield return null; } } @@ -315,7 +319,7 @@ namespace XED.Asset isLoadError = false; drawTransforms = new List(); } - } + } public class SharedMaterial { private Material sharedMaterial; @@ -534,7 +538,7 @@ namespace XED.Asset } break; } - } + } if (material.HasProperty("_WorkflowMode")) { material.SetFloat("_WorkflowMode", hasSpecular ? 1f : 0f); @@ -584,7 +588,7 @@ namespace XED.Asset dicTextures[texData.uid] = tex; } } - } + } [MessagePackObject] public class SaveData { @@ -601,7 +605,7 @@ namespace XED.Asset [Key("FolderName")] public string folderName; [Key("ModelArray")] - public ModelData[] models; + public ModelData[] models; public void SaveData(GameObject modelObject, SharedMaterial sharedMaterial) { MeshRenderer[] meshRenderers = modelObject.transform.GetComponentsInChildren(true); @@ -667,7 +671,7 @@ namespace XED.Asset [Key("Rotation")] public SerializableQuaternion rotation; [Key("Scale")] - public SerializableVector3 scale; + public SerializableVector3 scale; public void SetData(Transform transform) { position = new SerializableVector3(); @@ -693,21 +697,21 @@ namespace XED.Asset [Key("Normals")] public SerializableVector3[] normals; [Key("UVs")] - public SerializableVector2[] uv; + public SerializableVector2[] uv; [Key("Submeshes")] public SubmeshData[] submeshes; public void SetData(Mesh mesh) { vertices = SerializableVector3.FromVector3Array(mesh.vertices); normals = SerializableVector3.FromVector3Array(mesh.normals); - uv = SerializableVector2.FromVector2Array(mesh.uv); + uv = SerializableVector2.FromVector2Array(mesh.uv); List submeshList = new List(); for (int i = 0; i < mesh.subMeshCount; i++) { SubmeshData submesh = new SubmeshData { - materialIndex = i, - triangles = mesh.GetTriangles(i) + materialIndex = i, + triangles = mesh.GetTriangles(i) }; submeshList.Add(submesh); } @@ -718,7 +722,7 @@ namespace XED.Asset Mesh newMesh = new Mesh(); newMesh.vertices = SerializableVector3.ToVector3Array(vertices); newMesh.normals = SerializableVector3.ToVector3Array(normals); - newMesh.uv = SerializableVector2.ToVector2Array(uv); + newMesh.uv = SerializableVector2.ToVector2Array(uv); newMesh.subMeshCount = submeshes.Length; for (int i = 0; i < submeshes.Length; i++) { @@ -753,12 +757,12 @@ namespace XED.Asset } public void FromVector3(Vector3 v) { x = v.x; y = v.y; z = v.z; } public Vector3 ToVector3() => new Vector3(x, y, z); - + public static SerializableVector3[] FromVector3Array(Vector3[] array) { return array?.Select(v => new SerializableVector3(v.x, v.y, v.z)).ToArray(); } - + public static Vector3[] ToVector3Array(SerializableVector3[] array) { return array?.Select(v => v.ToVector3()).ToArray(); @@ -774,13 +778,13 @@ namespace XED.Asset public SerializableVector2(float x, float y) { this.x = x; - this.y = y; + this.y = y; } public void FromVector2(Vector2 v) { x = v.x; y = v.y; } public Vector2 ToVector2() => new Vector2(x, y); public static SerializableVector2[] FromVector2Array(Vector2[] array) - { + { return array?.Select(v => new SerializableVector2(v.x, v.y)).ToArray(); } @@ -832,12 +836,12 @@ namespace XED.Asset public void SetData(Material material) { - Color bc = material.HasProperty("_BaseColor") ? material.GetColor("_BaseColor") : - material.HasProperty("_Color") ? material.GetColor("_Color") : + Color bc = material.HasProperty("_BaseColor") ? material.GetColor("_BaseColor") : + material.HasProperty("_Color") ? material.GetColor("_Color") : Color.white; baseColor = new float[4] { bc.r, bc.g, bc.b, bc.a }; metallic = material.HasProperty("_Metallic") ? material.GetFloat("_Metallic") : 0; - smoothness = material.HasProperty("_Smoothness") ? material.GetFloat("_Smoothness") : + smoothness = material.HasProperty("_Smoothness") ? material.GetFloat("_Smoothness") : material.HasProperty("_Glossiness") ? material.GetFloat("_Glossiness") : 0; Color ec = material.HasProperty("_EmissionColor") ? material.GetColor("_EmissionColor") : Color.white; emissionColor = new float[4] { ec.r, ec.g, ec.b, ec.a }; @@ -845,8 +849,8 @@ namespace XED.Asset surfaceType = material.HasProperty("_Surface") ? (int)material.GetFloat("_Surface") : -1; blendMode = material.HasProperty("_Blend") ? (int)material.GetFloat("_Blend") : -1; occlusionStrength = material.HasProperty("_OcclusionStrength") ? material.GetFloat("_OcclusionStrength") : 0; - normalScale = material.HasProperty("_NormalScale") ? material.GetFloat("_NormalScale") : - material.HasProperty("_BumpScale") ? material.GetFloat("_BumpScale") : 0; + normalScale = material.HasProperty("_NormalScale") ? material.GetFloat("_NormalScale") : + material.HasProperty("_BumpScale") ? material.GetFloat("_BumpScale") : 0; } public void ApplyToMaterial(Material material) @@ -896,18 +900,18 @@ namespace XED.Asset { material.SetFloat("_Surface", 1); } - if (surfaceType == 1 || renderMode == 3) + if (surfaceType == 1 || renderMode == 3) { material.renderQueue = (int)UnityEngine.Rendering.RenderQueue.Transparent; material.SetFloat("_ZWrite", 0); material.SetFloat("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.SrcAlpha); material.SetFloat("_DstBlend", (int)UnityEngine.Rendering.BlendMode.OneMinusSrcAlpha); - } + } } else { //Transparent - if (renderMode == 3 || surfaceType == 1) + if (renderMode == 3 || surfaceType == 1) { material.renderQueue = (int)UnityEngine.Rendering.RenderQueue.Transparent; material.SetFloat("_ZWrite", 0); @@ -918,7 +922,7 @@ namespace XED.Asset material.DisableKeyword("_ALPHAPREMULTIPLY_ON"); } //CutOut - else if (renderMode == 1) + else if (renderMode == 1) { material.renderQueue = (int)UnityEngine.Rendering.RenderQueue.AlphaTest; material.EnableKeyword("_ALPHATEST_ON"); @@ -936,8 +940,8 @@ namespace XED.Asset material.DisableKeyword("_ALPHABLEND_ON"); material.DisableKeyword("_ALPHAPREMULTIPLY_ON"); } - } - } + } + } } [MessagePackObject] public class TextureData @@ -971,19 +975,19 @@ public class MessagePackFileManager catch (Exception ex) { Debug.LogError($"Task Error: {ex.Message}\n{ex.StackTrace}"); - } - return deserailze; + } + return deserailze; } public async Task SaveAsync(string filePath, T data) { - var lz4Option = MessagePackSerializerOptions.Standard.WithCompression(MessagePackCompression.Lz4Block); + var lz4Option = MessagePackSerializerOptions.Standard.WithCompression(MessagePackCompression.Lz4Block); try { byte[] bytes = MessagePackSerializer.Serialize(data, lz4Option); await File.WriteAllBytesAsync(filePath, bytes); } - catch(Exception ex) + catch (Exception ex) { Debug.LogError($"Task Error: {ex.Message}\n{ex.StackTrace}"); } diff --git a/Assets/Scripts/XED/Managers/EventConnector.cs b/Assets/Scripts/XED/Managers/EventConnector.cs index 7f3e418d..a0f628fe 100644 --- a/Assets/Scripts/XED/Managers/EventConnector.cs +++ b/Assets/Scripts/XED/Managers/EventConnector.cs @@ -1,5 +1,5 @@ using UnityEngine; -using WI; +using WI; using XED.UI; using WI.UI; using XED.Util; @@ -12,7 +12,7 @@ using System; namespace XED.Manage { [DefaultExecutionOrder(int.MaxValue)] - public class EventConnector : MonoBehaviour, ISingle + public class EventConnector : MonoBehaviour, ISingle { public override void AfterAwake() { @@ -44,10 +44,19 @@ namespace XED.Manage 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; @@ -99,6 +108,7 @@ namespace XED.Manage 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; } void StatusConnection() diff --git a/Assets/Scripts/XED/UI/Canvas/Canvas_Popup.cs b/Assets/Scripts/XED/UI/Canvas/Canvas_Popup.cs index e5e2e263..090d3e9a 100644 --- a/Assets/Scripts/XED/UI/Canvas/Canvas_Popup.cs +++ b/Assets/Scripts/XED/UI/Canvas/Canvas_Popup.cs @@ -13,6 +13,7 @@ namespace XED public AGVNodeModePopup agvnodemodepopup; public Panel_Tooltip panel_tooltip; public Panel_PropertyViewer panel_propertyviewer; + public Panel_DragHandler panel_draghandler; public override void AfterAwake() { diff --git a/Assets/Scripts/XED/UI/Canvas/Canvas_Windows.cs b/Assets/Scripts/XED/UI/Canvas/Canvas_Windows.cs index cf8c5843..a98cb3f4 100644 --- a/Assets/Scripts/XED/UI/Canvas/Canvas_Windows.cs +++ b/Assets/Scripts/XED/UI/Canvas/Canvas_Windows.cs @@ -11,5 +11,6 @@ namespace XED.UI public Panel_ComponentLibrary panel_componentlibrary; public Panel_AssetLibrary panel_assetlibrary; public Panel_ObjectInfo panel_objectinfo; + public Panel_ObjectAlign panel_objectalign; } } diff --git a/Assets/Scripts/XED/UI/Panel/Panel_DragHandler.cs b/Assets/Scripts/XED/UI/Panel/Panel_DragHandler.cs new file mode 100644 index 00000000..0ea1afb0 --- /dev/null +++ b/Assets/Scripts/XED/UI/Panel/Panel_DragHandler.cs @@ -0,0 +1,97 @@ +using System.Collections; +using UnityEngine; +using UnityEngine.EventSystems; +using UnityEngine.UI; +using WI.UI; + +namespace XED.UI +{ + public class Panel_DragHandler : PanelBase + { + Image selectionBoxImage; + Vector2 startPosition; + Rect selectionRect; + public event System.Action onDragBoxSelect; + private void Awake() + { + foreach (Image img in GetComponentsInChildren(true)) + { + if (img.transform != transform) + { + selectionBoxImage = img; + break; + } + } + } + public void OnBeginDrag(PointerEventData eventData) + { + selectionBoxImage.gameObject.SetActive(true); + startPosition = eventData.position; + selectionRect = new Rect(); + } + public void OnBeginDrag(Vector3 position) + { + selectionBoxImage.gameObject.SetActive(true); + startPosition = position; + selectionRect = new Rect(); + StopAllCoroutines(); + StartCoroutine(CoroutineOnDrag()); + } + + public void OnDrag(PointerEventData eventData) + { + SetSelectionBoxSize(eventData.position); + } + + public void OnEndDrag(PointerEventData eventData) + { + selectionBoxImage.gameObject.SetActive(false); + onDragBoxSelect?.Invoke(selectionRect); + } + public void OnEndDrag(Vector3 position) + { + selectionBoxImage.gameObject.SetActive(false); + StopAllCoroutines(); + SetSelectionBoxSize(position); + onDragBoxSelect?.Invoke(selectionRect); + } + public void ForceEndDrag() + { + selectionBoxImage.gameObject.SetActive(false); + StopAllCoroutines(); + } + public void SetSelectionBoxSize(Vector3 position) + { + if (position.x < startPosition.x) + { + selectionRect.xMin = position.x; + selectionRect.xMax = startPosition.x; + } + else + { + selectionRect.xMin = startPosition.x; + selectionRect.xMax = position.x; + } + if (position.y < startPosition.y) + { + selectionRect.yMin = position.y; + selectionRect.yMax = startPosition.y; + } + else + { + selectionRect.yMin = startPosition.y; + selectionRect.yMax = position.y; + } + selectionBoxImage.rectTransform.offsetMin = selectionRect.min; + selectionBoxImage.rectTransform.offsetMax = selectionRect.max; + } + IEnumerator CoroutineOnDrag() + { + while (true) + { + SetSelectionBoxSize(Input.mousePosition); + yield return null; + } + } + } +} diff --git a/Assets/Scripts/XED/UI/Panel/Panel_DragHandler.cs.meta b/Assets/Scripts/XED/UI/Panel/Panel_DragHandler.cs.meta new file mode 100644 index 00000000..1899578f --- /dev/null +++ b/Assets/Scripts/XED/UI/Panel/Panel_DragHandler.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: cdd8bb536a64a014785b009185af4d29 \ No newline at end of file diff --git a/Assets/Scripts/XED/UI/Panel/Panel_ObjectAlign.cs b/Assets/Scripts/XED/UI/Panel/Panel_ObjectAlign.cs index a51a7e84..980bd942 100644 --- a/Assets/Scripts/XED/UI/Panel/Panel_ObjectAlign.cs +++ b/Assets/Scripts/XED/UI/Panel/Panel_ObjectAlign.cs @@ -3,12 +3,12 @@ using UnityEngine; using UnityEngine.UI; using XED.Asset; using XED.Util; -using WI.UI; +using WI.UI; namespace XED.UI { public class Panel_ObjectAlign : PanelBase - { + { public TMP_InputField InputField_GapX; public TMP_InputField InputField_GapZ; public TMP_InputField InputField_Row; @@ -20,8 +20,9 @@ namespace XED.UI private RenderObjectHandler renderObjectHandler; private float gapX = 0.0f; private float gapZ = 0.0f; - private int rowX = 0; - private int rowZ = 0; + private int row = 0; + private int col = 0; + private int direction = 0; public override void AfterAwake() { CustomAssetConnector assetConnector = FindSingle(); @@ -50,29 +51,48 @@ namespace XED.UI } void OnRowChanged(string input) { - if (!int.TryParse(input, out rowX)) + if (!int.TryParse(input, out row)) { return; } } void OnColChanged(string input) { - if (!int.TryParse(input, out rowZ)) + if (!int.TryParse(input, out col)) { return; } } void OnAlignXAxis() { - + if (direction < 4) + { + direction = 4; + } + else if (direction > 4) + { + direction = 0; + } + renderObjectHandler.AlignObjects(0, 0, gapX, gapZ, direction); + direction++; } void OnAlignZAxis() { - + if (direction < 5) + { + direction = 5; + } + else if (direction > 5) + { + direction = 1; + } + renderObjectHandler.AlignObjects(0, 0, gapX, gapZ, direction); + direction++; } void OnAlignGrid() { - + renderObjectHandler.AlignObjects(row, col, gapX, gapZ, direction); + direction++; } } -} +} \ No newline at end of file