|
|
@ -1,11 +1,15 @@
|
|
|
|
using System.Collections.Generic;
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
|
|
using System.Reflection;
|
|
|
|
|
|
|
|
using EccsLogicWorldAPI.Shared.AccessHelper;
|
|
|
|
using LogicLog;
|
|
|
|
using LogicLog;
|
|
|
|
|
|
|
|
using LogicWorld;
|
|
|
|
using UnityEngine;
|
|
|
|
using UnityEngine;
|
|
|
|
|
|
|
|
|
|
|
|
namespace CameraRoll.Client.Tool {
|
|
|
|
namespace CameraRoll.Client.Tool {
|
|
|
|
public class CameraRollTool {
|
|
|
|
public class CameraRollTool {
|
|
|
|
private static ILogicLogger _logger = null!;
|
|
|
|
private static ILogicLogger _logger = null!;
|
|
|
|
private static Camera _cam;
|
|
|
|
private static Camera _cam;
|
|
|
|
|
|
|
|
private static PropertyInfo _showBuildingUI;
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// <summary>
|
|
|
|
/// How fast does it interpolate between points
|
|
|
|
/// How fast does it interpolate between points
|
|
|
@ -17,7 +21,7 @@ namespace CameraRoll.Client.Tool {
|
|
|
|
/// If the track is playing/animating/moving the camera
|
|
|
|
/// If the track is playing/animating/moving the camera
|
|
|
|
/// </summary>
|
|
|
|
/// </summary>
|
|
|
|
private static bool _playing;
|
|
|
|
private static bool _playing;
|
|
|
|
|
|
|
|
|
|
|
|
// Backup of the original (local) position and rotation of the camera
|
|
|
|
// Backup of the original (local) position and rotation of the camera
|
|
|
|
private static Vector3 _originalPosition;
|
|
|
|
private static Vector3 _originalPosition;
|
|
|
|
private static Quaternion _originalRotation;
|
|
|
|
private static Quaternion _originalRotation;
|
|
|
@ -38,6 +42,7 @@ namespace CameraRoll.Client.Tool {
|
|
|
|
_logger = logger;
|
|
|
|
_logger = logger;
|
|
|
|
PathPoints.Clear();
|
|
|
|
PathPoints.Clear();
|
|
|
|
_playing = false;
|
|
|
|
_playing = false;
|
|
|
|
|
|
|
|
_showBuildingUI = Properties.getPrivateStatic(typeof(FirstPersonInteraction), "ShowBuildingUI");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public static void OnEnter() {
|
|
|
|
public static void OnEnter() {
|
|
|
@ -65,7 +70,7 @@ namespace CameraRoll.Client.Tool {
|
|
|
|
point.SetActive(visible);
|
|
|
|
point.SetActive(visible);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static void Play() {
|
|
|
|
public static void Play() {
|
|
|
|
if (_playing) return;
|
|
|
|
if (_playing) return;
|
|
|
@ -75,8 +80,10 @@ namespace CameraRoll.Client.Tool {
|
|
|
|
|
|
|
|
|
|
|
|
_pointIndex = 0;
|
|
|
|
_pointIndex = 0;
|
|
|
|
_interpolationState = 0.0f;
|
|
|
|
_interpolationState = 0.0f;
|
|
|
|
|
|
|
|
|
|
|
|
SetPointsVisible(false);
|
|
|
|
SetPointsVisible(false);
|
|
|
|
|
|
|
|
_showBuildingUI.SetValue(null, false); // Hide UI
|
|
|
|
|
|
|
|
|
|
|
|
_playing = true;
|
|
|
|
_playing = true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -86,8 +93,9 @@ namespace CameraRoll.Client.Tool {
|
|
|
|
|
|
|
|
|
|
|
|
_cam.transform.localPosition = _originalPosition;
|
|
|
|
_cam.transform.localPosition = _originalPosition;
|
|
|
|
_cam.transform.localRotation = _originalRotation;
|
|
|
|
_cam.transform.localRotation = _originalRotation;
|
|
|
|
|
|
|
|
|
|
|
|
SetPointsVisible(true);
|
|
|
|
SetPointsVisible(true);
|
|
|
|
|
|
|
|
_showBuildingUI.SetValue(null, true); // Show UI
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public static void Clear() {
|
|
|
|
public static void Clear() {
|
|
|
@ -116,15 +124,15 @@ namespace CameraRoll.Client.Tool {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
_interpolationState += InterpolationSpeed;
|
|
|
|
_interpolationState += InterpolationSpeed;
|
|
|
|
|
|
|
|
|
|
|
|
Vector3 prevPos = GetPos(_pointIndex - 1);
|
|
|
|
Vector3 prevPos = GetPos(_pointIndex - 1);
|
|
|
|
Vector3 newPos = GetPos(_pointIndex);
|
|
|
|
Vector3 newPos = GetPos(_pointIndex);
|
|
|
|
_cam.transform.position = Vector3.Lerp(prevPos , newPos, _interpolationState);
|
|
|
|
_cam.transform.position = Vector3.Lerp(prevPos, newPos, _interpolationState);
|
|
|
|
|
|
|
|
|
|
|
|
Quaternion prevRot = GetRot(_pointIndex - 1);
|
|
|
|
Quaternion prevRot = GetRot(_pointIndex - 1);
|
|
|
|
Quaternion newRot = GetRot(_pointIndex);
|
|
|
|
Quaternion newRot = GetRot(_pointIndex);
|
|
|
|
_cam.transform.rotation = Quaternion.Slerp(prevRot, newRot, _interpolationState);
|
|
|
|
_cam.transform.rotation = Quaternion.Slerp(prevRot, newRot, _interpolationState);
|
|
|
|
|
|
|
|
|
|
|
|
if (_interpolationState >= 1.0f) {
|
|
|
|
if (_interpolationState >= 1.0f) {
|
|
|
|
_pointIndex++;
|
|
|
|
_pointIndex++;
|
|
|
|
_interpolationState = 0.0f;
|
|
|
|
_interpolationState = 0.0f;
|
|
|
|