카메라 기능 개발
This commit is contained in:
@@ -26,18 +26,18 @@ MonoBehaviour:
|
||||
_elevationRotateLimit: 0
|
||||
_isFirstPersonView: 0
|
||||
originElevation: 28.5
|
||||
currentElevation: 90
|
||||
currentElevation: 28.5
|
||||
elevationSensivity: 15
|
||||
minElevation: 5
|
||||
maxElevation: 90
|
||||
originAzimuth: 133
|
||||
currentAzimuth: 89.75
|
||||
currentAzimuth: 133
|
||||
azimuthSensivity: 15
|
||||
maxDistance: 150
|
||||
minDistance: 5
|
||||
moveClamper: 0.033333335
|
||||
moveClamper: 1
|
||||
originDistance: 120
|
||||
originTargetPos: {x: -37.685005, y: 27, z: 29.893412}
|
||||
originTargetRot: {x: -0, y: 0, z: 0}
|
||||
currentDistance: 115.012886
|
||||
currentDistance: 150
|
||||
target: {fileID: 0}
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
namespace WI
|
||||
{
|
||||
[System.Serializable]
|
||||
public class CameraEntity
|
||||
{
|
||||
public float x;
|
||||
public float y;
|
||||
public float z;
|
||||
public float distance;
|
||||
public float elevation;
|
||||
public float azimuth;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: db7ea094b0ebba741893718f5fbfcbaa
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,5 +1,6 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.EventSystems;
|
||||
|
||||
@@ -9,6 +10,8 @@ namespace WI
|
||||
public class OrbitalController : GenericController, ISingle, IOptionable
|
||||
{
|
||||
public new OrbitalControllerOption option => base.option as OrbitalControllerOption;
|
||||
public SDictionary<ViewMode, CameraEntity> saveTargetPositions = new SDictionary<ViewMode, CameraEntity>();
|
||||
|
||||
public Action<int> ZoomInOutEvent;
|
||||
public int maxValue;
|
||||
public float duration_MoveToCamera;
|
||||
@@ -59,6 +62,12 @@ namespace WI
|
||||
base.AfterAwake();
|
||||
|
||||
targetColliderRadius = option.target.GetComponent<SphereCollider>().radius;
|
||||
|
||||
foreach(ViewMode mode in Enum.GetValues(typeof(ViewMode)))
|
||||
{
|
||||
saveTargetPositions.Add(mode, null);
|
||||
}
|
||||
SetViewMode(ViewMode.PerspectiveView);
|
||||
}
|
||||
|
||||
public override void AfterStart()
|
||||
@@ -379,28 +388,55 @@ namespace WI
|
||||
}
|
||||
public void CameraTopView()
|
||||
{
|
||||
var saveData = saveTargetPositions[ViewMode.TopView];
|
||||
option.maxDistance = 35f;
|
||||
option.currentElevation = 90f;
|
||||
option.currentDistance = 35f;
|
||||
option.currentAzimuth = 0f;
|
||||
|
||||
if (saveData == null)
|
||||
{
|
||||
option.currentElevation = 90f;
|
||||
option.currentDistance = 35f;
|
||||
option.currentAzimuth = 0f;
|
||||
}
|
||||
else
|
||||
{
|
||||
SetCameraData(viewMode);
|
||||
}
|
||||
|
||||
LastPositioning(true);
|
||||
}
|
||||
public void CameraFirstPersonView()
|
||||
{
|
||||
camera.transform.position = option.target.position;
|
||||
option.currentDistance = 5f;
|
||||
option.currentElevation = 0f;
|
||||
option.currentAzimuth = 0f;
|
||||
var saveData = saveTargetPositions[ViewMode.FirstPersonView];
|
||||
|
||||
if (saveData == null)
|
||||
{
|
||||
camera.transform.position = option.target.position;
|
||||
option.currentDistance = 5f;
|
||||
option.currentElevation = 0f;
|
||||
option.currentAzimuth = 0f;
|
||||
}
|
||||
else
|
||||
{
|
||||
SetCameraData(viewMode);
|
||||
}
|
||||
|
||||
LastPositioning(true);
|
||||
}
|
||||
public void CameraPerspectiveView()
|
||||
{
|
||||
var saveData = saveTargetPositions[ViewMode.PerspectiveView];
|
||||
option.maxDistance = 150f;
|
||||
option.currentDistance = option.originDistance;
|
||||
option.currentAzimuth = option.originAzimuth;
|
||||
option.currentElevation = option.originElevation;
|
||||
|
||||
if (saveData == null)
|
||||
{
|
||||
option.currentDistance = option.originDistance;
|
||||
option.currentAzimuth = option.originAzimuth;
|
||||
option.currentElevation = option.originElevation;
|
||||
}
|
||||
else
|
||||
{
|
||||
SetCameraData(viewMode);
|
||||
}
|
||||
|
||||
LastPositioning(true);
|
||||
}
|
||||
@@ -438,5 +474,27 @@ namespace WI
|
||||
onFirstPersonViewRay?.Invoke(hit);
|
||||
}
|
||||
}
|
||||
public void SaveTargetPosition()
|
||||
{
|
||||
var cameraEntity = new CameraEntity();
|
||||
cameraEntity.x = option.target.position.x;
|
||||
cameraEntity.y = option.target.position.y;
|
||||
cameraEntity.z = option.target.position.z;
|
||||
cameraEntity.distance = option.currentDistance;
|
||||
cameraEntity.azimuth = option.currentAzimuth;
|
||||
cameraEntity.elevation = option.currentElevation;
|
||||
|
||||
saveTargetPositions[viewMode] = cameraEntity;
|
||||
}
|
||||
private void SetCameraData(ViewMode currentViewMode)
|
||||
{
|
||||
var cameraData = saveTargetPositions[currentViewMode];
|
||||
|
||||
nextPosition = new Vector3(cameraData.x, cameraData.y, cameraData.z);
|
||||
Debug.Log(nextPosition);
|
||||
option.currentDistance = cameraData.distance;
|
||||
option.currentAzimuth = cameraData.azimuth;
|
||||
option.currentElevation = cameraData.elevation;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -630,6 +630,130 @@ MeshFilter:
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2066073}
|
||||
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
|
||||
--- !u!1001 &2501007
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
serializedVersion: 3
|
||||
m_TransformParent: {fileID: 883006602906283311}
|
||||
m_Modifications:
|
||||
- target: {fileID: 1150849515297238015, guid: 565fc7bc07217ae439fa29f99158e1db,
|
||||
type: 3}
|
||||
propertyPath: m_Name
|
||||
value: Panel_MiniMap
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2563419348715790888, guid: 565fc7bc07217ae439fa29f99158e1db,
|
||||
type: 3}
|
||||
propertyPath: m_Pivot.x
|
||||
value: 0.5
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2563419348715790888, guid: 565fc7bc07217ae439fa29f99158e1db,
|
||||
type: 3}
|
||||
propertyPath: m_Pivot.y
|
||||
value: 0.5
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2563419348715790888, guid: 565fc7bc07217ae439fa29f99158e1db,
|
||||
type: 3}
|
||||
propertyPath: m_AnchorMax.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2563419348715790888, guid: 565fc7bc07217ae439fa29f99158e1db,
|
||||
type: 3}
|
||||
propertyPath: m_AnchorMax.y
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2563419348715790888, guid: 565fc7bc07217ae439fa29f99158e1db,
|
||||
type: 3}
|
||||
propertyPath: m_AnchorMin.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2563419348715790888, guid: 565fc7bc07217ae439fa29f99158e1db,
|
||||
type: 3}
|
||||
propertyPath: m_AnchorMin.y
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2563419348715790888, guid: 565fc7bc07217ae439fa29f99158e1db,
|
||||
type: 3}
|
||||
propertyPath: m_SizeDelta.x
|
||||
value: 325
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2563419348715790888, guid: 565fc7bc07217ae439fa29f99158e1db,
|
||||
type: 3}
|
||||
propertyPath: m_SizeDelta.y
|
||||
value: 235
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2563419348715790888, guid: 565fc7bc07217ae439fa29f99158e1db,
|
||||
type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2563419348715790888, guid: 565fc7bc07217ae439fa29f99158e1db,
|
||||
type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2563419348715790888, guid: 565fc7bc07217ae439fa29f99158e1db,
|
||||
type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2563419348715790888, guid: 565fc7bc07217ae439fa29f99158e1db,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2563419348715790888, guid: 565fc7bc07217ae439fa29f99158e1db,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2563419348715790888, guid: 565fc7bc07217ae439fa29f99158e1db,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2563419348715790888, guid: 565fc7bc07217ae439fa29f99158e1db,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2563419348715790888, guid: 565fc7bc07217ae439fa29f99158e1db,
|
||||
type: 3}
|
||||
propertyPath: m_AnchoredPosition.x
|
||||
value: 296
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2563419348715790888, guid: 565fc7bc07217ae439fa29f99158e1db,
|
||||
type: 3}
|
||||
propertyPath: m_AnchoredPosition.y
|
||||
value: -204.5
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2563419348715790888, guid: 565fc7bc07217ae439fa29f99158e1db,
|
||||
type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2563419348715790888, guid: 565fc7bc07217ae439fa29f99158e1db,
|
||||
type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2563419348715790888, guid: 565fc7bc07217ae439fa29f99158e1db,
|
||||
type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_RemovedGameObjects: []
|
||||
m_AddedGameObjects: []
|
||||
m_AddedComponents: []
|
||||
m_SourcePrefab: {fileID: 100100000, guid: 565fc7bc07217ae439fa29f99158e1db, type: 3}
|
||||
--- !u!224 &2501008 stripped
|
||||
RectTransform:
|
||||
m_CorrespondingSourceObject: {fileID: 2563419348715790888, guid: 565fc7bc07217ae439fa29f99158e1db,
|
||||
type: 3}
|
||||
m_PrefabInstance: {fileID: 2501007}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!4 &2605124 stripped
|
||||
Transform:
|
||||
m_CorrespondingSourceObject: {fileID: 5833450743008650472, guid: 8a492aeaab6f6dc4d88a122eccfa8695,
|
||||
@@ -90729,7 +90853,7 @@ GameObject:
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
m_IsActive: 0
|
||||
--- !u!4 &235211501
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -270525,7 +270649,7 @@ GameObject:
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
m_IsActive: 0
|
||||
--- !u!4 &945947359
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -423110,7 +423234,7 @@ GameObject:
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
m_IsActive: 0
|
||||
--- !u!4 &1542891890
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -505509,7 +505633,7 @@ GameObject:
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
m_IsActive: 0
|
||||
--- !u!4 &1860719522
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -577152,6 +577276,7 @@ RectTransform:
|
||||
- {fileID: 6365052453720453628}
|
||||
- {fileID: 381335737}
|
||||
- {fileID: 1522602760}
|
||||
- {fileID: 2501008}
|
||||
- {fileID: 1675592997}
|
||||
- {fileID: 906202995}
|
||||
- {fileID: 1073553747}
|
||||
@@ -581470,6 +581595,21 @@ PrefabInstance:
|
||||
propertyPath: runSpeed
|
||||
value: 3
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2795261250788500754, guid: e8aa14877be9b924882fcad9d88abe46,
|
||||
type: 3}
|
||||
propertyPath: nextPosition.x
|
||||
value: -37.68501
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2795261250788500754, guid: e8aa14877be9b924882fcad9d88abe46,
|
||||
type: 3}
|
||||
propertyPath: nextPosition.y
|
||||
value: 27
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2795261250788500754, guid: e8aa14877be9b924882fcad9d88abe46,
|
||||
type: 3}
|
||||
propertyPath: nextPosition.z
|
||||
value: 29.89341
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3640034311448942995, guid: e8aa14877be9b924882fcad9d88abe46,
|
||||
type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
@@ -583160,6 +583300,7 @@ MonoBehaviour:
|
||||
panel_worktimeanalysis: {fileID: 0}
|
||||
panel_injectionproduction: {fileID: 0}
|
||||
panel_assemblyproduction: {fileID: 0}
|
||||
panel_minimap: {fileID: 0}
|
||||
ui_workanalysis: {fileID: 0}
|
||||
panel_controlsetting: {fileID: 0}
|
||||
panel_protocolsetting: {fileID: 0}
|
||||
|
||||
@@ -32,21 +32,18 @@ namespace CHN
|
||||
var datamanager = FindSingle<DataManager>();
|
||||
var raycaster = FindSingle<CHNRaycaster>();
|
||||
|
||||
//building.onSettingBuildingComplete += topCanvas.panel_toptoolbar.SetChangeViewState;
|
||||
|
||||
topCanvas.panel_toolbar.onClickDashBoard += popupCanvas.panel_dashboard.Open;
|
||||
topCanvas.panel_toolbar.onClickCameraView += ChangeCameraView;
|
||||
topCanvas.panel_toolbar.onClickDashBoard += popupCanvas.panel_dashboard.Open;
|
||||
topCanvas.panel_toolbar.onClickCustomView += controller.SaveTargetPosition;
|
||||
topCanvas.panel_toolbar.onClickMiniMap += popupCanvas.panel_minimap.SetActive;
|
||||
|
||||
topCanvas.panel_toptoolbar.GetFloor = building.GetFloor;
|
||||
//topCanvas.panel_toptoolbar.onChangeView += ChangeCameraView;
|
||||
topCanvas.panel_toptoolbar.onClickAlarms += popupCanvas.panel_completealramhistory.SetActive;
|
||||
topCanvas.panel_toptoolbar.onClickScreenInitialization += SceneReLoad;
|
||||
topCanvas.panel_toptoolbar.onClickProductionProgress += popupCanvas.panel_injectionproduction.Open;
|
||||
topCanvas.panel_toptoolbar.onClickAssemblyProgress += popupCanvas.panel_assemblyproduction.Open;
|
||||
topCanvas.panel_toptoolbar.onClickSetting += popupCanvas.panel_menu.Open;
|
||||
|
||||
topCanvas.panel_toolbar.onClickMiniMap += popupCanvas.panel_minimap.SetActive;
|
||||
|
||||
rightCanvas.panel_floorcontrol.onValueChanged += building.SetTopFloor;
|
||||
rightCanvas.panel_floorcontrol.onValueChanged += popupCanvas.panel_minimap.ChangeMiniMapFloor;
|
||||
|
||||
@@ -126,7 +123,9 @@ namespace CHN
|
||||
}
|
||||
private void ChangeCameraView(ViewMode mode)
|
||||
{
|
||||
controller.SetViewMode(mode);
|
||||
if (building.currentFloor.isEmptyFloor)
|
||||
return;
|
||||
|
||||
switch (mode)
|
||||
{
|
||||
case ViewMode.PerspectiveView:
|
||||
@@ -136,14 +135,6 @@ namespace CHN
|
||||
case ViewMode.FirstPersonView:
|
||||
building.SetCurrentFloorInternalState();
|
||||
|
||||
var raycaster = FindSingle<CHNRaycaster>();
|
||||
|
||||
//if (raycaster.hitFloorIndex != building.currentFloor.floorIndex)
|
||||
//{
|
||||
// var slider = FindSingle<Canvas_Right>().panel_floorcontrol;
|
||||
// slider.ChangeValueFromOutside(raycaster.hitFloorIndex);
|
||||
//}
|
||||
|
||||
var pos = controller.option.target.position;
|
||||
|
||||
if (building.currentFloor.FloorContainsPoint(pos))
|
||||
@@ -154,6 +145,7 @@ namespace CHN
|
||||
controller.nextPosition = startPos;
|
||||
break;
|
||||
}
|
||||
controller.SetViewMode(mode);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,6 +27,8 @@ public class Panel_ToolBar : PanelBase
|
||||
|
||||
public Action onClickDashBoard;
|
||||
public Action<ViewMode> onClickCameraView;
|
||||
public Action onClickCustomView;
|
||||
|
||||
public override void AfterAwake()
|
||||
{
|
||||
Button_TopView.onClick.AddListener(OnClickTopView);
|
||||
@@ -123,7 +125,7 @@ public class Panel_ToolBar : PanelBase
|
||||
|
||||
private void OnClickCustomView()
|
||||
{
|
||||
Debug.Log("CustomView");
|
||||
onClickCustomView?.Invoke();
|
||||
}
|
||||
|
||||
private void OnClickDashBoard()
|
||||
|
||||
Reference in New Issue
Block a user