Beispiel #1
0
 public static void PostfixStart(ref SaberClashChecker __instance)
 {
     if (!(__instance is SiraSaberClashChecker))
     {
         __instance.gameObject.AddComponent <SiraSaberClashChecker>();
     }
 }
Beispiel #2
0
 public override void Start()
 {
     _instance = this;
     _sabers.Add(_leftSaber);
     _sabers.Add(_rightSaber);
     Resources.FindObjectsOfTypeAll <SaberClashEffect>().First().SetField("_saberClashChecker", _instance);
 }
Beispiel #3
0
 static bool Prefix(SaberClashChecker ____saberClashChecker, HapticFeedbackController ____hapticFeedbackController, ref SaberClashEffect __instance, ParticleSystem ____glowParticleSystem, ref ParticleSystem.EmissionModule ____sparkleParticleSystemEmmisionModule, ref ParticleSystem.EmissionModule ____glowParticleSystemEmmisionModule, ref bool ____sabersAreClashing)
 {
     if (!PluginConfig.saberClash && PluginConfig.enabled)
     {
         if (____saberClashChecker.sabersAreClashing)
         {
             __instance.transform.position = ____saberClashChecker.clashingPoint;
             // ____hapticFeedbackController.ContinuousRumble(XRNode.LeftHand);
             // ____hapticFeedbackController.ContinuousRumble(XRNode.RightHand);
             if (!____sabersAreClashing)
             {
                 ____sabersAreClashing = true;
                 ____sparkleParticleSystemEmmisionModule.enabled = true;
                 ____glowParticleSystemEmmisionModule.enabled    = true;
                 return(true);
             }
         }
         else if (____sabersAreClashing)
         {
             ____sabersAreClashing = false;
             ____sparkleParticleSystemEmmisionModule.enabled = false;
             ____glowParticleSystemEmmisionModule.enabled    = false;
             ____glowParticleSystem.Clear();
         }
         return(false);
     }
     else
     {
         return(true);
     }
 }
Beispiel #4
0
 public static bool PrefixCancelMethod(ref SaberClashChecker __instance)
 {
     if (!(__instance is SiraSaberClashChecker))
     {
         return(false);
     }
     return(true);
 }
