Skip to content

Commit

Permalink
Use IFPFCSettings
Browse files Browse the repository at this point in the history
  • Loading branch information
nicoco007 committed May 22, 2024
1 parent 465bfbf commit 46bdb2a
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 19 deletions.
27 changes: 17 additions & 10 deletions Source/CustomAvatar/Rendering/CustomAvatarsMainCameraController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,12 @@
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.

using System;
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using CustomAvatar.Avatar;
using CustomAvatar.Configuration;
using CustomAvatar.Logging;
using CustomAvatar.Player;
using SiraUtil.Tools.FPFC;
using UnityEngine;
using Zenject;

Expand All @@ -34,6 +33,7 @@ internal class CustomAvatarsMainCameraController : MonoBehaviour
private ActivePlayerSpaceManager _activePlayerSpaceManager;
private ActiveOriginManager _activeOriginManager;
private ActiveCameraManager _activeCameraManager;
private IFPFCSettings _fpfcSettings;

private Transform _playerSpace;
private Transform _origin;
Expand All @@ -44,32 +44,29 @@ private void Awake()
_camera = GetComponent<Camera>();
}

private void OnEnable()
{
AddToPlayerSpaceManager();
}

[Inject]
[SuppressMessage("CodeQuality", "IDE0051", Justification = "Used by Zenject")]
private void Construct(ILogger<CustomAvatarsMainCameraController> logger, Settings settings, ActivePlayerSpaceManager activePlayerSpaceManager, ActiveOriginManager activeOriginManager, ActiveCameraManager activeCameraManager)
private void Construct(ILogger<CustomAvatarsMainCameraController> logger, Settings settings, ActivePlayerSpaceManager activePlayerSpaceManager, ActiveOriginManager activeOriginManager, ActiveCameraManager activeCameraManager, IFPFCSettings fpfcSettings)
{
_logger = logger;
_settings = settings;
_activePlayerSpaceManager = activePlayerSpaceManager;
_activeOriginManager = activeOriginManager;
_activeCameraManager = activeCameraManager;
_fpfcSettings = fpfcSettings;
}

private void Start()
{
// prevent errors if this is instantiated via Object.Instantiate
if (_logger == null || _settings == null || _activePlayerSpaceManager == null)
if (_logger == null)
{
Destroy(this);
return;
}

_settings.cameraNearClipPlane.changed += OnCameraNearClipPlaneChanged;
_fpfcSettings.Changed += OnFpfcSettingsChanged;

UpdateCameraMask();

Expand All @@ -83,6 +80,11 @@ private void OnDestroy()
_settings.cameraNearClipPlane.changed -= OnCameraNearClipPlaneChanged;
}

if (_fpfcSettings != null)
{
_fpfcSettings.Changed -= OnFpfcSettingsChanged;
}

RemoveFromPlayerSpaceManager();
}

Expand All @@ -91,14 +93,19 @@ private void OnCameraNearClipPlaneChanged(float value)
UpdateCameraMask();
}

private void OnFpfcSettingsChanged(IFPFCSettings fpfcSettings)
{
UpdateCameraMask();
}

private void UpdateCameraMask()
{
_logger.LogInformation($"Setting avatar culling mask and near clip plane on '{_camera.name}'");

int mask = _camera.cullingMask | AvatarLayers.kAlwaysVisibleMask;

// FPFC basically ends up being a 3rd person camera
if (Environment.GetCommandLineArgs().Contains("fpfc"))
if (_fpfcSettings.Enabled)
{
mask |= AvatarLayers.kOnlyInThirdPersonMask;
}
Expand Down
25 changes: 16 additions & 9 deletions Source/CustomAvatar/Rendering/SpectatorCameraController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,12 @@
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.

using System;
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using CustomAvatar.Avatar;
using CustomAvatar.Configuration;
using CustomAvatar.Logging;
using CustomAvatar.Player;
using SiraUtil.Tools.FPFC;
using UnityEngine;
using Zenject;

Expand All @@ -37,6 +36,7 @@ internal class SpectatorCameraController : MonoBehaviour
private ActivePlayerSpaceManager _activePlayerSpaceManager;
private ActiveOriginManager _activeOriginManager;
private ActiveCameraManager _activeCameraManager;
private IFPFCSettings _fpfcSettings;

private Camera _camera;

Expand All @@ -45,20 +45,16 @@ private void Awake()
_camera = GetComponent<Camera>();
}

private void OnEnable()
{
AddToPlayerSpaceManager();
}

[Inject]
[SuppressMessage("CodeQuality", "IDE0051", Justification = "Used by Zenject")]
private void Construct(ILogger<SpectatorCameraController> logger, Settings settings, ActivePlayerSpaceManager activePlayerSpaceManager, ActiveOriginManager activeOriginManager, ActiveCameraManager activeCameraManager)
private void Construct(ILogger<SpectatorCameraController> logger, Settings settings, ActivePlayerSpaceManager activePlayerSpaceManager, ActiveOriginManager activeOriginManager, ActiveCameraManager activeCameraManager, IFPFCSettings fpfcSettings)
{
_logger = logger;
_settings = settings;
_activePlayerSpaceManager = activePlayerSpaceManager;
_activeOriginManager = activeOriginManager;
_activeCameraManager = activeCameraManager;
_fpfcSettings = fpfcSettings;
}

private void Start()
Expand All @@ -71,6 +67,7 @@ private void Start()
}

_settings.cameraNearClipPlane.changed += OnCameraNearClipPlaneChanged;
_fpfcSettings.Changed += OnFpfcSettingsChanged;

UpdateCameraMask();

Expand All @@ -84,6 +81,11 @@ private void OnDestroy()
_settings.cameraNearClipPlane.changed -= OnCameraNearClipPlaneChanged;
}

if (_fpfcSettings != null)
{
_fpfcSettings.Changed -= OnFpfcSettingsChanged;
}

RemoveFromPlayerSpaceManager();
}

Expand All @@ -92,6 +94,11 @@ private void OnCameraNearClipPlaneChanged(float value)
UpdateCameraMask();
}

private void OnFpfcSettingsChanged(IFPFCSettings fpfcSettings)
{
UpdateCameraMask();
}

// TODO: add a setting to show/hide player avatar in replays
private void UpdateCameraMask()
{
Expand All @@ -100,7 +107,7 @@ private void UpdateCameraMask()
int mask = _camera.cullingMask | AvatarLayers.kAlwaysVisibleMask;

// FPFC basically ends up being a 3rd person camera
if (Environment.GetCommandLineArgs().Contains("fpfc"))
if (_fpfcSettings.Enabled)
{
mask |= AvatarLayers.kOnlyInThirdPersonMask;
}
Expand Down

0 comments on commit 46bdb2a

Please sign in to comment.