Skip to content

Commit 5b33342

Browse files
authored
Merge pull request #108 from ToniMacaroni/main
main to dev
2 parents 618118e + dd1cc9d commit 5b33342

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+199
-57
lines changed

.editorconfig

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
[*.cs]
2+
3+
# UNT0023: Coalescing assignment on Unity objects
4+
dotnet_diagnostic.UNT0023.severity = error
5+
6+
# UNT0022: Inefficient position/rotation assignment
7+
dotnet_diagnostic.UNT0022.severity = error
8+
9+
# UNT0007: Null coalescing on Unity objects
10+
dotnet_diagnostic.UNT0007.severity = error
11+
12+
# UNT0008: Null propagation on Unity objects
13+
dotnet_diagnostic.UNT0008.severity = error

SaberFactory.sln

+7-2
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,17 @@
11

22
Microsoft Visual Studio Solution File, Format Version 12.00
3-
# Visual Studio Version 16
4-
VisualStudioVersion = 16.0.29709.97
3+
# Visual Studio Version 17
4+
VisualStudioVersion = 17.1.31911.260
55
MinimumVisualStudioVersion = 10.0.40219.1
66
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SaberFactory", "SaberFactory\SaberFactory.csproj", "{C287398D-B333-4DFE-9C7E-9518D9D09745}"
77
EndProject
88
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SaberFactory.Unity", "SaberFactory.Unity\SaberFactory.Unity.csproj", "{42D12C91-86D3-4006-8D15-0291488970B6}"
99
EndProject
10+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{2B173B38-BE01-4606-9F77-D09B360CBC69}"
11+
ProjectSection(SolutionItems) = preProject
12+
.editorconfig = .editorconfig
13+
EndProjectSection
14+
EndProject
1015
Global
1116
GlobalSection(SolutionConfigurationPlatforms) = preSolution
1217
Debug|Any CPU = Debug|Any CPU

SaberFactory/DataStore/MainAssetStore.cs

+1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
using SaberFactory.Loaders;
99
using SaberFactory.Models;
1010
using SaberFactory.Models.CustomSaber;
11+
using SiraUtil.Logging;
1112
using SiraUtil.Tools;
1213

1314
namespace SaberFactory.DataStore

SaberFactory/DataStore/TextureAsset.cs

+12-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,18 @@ namespace SaberFactory.DataStore
77
{
88
internal class TextureAsset : IDisposable
99
{
10-
public Sprite Sprite => _cachedSprite ??= CreateSprite();
10+
public Sprite Sprite
11+
{
12+
get
13+
{
14+
if (_cachedSprite == null)
15+
{
16+
_cachedSprite = CreateSprite();
17+
}
18+
return _cachedSprite;
19+
}
20+
}
21+
1122
public bool IsInUse;
1223
public string Name;
1324
public EAssetOrigin Origin;

SaberFactory/Editor/Editor.cs

+9
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
using SaberFactory.Models;
99
using SaberFactory.UI;
1010
using SaberFactory.UI.Lib;
11+
using SiraUtil.Logging;
1112
using SiraUtil.Tools;
1213
using UnityEngine;
1314
using Zenject;
@@ -92,6 +93,7 @@ public async void Initialize()
9293
// Create Pedestal
9394
var pos = new Vector3(0.3f, 0, 0.9f);
9495
await _pedestal.Instantiate(pos, Quaternion.Euler(0, 25, 0));
96+
SetupGlobalShaderVars();
9597
}
9698

9799
public async void Open()
@@ -183,5 +185,12 @@ private async void OnModelCompositionSet(ModelComposition composition)
183185
await AnimationHelper.AsyncAnimation(0.3f, CancellationToken.None, t => { parent.localScale = new Vector3(t, t, t); });
184186
}
185187
}
188+
189+
private void SetupGlobalShaderVars()
190+
{
191+
var scheme = _playerDataModel.playerData.colorSchemesSettings.GetSelectedColorScheme();
192+
Shader.SetGlobalColor(MaterialProperties.UserColorLeft, scheme.saberAColor);
193+
Shader.SetGlobalColor(MaterialProperties.UserColorRight, scheme.saberBColor);
194+
}
186195
}
187196
}