Beispiel #5
0
        public SiraSaberClashChecker()
        {
            SaberClashChecker original = GetComponent <SaberClashChecker>();

            foreach (FieldInfo info in original.GetType().GetFields(BindingFlags.Public | BindingFlags.Instance | BindingFlags.NonPublic))
            {
                info.SetValue(this, info.GetValue(original));
            }
            Destroy(original);
        }
        internal SiraSaberEffectManager([InjectOptional] IGamePause gamePause, SaberManager saberManager, SaberClashChecker saberClashChecker, SaberBurnMarkArea saberBurnMarkArea,
                                        SaberBurnMarkSparkles saberBurnMarkSparkles, ObstacleSaberSparkleEffectManager obstacleSaberSparkleEffectManager)
        {
            _gamePause    = gamePause;
            _saberManager = saberManager;
            saberClashChecker.Init(saberManager);
            _saberManagers.Add(saberClashChecker as SiraSaberClashChecker);
            _saberManagers.Add(saberBurnMarkArea as SiraSaberBurnMarkArea);
            _saberManagers.Add(saberBurnMarkSparkles as SiraSaberBurnMarkSparkles);
            _saberManagers.Add(obstacleSaberSparkleEffectManager as SiraObstacleSaberSparkleEffectManager);

            _siraSaberClashChecker = saberClashChecker as SiraSaberClashChecker;
            _siraObstacleSaberSparkleEffectManager = obstacleSaberSparkleEffectManager as SiraObstacleSaberSparkleEffectManager;
        }
 private void Awake()
 {
     Instance          = this;
     _slowmoStepAmount = PluginConfig.Instance.SlowmoStepAmount;
     SaberClashChecker = FindObjectOfType <SaberClashChecker>();
 }
        private IEnumerator OnGameCoreCoroutine()
        {
            if (_audioTimeSyncController == null)
            {
                _audioTimeSyncController = Resources.FindObjectsOfTypeAll <AudioTimeSyncController>().FirstOrDefault();
                _audioSource             = _audioTimeSyncController.GetPrivateField <AudioSource>("_audioSource");
            }
            _originalTimeScale = _audioTimeSyncController.timeScale;

            if (_gamePause == null)
            {
                _gamePause = Resources.FindObjectsOfTypeAll <GamePause>().FirstOrDefault();
            }
            _gamePause.didResumeEvent += OnPauseResume;

            // wait for CustomSaber mod
            yield return(new WaitUntil(() => Resources.FindObjectsOfTypeAll <Saber>().Any()));

            yield return(new WaitForSecondsRealtime(0.1f));

            if (_playerController == null)
            {
                _playerController = Resources.FindObjectsOfTypeAll <PlayerController>().FirstOrDefault();
            }
            if (_rightSaberTransform == null)
            {
                _rightSaberTransform = _playerController.rightSaber.transform;
            }
            if (_leftSaberTransform == null)
            {
                _leftSaberTransform = _playerController.leftSaber.transform;
            }
            if (_saberClashChecker == null)
            {
                _saberClashChecker = Resources.FindObjectsOfTypeAll <SaberClashChecker>().FirstOrDefault();
            }
            if (_saberBurnMarkArea == null)
            {
                _saberBurnMarkArea = Resources.FindObjectsOfTypeAll <SaberBurnMarkArea>().FirstOrDefault();
            }
            if (_saberBurnMarkSparkles == null)
            {
                _saberBurnMarkSparkles = Resources.FindObjectsOfTypeAll <SaberBurnMarkSparkles>().FirstOrDefault();
            }

            // need some wait to GetNoteOffset
            if (Config.centering)
            {
                if (_beatmapObjectSpawnController == null)
                {
                    _beatmapObjectSpawnController = Resources.FindObjectsOfTypeAll <BeatmapObjectSpawnController>().FirstOrDefault();
                }
                BeatmapObjectSpawnMovementData beatmapObjectSpawnMovementData = _beatmapObjectSpawnController.GetPrivateField <BeatmapObjectSpawnMovementData>("_beatmapObjectSpawnMovementData");
                Vector3 leftBase = beatmapObjectSpawnMovementData.GetNoteOffset(0, NoteLineLayer.Base);
                Vector3 rightTop = beatmapObjectSpawnMovementData.GetNoteOffset(3, NoteLineLayer.Top);
                NoteJumpManualUpdate.center = (leftBase + rightTop) / 2;
                //Logger.log.Debug($"leftBase={leftBase.x}, {leftBase.y}, {leftBase.z}");
                //Logger.log.Debug($"rightTop={rightTop.x}, {rightTop.y}, {rightTop.z}");
            }

            if (Config.hideSabers)
            {
                SetSaberVisible(_playerController.rightSaber, false);
                SetSaberVisible(_playerController.leftSaber, false);
                SetTrailWidth(0f);
                _saberClashChecker.enabled     = false;
                _saberBurnMarkArea.enabled     = false;
                _saberBurnMarkSparkles.enabled = false;
            }

            if (Config.hideSaberEffects)
            {
                SetTrailWidth(0f);
                _saberClashChecker.enabled     = false;
                _saberBurnMarkArea.enabled     = false;
                _saberBurnMarkSparkles.enabled = false;
            }

            if (Config.boxing)
            {
                SetTrailWidth(0.05f);
            }

            if (Config.headbang)
            {
                SetTrailWidth(0f);
            }

            if (Config.vacuum)
            {
                if (_gameEnergyCounter == null)
                {
                    _gameEnergyCounter = Resources.FindObjectsOfTypeAll <GameEnergyCounter>().FirstOrDefault();
                }
                _gameEnergyCounter.SetPrivateField("_hitBombEnergyDrain", 0f);
            }

            if (GameObject.Find("vacuum_saber_right"))
            {
                SetTrailWidth(0f);
            }

            if (Config.feetAvatar)
            {
                StartCoroutine(FindAvatarCoroutine());
            }

            UpdateSaberActive();

            _init = true;
        }
        public SiraSaberEffectManager(IGamePause gamePause, SaberManager saberManager, SaberClashChecker saberClashChecker, SaberBurnMarkArea saberBurnMarkArea,
                                      SaberBurnMarkSparkles saberBurnMarkSparkles, ObstacleSaberSparkleEffectManager obstacleSaberSparkleEffectManager)
        {
            _gamePause = gamePause;
            saberClashChecker.Init(saberManager);
            _saberManagers.Add(saberClashChecker as SiraSaberClashChecker);
            _saberManagers.Add(saberBurnMarkArea as SiraSaberBurnMarkArea);
            _saberManagers.Add(saberBurnMarkSparkles as SiraSaberBurnMarkSparkles);
            _saberManagers.Add(obstacleSaberSparkleEffectManager as SiraObstacleSaberSparkleEffectManager);

            _siraSaberClashChecker = saberClashChecker as SiraSaberClashChecker;
        }