Merge pull request #225 from misternebula/alek/condition-cleanup

condition cleanup
This commit is contained in:
Mister_Nebula 2020-12-14 21:38:58 +00:00 committed by GitHub
commit c7434a4b47
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
60 changed files with 303 additions and 358 deletions

View File

@ -29,7 +29,7 @@ namespace QSB.Animation
private RuntimeAnimatorController _riebeckController;
public AnimatorMirror Mirror { get; private set; }
public AnimationType CurrentType;
public AnimationType CurrentType { get; set; }
protected void Awake()
{
@ -38,7 +38,7 @@ namespace QSB.Animation
_netAnim.enabled = false;
_netAnim.animator = _anim;
QSBSceneManager.OnUniverseSceneLoaded += (OWScene scene) => LoadControllers();
QSBSceneManager.OnUniverseSceneLoaded += OnUniverseSceneLoaded;
}
protected override void OnDestroy()
@ -52,9 +52,11 @@ namespace QSB.Animation
_playerController.OnBecomeGrounded -= OnBecomeGrounded;
_playerController.OnBecomeUngrounded -= OnBecomeUngrounded;
QSBSceneManager.OnUniverseSceneLoaded -= (OWScene scene) => LoadControllers();
QSBSceneManager.OnUniverseSceneLoaded -= OnUniverseSceneLoaded;
}
private void OnUniverseSceneLoaded(OWScene obj) => LoadControllers();
private void LoadControllers()
{
var bundle = QSBCore.InstrumentAssetBundle;

View File

@ -2,12 +2,12 @@
{
public enum AnimationType
{
Chert,
Esker,
Feldspar,
Gabbro,
PlayerSuited,
PlayerUnsuited,
Riebeck
Chert = 0,
Esker = 1,
Feldspar = 2,
Gabbro = 3,
PlayerSuited = 4,
PlayerUnsuited = 5,
Riebeck = 6
}
}

View File

@ -35,7 +35,7 @@ namespace QSB.Animation
}
}
private void Update()
public void Update()
{
if (_to == null || _from == null)
{

View File

@ -27,7 +27,7 @@ namespace QSB.Animation
_bodyAnim = bodyAnim;
}
private void Update()
public void Update()
{
if (IsLocalPlayer)
{

View File

@ -2,7 +2,7 @@
using QSB.Messaging;
using QSB.Player;
namespace QSB.Animation
namespace QSB.Animation.Events
{
public class PlayerSuitEvent : QSBEvent<ToggleMessage>
{

View File

@ -15,41 +15,38 @@ namespace QSB.ConversationSync
{
public static ConversationManager Instance { get; private set; }
public AssetBundle ConversationAssetBundle { get; private set; }
private GameObject BoxPrefab;
public Dictionary<CharacterDialogueTree, GameObject> BoxMappings = new Dictionary<CharacterDialogueTree, GameObject>();
public Dictionary<CharacterDialogueTree, GameObject> BoxMappings { get; } = new Dictionary<CharacterDialogueTree, GameObject>();
private void Start()
private GameObject _boxPrefab;
public void Start()
{
Instance = this;
ConversationAssetBundle = QSBCore.Helper.Assets.LoadBundle("assets/conversation");
BoxPrefab = ConversationAssetBundle.LoadAsset<GameObject>("assets/dialoguebubble.prefab");
_boxPrefab = ConversationAssetBundle.LoadAsset<GameObject>("assets/dialoguebubble.prefab");
// TODO : make dynamic so it can be different sizes!
var font = (Font)Resources.Load(@"fonts\english - latin\spacemono-bold");
if (font == null)
{
DebugLog.ToConsole("Error - Font is null!", MessageType.Error);
}
BoxPrefab.GetComponent<Text>().font = font;
BoxPrefab.GetComponent<Text>().color = Color.white;
_boxPrefab.GetComponent<Text>().font = font;
_boxPrefab.GetComponent<Text>().color = Color.white;
}
public uint GetPlayerTalkingToTree(CharacterDialogueTree tree)
{
var treeIndex = QSBWorldSync.OldDialogueTrees.IndexOf(tree);
if (!QSBPlayerManager.PlayerList.Any(x => x.CurrentDialogueID == treeIndex))
{
return uint.MaxValue;
}
return QSBPlayerManager.PlayerList.First(x => x.CurrentDialogueID == treeIndex).PlayerId;
return QSBPlayerManager.PlayerList.All(x => x.CurrentDialogueID != treeIndex)
? uint.MaxValue
: QSBPlayerManager.PlayerList.First(x => x.CurrentDialogueID == treeIndex).PlayerId;
}
public void SendPlayerOption(string text)
{
public void SendPlayerOption(string text) =>
GlobalMessenger<uint, string, ConversationType>
.FireEvent(EventNames.QSBConversation, QSBPlayerManager.LocalPlayerId, text, ConversationType.Player);
}
public void SendCharacterDialogue(int id, string text)
{
@ -62,17 +59,13 @@ namespace QSB.ConversationSync
.FireEvent(EventNames.QSBConversation, (uint)id, text, ConversationType.Character);
}
public void CloseBoxPlayer()
{
public void CloseBoxPlayer() =>
GlobalMessenger<uint, string, ConversationType>
.FireEvent(EventNames.QSBConversation, QSBPlayerManager.LocalPlayerId, "", ConversationType.ClosePlayer);
}
public void CloseBoxCharacter(int id)
{
public void CloseBoxCharacter(int id) =>
GlobalMessenger<uint, string, ConversationType>
.FireEvent(EventNames.QSBConversation, (uint)id, "", ConversationType.CloseCharacter);
}
public void SendConvState(int charId, bool state)
{
@ -126,7 +119,7 @@ namespace QSB.ConversationSync
private GameObject CreateBox(Transform parent, float vertOffset, string text)
{
var newBox = Instantiate(BoxPrefab);
var newBox = Instantiate(_boxPrefab);
newBox.SetActive(false);
newBox.transform.parent = parent;
newBox.transform.localPosition = new Vector3(0, vertOffset, 0);

View File

@ -1,4 +1,5 @@
using OWML.Common;
using QSB.Patches;
using QSB.Player;
using QSB.Utility;
using QSB.WorldSync;
@ -73,17 +74,12 @@ namespace QSB.ConversationSync
CharacterDialogueTree ____dialogueTree)
{
var playerId = ConversationManager.Instance.GetPlayerTalkingToTree(____dialogueTree);
Vector3 position;
if (playerId == uint.MaxValue)
{
// TODO : Find closest player and track to that camera.
position = Locator.GetActiveCamera().transform.position;
}
else
{
position = QSBPlayerManager.GetPlayer(playerId).Camera.transform.position;
}
var b = ___headTrackingWeight * Mathf.Min(1, (!___lookOnlyWhenTalking) ? ((!____playerInHeadZone) ? 0 : 1) : ((!____inConversation || !____playerInHeadZone) ? 0 : 1));
var position = playerId == uint.MaxValue
? Locator.GetActiveCamera().transform.position
: QSBPlayerManager.GetPlayer(playerId).Camera.transform.position;
var b = ___headTrackingWeight * Mathf.Min(1, !___lookOnlyWhenTalking
? !____playerInHeadZone ? 0 : 1
: !____inConversation || !____playerInHeadZone ? 0 : 1);
____currentLookWeight = Mathf.Lerp(____currentLookWeight, b, Time.deltaTime * 2f);
____currentLookTarget = ___lookSpring.Update(____currentLookTarget, position, Time.deltaTime);
____animator.SetLookAtPosition(____currentLookTarget);
@ -94,11 +90,7 @@ namespace QSB.ConversationSync
public static bool OnZoneExit(CharacterDialogueTree ____dialogueTree)
{
var playerId = ConversationManager.Instance.GetPlayerTalkingToTree(____dialogueTree);
if (playerId == uint.MaxValue)
{
return true;
}
return false;
return playerId == uint.MaxValue;
}
public override void DoPatches()

View File

@ -2,9 +2,9 @@
{
public enum ConversationType
{
Character,
Player,
CloseCharacter,
ClosePlayer
Character = 0,
Player = 1,
CloseCharacter = 2,
ClosePlayer = 3
}
}

View File

@ -1,4 +1,5 @@
using QSB.Events;
using QSB.Patches;
using System.Linq;
namespace QSB.DeathSync

View File

@ -95,9 +95,7 @@ namespace QSB.DeathSync
} }
};
public static string GetPhrase(DeathType deathType)
{
return DeathDictionary[deathType].OrderBy(x => Guid.NewGuid()).First();
}
public static string GetPhrase(DeathType deathType) =>
DeathDictionary[deathType].OrderBy(x => Guid.NewGuid()).First();
}
}

View File

@ -8,7 +8,7 @@ namespace QSB.DeathSync
{
public class PreventShipDestruction : MonoBehaviour
{
private void Awake()
public void Awake()
{
QSBCore.Helper.HarmonyHelper.Transpile<ShipDetachableLeg>("Detach", typeof(Patch), nameof(Patch.ReturnNull));
QSBCore.Helper.HarmonyHelper.Transpile<ShipDetachableModule>("Detach", typeof(Patch), nameof(Patch.ReturnNull));

View File

@ -28,7 +28,7 @@ namespace QSB.DeathSync
private ShipCockpitController _cockpitController;
private PlayerSpacesuit _spaceSuit;
private void Awake()
public void Awake()
{
Instance = this;
@ -126,11 +126,9 @@ namespace QSB.DeathSync
_spaceSuit.RemoveSuit(true);
}
private SpawnPoint GetSpawnPoint(bool isShip = false)
{
return _playerSpawner
private SpawnPoint GetSpawnPoint(bool isShip = false) =>
_playerSpawner
.GetValue<SpawnPoint[]>("_spawnList")
.FirstOrDefault(spawnPoint => spawnPoint.GetSpawnLocation() == SpawnLocation.TimberHearth && spawnPoint.IsShipSpawn() == isShip);
}
}
}

View File

@ -11,16 +11,13 @@ namespace QSB.ElevatorSync
private List<Elevator> _elevators;
private void Awake()
public void Awake()
{
Instance = this;
QSBSceneManager.OnSceneLoaded += OnSceneLoaded;
}
private void OnDestroy()
{
QSBSceneManager.OnSceneLoaded -= OnSceneLoaded;
}
public void OnDestroy() => QSBSceneManager.OnSceneLoaded -= OnSceneLoaded;
private void OnSceneLoaded(OWScene scene, bool isInUniverse)
{

View File

@ -1,5 +1,6 @@
using OWML.ModHelper.Events;
using QSB.Events;
using QSB.Patches;
namespace QSB.ElevatorSync
{

View File

@ -25,8 +25,6 @@
public static string QSBSectorChange = "QSBSectorChange";
public static string QSBPlayerStatesRequest = "QSBPlayerStatesRequest";
public static string QSBServerTime = "QSBServerTime";
public static string QSBOnProbeAnchor = "QSBOnProbeAnchor";
public static string QSBOnProbeWarp = "QSBOnProbeWarp";
public static string QSBStartLift = "QSBStartLift";
public static string QSBGeyserState = "QSBGeyserState";
public static string QSBCrouch = "QSBAnimTrigger";

View File

@ -9,13 +9,14 @@ namespace QSB.Events
{
public abstract EventType Type { get; }
public uint LocalPlayerId => QSBPlayerManager.LocalPlayerId;
private readonly MessageHandler<T> _eventHandler;
protected QSBEvent()
{
_eventHandler = new MessageHandler<T>(Type);
_eventHandler.OnClientReceiveMessage += (T message) => OnReceive(false, message);
_eventHandler.OnServerReceiveMessage += (T message) => OnReceive(true, message);
_eventHandler.OnClientReceiveMessage += message => OnReceive(false, message);
_eventHandler.OnServerReceiveMessage += message => OnReceive(true, message);
}
public abstract void SetupListener();

View File

@ -1,5 +1,4 @@
using OWML.Common;
using QSB.Animation;
using QSB.Animation.Events;
using QSB.ConversationSync.Events;
using QSB.DeathSync.Events;

View File

@ -6,13 +6,13 @@ namespace QSB.GeyserSync
{
public class GeyserManager : MonoBehaviour
{
private void Awake()
public void Awake()
{
QSBSceneManager.OnSceneLoaded += OnSceneLoaded;
QSBPatchManager.OnPatchType += OnPatchType;
}
private void OnDestroy()
public void OnDestroy()
{
QSBSceneManager.OnSceneLoaded -= OnSceneLoaded;
QSBPatchManager.OnPatchType -= OnPatchType;

View File

@ -10,28 +10,28 @@ namespace QSB.Instruments
{
public class InstrumentsManager : PlayerSyncObject
{
private Transform rootObj;
private Transform _rootObj;
private AnimationType _savedType;
private GameObject ChertDrum;
private GameObject _chertDrum;
public void InitLocal(Transform root)
{
rootObj = root;
_rootObj = root;
gameObject.AddComponent<CameraManager>();
QSBInputManager.ChertTaunt += () => StartInstrument(AnimationType.Chert);
QSBInputManager.EskerTaunt += () => StartInstrument(AnimationType.Esker);
QSBInputManager.FeldsparTaunt += () => StartInstrument(AnimationType.Feldspar);
QSBInputManager.GabbroTaunt += () => StartInstrument(AnimationType.Gabbro);
QSBInputManager.RiebeckTaunt += () => StartInstrument(AnimationType.Riebeck);
QSBInputManager.ExitTaunt += () => ReturnToPlayer();
QSBInputManager.ChertTaunt += OnChertTaunt;
QSBInputManager.EskerTaunt += OnEskerTaunt;
QSBInputManager.FeldsparTaunt += OnFeldsparTaunt;
QSBInputManager.GabbroTaunt += OnGabbroTaunt;
QSBInputManager.RiebeckTaunt += OnRiebeckTaunt;
QSBInputManager.ExitTaunt += ReturnToPlayer;
QSBCore.Helper.Events.Unity.RunWhen(() => Locator.GetPlayerBody() != null, SetupInstruments);
}
public void InitRemote(Transform root)
{
rootObj = root;
_rootObj = root;
QSBCore.Helper.Events.Unity.RunWhen(() => Locator.GetPlayerBody() != null, SetupInstruments);
}
@ -42,18 +42,24 @@ namespace QSB.Instruments
{
return;
}
QSBInputManager.ChertTaunt -= () => StartInstrument(AnimationType.Chert);
QSBInputManager.EskerTaunt -= () => StartInstrument(AnimationType.Esker);
QSBInputManager.FeldsparTaunt -= () => StartInstrument(AnimationType.Feldspar);
QSBInputManager.GabbroTaunt -= () => StartInstrument(AnimationType.Gabbro);
QSBInputManager.RiebeckTaunt -= () => StartInstrument(AnimationType.Riebeck);
QSBInputManager.ExitTaunt -= () => ReturnToPlayer();
QSBInputManager.ChertTaunt -= OnChertTaunt;
QSBInputManager.EskerTaunt -= OnEskerTaunt;
QSBInputManager.FeldsparTaunt -= OnFeldsparTaunt;
QSBInputManager.GabbroTaunt -= OnGabbroTaunt;
QSBInputManager.RiebeckTaunt -= OnRiebeckTaunt;
QSBInputManager.ExitTaunt -= ReturnToPlayer;
}
private void OnChertTaunt() => StartInstrument(AnimationType.Chert);
private void OnEskerTaunt() => StartInstrument(AnimationType.Esker);
private void OnFeldsparTaunt() => StartInstrument(AnimationType.Feldspar);
private void OnGabbroTaunt() => StartInstrument(AnimationType.Gabbro);
private void OnRiebeckTaunt() => StartInstrument(AnimationType.Riebeck);
private void SetupInstruments()
{
var bundle = QSBCore.InstrumentAssetBundle;
ChertDrum = MakeChertDrum(bundle);
_chertDrum = MakeChertDrum(bundle);
}
private GameObject MakeChertDrum(AssetBundle bundle)
@ -72,8 +78,8 @@ namespace QSB.Instruments
// TODO : fix for instrument release
mr.sharedMaterial = null;
}
drum.transform.parent = rootObj;
drum.transform.rotation = rootObj.rotation;
drum.transform.parent = _rootObj;
drum.transform.rotation = _rootObj.rotation;
drum.transform.localPosition = Vector3.zero;
drum.transform.localScale = new Vector3(16.0f, 16.5f, 16.0f);
drum.SetActive(false);
@ -120,11 +126,11 @@ namespace QSB.Instruments
switch (type)
{
case AnimationType.Chert:
ChertDrum?.SetActive(true);
_chertDrum?.SetActive(true);
break;
case AnimationType.PlayerSuited:
case AnimationType.PlayerUnsuited:
ChertDrum?.SetActive(false);
_chertDrum?.SetActive(false);
break;
}
}

View File

@ -4,6 +4,8 @@ namespace QSB.Instruments.QSBCamera
{
internal class CameraController : MonoBehaviour
{
public GameObject CameraObject { get; set; }
private float _degreesX;
private float _degreesY;
private Quaternion _rotationX;
@ -15,9 +17,7 @@ namespace QSB.Instruments.QSBCamera
// Maximum distance for camera clipping
private const float RayLength = 5f;
public GameObject CameraObject;
private void FixedUpdate()
public void FixedUpdate()
{
if (CameraManager.Instance.Mode != CameraMode.ThirdPerson)
{
@ -41,27 +41,19 @@ namespace QSB.Instruments.QSBCamera
else
{
// Raycast didn't hit collider, get target from camera direction
localTargetPoint = localDirection * RayLength * PercentToMove;
localTargetPoint = RayLength * PercentToMove * localDirection;
}
var targetDistance = Vector3.Distance(origin, transform.TransformPoint(localTargetPoint));
var currentDistance = Vector3.Distance(origin, CameraObject.transform.position);
Vector3 movement;
if (targetDistance < currentDistance)
{
// Snap to target to avoid clipping
movement = localTargetPoint;
}
else
{
// Move camera out slowly
movement = Vector3.MoveTowards(CameraObject.transform.localPosition, localTargetPoint, Time.fixedDeltaTime * 2f);
}
var movement = targetDistance < currentDistance
? localTargetPoint
: Vector3.MoveTowards(CameraObject.transform.localPosition, localTargetPoint, Time.fixedDeltaTime * 2f);
CameraObject.transform.localPosition = movement;
}
private void UpdateInput()
{
var input = OWInput.GetValue(InputLibrary.look, false, InputMode.All);
var input = OWInput.GetValue(InputLibrary.look, false);
_degreesX += input.x * 180f * Time.fixedDeltaTime;
_degreesY += input.y * 180f * Time.fixedDeltaTime;
}

View File

@ -8,13 +8,16 @@ 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; }
private GameObject _cameraBase;
private GameObject _cameraObj;
private Camera _camera;
private OWCamera _owCamera;
public void Start()
{
Instance = this;
@ -23,38 +26,38 @@ namespace QSB.Instruments.QSBCamera
private void SetupCamera()
{
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);
_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, -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;
_cameraObj = new GameObject();
_cameraObj.transform.parent = _cameraBase.transform;
_cameraObj.transform.localPosition = new Vector3(0, 0, -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;
CameraBase.AddComponent<CameraController>().CameraObject = CameraObj;
_cameraBase.AddComponent<CameraController>().CameraObject = _cameraObj;
var screenGrab = CameraObj.AddComponent<FlashbackScreenGrabImageEffect>();
var screenGrab = _cameraObj.AddComponent<FlashbackScreenGrabImageEffect>();
screenGrab._downsampleShader = Locator.GetPlayerCamera().gameObject.GetComponent<FlashbackScreenGrabImageEffect>()._downsampleShader;
var fogImage = CameraObj.AddComponent<PlanetaryFogImageEffect>();
var fogImage = _cameraObj.AddComponent<PlanetaryFogImageEffect>();
fogImage.fogShader = Locator.GetPlayerCamera().gameObject.GetComponent<PlanetaryFogImageEffect>().fogShader;
CameraBase.SetActive(true);
_cameraBase.SetActive(true);
IsSetUp = true;
}
@ -79,14 +82,14 @@ namespace QSB.Instruments.QSBCamera
return;
}
OWInput.ChangeInputMode(InputMode.None);
GlobalMessenger<OWCamera>.FireEvent("SwitchActiveCamera", OWCamera);
GlobalMessenger<OWCamera>.FireEvent("SwitchActiveCamera", _owCamera);
Locator.GetPlayerCamera().mainCamera.enabled = false;
if (CameraObj.GetComponent<PostProcessingBehaviour>() == null)
if (_cameraObj.GetComponent<PostProcessingBehaviour>() == null)
{
var postProcessing = CameraObj.AddComponent<PostProcessingBehaviour>();
var postProcessing = _cameraObj.AddComponent<PostProcessingBehaviour>();
postProcessing.profile = Locator.GetPlayerCamera().gameObject.GetComponent<PostProcessingBehaviour>().profile;
}
Camera.enabled = true;
_camera.enabled = true;
Mode = CameraMode.ThirdPerson;
}
@ -107,7 +110,7 @@ namespace QSB.Instruments.QSBCamera
OWInput.ChangeInputMode(InputMode.Character);
GlobalMessenger<OWCamera>.FireEvent("SwitchActiveCamera", Locator.GetPlayerCamera());
Locator.GetActiveCamera().mainCamera.enabled = true;
Camera.enabled = false;
_camera.enabled = false;
Mode = CameraMode.FirstPerson;
}
}

View File

@ -2,7 +2,7 @@
{
public enum CameraMode
{
FirstPerson,
ThirdPerson
FirstPerson = 0,
ThirdPerson = 1
}
}

View File

@ -13,7 +13,6 @@ namespace QSB.Messaging
public event Action<T> OnServerReceiveMessage;
private readonly short _eventType;
public EventType BaseEventType => (EventType)(_eventType - 1 - QSBMsgType.Highest);
public MessageHandler(EventType eventType)
{

View File

@ -26,19 +26,18 @@ namespace QSB.OrbSync.Events
public override void OnReceiveRemote(bool server, WorldObjectMessage message)
{
if (!server)
if (server)
{
if (QSBWorldSync.OrbSyncList.Count < message.ObjectId)
{
DebugLog.DebugWrite($"Error - Orb id {message.ObjectId} out of range of orb sync list {QSBWorldSync.OrbSyncList.Count}.", MessageType.Error);
return;
}
var orb = QSBWorldSync.OrbSyncList
.First(x => x.AttachedOrb == QSBWorldSync.OldOrbList[message.ObjectId]);
orb.enabled = true;
return;
HandleServer(message);
}
else
{
HandleClient(message);
}
}
private static void HandleServer(WorldObjectMessage message)
{
var fromPlayer = QSBNetworkServer.connections.First(x => x.GetPlayer().PlayerId == message.FromId);
if (QSBWorldSync.OrbSyncList.Count == 0)
{
@ -69,5 +68,19 @@ namespace QSB.OrbSync.Events
orbIdentity.AssignClientAuthority(fromPlayer);
orbSync.enabled = true;
}
private static void HandleClient(WorldObjectMessage message)
{
if (QSBWorldSync.OrbSyncList.Count < message.ObjectId)
{
DebugLog.DebugWrite(
$"Error - Orb id {message.ObjectId} out of range of orb sync list {QSBWorldSync.OrbSyncList.Count}.",
MessageType.Error);
return;
}
var orb = QSBWorldSync.OrbSyncList
.First(x => x.AttachedOrb == QSBWorldSync.OldOrbList[message.ObjectId]);
orb.enabled = true;
}
}
}

View File

@ -1,4 +1,5 @@
using QSB.Events;
using QSB.Patches;
using QSB.WorldSync;
using UnityEngine;

View File

@ -1,4 +1,4 @@
namespace QSB
namespace QSB.Patches
{
public abstract class QSBPatch
{

View File

@ -15,10 +15,10 @@ namespace QSB.Patches
public static class QSBPatchManager
{
public static List<QSBPatch> _patchList = new List<QSBPatch>();
public static event PatchEvent OnPatchType;
private static List<QSBPatch> _patchList = new List<QSBPatch>();
public static void Init()
{
_patchList = new List<QSBPatch>

View File

@ -1,9 +1,9 @@
namespace QSB
namespace QSB.Patches
{
public enum QSBPatchTypes
{
OnModStart,
OnClientConnect,
OnNonServerClientConnect
OnModStart = 0,
OnClientConnect = 1,
OnNonServerClientConnect = 2
}
}

View File

@ -24,24 +24,38 @@ namespace QSB.Player.Events
public override void OnReceiveRemote(bool server, ToggleMessage message)
{
if (!server)
if (server)
{
DebugLog.DebugWrite($"Get ready event from {message.FromId}", MessageType.Success);
if (!QSBPlayerManager.PlayerExists(message.FromId))
{
DebugLog.ToConsole("Error - Got ready event for non-existent player! Did we not send a PlayerStatesRequestEvent? Or was it not handled?", MessageType.Error);
return;
}
foreach (var item in QSBPlayerManager.GetSyncObjects<TransformSync.TransformSync>()
.Where(x => x != null && x.IsReady && x.ReferenceSector != null && x.PlayerId == LocalPlayerId))
{
GlobalMessenger<uint, QSBSector>.FireEvent(EventNames.QSBSectorChange, item.NetId.Value, item.ReferenceSector);
}
return;
HandleServer(message);
}
else
{
HandleClient(message);
}
}
private static void HandleServer(ToggleMessage message)
{
DebugLog.DebugWrite($"Get ready event from {message.FromId}", MessageType.Success);
QSBPlayerManager.GetPlayer(message.AboutId).IsReady = message.ToggleValue;
GlobalMessenger.FireEvent(EventNames.QSBServerSendPlayerStates);
}
private void HandleClient(ToggleMessage message)
{
DebugLog.DebugWrite($"Get ready event from {message.FromId}", MessageType.Success);
if (!QSBPlayerManager.PlayerExists(message.FromId))
{
DebugLog.ToConsole(
"Error - Got ready event for non-existent player! Did we not send a PlayerStatesRequestEvent? Or was it not handled?",
MessageType.Error);
return;
}
foreach (var item in QSBPlayerManager.GetSyncObjects<TransformSync.TransformSync>()
.Where(x => x != null && x.IsReady && x.ReferenceSector != null && x.PlayerId == LocalPlayerId))
{
GlobalMessenger<uint, QSBSector>.FireEvent(EventNames.QSBSectorChange, item.NetId.Value, item.ReferenceSector);
}
}
}
}

View File

@ -13,7 +13,7 @@ namespace QSB.Player
public static PlayerInfo LocalPlayer => GetPlayer(LocalPlayerId);
public static List<PlayerInfo> PlayerList { get; } = new List<PlayerInfo>();
private static List<PlayerSyncObject> _playerSyncObjects = new List<PlayerSyncObject>();
private static readonly List<PlayerSyncObject> PlayerSyncObjects = new List<PlayerSyncObject>();
public static PlayerInfo GetPlayer(uint id)
{
@ -44,8 +44,8 @@ namespace QSB.Player
PlayerList.Clear();
}
public static bool PlayerExists(uint id)
=> id != uint.MaxValue && PlayerList.Any(x => x.PlayerId == id);
public static bool PlayerExists(uint id) =>
id != uint.MaxValue && PlayerList.Any(x => x.PlayerId == id);
public static void HandleFullStateMessage(PlayerStateMessage message)
{
@ -59,28 +59,28 @@ namespace QSB.Player
}
}
public static IEnumerable<T> GetSyncObjects<T>() where T : PlayerSyncObject
=> _playerSyncObjects.OfType<T>().Where(x => x != null);
public static IEnumerable<T> GetSyncObjects<T>() where T : PlayerSyncObject =>
PlayerSyncObjects.OfType<T>().Where(x => x != null);
public static T GetSyncObject<T>(uint id) where T : PlayerSyncObject
=> GetSyncObjects<T>().FirstOrDefault(x => x != null && x.AttachedNetId == id);
public static T GetSyncObject<T>(uint id) where T : PlayerSyncObject =>
GetSyncObjects<T>().FirstOrDefault(x => x != null && x.AttachedNetId == id);
public static void AddSyncObject(PlayerSyncObject obj)
{
DebugLog.DebugWrite($"SyncObject Add : type<{obj.GetType().Name}>, netid<{obj.NetId}>");
_playerSyncObjects.Add(obj);
PlayerSyncObjects.Add(obj);
}
public static void RemoveSyncObject(PlayerSyncObject obj)
{
DebugLog.DebugWrite($"SyncObject Remove : type<{obj.GetType().Name}>, netid<{obj.NetId}>");
_playerSyncObjects.Remove(obj);
PlayerSyncObjects.Remove(obj);
}
public static bool IsBelongingToLocalPlayer(uint id)
{
return id == LocalPlayerId ||
_playerSyncObjects.Any(x => x != null && x.AttachedNetId == id && x.IsLocalPlayer);
PlayerSyncObjects.Any(x => x != null && x.AttachedNetId == id && x.IsLocalPlayer);
}
}
}

View File

@ -28,7 +28,7 @@ namespace QSB
public static bool HasWokenUp { get; set; }
public static bool IsServer => QSBNetworkServer.active;
private void Awake()
public void Awake()
{
Application.runInBackground = true;
@ -41,7 +41,7 @@ namespace QSB
LogFilter.currentLogLevel = LogFilter.Debug;
}
private void Start()
public void Start()
{
Helper = ModHelper;
DebugLog.ToConsole($"* Start of QSB version {Helper.Manifest.Version} - authored by {Helper.Manifest.Author}", MessageType.Info);
@ -68,10 +68,8 @@ namespace QSB
Helper.HarmonyHelper.EmptyMethod(typeof(OWTime).GetMethod("Pause"));
}
private void Update()
{
public void Update() =>
QSBNetworkIdentity.UNetStaticUpdate();
}
public override void Configure(IModConfig config)
{

View File

@ -36,7 +36,7 @@ namespace QSB
"Jinha"
};
private void Awake()
public void Awake()
{
PlayerName = GetPlayerName();
CanEditName = true;
@ -54,7 +54,7 @@ namespace QSB
: _defaultNames.OrderBy(x => Guid.NewGuid()).First();
}
private void OnGUI()
public void OnGUI()
{
GUI.Label(new Rect(10, 10, 200f, 20f), "Name:");
if (CanEditName)

View File

@ -25,23 +25,23 @@ namespace QSB
{
public class QSBNetworkManager : QSBNetworkManagerUNET
{
private const int MaxConnections = 128;
private const int MaxBufferedPackets = 64;
public static QSBNetworkManager Instance { get; private set; }
public event Action OnNetworkManagerReady;
public bool IsReady { get; private set; }
public GameObject OrbPrefab { get; set; }
private const int MaxConnections = 128;
private const int MaxBufferedPackets = 64;
private QSBNetworkLobby _lobby;
private AssetBundle _assetBundle;
private GameObject _shipPrefab;
private GameObject _cameraPrefab;
private GameObject _probePrefab;
public GameObject OrbPrefab;
private void Awake()
public void Awake()
{
Instance = this;
@ -49,69 +49,44 @@ namespace QSB
_assetBundle = QSBCore.NetworkAssetBundle;
playerPrefab = _assetBundle.LoadAsset<GameObject>("assets/networkplayer.prefab");
var ident = playerPrefab.AddComponent<QSBNetworkIdentity>();
ident.LocalPlayerAuthority = true;
ident.SetValue("m_AssetId", playerPrefab.GetComponent<NetworkIdentity>().assetId);
ident.SetValue("m_SceneId", playerPrefab.GetComponent<NetworkIdentity>().sceneId);
SetupNetworkId(playerPrefab);
Destroy(playerPrefab.GetComponent<NetworkTransform>());
Destroy(playerPrefab.GetComponent<NetworkIdentity>());
var transform = playerPrefab.AddComponent<QSBNetworkTransform>();
transform.SendInterval = 0.1f;
transform.SyncRotationAxis = QSBNetworkTransform.AxisSyncMode.AxisXYZ;
SetupNetworkTransform(playerPrefab);
playerPrefab.AddComponent<PlayerTransformSync>();
playerPrefab.AddComponent<AnimationSync>();
playerPrefab.AddComponent<WakeUpSync>();
playerPrefab.AddComponent<InstrumentsManager>();
_shipPrefab = _assetBundle.LoadAsset<GameObject>("assets/networkship.prefab");
ident = _shipPrefab.AddComponent<QSBNetworkIdentity>();
ident.LocalPlayerAuthority = true;
ident.SetValue("m_AssetId", _shipPrefab.GetComponent<NetworkIdentity>().assetId);
ident.SetValue("m_SceneId", _shipPrefab.GetComponent<NetworkIdentity>().sceneId);
SetupNetworkId(_shipPrefab);
Destroy(_shipPrefab.GetComponent<NetworkTransform>());
Destroy(_shipPrefab.GetComponent<NetworkIdentity>());
transform = _shipPrefab.AddComponent<QSBNetworkTransform>();
transform.SendInterval = 0.1f;
transform.SyncRotationAxis = QSBNetworkTransform.AxisSyncMode.AxisXYZ;
SetupNetworkTransform(_shipPrefab);
_shipPrefab.AddComponent<ShipTransformSync>();
spawnPrefabs.Add(_shipPrefab);
_cameraPrefab = _assetBundle.LoadAsset<GameObject>("assets/networkcameraroot.prefab");
ident = _cameraPrefab.AddComponent<QSBNetworkIdentity>();
ident.LocalPlayerAuthority = true;
ident.SetValue("m_AssetId", _cameraPrefab.GetComponent<NetworkIdentity>().assetId);
ident.SetValue("m_SceneId", _cameraPrefab.GetComponent<NetworkIdentity>().sceneId);
SetupNetworkId(_cameraPrefab);
Destroy(_cameraPrefab.GetComponent<NetworkTransform>());
Destroy(_cameraPrefab.GetComponent<NetworkIdentity>());
transform = _cameraPrefab.AddComponent<QSBNetworkTransform>();
transform.SendInterval = 0.1f;
transform.SyncRotationAxis = QSBNetworkTransform.AxisSyncMode.AxisXYZ;
SetupNetworkTransform(_cameraPrefab);
_cameraPrefab.AddComponent<PlayerCameraSync>();
spawnPrefabs.Add(_cameraPrefab);
_probePrefab = _assetBundle.LoadAsset<GameObject>("assets/networkprobe.prefab");
ident = _probePrefab.AddComponent<QSBNetworkIdentity>();
ident.LocalPlayerAuthority = true;
ident.SetValue("m_AssetId", _probePrefab.GetComponent<NetworkIdentity>().assetId);
ident.SetValue("m_SceneId", _probePrefab.GetComponent<NetworkIdentity>().sceneId);
SetupNetworkId(_probePrefab);
Destroy(_probePrefab.GetComponent<NetworkTransform>());
Destroy(_probePrefab.GetComponent<NetworkIdentity>());
transform = _probePrefab.AddComponent<QSBNetworkTransform>();
transform.SendInterval = 0.1f;
transform.SyncRotationAxis = QSBNetworkTransform.AxisSyncMode.AxisXYZ;
SetupNetworkTransform(_probePrefab);
_probePrefab.AddComponent<PlayerProbeSync>();
spawnPrefabs.Add(_probePrefab);
OrbPrefab = _assetBundle.LoadAsset<GameObject>("assets/networkorb.prefab");
ident = OrbPrefab.AddComponent<QSBNetworkIdentity>();
ident.LocalPlayerAuthority = true;
ident.SetValue("m_AssetId", OrbPrefab.GetComponent<NetworkIdentity>().assetId);
ident.SetValue("m_SceneId", OrbPrefab.GetComponent<NetworkIdentity>().sceneId);
SetupNetworkId(OrbPrefab);
Destroy(OrbPrefab.GetComponent<NetworkTransform>());
Destroy(OrbPrefab.GetComponent<NetworkIdentity>());
transform = OrbPrefab.AddComponent<QSBNetworkTransform>();
transform.SendInterval = 0.1f;
transform.SyncRotationAxis = QSBNetworkTransform.AxisSyncMode.AxisXYZ;
SetupNetworkTransform(OrbPrefab);
OrbPrefab.AddComponent<NomaiOrbTransformSync>();
spawnPrefabs.Add(OrbPrefab);
@ -119,8 +94,23 @@ namespace QSB
QSBSceneManager.OnUniverseSceneLoaded += OnSceneLoaded;
}
private void OnDestroy()
=> QSBSceneManager.OnUniverseSceneLoaded -= OnSceneLoaded;
private void SetupNetworkId(GameObject go)
{
var ident = go.AddComponent<QSBNetworkIdentity>();
ident.LocalPlayerAuthority = true;
ident.SetValue("m_AssetId", playerPrefab.GetComponent<NetworkIdentity>().assetId);
ident.SetValue("m_SceneId", playerPrefab.GetComponent<NetworkIdentity>().sceneId);
}
private void SetupNetworkTransform(GameObject go)
{
var trans = go.AddComponent<QSBNetworkTransform>();
trans.SendInterval = 0.1f;
trans.SyncRotationAxis = QSBNetworkTransform.AxisSyncMode.AxisXYZ;
}
public void OnDestroy() =>
QSBSceneManager.OnUniverseSceneLoaded -= OnSceneLoaded;
private void OnSceneLoaded(OWScene scene)
{

View File

@ -31,7 +31,7 @@ namespace QSB
}
}
private static bool InUniverse(OWScene scene)
=> scene == OWScene.SolarSystem || scene == OWScene.EyeOfTheUniverse;
private static bool InUniverse(OWScene scene) =>
scene == OWScene.SolarSystem || scene == OWScene.EyeOfTheUniverse;
}
}

View File

@ -17,14 +17,14 @@ namespace QSB.SectorSync
Sector.Name.Ship
};
private void Awake()
public void Awake()
{
Instance = this;
QSBSceneManager.OnUniverseSceneLoaded += (OWScene scene) => RebuildSectors();
DebugLog.DebugWrite("Sector Manager ready.", MessageType.Success);
}
private void OnDestroy()
public void OnDestroy()
{
QSBSceneManager.OnUniverseSceneLoaded -= (OWScene scene) => RebuildSectors();
}
@ -43,7 +43,7 @@ namespace QSB.SectorSync
IsReady = QSBWorldSync.GetWorldObjects<QSBSector>().Any();
}
public QSBSector GetClosestSector(Transform trans) // trans rights
public QSBSector GetClosestSector(Transform trans) // trans rights \o/
{
return QSBWorldSync.GetWorldObjects<QSBSector>()
.Where(sector => sector.Sector != null && !_sectorBlacklist.Contains(sector.Type))

View File

@ -21,7 +21,8 @@ namespace QSB.SectorSync
{
return;
}
QSBPlayerManager.GetSyncObjects<TransformSync.TransformSync>().Where(x => x.HasAuthority).ToList().ForEach(CheckTransformSyncSector);
QSBPlayerManager.GetSyncObjects<TransformSync.TransformSync>()
.Where(x => x.HasAuthority).ToList().ForEach(CheckTransformSyncSector);
_checkTimer = 0;
}
@ -41,9 +42,7 @@ namespace QSB.SectorSync
SendSector(transformSync.NetId.Value, closestSector);
}
private void SendSector(uint id, QSBSector sector)
{
private void SendSector(uint id, QSBSector sector) =>
GlobalMessenger<uint, QSBSector>.FireEvent(EventNames.QSBSectorChange, id, sector);
}
}
}

View File

@ -18,9 +18,7 @@ namespace QSB.TimeSync.Events
LoopCount = count
};
public override void OnReceiveRemote(bool server, ServerTimeMessage message)
{
public override void OnReceiveRemote(bool server, ServerTimeMessage message) =>
WakeUpSync.LocalInstance.OnClientReceiveMessage(message);
}
}
}