SaberFactory/Editor/EditorInstanceManager.cs

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using SaberFactory.Instances;
33
using SaberFactory.Models;
44
using SaberFactory.Serialization;
5+
using SiraUtil.Logging;
56
using SiraUtil.Tools;
67
using UnityEngine;
78

SaberFactory/Editor/Pedestal.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,8 @@ public async Task Instantiate(Vector3 pos, Quaternion rot)
6060
SaberContainerTransform.localPosition += new Vector3(0, 1, 0);
6161
SaberContainerTransform.localEulerAngles = new Vector3(-90, 0, 0);
6262

63-
_rootTransform.position = pos;
64-
_rootTransform.rotation = rot;
63+
_rootTransform.SetPositionAndRotation(pos, rot);
64+
6565

6666
IsVisible = false;
6767
}

SaberFactory/Editor/SaberGrabController.cs

+10-2
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,11 @@ public void ShowHandle()
3333
}
3434

3535
_isHandleVisisble = true;
36-
_menuPlayerController.leftController?.transform.Find("MenuHandle")?.gameObject.SetActive(_isHandleVisisble);
36+
37+
if (_menuPlayerController.leftController != null && _menuPlayerController.leftController.transform.Find("MenuHandle") is { } handle)
38+
{
39+
handle.gameObject.SetActive(_isHandleVisisble);
40+
}
3741
}
3842

3943
public void HideHandle()
@@ -44,7 +48,11 @@ public void HideHandle()
4448
}
4549

4650
_isHandleVisisble = false;
47-
_menuPlayerController.leftController?.transform.Find("MenuHandle")?.gameObject.SetActive(_isHandleVisisble);
51+
52+
if (_menuPlayerController != null && _menuPlayerController.leftController.transform.Find("MenuHandle") is { } handle)
53+
{
54+
handle.gameObject.SetActive(_isHandleVisisble);
55+
}
4856
}
4957
}
5058
}

SaberFactory/EmbeddedAssetLoader.cs

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using System.Collections.Generic;
33
using System.Threading.Tasks;
44
using SaberFactory.Helpers;
5+
using SiraUtil.Logging;
56
using SiraUtil.Tools;
67
using UnityEngine;
78
using Object = UnityEngine.Object;

SaberFactory/Game/AFHandler.cs

+6-1
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,12 @@ public async Task InitPosition(Transform transform, float xPos)
7878

7979
private async Task<GameObject> GetThruster()
8080
{
81-
return _thruster ??= await _assetLoader.LoadAsset<GameObject>("Thruster");
81+
if (_thruster == null)
82+
{
83+
_thruster = await _assetLoader.LoadAsset<GameObject>("Thruster");
84+
}
85+
86+
return _thruster;
8287
}
8388
}
8489
}

SaberFactory/Game/EventPlayer.cs

+9-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using System.Collections;
33
using System.Collections.Generic;
44
using IPA.Utilities;
5+
using ModestTree;
56
using SaberFactory.Configuration;
67
using SaberFactory.Models;
78
using UnityEngine;
@@ -18,11 +19,14 @@ internal class EventPlayer : IDisposable
1819

1920
[Inject] private readonly GameEnergyCounter _energyCounter = null;
2021

21-
[Inject] private readonly ObstacleSaberSparkleEffectManager _obstacleSaberSparkleEffectManager = null;
22+
[InjectOptional] private ObstacleSaberSparkleEffectManager _obstacleSaberSparkleEffectManager;
2223

2324
[Inject] private readonly PluginConfig _pluginConfig = null;
2425

2526
[Inject] private readonly ScoreController _scoreController = null;
27+
28+
[Inject] private readonly MonoKernel _monoKernel = null;
29+
2630
private bool _didInit;
2731

