mirror of
https://github.com/misternebula/quantum-space-buddies.git
synced 2025-02-10 03:40:01 +00:00
stuffz
This commit is contained in:
parent
18647e2ec0
commit
dd7ccf48b5
35
QSB/Instruments/InstrumentsManager.cs
Normal file
35
QSB/Instruments/InstrumentsManager.cs
Normal file
@ -0,0 +1,35 @@
|
||||
using QSB.Instruments.QSBCamera;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using UnityEngine;
|
||||
|
||||
namespace QSB.Instruments
|
||||
{
|
||||
public class InstrumentsManager : MonoBehaviour
|
||||
{
|
||||
public static InstrumentsManager Instance;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
Instance = this;
|
||||
gameObject.AddComponent<CameraManager>();
|
||||
}
|
||||
|
||||
private void Update()
|
||||
{
|
||||
if (Input.GetKeyDown(KeyCode.Keypad9))
|
||||
{
|
||||
if (CameraManager.Instance.Mode == CameraMode.FirstPerson)
|
||||
{
|
||||
CameraManager.Instance.SwitchTo3rdPerson();
|
||||
}
|
||||
else
|
||||
{
|
||||
CameraManager.Instance.SwitchTo1stPerson();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
120
QSB/Instruments/QSBCamera/CameraManager.cs
Normal file
120
QSB/Instruments/QSBCamera/CameraManager.cs
Normal file
@ -0,0 +1,120 @@
|
||||
using OWML.Common;
|
||||
using QSB.Utility;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using UnityEngine;
|
||||
using UnityEngine.PostProcessing;
|
||||
|
||||
namespace QSB.Instruments.QSBCamera
|
||||
{
|
||||
public class CameraManager : MonoBehaviour
|
||||
{
|
||||
public static CameraManager Instance;
|
||||
private GameObject CameraBase;
|
||||
private GameObject CameraObj;
|
||||
private Camera Camera;
|
||||
private OWCamera OWCamera;
|
||||
public bool IsSetUp { get; private set; }
|
||||
public CameraMode Mode { get; private set; }
|
||||
|
||||
public void Start()
|
||||
{
|
||||
Instance = this;
|
||||
QSBSceneManager.OnSceneLoaded += OnSceneLoaded;
|
||||
}
|
||||
|
||||
private void OnSceneLoaded(OWScene scene, bool inUniverse)
|
||||
{
|
||||
if (!inUniverse)
|
||||
{
|
||||
return;
|
||||
}
|
||||
IsSetUp = false;
|
||||
QSB.Helper.Events.Unity.RunWhen(() => Locator.GetPlayerCamera() != null && Locator.GetPlayerTransform() != null, FinishSetup);
|
||||
}
|
||||
|
||||
private void FinishSetup()
|
||||
{
|
||||
CameraBase = new GameObject();
|
||||
CameraBase.SetActive(false);
|
||||
CameraBase.AddComponent<Transform>();
|
||||
CameraBase.transform.parent = Locator.GetPlayerTransform();
|
||||
CameraBase.transform.localPosition = Vector3.zero;
|
||||
CameraBase.transform.localRotation = Quaternion.Euler(0, 0, 0);
|
||||
|
||||
CameraObj = new GameObject();
|
||||
CameraObj.transform.parent = CameraBase.transform;
|
||||
CameraObj.transform.localPosition = new Vector3(0, 0.8f, -5f);
|
||||
CameraObj.transform.localRotation = Quaternion.Euler(0, 0, 0);
|
||||
Camera = CameraObj.AddComponent<Camera>();
|
||||
Camera.cullingMask = Locator.GetPlayerCamera().mainCamera.cullingMask & ~(1 << 27) | (1 << 22);
|
||||
Camera.clearFlags = CameraClearFlags.Color;
|
||||
Camera.backgroundColor = Color.black;
|
||||
Camera.fieldOfView = 90f;
|
||||
Camera.nearClipPlane = 0.1f;
|
||||
Camera.farClipPlane = 40000f;
|
||||
Camera.depth = 0f;
|
||||
Camera.enabled = false;
|
||||
OWCamera = CameraObj.AddComponent<OWCamera>();
|
||||
OWCamera.renderSkybox = true;
|
||||
|
||||
var screenGrab = CameraObj.AddComponent<FlashbackScreenGrabImageEffect>();
|
||||
screenGrab._downsampleShader = Locator.GetPlayerCamera().gameObject.GetComponent<FlashbackScreenGrabImageEffect>()._downsampleShader;
|
||||
|
||||
var fogImage = CameraObj.AddComponent<PlanetaryFogImageEffect>();
|
||||
fogImage.fogShader = Locator.GetPlayerCamera().gameObject.GetComponent<PlanetaryFogImageEffect>().fogShader;
|
||||
|
||||
var postProcessing = CameraObj.AddComponent<PostProcessingBehaviour>();
|
||||
postProcessing.profile = Locator.GetPlayerCamera().gameObject.GetAddComponent<PostProcessingBehaviour>().profile;
|
||||
|
||||
CameraBase.SetActive(true);
|
||||
|
||||
IsSetUp = true;
|
||||
}
|
||||
|
||||
public void SwitchTo3rdPerson()
|
||||
{
|
||||
if (!IsSetUp)
|
||||
{
|
||||
DebugLog.ToConsole("Warning - Camera not set up!", MessageType.Warning);
|
||||
return;
|
||||
}
|
||||
if (Mode == CameraMode.ThirdPerson)
|
||||
{
|
||||
DebugLog.ToConsole("Warning - Already in 3rd person!", MessageType.Warning);
|
||||
return;
|
||||
}
|
||||
if (OWInput.GetInputMode() != InputMode.Character)
|
||||
{
|
||||
DebugLog.ToConsole("Warning - Cannot change to 3rd person while not in Character inputmode!", MessageType.Warning);
|
||||
return;
|
||||
}
|
||||
OWInput.ChangeInputMode(InputMode.None);
|
||||
GlobalMessenger<OWCamera>.FireEvent("SwitchActiveCamera", OWCamera);
|
||||
Locator.GetActiveCamera().mainCamera.enabled = false;
|
||||
Camera.enabled = true;
|
||||
Mode = CameraMode.ThirdPerson;
|
||||
}
|
||||
|
||||
public void SwitchTo1stPerson()
|
||||
{
|
||||
if (!IsSetUp)
|
||||
{
|
||||
DebugLog.ToConsole("Warning - Camera not set up!", MessageType.Warning);
|
||||
return;
|
||||
}
|
||||
if (Mode == CameraMode.FirstPerson)
|
||||
{
|
||||
DebugLog.ToConsole("Warning - Already in 1st person!", MessageType.Warning);
|
||||
return;
|
||||
}
|
||||
OWInput.ChangeInputMode(InputMode.Character);
|
||||
GlobalMessenger<OWCamera>.FireEvent("SwitchActiveCamera", Locator.GetPlayerCamera());
|
||||
Locator.GetActiveCamera().mainCamera.enabled = true;
|
||||
Camera.enabled = false;
|
||||
Mode = CameraMode.FirstPerson;
|
||||
}
|
||||
}
|
||||
}
|
13
QSB/Instruments/QSBCamera/CameraMode.cs
Normal file
13
QSB/Instruments/QSBCamera/CameraMode.cs
Normal file
@ -0,0 +1,13 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace QSB.Instruments.QSBCamera
|
||||
{
|
||||
public enum CameraMode
|
||||
{
|
||||
FirstPerson,
|
||||
ThirdPerson
|
||||
}
|
||||
}
|
@ -4,6 +4,7 @@ using QSB.ConversationSync;
|
||||
using QSB.DeathSync;
|
||||
using QSB.ElevatorSync;
|
||||
using QSB.GeyserSync;
|
||||
using QSB.Instruments;
|
||||
using QSB.OrbSync;
|
||||
using QSB.Tools;
|
||||
using QSB.TransformSync;
|
||||
@ -49,6 +50,7 @@ namespace QSB
|
||||
gameObject.AddComponent<OrbManager>();
|
||||
gameObject.AddComponent<QSBSectorManager>();
|
||||
gameObject.AddComponent<ConversationManager>();
|
||||
gameObject.AddComponent<InstrumentsManager>();
|
||||
|
||||
Helper.Events.Unity.RunWhen(() => PlayerData.IsLoaded(), RebuildSettingsSave);
|
||||
}
|
||||
|
@ -37,6 +37,10 @@
|
||||
<Reference Include="Assembly-CSharp">
|
||||
<HintPath>$(GameDir)\OuterWilds_Data\Managed\Assembly-CSharp.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Assembly-CSharp-firstpass, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>$(GameDir)\OuterWilds_Data\Managed\Assembly-CSharp-firstpass.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="NAudio-Unity, Version=2.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\OWML.0.7.3\lib\net35\NAudio-Unity.dll</HintPath>
|
||||
</Reference>
|
||||
@ -144,6 +148,11 @@
|
||||
<Compile Include="Events\EventNames.cs" />
|
||||
<Compile Include="DeathSync\PlayerDeathEvent.cs" />
|
||||
<Compile Include="Events\IQSBEvent.cs" />
|
||||
<Compile Include="Instruments\QSBCamera\Patches.cs" />
|
||||
<Compile Include="Instruments\QSBCamera\ThirdPersonCamera.cs" />
|
||||
<Compile Include="Instruments\QSBCamera\CameraManager.cs" />
|
||||
<Compile Include="Instruments\QSBCamera\CameraMode.cs" />
|
||||
<Compile Include="Instruments\InstrumentsManager.cs" />
|
||||
<Compile Include="OrbSync\OrbManager.cs" />
|
||||
<Compile Include="OrbSync\OrbSlotEvent.cs" />
|
||||
<Compile Include="OrbSync\OrbPatches.cs" />
|
||||
@ -223,9 +232,7 @@
|
||||
<None Include="manifest.json" />
|
||||
<None Include="packages.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="Instruments\Camera\" />
|
||||
</ItemGroup>
|
||||
<ItemGroup />
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<PropertyGroup>
|
||||
<PostBuildEvent>md "$(OwmlDir)\Mods\$(ProjectName)"
|
||||
|
Loading…
x
Reference in New Issue
Block a user