added: target offset to camera settings controls. refactored settings code
This commit is contained in:
@@ -5,7 +5,7 @@ using UnityEditor;
|
|||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
// Individual bool setting for each ring. Three of these will be used.
|
// Individual bool setting for each ring. Three of these will be used.
|
||||||
public struct OrbitalFollowValueGroup{
|
public struct OrbitalFollowValueGroup : ICameraValueGroup{
|
||||||
public string label;
|
public string label;
|
||||||
|
|
||||||
public CameraSettingsToggle changeHeight;
|
public CameraSettingsToggle changeHeight;
|
||||||
@@ -38,7 +38,11 @@ public enum CameraSettingsToggle{
|
|||||||
ResetValue,
|
ResetValue,
|
||||||
}
|
}
|
||||||
|
|
||||||
public struct Vector3CameraValueGroup{
|
public interface ICameraValueGroup{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public struct Vector3CameraValueGroup : ICameraValueGroup{
|
||||||
public string label;
|
public string label;
|
||||||
public Vector3 newValue;
|
public Vector3 newValue;
|
||||||
|
|
||||||
@@ -56,7 +60,7 @@ public struct Vector3CameraValueGroup{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public struct Vector2CameraValueGroup{
|
public struct Vector2CameraValueGroup : ICameraValueGroup{
|
||||||
public string label;
|
public string label;
|
||||||
public Vector2 newValue;
|
public Vector2 newValue;
|
||||||
|
|
||||||
@@ -72,7 +76,7 @@ public struct Vector2CameraValueGroup{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public struct FloatCameraValueGroup{
|
public struct FloatCameraValueGroup : ICameraValueGroup{
|
||||||
public string label;
|
public string label;
|
||||||
public float value;
|
public float value;
|
||||||
|
|
||||||
@@ -328,7 +332,9 @@ namespace NodeCanvas.Tasks.Actions {
|
|||||||
public FloatCameraValueGroup fieldOfView = new (newLabel: "FOV");
|
public FloatCameraValueGroup fieldOfView = new (newLabel: "FOV");
|
||||||
|
|
||||||
[ParadoxNotion.Design.Header("Orbit Follow Ring Settings"), Space (5)]
|
[ParadoxNotion.Design.Header("Orbit Follow Ring Settings"), Space (5)]
|
||||||
public Vector3CameraValueGroup orbitPositionDamping = new(newLabel: "Position Damping");
|
public Vector3CameraValueGroup orbitTargetOffset = new(newLabel: "Target Offset");
|
||||||
|
[Space(5)]public Vector3CameraValueGroup orbitPositionDamping = new(newLabel: "Position Damping");
|
||||||
|
|
||||||
public OrbitalFollowValueGroup orbitFollowTop = new (newLabel: "Top");
|
public OrbitalFollowValueGroup orbitFollowTop = new (newLabel: "Top");
|
||||||
public OrbitalFollowValueGroup orbitFollowCenter = new (newLabel: "Center");
|
public OrbitalFollowValueGroup orbitFollowCenter = new (newLabel: "Center");
|
||||||
public OrbitalFollowValueGroup orbitFollowBottom = new (newLabel: "Bottom");
|
public OrbitalFollowValueGroup orbitFollowBottom = new (newLabel: "Bottom");
|
||||||
@@ -349,150 +355,101 @@ namespace NodeCanvas.Tasks.Actions {
|
|||||||
//Call EndAction() to mark the action as finished, either in success or failure.
|
//Call EndAction() to mark the action as finished, either in success or failure.
|
||||||
//EndAction can be called from anywhere.
|
//EndAction can be called from anywhere.
|
||||||
protected override void OnExecute(){
|
protected override void OnExecute(){
|
||||||
// Switch case farm for checking if values should be changed and what to
|
UpdateOrbitFollowValue(orbitFollowTop, ref CameraSettingsProcessor.values.orbitFollowTopHeight, ref CameraSettingsProcessor.values.orbitFollowTopRadius);
|
||||||
// Field of view
|
UpdateOrbitFollowValue(orbitFollowCenter, ref CameraSettingsProcessor.values.orbitFollowCenterHeight, ref CameraSettingsProcessor.values.orbitFollowCenterRadius);
|
||||||
switch (fieldOfView.changeValue) {
|
UpdateOrbitFollowValue(orbitFollowBottom, ref CameraSettingsProcessor.values.orbitFollowBottomHeight, ref CameraSettingsProcessor.values.orbitFollowBottomRadius);
|
||||||
case CameraSettingsToggle.NewValue:
|
|
||||||
CameraSettingsProcessor.values.mainFieldOfView.targetValue = fieldOfView.value;
|
|
||||||
break;
|
|
||||||
case CameraSettingsToggle.ResetValue:
|
|
||||||
CameraSettingsProcessor.values.mainFieldOfView.Reset();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Orbit follow rings
|
UpdateVector3Value(cameraOffset, ref CameraSettingsProcessor.values.cameraOffsetOffset);
|
||||||
switch (orbitFollowTop.changeHeight) {
|
|
||||||
case CameraSettingsToggle.NewValue:
|
|
||||||
CameraSettingsProcessor.values.orbitFollowTopHeight.targetValue = orbitFollowTop.height;
|
|
||||||
break;
|
|
||||||
case CameraSettingsToggle.ResetValue:
|
|
||||||
CameraSettingsProcessor.values.orbitFollowTopHeight.Reset();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (orbitFollowTop.changeRadius) {
|
UpdateVector3Value(orbitPositionDamping, ref CameraSettingsProcessor.values.orbitPositionDamping);
|
||||||
case CameraSettingsToggle.NewValue:
|
// UpdateVector3Value(orbitTargetOffset, ref CameraSettingsProcessor.values.orbitTargetOffset);
|
||||||
CameraSettingsProcessor.values.orbitFollowTopRadius.targetValue = orbitFollowTop.radius;
|
|
||||||
break;
|
|
||||||
case CameraSettingsToggle.ResetValue:
|
|
||||||
CameraSettingsProcessor.values.orbitFollowTopRadius.Reset();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (orbitFollowCenter.changeHeight) {
|
UpdateVector2Value(screenPosition, ref CameraSettingsProcessor.values.rotationComposerScreenPos);
|
||||||
case CameraSettingsToggle.NewValue:
|
UpdateFloatValue(fieldOfView, ref CameraSettingsProcessor.values.mainFieldOfView);
|
||||||
CameraSettingsProcessor.values.orbitFollowCenterHeight.targetValue = orbitFollowCenter.height;
|
|
||||||
break;
|
|
||||||
case CameraSettingsToggle.ResetValue:
|
|
||||||
CameraSettingsProcessor.values.orbitFollowCenterHeight.Reset();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (orbitFollowCenter.changeRadius) {
|
|
||||||
case CameraSettingsToggle.NewValue:
|
|
||||||
CameraSettingsProcessor.values.orbitFollowCenterRadius.targetValue = orbitFollowCenter.radius;
|
|
||||||
break;
|
|
||||||
case CameraSettingsToggle.ResetValue:
|
|
||||||
CameraSettingsProcessor.values.orbitFollowCenterRadius.Reset();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (orbitFollowBottom.changeHeight) {
|
|
||||||
case CameraSettingsToggle.NewValue:
|
|
||||||
CameraSettingsProcessor.values.orbitFollowBottomHeight.targetValue = orbitFollowBottom.height;
|
|
||||||
break;
|
|
||||||
case CameraSettingsToggle.ResetValue:
|
|
||||||
CameraSettingsProcessor.values.orbitFollowBottomHeight.Reset();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (orbitFollowBottom.changeRadius) {
|
|
||||||
case CameraSettingsToggle.NewValue:
|
|
||||||
CameraSettingsProcessor.values.orbitFollowBottomRadius.targetValue = orbitFollowBottom.radius;
|
|
||||||
break;
|
|
||||||
case CameraSettingsToggle.ResetValue:
|
|
||||||
CameraSettingsProcessor.values.orbitFollowBottomRadius.Reset();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Screen Position
|
|
||||||
switch (screenPosition.changeX) {
|
|
||||||
case CameraSettingsToggle.NewValue:
|
|
||||||
CameraSettingsProcessor.values.rotationComposerScreenPos.targetValue.x = screenPosition.newValue.x;
|
|
||||||
break;
|
|
||||||
case CameraSettingsToggle.ResetValue:
|
|
||||||
CameraSettingsProcessor.values.rotationComposerScreenPos.targetValue.x = CameraSettingsProcessor.values.rotationComposerScreenPos.originalValue.x;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (screenPosition.changeY) {
|
|
||||||
case CameraSettingsToggle.NewValue:
|
|
||||||
CameraSettingsProcessor.values.rotationComposerScreenPos.targetValue.y = screenPosition.newValue.y;
|
|
||||||
break;
|
|
||||||
case CameraSettingsToggle.ResetValue:
|
|
||||||
CameraSettingsProcessor.values.rotationComposerScreenPos.targetValue.y = CameraSettingsProcessor.values.rotationComposerScreenPos.originalValue.y;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Camera Offset
|
|
||||||
switch (cameraOffset.changeX) {
|
|
||||||
case CameraSettingsToggle.NewValue:
|
|
||||||
CameraSettingsProcessor.values.cameraOffsetOffset.targetValue.x = cameraOffset.newValue.x;
|
|
||||||
break;
|
|
||||||
case CameraSettingsToggle.ResetValue:
|
|
||||||
CameraSettingsProcessor.values.cameraOffsetOffset.targetValue.x = CameraSettingsProcessor.values.cameraOffsetOffset.originalValue.x;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (cameraOffset.changeY) {
|
|
||||||
case CameraSettingsToggle.NewValue:
|
|
||||||
CameraSettingsProcessor.values.cameraOffsetOffset.targetValue.y = cameraOffset.newValue.y;
|
|
||||||
break;
|
|
||||||
case CameraSettingsToggle.ResetValue:
|
|
||||||
CameraSettingsProcessor.values.cameraOffsetOffset.targetValue.y = CameraSettingsProcessor.values.cameraOffsetOffset.originalValue.y;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (cameraOffset.changeZ) {
|
|
||||||
case CameraSettingsToggle.NewValue:
|
|
||||||
CameraSettingsProcessor.values.cameraOffsetOffset.targetValue.z = cameraOffset.newValue.z;
|
|
||||||
break;
|
|
||||||
case CameraSettingsToggle.ResetValue:
|
|
||||||
CameraSettingsProcessor.values.cameraOffsetOffset.targetValue.z = CameraSettingsProcessor.values.cameraOffsetOffset.originalValue.z;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Position Damping
|
|
||||||
switch (orbitPositionDamping.changeX) {
|
|
||||||
case CameraSettingsToggle.NewValue:
|
|
||||||
CameraSettingsProcessor.values.orbitPositionDamping.targetValue.x = orbitPositionDamping.newValue.x;
|
|
||||||
break;
|
|
||||||
case CameraSettingsToggle.ResetValue:
|
|
||||||
CameraSettingsProcessor.values.orbitPositionDamping.targetValue.x = CameraSettingsProcessor.values.orbitPositionDamping.originalValue.x;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (orbitPositionDamping.changeY) {
|
|
||||||
case CameraSettingsToggle.NewValue:
|
|
||||||
CameraSettingsProcessor.values.orbitPositionDamping.targetValue.y = orbitPositionDamping.newValue.y;
|
|
||||||
break;
|
|
||||||
case CameraSettingsToggle.ResetValue:
|
|
||||||
CameraSettingsProcessor.values.orbitPositionDamping.targetValue.y = CameraSettingsProcessor.values.orbitPositionDamping.originalValue.y;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (orbitPositionDamping.changeZ) {
|
|
||||||
case CameraSettingsToggle.NewValue:
|
|
||||||
CameraSettingsProcessor.values.orbitPositionDamping.targetValue.z = orbitPositionDamping.newValue.z;
|
|
||||||
break;
|
|
||||||
case CameraSettingsToggle.ResetValue:
|
|
||||||
CameraSettingsProcessor.values.orbitPositionDamping.targetValue.z = CameraSettingsProcessor.values.orbitPositionDamping.originalValue.z;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
EndAction(true);
|
EndAction(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void UpdateVector3Value(Vector3CameraValueGroup valueGroup, ref CameraSettingSingleValue<Vector3> targetProperty){
|
||||||
|
switch (valueGroup.changeX) {
|
||||||
|
case CameraSettingsToggle.NewValue:
|
||||||
|
targetProperty.targetValue.x = valueGroup.newValue.x;
|
||||||
|
break;
|
||||||
|
case CameraSettingsToggle.ResetValue:
|
||||||
|
targetProperty.targetValue.x = targetProperty.originalValue.x;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (valueGroup.changeY) {
|
||||||
|
case CameraSettingsToggle.NewValue:
|
||||||
|
targetProperty.targetValue.y = valueGroup.newValue.y;
|
||||||
|
break;
|
||||||
|
case CameraSettingsToggle.ResetValue:
|
||||||
|
targetProperty.targetValue.y = targetProperty.originalValue.y;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (valueGroup.changeZ) {
|
||||||
|
case CameraSettingsToggle.NewValue:
|
||||||
|
targetProperty.targetValue.z = valueGroup.newValue.z;
|
||||||
|
break;
|
||||||
|
case CameraSettingsToggle.ResetValue:
|
||||||
|
targetProperty.targetValue.z = targetProperty.originalValue.z;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void UpdateVector2Value(Vector2CameraValueGroup valueGroup, ref CameraSettingSingleValue<Vector2> targetProperty){
|
||||||
|
switch (valueGroup.changeX) {
|
||||||
|
case CameraSettingsToggle.NewValue:
|
||||||
|
targetProperty.targetValue.x = valueGroup.newValue.x;
|
||||||
|
break;
|
||||||
|
case CameraSettingsToggle.ResetValue:
|
||||||
|
targetProperty.targetValue.x = targetProperty.originalValue.x;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (valueGroup.changeY) {
|
||||||
|
case CameraSettingsToggle.NewValue:
|
||||||
|
targetProperty.targetValue.y = valueGroup.newValue.y;
|
||||||
|
break;
|
||||||
|
case CameraSettingsToggle.ResetValue:
|
||||||
|
targetProperty.targetValue.y = targetProperty.originalValue.y;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void UpdateOrbitFollowValue(OrbitalFollowValueGroup valueGroup, ref CameraSettingSingleValue<float> targetHeight, ref CameraSettingSingleValue<float> targetRadius){
|
||||||
|
switch (valueGroup.changeHeight) {
|
||||||
|
case CameraSettingsToggle.NewValue:
|
||||||
|
targetHeight.targetValue = valueGroup.height;
|
||||||
|
break;
|
||||||
|
case CameraSettingsToggle.ResetValue:
|
||||||
|
targetHeight.targetValue = targetHeight.originalValue;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (valueGroup.changeRadius) {
|
||||||
|
case CameraSettingsToggle.NewValue:
|
||||||
|
targetRadius.targetValue = valueGroup.radius;
|
||||||
|
break;
|
||||||
|
case CameraSettingsToggle.ResetValue:
|
||||||
|
targetRadius.targetValue = targetRadius.originalValue;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void UpdateFloatValue(FloatCameraValueGroup valueGroup, ref CameraSettingSingleValue<float> targetProperty){
|
||||||
|
switch (valueGroup.changeValue) {
|
||||||
|
case CameraSettingsToggle.NewValue:
|
||||||
|
targetProperty.targetValue = valueGroup.value;
|
||||||
|
break;
|
||||||
|
case CameraSettingsToggle.ResetValue:
|
||||||
|
targetProperty.targetValue = targetProperty.originalValue;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//Called once per frame while the action is active.
|
//Called once per frame while the action is active.
|
||||||
protected override void OnUpdate() {
|
protected override void OnUpdate() {
|
||||||
|
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ public struct CameraSettingValues{
|
|||||||
public CameraSettingSingleValue<float> mainFieldOfView;
|
public CameraSettingSingleValue<float> mainFieldOfView;
|
||||||
|
|
||||||
public CameraSettingSingleValue<Vector3> orbitPositionDamping;
|
public CameraSettingSingleValue<Vector3> orbitPositionDamping;
|
||||||
|
public CameraSettingSingleValue<Vector3> orbitTargetOffset;
|
||||||
|
|
||||||
public CameraSettingSingleValue<float> orbitFollowTopHeight;
|
public CameraSettingSingleValue<float> orbitFollowTopHeight;
|
||||||
public CameraSettingSingleValue<float> orbitFollowTopRadius;
|
public CameraSettingSingleValue<float> orbitFollowTopRadius;
|
||||||
@@ -46,6 +47,7 @@ public struct CameraSettingValues{
|
|||||||
mainFieldOfView = new CameraSettingSingleValue<float>(defaultSmoothing);
|
mainFieldOfView = new CameraSettingSingleValue<float>(defaultSmoothing);
|
||||||
|
|
||||||
orbitPositionDamping = new CameraSettingSingleValue<Vector3>(defaultSmoothing);
|
orbitPositionDamping = new CameraSettingSingleValue<Vector3>(defaultSmoothing);
|
||||||
|
orbitTargetOffset = new CameraSettingSingleValue<Vector3>(defaultSmoothing);
|
||||||
|
|
||||||
orbitFollowTopHeight = new CameraSettingSingleValue<float>(defaultSmoothing);
|
orbitFollowTopHeight = new CameraSettingSingleValue<float>(defaultSmoothing);
|
||||||
orbitFollowTopRadius = new CameraSettingSingleValue<float>(defaultSmoothing);
|
orbitFollowTopRadius = new CameraSettingSingleValue<float>(defaultSmoothing);
|
||||||
@@ -106,6 +108,10 @@ public class CameraSettingsProcessor : MonoBehaviour{
|
|||||||
values.mainFieldOfView.targetValue, ref values.mainFieldOfView.velocityRef,
|
values.mainFieldOfView.targetValue, ref values.mainFieldOfView.velocityRef,
|
||||||
values.mainFieldOfView.smoothing);
|
values.mainFieldOfView.smoothing);
|
||||||
|
|
||||||
|
orbit.TargetOffset = Vector3.SmoothDamp(orbit.TargetOffset,
|
||||||
|
values.orbitTargetOffset.targetValue, ref values.orbitTargetOffset.velocityRefV3,
|
||||||
|
values.orbitTargetOffset.smoothing);
|
||||||
|
|
||||||
orbit.TrackerSettings.PositionDamping = Vector3.SmoothDamp(orbit.TrackerSettings.PositionDamping,
|
orbit.TrackerSettings.PositionDamping = Vector3.SmoothDamp(orbit.TrackerSettings.PositionDamping,
|
||||||
values.orbitPositionDamping.targetValue, ref values.orbitPositionDamping.velocityRefV3,
|
values.orbitPositionDamping.targetValue, ref values.orbitPositionDamping.velocityRefV3,
|
||||||
values.orbitPositionDamping.smoothing);
|
values.orbitPositionDamping.smoothing);
|
||||||
@@ -122,8 +128,6 @@ public class CameraSettingsProcessor : MonoBehaviour{
|
|||||||
values.orbitFollowCenterHeight.targetValue, ref values.orbitFollowCenterHeight.velocityRef,
|
values.orbitFollowCenterHeight.targetValue, ref values.orbitFollowCenterHeight.velocityRef,
|
||||||
values.orbitFollowCenterHeight.smoothing);
|
values.orbitFollowCenterHeight.smoothing);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
orbit.Orbits.Center.Radius = Mathf.SmoothDamp(orbit.Orbits.Center.Radius,
|
orbit.Orbits.Center.Radius = Mathf.SmoothDamp(orbit.Orbits.Center.Radius,
|
||||||
values.orbitFollowCenterRadius.targetValue, ref values.orbitFollowCenterRadius.velocityRef,
|
values.orbitFollowCenterRadius.targetValue, ref values.orbitFollowCenterRadius.velocityRef,
|
||||||
values.orbitFollowCenterRadius.smoothing);
|
values.orbitFollowCenterRadius.smoothing);
|
||||||
|
|||||||
Reference in New Issue
Block a user