2832
[Inject(Id = "LastNoteId")] private float _lastNoteTime;
@@ -64,6 +68,10 @@ public void SetPartEventList(List<PartEvents> partEventsList, SaberType saberTyp
6468
_beatmapObjectManager.noteWasMissedEvent += OnNoteMiss;
6569

6670
// Sabers clashing
71+
if (_obstacleSaberSparkleEffectManager == null)
72+
{
73+
_obstacleSaberSparkleEffectManager = _monoKernel.GetComponentInChildren<ObstacleSaberSparkleEffectManager>();
74+
}
6775
_obstacleSaberSparkleEffectManager.sparkleEffectDidStartEvent += SaberStartCollide;
6876
_obstacleSaberSparkleEffectManager.sparkleEffectDidEndEvent += SaberEndCollide;
6977

SaberFactory/Game/SFSaberModelController.cs

+6-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using SaberFactory.Instances;
44
using SaberFactory.Models;
55
using SiraUtil.Interfaces;
6+
using SiraUtil.Logging;
67
using SiraUtil.Tools;
78
using UnityEngine;
89
using Zenject;
@@ -27,7 +28,11 @@ public void SetColor(Color color)
2728
_saberInstance.SetColor(color);
2829
}
2930

30-
public Color Color => _saberColor.GetValueOrDefault();
31+
public Color Color
32+
{
33+
get => _saberColor.GetValueOrDefault();
34+
set => SetColor(value);
35+
}
3136

3237
public override async void Init(Transform parent, Saber saber)
3338
{

SaberFactory/Game/SFSaberProvider.cs

+5-5
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33

44
namespace SaberFactory.Game
55
{
6-
public class SFSaberProvider : IModelProvider
7-
{
8-
public Type Type => typeof(SfSaberModelController);
9-
public int Priority => 300;
10-
}
6+
//public class SFSaberProvider : IModelProvider
7+
//{
8+
// public Type Type => typeof(SfSaberModelController);
9+
// public int Priority => 300;
10+
//}
1111
}

SaberFactory/Game/SaberMovementTester.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,12 @@ internal class SaberMovementTester : IInitializable
1010
{
1111
private readonly AudioTimeSyncController _audioController;
1212
private readonly InitData _initData;
13-
private readonly SiraSaber.Factory _saberFactory;
13+
private readonly SiraSaberFactory _saberFactory;
1414

1515
private Transform _movementContainer;
1616
private SiraSaber _saber;
1717

18-
private SaberMovementTester(InitData initData, SiraSaber.Factory saberFactory, AudioTimeSyncController audioController)
18+
private SaberMovementTester(InitData initData, SiraSaberFactory saberFactory, AudioTimeSyncController audioController)
1919
{
2020
_initData = initData;
2121
_saberFactory = saberFactory;
@@ -35,7 +35,7 @@ public async void Initialize()
3535

3636
_movementContainer = new GameObject("SaberTester").transform;
3737
_movementContainer.localPosition = new Vector3(0, 1.5f, 0);
38-
_saber = _saberFactory.Create();
38+
_saber = _saberFactory.Spawn(SaberType.SaberA);
3939
_saber.transform.SetParent(_movementContainer, false);
4040

4141
SharedCoroutineStarter.instance.StartCoroutine(AnimationCoroutine());

SaberFactory/Helpers/DebugMenu.cs

-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ public class DebugMenu : MonoBehaviour
1111

1212
private void Start()
1313
{
14-
Debug.LogWarning("Hello");
1514
}
1615

1716
private void OnGUI()

SaberFactory/Helpers/DebugTimer.cs

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System.Diagnostics;
2+
using SiraUtil.Logging;
23
using SiraUtil.Tools;
34
using Debug = UnityEngine.Debug;
45

SaberFactory/Helpers/MaterialProperties.cs

+3
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,8 @@ internal static class MaterialProperties
99
public static readonly int CustomColors = Shader.PropertyToID("_CustomColors");
1010
public static readonly int Glow = Shader.PropertyToID("_Glow");
1111
public static readonly int Bloom = Shader.PropertyToID("_Bloom");
12+
13+
public static readonly int UserColorLeft = Shader.PropertyToID("_UserColorLeft");
14+
public static readonly int UserColorRight = Shader.PropertyToID("_UserColorRight");
1215
}
1316
}

SaberFactory/Helpers/ShaderPropertyInfo.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ public override void FromJson(JToken token, Material mat, params object[] args)
184184
public override JToken ToJson(Material mat)
185185
{
186186
var tex = (Texture)GetValue(mat);
187-
return JToken.FromObject(tex?.name??"");
187+
return JToken.FromObject(tex != null ? tex.name : "");
188188
}
189189
}
190190

