From b5f177f63bd9cccacca4437cc2ae9e799d7a7843 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=A0=95=EC=98=81=EB=AF=BC?= <117150306+jym04@users.noreply.github.com> Date: Mon, 9 Feb 2026 21:11:49 +0900 Subject: [PATCH 1/5] =?UTF-8?q?[=EC=A0=95=EC=98=81=EB=AF=BC]=20=EC=95=84?= =?UTF-8?q?=EC=9D=B4=EC=BD=98=20=ED=99=9C=EC=84=B1=ED=99=94/=EB=B9=84?= =?UTF-8?q?=ED=99=9C=EC=84=B1=ED=99=94=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 26.02.09 - 아이콘 활성화/비활성화 기능 추가 --- Assets/Scripts/Camera/OrbitalController.cs | 10 +++---- .../ActiveFloorControlPanelCommand.cs | 27 ------------------- .../ActiveFloorControlPanelCommand.cs.meta | 2 -- .../UICommand/ActiveMachineInfoItemCommand.cs | 20 -------------- .../ActiveMachineInfoItemCommand.cs.meta | 2 -- .../Managements/MachineInfoItemManager.cs | 6 +++-- Assets/Scripts/ChunilENG/UI/LeftSidePanel.cs | 11 +++++--- 7 files changed, 17 insertions(+), 61 deletions(-) delete mode 100644 Assets/Scripts/ChunilENG/Command/UICommand/ActiveFloorControlPanelCommand.cs delete mode 100644 Assets/Scripts/ChunilENG/Command/UICommand/ActiveFloorControlPanelCommand.cs.meta delete mode 100644 Assets/Scripts/ChunilENG/Command/UICommand/ActiveMachineInfoItemCommand.cs delete mode 100644 Assets/Scripts/ChunilENG/Command/UICommand/ActiveMachineInfoItemCommand.cs.meta diff --git a/Assets/Scripts/Camera/OrbitalController.cs b/Assets/Scripts/Camera/OrbitalController.cs index b8efcda6..e3b71c59 100644 --- a/Assets/Scripts/Camera/OrbitalController.cs +++ b/Assets/Scripts/Camera/OrbitalController.cs @@ -230,11 +230,11 @@ namespace OCTOPUS_TWIN currentAzimuth += input.mouseX * rotateSpeed; currentAzimuth %= 360; - if(viewMode == ViewMode.PerspectiveView) - { - currentElevation -= input.mouseY * rotateSpeed; - currentElevation = Mathf.Clamp(currentElevation, minElevation, maxElevation); - } + //if(viewMode == ViewMode.PerspectiveView) + //{ + // currentElevation -= input.mouseY * rotateSpeed; + // currentElevation = Mathf.Clamp(currentElevation, minElevation, maxElevation); + //} isRotateOperation = true; } diff --git a/Assets/Scripts/ChunilENG/Command/UICommand/ActiveFloorControlPanelCommand.cs b/Assets/Scripts/ChunilENG/Command/UICommand/ActiveFloorControlPanelCommand.cs deleted file mode 100644 index 353cdc9d..00000000 --- a/Assets/Scripts/ChunilENG/Command/UICommand/ActiveFloorControlPanelCommand.cs +++ /dev/null @@ -1,27 +0,0 @@ -using ChunilENG.Management; -using UnityEngine; -using UVC.UI.Commands; - -namespace ChunilENG.UI.Command -{ - public class ActiveFloorControlPanelCommand : ICommand - { - private bool isActive; - - public void Execute(object? parameter = null) - { - var uiManager = ChunilENGSceneMain.Instance.GetManager(); - - if (!isActive) - { - uiManager.GetCanvas().GetPanel().Open(); - isActive = true; - } - else - { - uiManager.GetCanvas().GetPanel().Close(); - isActive = false; - } - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/ChunilENG/Command/UICommand/ActiveFloorControlPanelCommand.cs.meta b/Assets/Scripts/ChunilENG/Command/UICommand/ActiveFloorControlPanelCommand.cs.meta deleted file mode 100644 index b923619b..00000000 --- a/Assets/Scripts/ChunilENG/Command/UICommand/ActiveFloorControlPanelCommand.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: 354196db0cc909b49b89c97f06bb1528 \ No newline at end of file diff --git a/Assets/Scripts/ChunilENG/Command/UICommand/ActiveMachineInfoItemCommand.cs b/Assets/Scripts/ChunilENG/Command/UICommand/ActiveMachineInfoItemCommand.cs deleted file mode 100644 index 17b50ebf..00000000 --- a/Assets/Scripts/ChunilENG/Command/UICommand/ActiveMachineInfoItemCommand.cs +++ /dev/null @@ -1,20 +0,0 @@ -using ChunilENG; -using ChunilENG.Management; -using ChunilENG.UI; -using UnityEngine; -using UVC.UI.Commands; - -namespace ChunilENG.UI.Command -{ - public class ActiveMachineInfoItemCommand : ICommand - { - private bool isActive = true; - public void Execute(object? parameter = null) - { - var itemManager = ChunilENGSceneMain.Instance.GetManager(); - isActive = !isActive; - itemManager.ActiveIcons(isActive); - } - } -} - diff --git a/Assets/Scripts/ChunilENG/Command/UICommand/ActiveMachineInfoItemCommand.cs.meta b/Assets/Scripts/ChunilENG/Command/UICommand/ActiveMachineInfoItemCommand.cs.meta deleted file mode 100644 index 4a9bd4f0..00000000 --- a/Assets/Scripts/ChunilENG/Command/UICommand/ActiveMachineInfoItemCommand.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: dc27e9cd507dea347ade0e5e30c38bde \ No newline at end of file diff --git a/Assets/Scripts/ChunilENG/Managements/MachineInfoItemManager.cs b/Assets/Scripts/ChunilENG/Managements/MachineInfoItemManager.cs index 0648823b..39255355 100644 --- a/Assets/Scripts/ChunilENG/Managements/MachineInfoItemManager.cs +++ b/Assets/Scripts/ChunilENG/Managements/MachineInfoItemManager.cs @@ -26,7 +26,7 @@ namespace ChunilENG.Management public Action onClickKPIToMachine; public float defaultNameHeight = 2f; - + private bool activeIconEnable = true; [Header("Scale Settings")] [Range(0.1f, 1.5f)] public float minScale; [Range(0.5f, 3f)] public float maxScale; @@ -93,6 +93,7 @@ namespace ChunilENG.Management } void MachineIconsActive(Machine machine) { + if (!activeIconEnable) return; if(machine == null) return; var currentFloor = ChunilENGSceneMain.Instance.building.GetCurFloor(); var machineInFloor = machine.GetComponentInParent(); @@ -151,7 +152,8 @@ namespace ChunilENG.Management } public void ActiveIcons(bool isActive) { - foreach(var icon in itemToMachines.Keys) + activeIconEnable = isActive; + foreach (var icon in itemToMachines.Keys) { icon.gameObject.SetActive(isActive); } diff --git a/Assets/Scripts/ChunilENG/UI/LeftSidePanel.cs b/Assets/Scripts/ChunilENG/UI/LeftSidePanel.cs index b2e985be..14da9b38 100644 --- a/Assets/Scripts/ChunilENG/UI/LeftSidePanel.cs +++ b/Assets/Scripts/ChunilENG/UI/LeftSidePanel.cs @@ -1,4 +1,5 @@ -using ChunilENG.UI.Command; +using ChunilENG.Management; +using ChunilENG.UI.Command; using Cysharp.Threading.Tasks; using OCTOPUS_TWIN; using OCTOPUS_TWIN.Command; @@ -99,8 +100,12 @@ namespace ChunilENG.UI toolbarModel.AddToggleButton("button_wall_control", false, "Prefabs/UI/Toolbar/images/IMG_WallControl_on", "Prefabs/UI/Toolbar/images/IMG_WallControl_off", - (isSelected) => Debug.Log($"내/외벽 조절 UI 활성화 상태 : {(isSelected ? "활성화" : "비활성화")} (OnToggle 콜백)"), - new ActiveMachineInfoItemCommand(), + (isSelected) => + { + var itemManager = ChunilENGSceneMain.Instance.GetManager(); + itemManager.ActiveIcons(!isSelected); + }, + new ActiveWallControlPanelCommand(), "내/외벽 조절 UI를 활성화/비활성화 합니다."); // 라이브러리 From 5f9bf58c32725d027dc4df4bc7cb4f2753204c61 Mon Sep 17 00:00:00 2001 From: binmo7575-maker Date: Mon, 9 Feb 2026 21:18:49 +0900 Subject: [PATCH 2/5] =?UTF-8?q?[=EB=B0=A9=EC=86=8C=EC=97=B0]=20Octopus=5FT?= =?UTF-8?q?win=20=EC=94=AC=20=EC=B9=B4=EB=A9=94=EB=9D=BC=20=ED=8F=AC?= =?UTF-8?q?=EC=9D=B8=ED=8A=B8=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. UI 이미지 수정 2. 카메라 포인트(agentic ai) 추가 --- .../Factory_Interior/OCTODAY_Twin.unity | 176 +++++++++++------- Assets/Scenes/SystemScene.unity | 139 +------------- 2 files changed, 118 insertions(+), 197 deletions(-) diff --git a/Assets/OCTODAY_Twin/Factory_Interior/Scenes/Factory_Interior/OCTODAY_Twin.unity b/Assets/OCTODAY_Twin/Factory_Interior/Scenes/Factory_Interior/OCTODAY_Twin.unity index e9b96233..5f00c292 100644 --- a/Assets/OCTODAY_Twin/Factory_Interior/Scenes/Factory_Interior/OCTODAY_Twin.unity +++ b/Assets/OCTODAY_Twin/Factory_Interior/Scenes/Factory_Interior/OCTODAY_Twin.unity @@ -9329,6 +9329,68 @@ Transform: m_CorrespondingSourceObject: {fileID: 4301870690972932130, guid: 194fc48267c4a8546b1cd3cf81b72c0f, type: 3} m_PrefabInstance: {fileID: 195784722} m_PrefabAsset: {fileID: 0} +--- !u!1001 &196082805 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 510326597} + m_Modifications: + - target: {fileID: 3512242442729094994, guid: a78f4c86e34b3434dabcbf1bdb3444cd, type: 3} + propertyPath: m_LocalPosition.x + value: 24.92 + objectReference: {fileID: 0} + - target: {fileID: 3512242442729094994, guid: a78f4c86e34b3434dabcbf1bdb3444cd, type: 3} + propertyPath: m_LocalPosition.y + value: 0.01 + objectReference: {fileID: 0} + - target: {fileID: 3512242442729094994, guid: a78f4c86e34b3434dabcbf1bdb3444cd, type: 3} + propertyPath: m_LocalPosition.z + value: 12.94 + objectReference: {fileID: 0} + - target: {fileID: 3512242442729094994, guid: a78f4c86e34b3434dabcbf1bdb3444cd, type: 3} + propertyPath: m_LocalRotation.w + value: -0.7071037 + objectReference: {fileID: 0} + - target: {fileID: 3512242442729094994, guid: a78f4c86e34b3434dabcbf1bdb3444cd, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 3512242442729094994, guid: a78f4c86e34b3434dabcbf1bdb3444cd, type: 3} + propertyPath: m_LocalRotation.y + value: 0.7071099 + objectReference: {fileID: 0} + - target: {fileID: 3512242442729094994, guid: a78f4c86e34b3434dabcbf1bdb3444cd, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 3512242442729094994, guid: a78f4c86e34b3434dabcbf1bdb3444cd, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3512242442729094994, guid: a78f4c86e34b3434dabcbf1bdb3444cd, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3512242442729094994, guid: a78f4c86e34b3434dabcbf1bdb3444cd, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 9169771889041799776, guid: a78f4c86e34b3434dabcbf1bdb3444cd, type: 3} + propertyPath: m_Name + value: 4. CSS_prefab + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: a78f4c86e34b3434dabcbf1bdb3444cd, type: 3} +--- !u!4 &196082806 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 3512242442729094994, guid: a78f4c86e34b3434dabcbf1bdb3444cd, type: 3} + m_PrefabInstance: {fileID: 196082805} + m_PrefabAsset: {fileID: 0} --- !u!1001 &196326291 PrefabInstance: m_ObjectHideFlags: 0 @@ -21941,68 +22003,6 @@ Transform: m_CorrespondingSourceObject: {fileID: 8070779672533912818, guid: 4a3744e34338c53429c1b0e1fa714829, type: 3} m_PrefabInstance: {fileID: 453330637} m_PrefabAsset: {fileID: 0} ---- !u!1001 &455304156 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - serializedVersion: 3 - m_TransformParent: {fileID: 510326597} - m_Modifications: - - target: {fileID: 6978348453776653865, guid: 0790368270e4ae0419a62a1f7778f6a2, type: 3} - propertyPath: m_Name - value: 4. CSS - objectReference: {fileID: 0} - - target: {fileID: 7618644288684692450, guid: 0790368270e4ae0419a62a1f7778f6a2, type: 3} - propertyPath: m_LocalPosition.x - value: 24.92 - objectReference: {fileID: 0} - - target: {fileID: 7618644288684692450, guid: 0790368270e4ae0419a62a1f7778f6a2, type: 3} - propertyPath: m_LocalPosition.y - value: 0.01 - objectReference: {fileID: 0} - - target: {fileID: 7618644288684692450, guid: 0790368270e4ae0419a62a1f7778f6a2, type: 3} - propertyPath: m_LocalPosition.z - value: 12.94 - objectReference: {fileID: 0} - - target: {fileID: 7618644288684692450, guid: 0790368270e4ae0419a62a1f7778f6a2, type: 3} - propertyPath: m_LocalRotation.w - value: -0.7071037 - objectReference: {fileID: 0} - - target: {fileID: 7618644288684692450, guid: 0790368270e4ae0419a62a1f7778f6a2, type: 3} - propertyPath: m_LocalRotation.x - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 7618644288684692450, guid: 0790368270e4ae0419a62a1f7778f6a2, type: 3} - propertyPath: m_LocalRotation.y - value: 0.7071099 - objectReference: {fileID: 0} - - target: {fileID: 7618644288684692450, guid: 0790368270e4ae0419a62a1f7778f6a2, type: 3} - propertyPath: m_LocalRotation.z - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 7618644288684692450, guid: 0790368270e4ae0419a62a1f7778f6a2, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 7618644288684692450, guid: 0790368270e4ae0419a62a1f7778f6a2, type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 269.999 - objectReference: {fileID: 0} - - target: {fileID: 7618644288684692450, guid: 0790368270e4ae0419a62a1f7778f6a2, type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_RemovedGameObjects: [] - m_AddedGameObjects: [] - m_AddedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 0790368270e4ae0419a62a1f7778f6a2, type: 3} ---- !u!4 &455304157 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 7618644288684692450, guid: 0790368270e4ae0419a62a1f7778f6a2, type: 3} - m_PrefabInstance: {fileID: 455304156} - m_PrefabAsset: {fileID: 0} --- !u!114 &457411438 MonoBehaviour: m_ObjectHideFlags: 2 @@ -23017,6 +23017,55 @@ Transform: m_CorrespondingSourceObject: {fileID: 9064307636745932545, guid: 003e85a18ed389742ac31602abe72cf3, type: 3} m_PrefabInstance: {fileID: 489383363} m_PrefabAsset: {fileID: 0} +--- !u!1 &490108526 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 490108527} + - component: {fileID: 490108528} + m_Layer: 0 + m_Name: Agentic AI + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &490108527 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 490108526} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 29.04, y: 0.35, z: 12.888} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1005158937} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &490108528 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 490108526} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ec4594a576c99c74b90ad6e3c4c2ac4b, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::ChunilENG.Object.CameraPoint + floorIndex: 2 + azimuth: 90 + elevation: 26 + distance: 7 + TargetPivotTransform: {fileID: 0} --- !u!1001 &490751941 PrefabInstance: m_ObjectHideFlags: 0 @@ -24313,7 +24362,7 @@ Transform: - {fileID: 1458566683} - {fileID: 1388978136} - {fileID: 868533779} - - {fileID: 455304157} + - {fileID: 196082806} - {fileID: 5495658386985200873} - {fileID: 443938317} - {fileID: 27671608} @@ -44720,6 +44769,7 @@ Transform: - {fileID: 1740796822} - {fileID: 842397949} - {fileID: 503925392} + - {fileID: 490108527} m_Father: {fileID: 70695278} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &1005625676 diff --git a/Assets/Scenes/SystemScene.unity b/Assets/Scenes/SystemScene.unity index 442679d2..6d5c69de 100644 --- a/Assets/Scenes/SystemScene.unity +++ b/Assets/Scenes/SystemScene.unity @@ -2232,131 +2232,6 @@ RectTransform: m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 0.5, y: 0.5} ---- !u!1001 &1109772084 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - serializedVersion: 3 - m_TransformParent: {fileID: 2065615845} - m_Modifications: - - target: {fileID: 2015586183705257098, guid: 52ccb7d1523bbb34aa311042f6af11a8, type: 3} - propertyPath: m_Name - value: PlaybackListPanel - objectReference: {fileID: 0} - - target: {fileID: 2015586183705257098, guid: 52ccb7d1523bbb34aa311042f6af11a8, type: 3} - propertyPath: m_IsActive - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5290342058106165413, guid: 52ccb7d1523bbb34aa311042f6af11a8, type: 3} - propertyPath: m_Pivot.x - value: 0.5 - objectReference: {fileID: 0} - - target: {fileID: 5290342058106165413, guid: 52ccb7d1523bbb34aa311042f6af11a8, type: 3} - propertyPath: m_Pivot.y - value: 0.5 - objectReference: {fileID: 0} - - target: {fileID: 5290342058106165413, guid: 52ccb7d1523bbb34aa311042f6af11a8, type: 3} - propertyPath: m_AnchorMax.x - value: 0.5 - objectReference: {fileID: 0} - - target: {fileID: 5290342058106165413, guid: 52ccb7d1523bbb34aa311042f6af11a8, type: 3} - propertyPath: m_AnchorMax.y - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 5290342058106165413, guid: 52ccb7d1523bbb34aa311042f6af11a8, type: 3} - propertyPath: m_AnchorMin.x - value: 0.5 - objectReference: {fileID: 0} - - target: {fileID: 5290342058106165413, guid: 52ccb7d1523bbb34aa311042f6af11a8, type: 3} - propertyPath: m_AnchorMin.y - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 5290342058106165413, guid: 52ccb7d1523bbb34aa311042f6af11a8, type: 3} - propertyPath: m_SizeDelta.x - value: 353 - objectReference: {fileID: 0} - - target: {fileID: 5290342058106165413, guid: 52ccb7d1523bbb34aa311042f6af11a8, type: 3} - propertyPath: m_SizeDelta.y - value: 313 - objectReference: {fileID: 0} - - target: {fileID: 5290342058106165413, guid: 52ccb7d1523bbb34aa311042f6af11a8, type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5290342058106165413, guid: 52ccb7d1523bbb34aa311042f6af11a8, type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5290342058106165413, guid: 52ccb7d1523bbb34aa311042f6af11a8, type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5290342058106165413, guid: 52ccb7d1523bbb34aa311042f6af11a8, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 5290342058106165413, guid: 52ccb7d1523bbb34aa311042f6af11a8, type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5290342058106165413, guid: 52ccb7d1523bbb34aa311042f6af11a8, type: 3} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5290342058106165413, guid: 52ccb7d1523bbb34aa311042f6af11a8, type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5290342058106165413, guid: 52ccb7d1523bbb34aa311042f6af11a8, type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5290342058106165413, guid: 52ccb7d1523bbb34aa311042f6af11a8, type: 3} - propertyPath: m_AnchoredPosition.y - value: -434 - objectReference: {fileID: 0} - - target: {fileID: 5290342058106165413, guid: 52ccb7d1523bbb34aa311042f6af11a8, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5290342058106165413, guid: 52ccb7d1523bbb34aa311042f6af11a8, type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5290342058106165413, guid: 52ccb7d1523bbb34aa311042f6af11a8, type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5477525448751655022, guid: 52ccb7d1523bbb34aa311042f6af11a8, type: 3} - propertyPath: m_AnchorMax.x - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 5477525448751655022, guid: 52ccb7d1523bbb34aa311042f6af11a8, type: 3} - propertyPath: m_AnchorMax.y - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 5477525448751655022, guid: 52ccb7d1523bbb34aa311042f6af11a8, type: 3} - propertyPath: m_SizeDelta.x - value: -1.5 - objectReference: {fileID: 0} - - target: {fileID: 8100983100533929295, guid: 52ccb7d1523bbb34aa311042f6af11a8, type: 3} - propertyPath: m_SizeDelta.y - value: 5 - objectReference: {fileID: 0} - - target: {fileID: 9138834436198834237, guid: 52ccb7d1523bbb34aa311042f6af11a8, type: 3} - propertyPath: m_AnchorMax.x - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 9138834436198834237, guid: 52ccb7d1523bbb34aa311042f6af11a8, type: 3} - propertyPath: m_AnchorMax.y - value: 1 - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_RemovedGameObjects: [] - m_AddedGameObjects: [] - m_AddedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 52ccb7d1523bbb34aa311042f6af11a8, type: 3} --- !u!1001 &1168843108 PrefabInstance: m_ObjectHideFlags: 0 @@ -3631,12 +3506,13 @@ PrefabInstance: propertyPath: m_IsActive value: 0 objectReference: {fileID: 0} + - target: {fileID: 9018949087606917739, guid: 0312eabdb9db59f41b04acd492040a66, type: 3} + propertyPath: m_SizeDelta.y + value: 120 + objectReference: {fileID: 0} m_RemovedComponents: [] m_RemovedGameObjects: [] - m_AddedGameObjects: - - targetCorrespondingSourceObject: {fileID: 1813555272631186170, guid: 0312eabdb9db59f41b04acd492040a66, type: 3} - insertIndex: -1 - addedObject: {fileID: 2080567709} + m_AddedGameObjects: [] m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 0312eabdb9db59f41b04acd492040a66, type: 3} --- !u!114 &1758853234 stripped @@ -4581,11 +4457,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: c8cb2092b3edb8c45a6c83e42f465f94, type: 3} m_Name: m_EditorClassIdentifier: Assembly-CSharp::UVC.Studio.Manager.SelectionInputHandler ---- !u!224 &2080567709 stripped -RectTransform: - m_CorrespondingSourceObject: {fileID: 5290342058106165413, guid: 52ccb7d1523bbb34aa311042f6af11a8, type: 3} - m_PrefabInstance: {fileID: 1109772084} - m_PrefabAsset: {fileID: 0} --- !u!1 &2082176946 GameObject: m_ObjectHideFlags: 0 From a113263c356c9211d0817c1f787a02780b450dff Mon Sep 17 00:00:00 2001 From: binmo7575-maker Date: Mon, 9 Feb 2026 21:20:41 +0900 Subject: [PATCH 3/5] =?UTF-8?q?[=EB=B0=A9=EC=86=8C=EC=97=B0]=20=EB=9D=BC?= =?UTF-8?q?=EC=9D=B4=EB=B8=8C=EB=9F=AC=EB=A6=AC=20=EB=B0=B0=EC=B9=98=20?= =?UTF-8?q?=EC=84=A4=EB=B9=84=20Hover=20Effect=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Scenes/SystemScene.unity | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/Assets/Scenes/SystemScene.unity b/Assets/Scenes/SystemScene.unity index 6d5c69de..3f281fc8 100644 --- a/Assets/Scenes/SystemScene.unity +++ b/Assets/Scenes/SystemScene.unity @@ -2882,6 +2882,7 @@ GameObject: - component: {fileID: 1603599219} - component: {fileID: 1603599218} - component: {fileID: 1603599220} + - component: {fileID: 1603599221} m_Layer: 10 m_Name: Camera m_TagString: MainCamera @@ -2995,7 +2996,7 @@ Camera: m_HDR: 1 m_AllowMSAA: 1 m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 + m_ForceIntoRT: 1 m_OcclusionCulling: 1 m_StereoConvergence: 10 m_StereoSeparation: 0.022 @@ -3015,6 +3016,31 @@ MonoBehaviour: serializedVersion: 2 m_Bits: 4294967295 m_MaxRayIntersections: 0 +--- !u!114 &1603599221 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1603599216} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7bb42831ee5422f409e7f24f9e7488ea, type: 3} + m_Name: + m_EditorClassIdentifier: EPO::EPOOutline.Outliner + stage: 1 + renderingStrategy: 0 + renderingMode: 0 + outlineLayerMask: -1 + primaryBufferSizeMode: 0 + primaryRendererScale: 0.75 + primarySizeReference: 800 + blurShift: 1 + dilateShift: 1 + dilateIterations: 1 + dilateQuality: 0 + blurIterations: 1 + blurType: 1 --- !u!1 &1609824333 GameObject: m_ObjectHideFlags: 0 From 738df97bed19e8e5ce347bd1cb5e88cf1361367e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=A0=95=EC=98=81=EB=AF=BC?= <117150306+jym04@users.noreply.github.com> Date: Mon, 9 Feb 2026 21:25:17 +0900 Subject: [PATCH 4/5] =?UTF-8?q?[=EC=A0=95=EC=98=81=EB=AF=BC]=20=EC=95=84?= =?UTF-8?q?=EC=9D=B4=EC=BD=98=20=EB=B9=84=ED=99=9C=EC=84=B1=ED=99=94=20?= =?UTF-8?q?=EC=8B=9C=EC=9E=91=20=EB=B3=80=EA=B2=BD=20=EB=A7=9F=20=EC=84=A4?= =?UTF-8?q?=EB=B9=84=20=EC=95=84=EC=9D=B4=EC=BD=98=20=EC=98=A4=EB=A5=98=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 26.02.09 - 아이콘 비활성화 시작 변경 - 설비 아이콘 오류 수정 --- Assets/Scripts/ChunilENG/Managements/MachineInfoItemManager.cs | 2 +- Assets/Scripts/ChunilENG/UI/LeftSidePanel.cs | 2 +- Assets/Scripts/ChunilENG/UI/MachineInfoItem/MachineInfoItem.cs | 3 +-- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/Assets/Scripts/ChunilENG/Managements/MachineInfoItemManager.cs b/Assets/Scripts/ChunilENG/Managements/MachineInfoItemManager.cs index 39255355..5e9f18a7 100644 --- a/Assets/Scripts/ChunilENG/Managements/MachineInfoItemManager.cs +++ b/Assets/Scripts/ChunilENG/Managements/MachineInfoItemManager.cs @@ -26,7 +26,7 @@ namespace ChunilENG.Management public Action onClickKPIToMachine; public float defaultNameHeight = 2f; - private bool activeIconEnable = true; + private bool activeIconEnable; [Header("Scale Settings")] [Range(0.1f, 1.5f)] public float minScale; [Range(0.5f, 3f)] public float maxScale; diff --git a/Assets/Scripts/ChunilENG/UI/LeftSidePanel.cs b/Assets/Scripts/ChunilENG/UI/LeftSidePanel.cs index 14da9b38..7aa0910a 100644 --- a/Assets/Scripts/ChunilENG/UI/LeftSidePanel.cs +++ b/Assets/Scripts/ChunilENG/UI/LeftSidePanel.cs @@ -97,7 +97,7 @@ namespace ChunilENG.UI "화면을 녹화합니다."); // 내/외벽 활성화/비활성화 - toolbarModel.AddToggleButton("button_wall_control", false, + toolbarModel.AddToggleButton("button_wall_control", true, "Prefabs/UI/Toolbar/images/IMG_WallControl_on", "Prefabs/UI/Toolbar/images/IMG_WallControl_off", (isSelected) => diff --git a/Assets/Scripts/ChunilENG/UI/MachineInfoItem/MachineInfoItem.cs b/Assets/Scripts/ChunilENG/UI/MachineInfoItem/MachineInfoItem.cs index ec526296..e61ae90e 100644 --- a/Assets/Scripts/ChunilENG/UI/MachineInfoItem/MachineInfoItem.cs +++ b/Assets/Scripts/ChunilENG/UI/MachineInfoItem/MachineInfoItem.cs @@ -188,8 +188,7 @@ namespace ChunilENG.UI public void OnPointerExit(PointerEventData eventData) { - var controller = OctopusTwinAppMain.Instance.cameraController; - if (isExpand && !controller.IsCameraOperating) + if (isExpand) { Default_KPI.gameObject.SetActive(true); Expand_KPI.gameObject.SetActive(false); From 4fe604c7cc96c8c41422e458d40cf60077726875 Mon Sep 17 00:00:00 2001 From: binmo7575-maker Date: Mon, 9 Feb 2026 21:38:15 +0900 Subject: [PATCH 5/5] =?UTF-8?q?[=EB=B0=A9=EC=86=8C=EC=97=B0]=20Default=20?= =?UTF-8?q?=EC=B9=B4=EB=A9=94=EB=9D=BC=20=ED=8F=AC=EC=9D=B8=ED=8A=B8=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (+ UI 해상도 낮은 이미지 수정) --- .../Scripts/UVC/Manager/GizmoController.cs | 14 +-- .../Factory_Interior/OCTODAY_Twin.unity | 58 ++++++++- .../Sprites/CompleteAlarm/MachineName_bg.png | Bin 478 -> 1759 bytes .../UI/Sprites/CompleteAlarm/MachineOFF.png | Bin 635 -> 2719 bytes .../UI/Sprites/CompleteAlarm/MachineON.png | Bin 687 -> 2629 bytes .../Sprites/CompleteAlarm/ProcessRate_bg.png | Bin 450 -> 2110 bytes .../UI/Sprites/ProgressBoard/IMG_Effect2.png | Bin 10573 -> 12123 bytes .../TotalStatusBoard/BlueBackground.png | Bin 0 -> 127492 bytes .../TotalStatusBoard/BlueBackground.png.meta | 117 ++++++++++++++++++ .../Sprites/TotalStatusBoard/IMG_Status.png | Bin 2442 -> 4115 bytes Assets/Scenes/SystemScene.unity | 6 +- .../OctopusTwin/ShortcutConfigurator.cs | 56 ++++----- 12 files changed, 211 insertions(+), 40 deletions(-) create mode 100644 Assets/Resources/UI/Sprites/TotalStatusBoard/BlueBackground.png create mode 100644 Assets/Resources/UI/Sprites/TotalStatusBoard/BlueBackground.png.meta diff --git a/Assets/DownloadAssets/XRLib/Scripts/UVC/Manager/GizmoController.cs b/Assets/DownloadAssets/XRLib/Scripts/UVC/Manager/GizmoController.cs index 7fe41b5a..656cca75 100644 --- a/Assets/DownloadAssets/XRLib/Scripts/UVC/Manager/GizmoController.cs +++ b/Assets/DownloadAssets/XRLib/Scripts/UVC/Manager/GizmoController.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using System; using System.Collections.Generic; using RTGLite; @@ -143,7 +143,7 @@ namespace UVC.Studio.Manager /// /// 설정할 도구 타입 /// 현재 선택된 객체 수 - public void SetActiveTool(TransformToolType toolType, int selectedCount = 0) + public void SetActiveTool(TransformToolType toolType) { if (!_initialized) { @@ -160,11 +160,11 @@ namespace UVC.Studio.Manager if (_rotateGizmo != null) _rotateGizmo.enabled = false; if (_scaleGizmo != null) _scaleGizmo.enabled = false; - if (selectedCount == 0) - { - Debug.Log("[GizmoController] No selected objects. Gizmos will remain disabled."); - return; - } + //if (selectedCount == 0) + //{ + // Debug.Log("[GizmoController] No selected objects. Gizmos will remain disabled."); + // return; + //} // 선택된 도구에 해당하는 기즈모 활성화 switch (toolType) diff --git a/Assets/OCTODAY_Twin/Factory_Interior/Scenes/Factory_Interior/OCTODAY_Twin.unity b/Assets/OCTODAY_Twin/Factory_Interior/Scenes/Factory_Interior/OCTODAY_Twin.unity index 5f00c292..1b4b3111 100644 --- a/Assets/OCTODAY_Twin/Factory_Interior/Scenes/Factory_Interior/OCTODAY_Twin.unity +++ b/Assets/OCTODAY_Twin/Factory_Interior/Scenes/Factory_Interior/OCTODAY_Twin.unity @@ -23042,13 +23042,13 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 490108526} serializedVersion: 2 - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 29.04, y: 0.35, z: 12.888} + m_LocalRotation: {x: -0, y: -0.48600605, z: -0, w: 0.8739554} + m_LocalPosition: {x: 29.8, y: 0.35, z: 12.888} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1005158937} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_LocalEulerAnglesHint: {x: 0, y: -58.157, z: 0} --- !u!114 &490108528 MonoBehaviour: m_ObjectHideFlags: 0 @@ -44765,6 +44765,7 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: + - {fileID: 1698040805} - {fileID: 1877012570} - {fileID: 1740796822} - {fileID: 842397949} @@ -78294,6 +78295,55 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 034bc47afcbf5e141a58d5c20b7808e4, type: 3} m_Name: m_EditorClassIdentifier: +--- !u!1 &1698040804 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1698040805} + - component: {fileID: 1698040806} + m_Layer: 0 + m_Name: Default + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1698040805 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1698040804} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 2.3, y: 1.87, z: -1.21} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1005158937} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1698040806 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1698040804} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ec4594a576c99c74b90ad6e3c4c2ac4b, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::ChunilENG.Object.CameraPoint + floorIndex: 2 + azimuth: 270 + elevation: 26 + distance: 8.5 + TargetPivotTransform: {fileID: 0} --- !u!114 &1698921192 MonoBehaviour: m_ObjectHideFlags: 2 @@ -88406,7 +88456,7 @@ Transform: m_GameObject: {fileID: 1877012569} serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 23.1, y: 0, z: -1.21} + m_LocalPosition: {x: 13.939, y: 0, z: 4.704} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] diff --git a/Assets/Resources/UI/Sprites/CompleteAlarm/MachineName_bg.png b/Assets/Resources/UI/Sprites/CompleteAlarm/MachineName_bg.png index 8391537b433a93581700a1dbd26f7d4926c213d2..3622d2b9e538c6d62069a1f7707a06703390f911 100644 GIT binary patch delta 1758 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 Z^Iu$rcv%ngr@;UK002ovPDHLkV1nYZ2893s delta 625 zcmV-%0*?Kk75fAsiBL{Q4GJ0x0000DNk~Le0000$0000P2nGNE0DNrH)1 zSfDm)mT6J8Va$b(n@Fq8>v(Zq0vMVsIUPlt?-;>)<6WbgdM-+ z?(EENNY2@LUJMyRyWKWX>>$<=e;Wu>#i&zMkv9w@HS9&BU!xL!j5w+m3g&AzD=(Rh ze70J4j5^bSfJ`A4c6Y_Mx>`X~3PxD{-u+w)-vI--ks(yCV33pfO}IRw_x{Y5vpw*eb8AoyM`i*EE7;O3cs z5FgDZ3)3T-qPFz50gVZ-e^+!xTLZW&1VtKHJJ02jPC%V2_zEaS}VcBm2EpI`rs_5XZ;^H4Qx z@&z~c1Zq;^d(vV9bAl!02kxU$X^#0RkrQ4RI#hCWcuuez7;%ciM?NaU45{P5G!8?9 zn>q&fHeBAh!l5~iNT>4`ieqA!F={r^2rfVr=Qa}5flx95S#(aog;J+79>O*r0u!gDKnu!4DTO|OwzSLd z=Ct|W|NY_V-Derstgg|EJ0C+jGx3zeiMUZ7qtTIMd2YyP_ySbco*D1{ebL z18y~6y?{iZJ zz$?I4&0Qcj0nY=o8~YKex~7_yeG@ zII)XswQ^vgC{3evRBJ}{9KlceO=V)A3B*Uo`x^cUFw>ldg-jsRfE*y%sq<{vIacn= zVco$ElvbAA$a@sUjkd8#WDm?@_Rv{$O1c>@lmN4U_Xx5;c_0SQMfBSqB3qD@t z+G{9Eu#mmUg0b`Y@oiJQ4cP=_HTANwsREHB+xLMnPOHY#dC&6x7h9V0JVo&fy4r0{p0K%ht3>k&gOX(T|Cv;XDLd+=+V9#uTNe^dglR7-5&uH zfl7ZmE6P4&wUapV3O;1|h8ZdjrP(01C^jj!>A*N+%N~2@8xhD-<1XUHTZi9f_Iq=6 zBd#<%#3scy#YP>-HXC=pe8ie&oWtA{Cog__>wIcmhXjh!Jc%NTmogS{-+-Tb6UzD< z5lBztX57KrC`*^9Q!o6KaJgVyIc+%;((bZ%m71`Nqt_!4x$D>g47WBOJadS9{xXxx zRY7;nSCs3fO-vi!xpyrCJEz;bb^{~5xuy8pgUq#yC!ViwN?BWJ$S*`e4_=jz=XZl^Y<@v z$<5F6$2=7!WaJ+Gz-7xe+8dj1)E?x!K!Lcq)HRe>RWN3ChD(8p67F