View File

@ -5,7 +5,7 @@ namespace QSB.TimeSync
{
public class PreserveTimeScale : QSBNetworkBehaviour
{
private void Start()
public void Start()
{
QSBCore.Helper.Menus.PauseMenu.GetTitleButton("Button-EndCurrentLoop").Hide(); // Remove the meditation button

View File

@ -2,8 +2,8 @@
{
public enum TimeSyncType
{
None,
Pausing,
Fastforwarding
None = 0,
Pausing = 1,
Fastforwarding = 2
}
}

View File

@ -15,7 +15,7 @@ namespace QSB.TimeSync
private bool _isSetUp;
private TimeSyncType _currentType;
private void Awake()
public void Awake()
{
Instance = this;
enabled = false;
@ -32,7 +32,7 @@ namespace QSB.TimeSync
_canvas.enabled = false;
}
private void OnDestroy()
public void OnDestroy()
{
QSBSceneManager.OnUniverseSceneLoaded -= OnUniverseSceneLoad;
if (_canvas.enabled)
@ -41,9 +41,11 @@ namespace QSB.TimeSync
}
}
public static void Start(TimeSyncType type) => QSBCore.Helper.Events.Unity.RunWhen(() => Instance._isSetUp, () => Instance.StartTimeSync(type));
public static void Start(TimeSyncType type) =>
QSBCore.Helper.Events.Unity.RunWhen(() => Instance._isSetUp, () => Instance.StartTimeSync(type));
public static void Stop() => QSBCore.Helper.Events.Unity.RunWhen(() => Instance._isSetUp, () => Instance.EndTimeSync());
public static void Stop() =>
QSBCore.Helper.Events.Unity.RunWhen(() => Instance._isSetUp, () => Instance.EndTimeSync());
private void StartTimeSync(TimeSyncType type)
{
@ -75,7 +77,7 @@ namespace QSB.TimeSync
switch (_currentType)
{
case TimeSyncType.Fastforwarding:
text = $"{minutes.ToString("D2")}:{seconds.ToString("D2")}"
text = $"{minutes:D2}:{seconds:D2}"
+ Environment.NewLine
+ "Fast-forwarding to match server time...";
break;

View File

@ -1,4 +1,5 @@
using OWML.ModHelper.Events;
using QSB.Patches;
namespace QSB.TimeSync
{

View File

@ -32,7 +32,7 @@ namespace QSB.TimeSync
LocalInstance = this;
}
private void Start()
public void Start()
{
if (!IsLocalPlayer)
{
@ -57,7 +57,7 @@ namespace QSB.TimeSync
}
}
private void OnDestroy()
public void OnDestroy()
{
QSBSceneManager.OnSceneLoaded -= OnSceneLoaded;
GlobalMessenger.RemoveListener(EventNames.RestartTimeLoop, OnLoopStart);
@ -184,7 +184,7 @@ namespace QSB.TimeSync
OWInput.ChangeInputMode(InputMode.Character);
}
private void Update()
public void Update()
{
if (IsServer)
{

View File

@ -36,9 +36,7 @@ namespace QSB.Tools.Events
player.FlashLight?.UpdateState(message.ToggleValue);
}
public override void OnReceiveLocal(bool server, ToggleMessage message)
{
public override void OnReceiveLocal(bool server, ToggleMessage message) =>
QSBPlayerManager.LocalPlayer.UpdateState(State.Flashlight, message.ToggleValue);
}
}
}

View File

@ -36,9 +36,7 @@ namespace QSB.Tools.Events
player.Probe?.SetState(message.ToggleValue);
}
public override void OnReceiveLocal(bool server, ToggleMessage message)
{
public override void OnReceiveLocal(bool server, ToggleMessage message) =>
QSBPlayerManager.LocalPlayer.UpdateState(State.ProbeActive, message.ToggleValue);
}
}
}