SaberFactory/Installers/PluginAppInstaller.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public override void InstallBindings()
5050
Container.Bind<PluginDirectories>().AsSingle();
5151

5252
Container.BindInstance(_metadata).WithId(nameof(SaberFactory)).AsCached();
53-
Container.BindLoggerAsSiraLogger(_logger);
53+
//Container.BindLoggerAsSiraLogger(_logger);
5454
Container.BindInstance(_config).AsSingle();
5555
Container.Bind<PluginManager>().AsSingle();
5656

SaberFactory/Installers/PluginGameInstaller.cs

+3-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
using SaberFactory.Helpers;
77
using SaberFactory.Models;
88
using SiraUtil.Interfaces;
9+
using SiraUtil.Sabers;
910
using Zenject;
1011

1112
namespace SaberFactory.Installers
@@ -32,7 +33,8 @@ public override void InstallBindings()
3233

3334
//Container.BindInterfacesAndSelfTo<AFHandler>().AsSingle();
3435
Container.BindInterfacesAndSelfTo<GameSaberSetup>().AsSingle();
35-
Container.Bind<IModelProvider>().To<SFSaberProvider>().AsSingle();
36+
//Container.Bind<IModelProvider>().To<SFSaberProvider>().AsSingle();
37+
Container.BindInstance(SaberModelRegistration.Create<SfSaberModelController>());
3638

3739

3840
#if DEBUG && TEST_TRAIL

SaberFactory/Instances/CustomSaber/CustomSaberInstance.cs

+1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
using SaberFactory.Instances.Trail;
88
using SaberFactory.Models;
99
using SaberFactory.Models.CustomSaber;
10+
using SiraUtil.Logging;
1011
using SiraUtil.Tools;
1112
using UnityEngine;
1213

SaberFactory/Instances/InstanceFactory.cs

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using SaberFactory.Models;
3+
using SiraUtil.Logging;
34
using SiraUtil.Tools;
45
using Zenject;
56

SaberFactory/Instances/SaberInstance.cs

+1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
using SaberFactory.Instances.PostProcessors;
1010
using SaberFactory.Instances.Trail;
1111
using SaberFactory.Models;
12+
using SiraUtil.Logging;
1213
using SiraUtil.Tools;
1314
using UnityEngine;
1415
using Zenject;

SaberFactory/Instances/Trail/SFTrail.cs

+6-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using SaberFactory.Helpers;
3+
using TMPro;
34
using UnityEngine;
45

56
namespace SaberFactory.Instances.Trail
@@ -115,7 +116,11 @@ public override float GetTrailWidth(BladeMovementDataElement lastAddedData)
115116
public void SetMaterial(Material newMaterial)
116117
{
117118
_customMaterial = newMaterial;
118-
_trailRenderer?.Cast<SFTrailRenderer>().SetMaterial(_customMaterial);
119+
120+
if (_trailRenderer != null)
121+
{
122+
_trailRenderer.Cast<SFTrailRenderer>().SetMaterial(_customMaterial);
123+
}
119124
}
120125
}
121126
}

SaberFactory/Misc/VertexPool.cs

+2-3
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ internal class VertexPool
99
{
1010
public const int BlockSize = 108;
1111

12-
public Mesh MyMesh => _meshFilter?.sharedMesh;
12+
public Mesh MyMesh => _meshFilter != null ? _meshFilter.sharedMesh : null;
1313

1414
public float BoundsScheduleTime = 1f;
1515
public bool ColorChanged;
@@ -73,8 +73,7 @@ private void CreateMeshObj(AltTrail owner, Material material)
7373
_meshFilter = _gameObject.AddComponent<MeshFilter>();
7474
var meshrenderer = _gameObject.AddComponent<MeshRenderer>();
7575

76-
_gameObject.transform.position = Vector3.zero;
77-
_gameObject.transform.rotation = Quaternion.identity;
76+
_gameObject.transform.SetPositionAndRotation(Vector3.zero, Quaternion.identity);
7877

7978
meshrenderer.shadowCastingMode = ShadowCastingMode.Off;
8079
meshrenderer.receiveShadows = false;

0 commit comments

Comments
 (0)