카메라 시점 기능 수정
This commit is contained in:
@@ -8,9 +8,11 @@ using RenderHeads.Media.AVProMovieCapture;
|
||||
using System.IO;
|
||||
using SFB;
|
||||
using CHN;
|
||||
using System.Linq;
|
||||
|
||||
public class Panel_ToolBar : PanelBase
|
||||
{
|
||||
private Dictionary<ViewMode, Button> viewButtons = new Dictionary<ViewMode, Button>();
|
||||
public Button Button_TopView;
|
||||
public Button Button_QuarterView;
|
||||
public Button Button_SholuderView;
|
||||
@@ -26,6 +28,7 @@ public class Panel_ToolBar : PanelBase
|
||||
private Image Image_MiniMapActive;
|
||||
private Image Image_FloorControlActive;
|
||||
|
||||
private Button currentViewButton;
|
||||
private CaptureBase capture;
|
||||
|
||||
public Action<ViewMode> onClickCameraView;
|
||||
@@ -47,6 +50,10 @@ public class Panel_ToolBar : PanelBase
|
||||
Button_Capture.onClick.AddListener(OnClickCapture);
|
||||
Button_FloorControl.onClick.AddListener(OnClickFloorControl);
|
||||
|
||||
viewButtons.Add(ViewMode.TopView, Button_TopView);
|
||||
viewButtons.Add(ViewMode.PerspectiveView, Button_QuarterView);
|
||||
viewButtons.Add(ViewMode.FirstPersonView, Button_SholuderView);
|
||||
|
||||
RecordSetting();
|
||||
CaptureSetting();
|
||||
}
|
||||
@@ -168,4 +175,24 @@ public class Panel_ToolBar : PanelBase
|
||||
{
|
||||
onClickCameraView?.Invoke(ViewMode.TopView);
|
||||
}
|
||||
private void SetViewButtonState(Button button)
|
||||
{
|
||||
if (currentViewButton != null)
|
||||
{
|
||||
var images = currentViewButton.GetComponentsInChildren<Image>(true);
|
||||
var image = images.Where(a => a != currentViewButton.image).First();
|
||||
|
||||
image.gameObject.SetActive(false);
|
||||
}
|
||||
currentViewButton = button;
|
||||
var currentButtonImages = currentViewButton.GetComponentsInChildren<Image>(true);
|
||||
var currentButtonImage = currentButtonImages.Where(a => a != currentViewButton.image).First();
|
||||
|
||||
currentButtonImage.gameObject.SetActive(true);
|
||||
}
|
||||
public void SetChangeViewButtonState(ViewMode viewMode)
|
||||
{
|
||||
var viewButton = viewButtons[viewMode];
|
||||
SetViewButtonState(viewButton);
|
||||
}
|
||||
}
|
||||
|
||||
132
Assets/WorkSpace/Personal/JYM/ViewManager.cs
Normal file
132
Assets/WorkSpace/Personal/JYM/ViewManager.cs
Normal file
@@ -0,0 +1,132 @@
|
||||
using CHN;
|
||||
using UnityEngine;
|
||||
using WI;
|
||||
|
||||
public class ViewManager : MonoBehaviour, ISingle
|
||||
{
|
||||
private Building building;
|
||||
private OrbitalController controller;
|
||||
private ViewMode preViewMode;
|
||||
public override void AfterAwake()
|
||||
{
|
||||
building = FindSingle<Building>();
|
||||
controller = FindSingle<OrbitalController>();
|
||||
}
|
||||
public void ChangeViewWithButtonClick(ViewMode mode)
|
||||
{
|
||||
preViewMode = controller.viewMode;
|
||||
controller.SetViewMode(mode);
|
||||
|
||||
switch (mode)
|
||||
{
|
||||
case ViewMode.PerspectiveView:
|
||||
SetPerPerspectiveView();
|
||||
break;
|
||||
|
||||
case ViewMode.TopView:
|
||||
SetTopView();
|
||||
break;
|
||||
|
||||
case ViewMode.FirstPersonView:
|
||||
SetFirstPersonView(preViewMode);
|
||||
break;
|
||||
}
|
||||
controller.LastPositioning(true);
|
||||
}
|
||||
private void SetPerPerspectiveView()
|
||||
{
|
||||
if(controller.saveTargetPositions[ViewMode.PerspectiveView] == null)
|
||||
{
|
||||
var perspectivePos = controller.option.target.position;
|
||||
var floorStartPos = building.currentFloor.StartPoint.position;
|
||||
|
||||
var newPos = new Vector3(perspectivePos.x, floorStartPos.y, perspectivePos.z);
|
||||
controller.nextPosition = newPos;
|
||||
|
||||
building.SetAllFloorExternalState();
|
||||
}
|
||||
else
|
||||
{
|
||||
building.SetAllFloorExternalState();
|
||||
|
||||
var floorIndex = controller.saveTargetPositions[ViewMode.PerspectiveView].floorIndex;
|
||||
var slider = FindSingle<Canvas_Right>().panel_floorcontrol;
|
||||
slider.ChangeValueFromOutside(floorIndex);
|
||||
}
|
||||
}
|
||||
private void SetTopView()
|
||||
{
|
||||
if (controller.saveTargetPositions[ViewMode.TopView] == null)
|
||||
{
|
||||
building.SetAllFloorExternalState();
|
||||
}
|
||||
else
|
||||
{
|
||||
building.SetAllFloorExternalState();
|
||||
|
||||
var floorIndex = controller.saveTargetPositions[ViewMode.TopView].floorIndex;
|
||||
var slider = FindSingle<Canvas_Right>().panel_floorcontrol;
|
||||
slider.ChangeValueFromOutside(floorIndex);
|
||||
}
|
||||
}
|
||||
private void SetFirstPersonView(ViewMode preViewMode)
|
||||
{
|
||||
if (building.currentFloor.isEmptyFloor)
|
||||
{
|
||||
controller.SetViewMode(preViewMode);
|
||||
return;
|
||||
}
|
||||
if (controller.saveTargetPositions[ViewMode.FirstPersonView] == null)
|
||||
{
|
||||
building.SetCurrentFloorInternalState();
|
||||
|
||||
var pos = controller.option.target.position;
|
||||
var startPos = building.currentFloor.StartPoint.position;
|
||||
|
||||
if (building.currentFloor.FloorContainsPoint(pos))
|
||||
{
|
||||
var tourModePos = new Vector3(pos.x, startPos.y, pos.z);
|
||||
startPos = tourModePos;
|
||||
}
|
||||
controller.nextPosition = startPos;
|
||||
}
|
||||
else
|
||||
{
|
||||
building.SetCurrentFloorInternalState();
|
||||
|
||||
var floorIndex = controller.saveTargetPositions[ViewMode.FirstPersonView].floorIndex;
|
||||
var slider = FindSingle<Canvas_Right>().panel_floorcontrol;
|
||||
slider.ChangeValueFromOutside(floorIndex);
|
||||
}
|
||||
}
|
||||
public void ChangeViewWithFloorControl(Floor currentFloor, Vector3 pos)
|
||||
{
|
||||
var startPos = building.currentFloor.StartPoint.position;
|
||||
|
||||
if (currentFloor.isEmptyFloor)
|
||||
{
|
||||
if (controller.viewMode.Equals(ViewMode.FirstPersonView))
|
||||
{
|
||||
controller.SetViewMode(ViewMode.PerspectiveView);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!currentFloor.FloorContainsPoint(controller.option.target.position))
|
||||
{
|
||||
if (controller.viewMode.Equals(ViewMode.FirstPersonView))
|
||||
{
|
||||
controller.nextPosition = startPos;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
building.SetAllFloorExternalState();
|
||||
|
||||
if (!controller.option.isFirstPersonView)
|
||||
return;
|
||||
|
||||
currentFloor.SetInternalState();
|
||||
controller.LastPositioning(true);
|
||||
}
|
||||
}
|
||||
2
Assets/WorkSpace/Personal/JYM/ViewManager.cs.meta
Normal file
2
Assets/WorkSpace/Personal/JYM/ViewManager.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 74b9e0ad948970648bdc18cdbdbb9f4c
|
||||
Reference in New Issue
Block a user