cl@E$|Er* z!P+c$6=}fN4Xq$gTE!tO+w-c5Lx~v9l$~|iw2gRU`#x6?iAE{1hRMpNX4r~5U8{(q zL<+Kc?0#e$DQ(x_Zi*6e#Ky(eZH%=GBnB8|9kK2BcB*UC8BvLB#Kw1@ zl#Hfsj5eC67syb_-DMrIt4K0CDoW%dIocdfvxZs)GT1(1|LISIF*ijCIsZPj*Qt51 zRUrMXJ(brgDJT|i6Ge%9@{0?cVw?I~1tNh_^_;j+sQVA4#ZYyvij$r>6?$6*(%sr~ z@{-?^WGhOuMsh^k=w=m&n=kw~<$gTIE(zd{8G4H;=@&aczD5j-o^y4mN+uDv%0$IV?qKNjTVi zg;gNmSbLJ=C5By5S`H32|E*OZZnq@e+DVaGMQJ%mEkqlqtO9YnCF$8AmFQNISW!_T zpP1G$bZ_sv7qoKRDv-~tJ+ZB0NlTFoD2fvK^hrr`cSQqPDUZsF;Q60t}Pb{nFFy;gx#0o$!3#`GGk`w%7K5gQ-g{SJHc zcB2WmoAi(E$6ljSB`dt5L@r|E4oAH8TCfVlBfY~t{XG($C`v@(#l|-}2_zqI3q;Sj zUXT>+IKg37JGi&h7K+aK7LWbD3*tjnZG?=`)`0@pY zuNb5Gd6kIbdXra6#|mqMJmA40Zs|%DCG2@%aJF3>7~8KGhpz%U$AGxH23bAsTs6T} zS3yxCw1Cc4lc=G=0y;8am9;@0v~b+Bfts(P1eFD2=i9|0thS58S481Ldl1##eKX0t zWxPM0I?>)Nw*I`+cy9tZ2RvtQT$-_%E^RyeW1fl zst#W<>B~)#^?EwANoM7g<*uUaiV{wU&5G@c4cpjlY@MbGMAAIWkSsvf#z9@uSw89a zPVT{q(ku~M6`K{?wNVEA%-Fgk4P`YsA@?bO+fmnqw7Xb5egRQL-N?KZCE$pSE*Zbj zWwQ><0gn3m{l=vI5g)BT+8eXevv?_Ek**|4vqfxEY;;EYy-wX?)9V^~hSNQW<2Z8# zpKb5REBKH{H$U!F3{g=+MqG3puTJ`dldly<81m7o#$N&vVu3BdID5yTGl!Y8c^*Zc z8L|~6==5mcjn^kHBfawgr|ypcIp?ix%(I#z5J9qQZIXB@r;4FZ zpw^E3W53UyBry;I5oBlnGVr)lr>rK+_PoX#=R)m@;y1)y{eeN*{A&24-d2rTvmt-d z*Kw}D1yYBEW93MMu2bjPvU9B5m&3Y)8z`-mBWFeN4{c+U$R3!*?4h&hlytMVVI}68 z!m${7Fa#p>GN%F_sUhl+Rb)$ko~vm4&caWe>cJ^WqmFGyrvA_sCM$k{4S00yF&Et) zrK5r^kh=Snhk?aFM_&VFZ?e5`r>pet-mms^qNIrGnreT{L5aYOBR!K-xxMQUS8ATo zsUzu_ATfPDIS)JoywR9r++YdBTDIy1;30D?+#n*3!jh8|TsY`YI1j?TSYha5tYVeT^tYnRzuL=0;!{`*%UouFYl%(ex|}i0?MJ0 z->c6CN+8x1CCl7eem{^eQd%7U0saiEw};7wlR&I|Ptp(ptfC3f}oYRJaq37&I1n00000NkvXXu0mjfb~g9v delta 677 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 S=KbHQdEJez&X;d}aQi>vz`)o5 literal 10573 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 literal 2442 zcmV;533c{~P)@~0drDELIAGL9O(c600d`2O+f$vv5yPXxC7Jyba3gwbU->Fw*n^>gj8Us0!RgRDlnVK`*c%KQA39dl{^soQ3Q4e$S^+WT&m4Qew!o3Yb+?0!o#7G}&{&;vMA zE<>)&xHn^^^*x#Kub^7PpkBFv{v-fU!3Frzj7^Pv*$~_j4T5^*LYfL1z`->8B)-(@ z@ZJ#IPR*dU&)u7GDFAR{CR?t}_+BHpujO2s7oTeRyW7SEHPtkL)|sqHG^@JH*yj^D z7n)Vo%Zi}pBM5+A)Cg{yQFk(R6;<_X>q7uw0BQvHYLeBqtE#`0yzmF5^#NdjTySqR zUTsgOBj8@_Q{=_k?_UW344lcTJB=@p_$*_mSqmig0%?B$7!_B5t|FOczn{n$xp$-3 zM~Jxqz({Gff-RPBiHwP6YpX--T1R@-07g&az3uT7r5c}Hqy++CQZznCXIsHHGGyit z{2KYgSyv5UvNT)i7BbB2i-h%NG#?EB;0PM;YY!{5HQckdVVwv7oQaaqPGtxPYXEqs z;T3Yb-n$KvKa8*jaMlKwjhdYlLs$bqK%_llGqT&I%^F^R*ni0n00R;U?WJ@{!;8g- zz2*=AdZ6JIblqH@Rl}2voD>590h(Q{G<0%JDs3{q;I{Yj9sov0vo^ASA-s*Y)z8*& z-@3hD2mlkJ;e{Fx(gqFRc_9%1KrI?Rg*}y1inK!LTLVA?n)S0ct#&Fxzd!&0jYV1` zrzwCnyecFS0Kh>4t&!c)xvJrbMplIYz!4&?k(C@nixZ6-s%ro^o`&ZJQ#pjIu6^8y z002%zi#PN=tjZ2m*8%`I84XWBrcHhZ)inTg7ev7IDlB0Sl0DyyN@$NLM zssk2{4gdh0M5JK8C_BKvD*}^^0ML;@OL`I8k#-0G^hoP=IkdPsgmwr3bV##{Liyg> zA|Lkl_1hnh0s!dDY&Lr_4{Pt+*ZCLwfj#$j`Y8Z_u04C(>0et~JT;P2(E*?bWqF)e z*q7ch&jJAGgP*@i-p9@ZJN0&03jm;Vu8-}9_Lco75A4Kyk_sCD`m^@7U*{MZ#%L7*uZ9m2mlO-n|R#r zf6uh9KiR-eynSB;0MIu-i<3}bQ(*%@{|f7|KL`L|i2MrsB2-~-1pv^uU|@5DT>u!K z>cBR$lfMN3(6>L{_60p`02m1Z8vsUvzy^SkAg}>oBy3>+H50ji!$$x>Z$5h4FNMGk z>;wSlo?ko%1N$EV0Q9ZU?Fa?-CjkKTE%COuHn6weH|b#mK>rH&DhLI3A^?ECCEoTQ z8`!@qb^-u&FWKLi&1TOwu!Hvw0|4|xRfG51r6mFY!;^U1uZu%IxO<1~uN1kk_YM;P zKwqxB?Y9csT6<5X0s!cX-x68dfAYYlj|~9B;b-vs;tpg*`Nmsdn{TegTaRtVwEzIR;%DwUx+iTB0O&`g9WpOFAPpQqTLb`F zX0rA+ww$l*pp|#fy#N4OWdqvF-s+WlW~YUB&`tmVt%-Cuk~#<4i$CqW15*J2w8CWU z(#zbX)Ma*l@D6735dd1C;mO9UCO=>v_yMT^08T1UT|Y@vTAX~O$_9WFid5IlFAJjK zCU`0UfRhMR*N0yzHBe=9*;N2Ifk;t&_(k_3iSv_=4+ zfk^Rt`n!8Y%6M8M08oR57jd+gp^q6`T`8bz8nLpqwp$!0;lCW-nlCj1gci{q>&<1eUO2T?L7tJdP?Ts=K3E&Kv zth*h2Smy|B0Ov}>i!g>6*13|>> zx?D)#y25W)BWLV>iJ+Wj758_oXXo}^5a0lE`d&rb;%?O-PwsV~74=L8%)PtWzENsM z(%{f%Gq&#Wml-d1dp4VG1;AvuV6`K0wc{yz=C`LLh5Z6&=P zOGxh - /// Ű ڸ մϴ. + /// 단축키 관리자를 설정합니다. /// public async void SetupShortcutManager() { @@ -31,7 +31,7 @@ public class ShortcutConfigurator : MonoBehaviour selectionManager = InjectorAppContext.Instance.Get(); stageObjectManager = InjectorAppContext.Instance.Get(); - // StudioShortcutManager Ǵ + // StudioShortcutManager 생성 또는 가져오기 shortcutManager = ShortcutManager.Instance; if (shortcutManager == null) { @@ -40,7 +40,7 @@ public class ShortcutConfigurator : MonoBehaviour DontDestroyOnLoad(go); } - // Setting + // Setting 주입 Setting? currentSetting = setting; if (currentSetting == null && InjectorAppContext.Instance != null) { @@ -51,53 +51,53 @@ public class ShortcutConfigurator : MonoBehaviour shortcutManager.SetSetting(currentSetting); } - // ޴ Ű + // 메뉴 단축키 등록 RegisterMenuShortcuts(); - // Ű + // 도구 단축키 등록 RegisterToolShortcuts(); - Debug.Log("[SetupShortcutManager] Ű ڰ Ǿϴ."); + Debug.Log("[SetupShortcutManager] 단축키 관리자가 설정되었습니다."); } ///

- /// ޴ Ű մϴ. + /// 메뉴 단축키를 등록합니다. /// private void RegisterMenuShortcuts() { if (shortcutManager == null) return; - // Edit ޴ + // Edit 메뉴 shortcutManager.RegisterMenuShortcut("delete", new EditDeleteCommand(selectionManager!, stageObjectManager!)); } /// - /// Ű մϴ. + /// 도구 단축키를 등록합니다. /// private void RegisterToolShortcuts() { if (shortcutManager == null) return; - // Ű - SelectionManager - //shortcutManager.RegisterToolShortcut("select", () => - //{ - // if (selectionManager != null) selectionManager.SetActiveTool(TransformToolType.Select); - //}); + // 도구 단축키 - SelectionManager를 통해 기즈모 제어 + shortcutManager.RegisterToolShortcut("select", () => + { + if (selectionManager != null) selectionManager.Gizmo.SetActiveTool(TransformToolType.Select); + }); - //shortcutManager.RegisterToolShortcut("move", () => - //{ - // if (selectionManager != null) selectionManager.SetActiveTool(TransformToolType.Move); - //}); + shortcutManager.RegisterToolShortcut("move", () => + { + if (selectionManager != null) selectionManager.Gizmo.SetActiveTool(TransformToolType.Move); + }); - //shortcutManager.RegisterToolShortcut("rotate", () => - //{ - // if (selectionManager != null) selectionManager.SetActiveTool(TransformToolType.Rotate); - //}); + shortcutManager.RegisterToolShortcut("rotate", () => + { + if (selectionManager != null) selectionManager.Gizmo.SetActiveTool(TransformToolType.Rotate); + }); - //shortcutManager.RegisterToolShortcut("scale", () => - //{ - // if (selectionManager != null) selectionManager.SetActiveTool(TransformToolType.Scale); - //}); + shortcutManager.RegisterToolShortcut("scale", () => + { + if (selectionManager != null) selectionManager.Gizmo.SetActiveTool(TransformToolType.Scale); + }); shortcutManager.RegisterToolShortcut("node", () => {