97 lines
3.2 KiB
C#
97 lines
3.2 KiB
C#
using System;
|
|
using UnityEngine;
|
|
|
|
namespace Artngame.SKYMASTER.PlanetCreator
|
|
{
|
|
public class FlyCameraA : MonoBehaviour
|
|
{
|
|
public float cameraSensitivity = 90f;
|
|
|
|
public float rollSpeed = 4f;
|
|
|
|
public float normalMoveSpeed = 10f;
|
|
|
|
public float slowMoveFactor = 0.25f;
|
|
|
|
public float fastMoveFactor = 3f;
|
|
|
|
public float speedMultiplySpeed = 2f;
|
|
|
|
public float speedMultiply = 1f;
|
|
|
|
public PlanetCreator planetCreator;
|
|
|
|
private bool cursorLocked = true;
|
|
|
|
private Quaternion rotation = Quaternion.identity;
|
|
|
|
private void Start()
|
|
{
|
|
Cursor.lockState = CursorLockMode.Locked;
|
|
Cursor.visible = false;
|
|
}
|
|
|
|
private void Update()
|
|
{
|
|
if (cursorLocked)
|
|
{
|
|
base.transform.localRotation *= Quaternion.AngleAxis(Input.GetAxis("Mouse X") * cameraSensitivity, Vector3.up);
|
|
base.transform.localRotation *= Quaternion.AngleAxis(Input.GetAxis("Mouse Y") * cameraSensitivity, Vector3.left);
|
|
Vector3 vector;
|
|
if (Input.GetKey(KeyCode.LeftShift) || Input.GetKey(KeyCode.RightShift))
|
|
{
|
|
vector = base.transform.forward * (normalMoveSpeed * fastMoveFactor) * Input.GetAxis("Vertical") * Time.deltaTime * speedMultiply;
|
|
vector += base.transform.right * (normalMoveSpeed * fastMoveFactor) * Input.GetAxis("Horizontal") * Time.deltaTime * speedMultiply;
|
|
}
|
|
else if (Input.GetKey(KeyCode.LeftControl) || Input.GetKey(KeyCode.RightControl))
|
|
{
|
|
vector = base.transform.forward * (normalMoveSpeed * slowMoveFactor) * Input.GetAxis("Vertical") * Time.deltaTime * speedMultiply;
|
|
vector += base.transform.right * (normalMoveSpeed * slowMoveFactor) * Input.GetAxis("Horizontal") * Time.deltaTime * speedMultiply;
|
|
}
|
|
else
|
|
{
|
|
vector = base.transform.forward * normalMoveSpeed * Input.GetAxis("Vertical") * Time.deltaTime * speedMultiply;
|
|
vector += base.transform.right * normalMoveSpeed * Input.GetAxis("Horizontal") * Time.deltaTime * speedMultiply;
|
|
}
|
|
base.transform.position += vector;
|
|
speedMultiply *= 1f + Input.GetAxis("Mouse ScrollWheel") * speedMultiplySpeed;
|
|
speedMultiply = Mathf.Max(0f, speedMultiply);
|
|
if (Input.GetKey(KeyCode.Q))
|
|
{
|
|
base.transform.localRotation *= Quaternion.AngleAxis(rollSpeed * Time.deltaTime, Vector3.back);
|
|
}
|
|
if (Input.GetKey(KeyCode.E))
|
|
{
|
|
base.transform.localRotation *= Quaternion.AngleAxis(rollSpeed * Time.deltaTime, Vector3.forward);
|
|
}
|
|
}
|
|
if (Input.GetKeyDown(KeyCode.Space) || Input.GetKeyDown(KeyCode.Escape))
|
|
{
|
|
cursorLocked = !cursorLocked;
|
|
Cursor.lockState = (cursorLocked ? CursorLockMode.Locked : CursorLockMode.None);
|
|
Cursor.visible = !cursorLocked;
|
|
}
|
|
if (Input.GetKeyDown(KeyCode.C))
|
|
{
|
|
ScreenCapture.CaptureScreenshot(Application.dataPath.Replace("Assets", "Screenshots") + $"{DateTime.Now:yyyy-MM-dd_hh-mm-ss-tt}" + ".png", 2);
|
|
}
|
|
if (Input.GetKeyDown(KeyCode.X))
|
|
{
|
|
Application.Quit();
|
|
}
|
|
}
|
|
|
|
private void OnDrawGizmos()
|
|
{
|
|
if (!(planetCreator == null))
|
|
{
|
|
PlanetChunkProperties nearestChunkProperties = planetCreator.GetNearestChunkProperties(base.transform.position);
|
|
if (nearestChunkProperties != null)
|
|
{
|
|
Gizmos.DrawWireCube(nearestChunkProperties.Bounds.center, nearestChunkProperties.Bounds.size);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|