From 1a828580c4fa1e3755ae7bc88a1e1fa3c5b1a0cc Mon Sep 17 00:00:00 2001 From: SOOBEEN HAN Date: Thu, 29 Jan 2026 11:38:28 +0900 Subject: [PATCH] =?UTF-8?q?[=ED=95=9C=EC=88=98=EB=B9=88]=20=EC=84=A4?= =?UTF-8?q?=EB=B9=84=20=EC=95=A0=EB=8B=88=EB=A9=94=EC=9D=B4=EC=85=98=20?= =?UTF-8?q?=EA=B4=80=EB=A0=A8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 26.01.29 - 층 선택 시 해당 층의 설비 애니메이션만 재생되도록 변경 (쿼터뷰) - 탑 뷰에선 모든 층의 설비 애니메이션이 재생되지 않도록 변경 --- .../ObjectCommand/ChangedFloorCommand.cs | 24 ++++++++++++ Assets/Scripts/ChunilENG/Objects/Machine.cs | 24 +++++++++++- Assets/Scripts/ChunilENG/UI/LeftSidePanel.cs | 37 ++++++++++++++++++- 3 files changed, 81 insertions(+), 4 deletions(-) diff --git a/Assets/Scripts/ChunilENG/Command/ObjectCommand/ChangedFloorCommand.cs b/Assets/Scripts/ChunilENG/Command/ObjectCommand/ChangedFloorCommand.cs index 5f8947cd..f523d01b 100644 --- a/Assets/Scripts/ChunilENG/Command/ObjectCommand/ChangedFloorCommand.cs +++ b/Assets/Scripts/ChunilENG/Command/ObjectCommand/ChangedFloorCommand.cs @@ -14,6 +14,30 @@ namespace ChunilENG.Command { var building = ChunilENGSceneMain.Instance.building; building.SetFloor(floorIndex); + + var cameraController = ChunilENGAppMain.Instance.cameraController; + var allMachines = building.GetMachines(); + + if (cameraController.viewMode == ViewMode.TopView) + { + foreach (var machine in allMachines) + { + machine.ReleaseAnimators(); + } + return; + } + + foreach(var machine in allMachines) + { + if(machine.GetMachineFloorIndex() == floorIndex) + { + machine.AssignAnimators(); + } + else + { + machine.ReleaseAnimators(); + } + } } } } diff --git a/Assets/Scripts/ChunilENG/Objects/Machine.cs b/Assets/Scripts/ChunilENG/Objects/Machine.cs index f72629f5..25bc6fd9 100644 --- a/Assets/Scripts/ChunilENG/Objects/Machine.cs +++ b/Assets/Scripts/ChunilENG/Objects/Machine.cs @@ -29,14 +29,34 @@ namespace ChunilENG public async UniTask Init() { centerPos = transform.GetMeshCenter(); - animators = GetComponentsInChildren(); - + animators = GetComponentsInChildren(true); // Cache animators highLighter = GetComponentInChildren(true); originScale = gameObject.transform.localScale; + ReleaseAnimators(); // Disable by default + await UniTask.CompletedTask; } + public void AssignAnimators() + { + if (animators == null) return; + foreach (var animator in animators) + { + if (animator != null) animator.enabled = true; + } + SetAnimationSpeed(); + } + + public void ReleaseAnimators() + { + if (animators == null) return; + foreach (var animator in animators) + { + if (animator != null) animator.enabled = false; + } + } + public void SetAnimationSpeed() { if (animators.Length == 0) diff --git a/Assets/Scripts/ChunilENG/UI/LeftSidePanel.cs b/Assets/Scripts/ChunilENG/UI/LeftSidePanel.cs index aff6358b..30f110fb 100644 --- a/Assets/Scripts/ChunilENG/UI/LeftSidePanel.cs +++ b/Assets/Scripts/ChunilENG/UI/LeftSidePanel.cs @@ -33,13 +33,46 @@ namespace ChunilENG.UI toolbarModel.AddRadioButton("CameraControlGroup", "Top View", false, "Prefabs/UI/Toolbar/images/ic_camera_top_on", "Prefabs/UI/Toolbar/images/ic_camera_top_off_white", - (isSelected) => { if (isSelected) Debug.Log("탑뷰 카메라 선택됨"); }, + (isSelected) => + { + if (isSelected) + { + var building = ChunilENGSceneMain.Instance.building; + if(building != null) + { + foreach(var machine in building.GetMachines()) + { + machine.ReleaseAnimators(); + } + } + } + }, new CameraViewModeChangedCommand(ViewMode.TopView), "Top View 시점으로 변경합니다."); toolbarModel.AddRadioButton("CameraControlGroup", "Quarter View", true, "Prefabs/UI/Toolbar/images/ic_camera_quarter_on", "Prefabs/UI/Toolbar/images/ic_camera_quarter_off_white", - (isSelected) => { if (isSelected) Debug.Log("쿼터뷰 카메라 선택됨"); }, + (isSelected) => + { + if (isSelected) + { + var building = ChunilENGSceneMain.Instance.building; + if (building == null) return; + + var currentFloorIndex = building.GetCurFloor().index; + foreach (var machine in building.GetMachines()) + { + if (machine.GetMachineFloorIndex() == currentFloorIndex) + { + machine.AssignAnimators(); + } + else + { + machine.ReleaseAnimators(); + } + } + } + }, new CameraViewModeChangedCommand(ViewMode.PerspectiveView), "Quarter View 시점으로 변경합니다.");