View File

@ -36,9 +36,7 @@ namespace QSB.Tools.Events
player.ProbeLauncher?.ChangeEquipState(message.ToggleValue);
}
public override void OnReceiveLocal(bool server, ToggleMessage message)
{
public override void OnReceiveLocal(bool server, ToggleMessage message) =>
QSBPlayerManager.LocalPlayer.UpdateState(State.ProbeLauncher, message.ToggleValue);
}
}
}

View File

@ -36,9 +36,7 @@ namespace QSB.Tools.Events
player.Signalscope?.ChangeEquipState(message.ToggleValue);
}
public override void OnReceiveLocal(bool server, ToggleMessage message)
{
public override void OnReceiveLocal(bool server, ToggleMessage message) =>
QSBPlayerManager.LocalPlayer.UpdateState(State.Signalscope, message.ToggleValue);
}
}
}

View File

@ -36,9 +36,7 @@ namespace QSB.Tools.Events
player.Translator?.ChangeEquipState(message.ToggleValue);
}
public override void OnReceiveLocal(bool server, ToggleMessage message)
{
public override void OnReceiveLocal(bool server, ToggleMessage message) =>
QSBPlayerManager.LocalPlayer.UpdateState(State.Translator, message.ToggleValue);
}
}
}

View File

@ -59,7 +59,7 @@ namespace QSB.Tools
hold.transform.localRotation = Quaternion.Euler(0f, 0f, 0f);
}
private static GameObject CreateFlashlight(Transform cameraBody)
private static void CreateFlashlight(Transform cameraBody)
{
var flashlightRoot = Object.Instantiate(GameObject.Find("FlashlightRoot"));
flashlightRoot.SetActive(false);
@ -72,11 +72,9 @@ namespace QSB.Tools
flashlightRoot.transform.parent = cameraBody;
flashlightRoot.transform.localPosition = FlashlightOffset;
flashlightRoot.SetActive(true);
return flashlightRoot;
}
private static GameObject CreateSignalscope(Transform cameraBody)
private static void CreateSignalscope(Transform cameraBody)
{
var signalscopeRoot = Object.Instantiate(GameObject.Find("Signalscope"));
signalscopeRoot.SetActive(false);
@ -101,11 +99,9 @@ namespace QSB.Tools
signalscopeRoot.transform.localPosition = Vector3.zero;
signalscopeRoot.transform.localScale = SignalscopeScale;
signalscopeRoot.SetActive(true);
return signalscopeRoot;
}
private static GameObject CreateTranslator(Transform cameraBody)
private static void CreateTranslator(Transform cameraBody)
{
var original = GameObject.Find("NomaiTranslatorProp");
@ -142,11 +138,9 @@ namespace QSB.Tools
translatorRoot.transform.localPosition = Vector3.zero;
translatorRoot.transform.localScale = TranslatorScale;
QSBCore.Helper.Events.Unity.FireOnNextUpdate(() => translatorRoot.SetActive(true));
return translatorRoot;
}
private static GameObject CreateProbeLauncher(Transform cameraBody)
private static void CreateProbeLauncher(Transform cameraBody)
{
var launcherRoot = new GameObject("ProbeLauncher");
var modelOrig = GameObject.Find("PlayerCamera/ProbeLauncher/Props_HEA_ProbeLauncher");
@ -182,13 +176,9 @@ namespace QSB.Tools
launcherRoot.transform.parent = cameraBody;
launcherRoot.transform.localPosition = ProbeLauncherOffset;
launcherRoot.SetActive(true);
return launcherRoot;
}
private static MeshRenderer GetRenderer(GameObject root, string gameObjectName)
{
return root.GetComponentsInChildren<MeshRenderer>(true).First(x => x.name == gameObjectName);
}
private static MeshRenderer GetRenderer(GameObject root, string gameObjectName) =>
root.GetComponentsInChildren<MeshRenderer>(true).First(x => x.name == gameObjectName);
}
}

