From 71d7a6d3cd2621ee8df69e6a774637c3dc420a86 Mon Sep 17 00:00:00 2001 From: BARICHELLO Date: Sun, 19 May 2019 00:12:16 -0300 Subject: [PATCH] Add CameraEngine.cs modifications --- README.md | 18 ++++++-- src/CameraEngine.cs | 100 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 115 insertions(+), 3 deletions(-) create mode 100755 src/CameraEngine.cs diff --git a/README.md b/README.md index 5968023..46e3ccf 100644 --- a/README.md +++ b/README.md @@ -5,14 +5,15 @@ This mod restores the developer's original debug mode and provides camera moveme
- - + +
## Usage + +#### Debug mode Hotkey|Action -|- -'(Quote)|Toggle debug mode F1|Refill energy F4|Update weather F5|Toggle level helpers @@ -25,3 +26,14 @@ Shift+J|Force damage front wheel Shift+K|Force vehicle break apart event Shift+C|Force credits roll Shift+I|Force reset vehicle + +#### Noclip +Hotkey|Action +-|- +Numlock|Toggle noclip mode +Scroll wheel up|Increase FOV +Scroll wheel down|Reduce FOV +Home/End|Forwards/Backwards +Del/Page Down|Left/Right +Insert/Page Up|Dowm/Up +Keypad0|Hold for increased camera speed diff --git a/src/CameraEngine.cs b/src/CameraEngine.cs new file mode 100755 index 0000000..e1e09e5 --- /dev/null +++ b/src/CameraEngine.cs @@ -0,0 +1,100 @@ +using System; +using System.Collections; +using Okomotive.FarLoneSails.SaveGame; +using Okomotive.SideScrollerCharacterController; +using Okomotive.Toolset; +using UnityEngine; +using UnityEngine.Rendering.PostProcessing; +using UnityStandardAssets.ImageEffects; + +namespace Okomotive.FarLoneSails { + public sealed partial class CameraEngine : MonoBehaviour { + void Update() { + if (Input.GetKeyDown(KeyCode.Numlock)) { + this.noclip = !this.noclip; + if (noclip) { + // TODO: Save starting FOV + } else { + // TODO: Restore starting FOV + } + } + + if (noclip) { + this.Noclip(); + } + } + + void FixedUpdate() { + // (...) + if (this.noclip) { + return; + } + // (...) + } + + void Noclip() { + // FOV + if (Input.GetAxis("Mouse ScrollWheel") < 0f) { + this.camera.fov -= this.fovChange; + } + if (Input.GetAxis("Mouse ScrollWheel") > 0f) { + this.camera.fov += this.fovChange; + } + Mathf.Clamp(this.camera.fov, 0f, 300f); + + // Camera Rotation + this.cameraXAngle += 0.5f * Input.GetAxis("Mouse X"); + this.cameraYAngle -= 0.5f * Input.GetAxis("Mouse Y"); + Mathf.Clamp(this.cameraYAngle, -50f, 50f); + this.camera.transform.eulerAngles = new Vector3(this.cameraYAngle, this.cameraXAngle, 0f); + + // Position + float speedModifier = 1f; + if (Input.GetKey(KeyCode.Keypad0)) { // boost + speedModifier = 8f; + } + if (Input.GetKey(KeyCode.Home)) { // forwards + Vector3 direction = camera.transform.forward; + direction.Normalize(); + camera.transform.position += Time.deltaTime * speedModifier * noclipSpeed * direction; + } + if (Input.GetKey(KeyCode.End)) { // backwards + Vector3 direction = camera.transform.forward; + direction.Normalize(); + camera.transform.position -= Time.deltaTime * speedModifier * noclipSpeed * direction; + } + if (Input.GetKey(KeyCode.Delete)) { // left + Vector3 direction = camera.transform.right; + direction.Normalize(); + camera.transform.position -= Time.deltaTime * speedModifier * noclipSpeed * direction; + } + if (Input.GetKey(KeyCode.PageDown)) { // right + Vector3 direction = camera.transform.right; + direction.Normalize(); + camera.transform.position += Time.deltaTime * speedModifier * noclipSpeed * direction; + } + if (Input.GetKey(KeyCode.Insert)) { // down + Vector3 direction = camera.transform.up; + direction.Normalize(); + camera.transform.position -= Time.deltaTime * speedModifier * noclipSpeed * direction; + } + if (Input.GetKey(KeyCode.PageUp)) { // up + Vector3 direction = camera.transform.up; + direction.Normalize(); + camera.transform.position += Time.deltaTime * speedModifier * noclipSpeed * direction; + } + } + + void SaveStartPos() {} + + void RestoreSavedPos() {} + + Camera camera; + + // (...) + + bool noclip = true; + float fovChange = 500f * Time.deltaTime; + float noclipSpeed = 50f; + } +}