Exemple #1
0
 static bool Prefix(ActiveObstaclesManager ____activeObstaclesManager, ObstacleSaberSparkleEffect ____obstacleSaberSparkleEffectPefab, PlayerController ____playerController, HapticFeedbackController ____hapticFeedbackController, ref Saber[] ____sabers, ref ObstacleSaberSparkleEffect[] ____effects, ref Transform[] ____effectsTransforms, ref bool[] ____isSystemActive, ref bool[] ____wasSystemActive, ref Vector3[] ____burnMarkPositions, ObstacleSaberSparkleEffectManager __instance)
 {
     if (!PluginConfig.obstacleRumble && PluginConfig.enabled)
     {
         ____wasSystemActive[0] = ____isSystemActive[0];
         ____wasSystemActive[1] = ____isSystemActive[1];
         ____isSystemActive[0]  = false;
         ____isSystemActive[1]  = false;
         foreach (ObstacleController obstacleController in ____activeObstaclesManager.activeObstacleControllers)
         {
             Bounds bounds = obstacleController.bounds;
             for (int i = 0; i < 2; i++)
             {
                 Vector3 vector;
                 if (____sabers[i].isActiveAndEnabled && __instance.GetBurnMarkPos(bounds, obstacleController.transform, ____sabers[i].saberBladeBottomPos, ____sabers[i].saberBladeTopPos, out vector))
                 {
                     ____isSystemActive[i]    = true;
                     ____burnMarkPositions[i] = vector;
                     ____effects[i].SetPositionAndRotation(vector, __instance.GetEffectRotation(vector, obstacleController.transform, bounds));
                     XRNode node = (i == 0) ? XRNode.LeftHand : XRNode.RightHand;
                     //____hapticFeedbackController.ContinuousRumble(node);
                     if (!____wasSystemActive[i])
                     {
                         ____effects[i].StartEmission();
                         __instance.GetPrivateField <Action <Saber.SaberType> >("sparkleEffectDidStartEvent")(____sabers[i].saberType);
                     }
                 }
             }
         }
         for (int j = 0; j < 2; j++)
         {
             if (!____isSystemActive[j] && ____wasSystemActive[j])
             {
                 ____effects[j].StopEmission();
                 __instance.GetPrivateField <Action <Saber.SaberType> >("sparkleEffectDidEndEvent")(____sabers[j].saberType);
             }
         }
         return(false);
     }
     else
     {
         return(true);
     }
 }
Exemple #2
0
        IEnumerator WaitForLoad()
        {
            while (!loaded)
            {
                activeObstaclesManager = Resources.FindObjectsOfTypeAll <ActiveObstaclesManager>().FirstOrDefault();
                playerController       = Resources.FindObjectsOfTypeAll <PlayerController>().FirstOrDefault();
                if (activeObstaclesManager == null || playerController == null)
                {
                    yield return(new WaitForSeconds(0.1f));
                }
                else
                {
                    loaded = true;
                }
            }

            yield return(new WaitForSeconds(0.1f));

            sabers    = new Saber[2];
            sabers[0] = playerController.leftSaber;
            sabers[1] = playerController.rightSaber;
        }