View File

@ -14,7 +14,7 @@ namespace QSB.Tools
private Vector3 _baseForward;
private Quaternion _baseRotation;
private void Start()
public void Start()
{
_baseForward = _basePivot.forward;
_baseRotation = _basePivot.rotation;
@ -78,9 +78,9 @@ namespace QSB.Tools
_flashlightOn = false;
}
private void FixedUpdate()
public void FixedUpdate()
{
// This really isn't needed... but it makes it look that extra bit nicer.
// This really isn't needed... but it makes it look that extra bit nicer. ^_^
var lhs = Quaternion.FromToRotation(_basePivot.up, _root.up) * Quaternion.FromToRotation(_baseForward, _root.forward);
var b = lhs * _baseRotation;
_baseRotation = Quaternion.Slerp(_baseRotation, b, 6f * Time.deltaTime);

View File

@ -31,8 +31,8 @@ namespace QSB.Tools
set => _arrivalDegrees = value;
}
private void OnEnable() => ToolGameObject?.SetActive(true);
private void OnDisable() => ToolGameObject?.SetActive(false);
public void OnEnable() => ToolGameObject?.SetActive(true);
public void OnDisable() => ToolGameObject?.SetActive(false);
public void ChangeEquipState(bool equipState)
{

View File

@ -2,8 +2,8 @@
{
public enum ToolType
{
Signalscope,
ProbeLauncher,
Translator
Signalscope = 0,
ProbeLauncher = 1,
Translator = 2
}
}

View File

@ -29,7 +29,7 @@ namespace QSB.TransformSync
_isReady = true;
}
private void OnDestroy()
public void OnDestroy()
{
QSBWorldSync.OrbSyncList.Remove(this);
}
@ -41,7 +41,7 @@ namespace QSB.TransformSync
_isInitialized = true;
}
private void Update()
public void Update()
{
if (!_isInitialized && _isReady)
{

View File

@ -10,8 +10,8 @@ namespace QSB.TransformSync
{
private Transform _disabledSocket;
private Transform GetProbe()
=> Locator.GetProbe().transform.Find("CameraPivot").Find("Geometry");
private Transform GetProbe() =>
Locator.GetProbe().transform.Find("CameraPivot").Find("Geometry");
protected override Transform InitLocalTransform()
{
@ -46,10 +46,7 @@ namespace QSB.TransformSync
return body;
}
private void SetSocket(Transform socket)
{
_disabledSocket = socket;
}
private void SetSocket(Transform socket) => _disabledSocket = socket;
protected override void UpdateTransform()
{

View File

@ -9,13 +9,10 @@ namespace QSB.TransformSync
{
public static PlayerTransformSync LocalInstance { get; private set; }
static PlayerTransformSync()
{
AnimControllerPatch.Init();
}
static PlayerTransformSync() => AnimControllerPatch.Init();
public override void OnStartLocalPlayer()
=> LocalInstance = this;
public override void OnStartLocalPlayer() =>
LocalInstance = this;
protected override void OnDestroy()
{
@ -24,8 +21,8 @@ namespace QSB.TransformSync
QSBPlayerManager.RemovePlayer(PlayerId);
}
private Transform GetPlayerModel()
=> Locator.GetPlayerTransform().Find("Traveller_HEA_Player_v2");
private Transform GetPlayerModel() =>
Locator.GetPlayerTransform().Find("Traveller_HEA_Player_v2");
protected override Transform InitLocalTransform()
{

View File

@ -7,10 +7,8 @@ namespace QSB.TransformSync
{
private Transform GetShipModel() => Locator.GetShipTransform();
protected override Transform InitLocalTransform()
{
return GetShipModel().Find("Module_Cockpit/Geo_Cockpit/Cockpit_Geometry/Cockpit_Exterior");
}
protected override Transform InitLocalTransform() =>
GetShipModel().Find("Module_Cockpit/Geo_Cockpit/Cockpit_Geometry/Cockpit_Exterior");
protected override Transform InitRemoteTransform()
{

View File

@ -43,10 +43,8 @@ namespace QSB.TransformSync
QSBSceneManager.OnSceneLoaded -= OnSceneLoaded;
}
private void OnSceneLoaded(OWScene scene, bool isInUniverse)
{
private void OnSceneLoaded(OWScene scene, bool isInUniverse) =>
_isInitialized = false;
}
protected void Init()
{
@ -56,7 +54,7 @@ namespace QSB.TransformSync
_isVisible = true;
}
private void Update()
public void Update()
{
if (!_isInitialized && IsReady)
{

View File

@ -24,7 +24,7 @@ namespace QSB.Utility
bridgeVolume.AddObjectToVolume(Locator.GetPlayerCameraDetector());
}
private void Update()
public void Update()
{
if (!QSBCore.DebugMode)
{
@ -40,7 +40,7 @@ namespace QSB.Utility
}
if (Input.GetKeyDown(KeyCode.Keypad3))
{
LoadManager.LoadSceneAsync(OWScene.EyeOfTheUniverse, true, LoadManager.FadeType.ToWhite, 1f, true);
LoadManager.LoadSceneAsync(OWScene.EyeOfTheUniverse, true, LoadManager.FadeType.ToWhite);
}
}
}

View File

@ -25,9 +25,7 @@ namespace QSB.Utility
return copy;
}
public static Transform InstantiateInactive(this Transform original)
{
return original.gameObject.InstantiateInactive().transform;
}
public static Transform InstantiateInactive(this Transform original) =>
original.gameObject.InstantiateInactive().transform;
}
}

View File

@ -1,20 +0,0 @@
using System;
using System.Collections.Generic;
namespace QSB.Utility
{
public static class ListExtensions
{
public static IEnumerable<TSource> DistinctBy<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector)
{
var seenKeys = new HashSet<TKey>();
foreach (var element in source)
{
if (seenKeys.Add(keySelector(element)))
{
yield return element;
}
}
}
}
}

View File

@ -11,12 +11,13 @@ namespace QSB.WorldSync
{
public static class QSBWorldSync
{
private static readonly List<WorldObject> WorldObjects = new List<WorldObject>();
public static List<NomaiOrbTransformSync> OrbSyncList = new List<NomaiOrbTransformSync>();
public static List<NomaiInterfaceOrb> OldOrbList = new List<NomaiInterfaceOrb>();
public static List<CharacterDialogueTree> OldDialogueTrees = new List<CharacterDialogueTree>();
public static List<NomaiOrbTransformSync> OrbSyncList { get; } = new List<NomaiOrbTransformSync>();
public static List<NomaiInterfaceOrb> OldOrbList { get; set; } = new List<NomaiInterfaceOrb>();
public static List<CharacterDialogueTree> OldDialogueTrees { get; set; } = new List<CharacterDialogueTree>();
public static Dictionary<string, bool> DialogueConditions { get; } = new Dictionary<string, bool>();
private static readonly List<WorldObject> WorldObjects = new List<WorldObject>();
public static void AddWorldObject(WorldObject worldObject)
{
if (WorldObjects.Contains(worldObject))
@ -43,8 +44,8 @@ namespace QSB.WorldSync
public static void HandleSlotStateChange(NomaiInterfaceSlot slot, NomaiInterfaceOrb affectingOrb, bool state)
{
var slotList = GetWorldObjects<QSBOrbSlot>();
if (slotList.Count() == 0)
var slotList = GetWorldObjects<QSBOrbSlot>().ToList();
if (!slotList.Any())
{
return;
}