Exemplo n.º 1
0
            private OCColorManager(ObstacleController oc, Color original)
            {
                _stretchableObstacle = _stretchableObstacleAccessor(ref oc);

                _color_Original = original;

                _color = _color_Original;
            }
Exemplo n.º 2
0
        private void UpdateWallColor(Color color)
        {
            foreach (ObstacleController wall in beatmapObjectManager.activeObstacleControllers)
            {
                StretchableObstacle stretchable = Helper.GetValue <StretchableObstacle>(wall, "_stretchableObstacle");

                ParametricBoxFrameController frame = Helper.GetValue <ParametricBoxFrameController>(stretchable, "_obstacleFrame");

                stretchable.SetSizeAndColor(frame.width, frame.height, frame.length, color);
            }
        }
Exemplo n.º 3
0
 public virtual void HandleObstacleDiStartMovementEvent(BeatmapObjectSpawnController obstacleSpawnController, ObstacleController obstacleController)
 {
     try
     {
         StretchableObstacle _stretchableObstacle = ReflectionUtil.GetPrivateField <StretchableObstacle>(obstacleController, "_stretchableObstacle");
         StretchableCube     _stretchableCore     = ReflectionUtil.GetPrivateField <StretchableCube>(_stretchableObstacle, "_stretchableCore");
         //MeshRenderer _meshRenderer = ReflectionUtil.GetPrivateField<MeshRenderer>(_stretchableCore, "_mesh");
         _stretchableCore.gameObject.layer = WallLayer;
     }
     catch (Exception ex)
     {
         Logger.log.Error($"TransparentWall.HandleObstacleDiStartMovementEvent(BeatmapObjectSpawnController, ObstacleController) has thrown an exception: {ex.Message}\n{ex.StackTrace}");
     }
 }
Exemplo n.º 4
0
            private OCColorManager(ObstacleController oc)
            {
                _oc = oc;
                _stretchableObstacle = _stretchableObstacleAccessor(ref _oc);

                _color_Original = oc.GetField <SimpleColorSO, ObstacleController>("_color").color;

                if (_color == null)
                {
                    _color = ScriptableObject.CreateInstance <SimpleColorSO>();
                    _color.SetColor(_color_Original);
                }

                oc.SetField("_color", _color);
            }
Exemplo n.º 5
0
 public virtual void HandleObstacleDiStartMovementEvent(BeatmapObjectSpawnController obstacleSpawnController, ObstacleController obstacleController)
 {
     try
     {
         StretchableObstacle _stretchableObstacle    = ReflectionUtil.GetPrivateField <StretchableObstacle>(obstacleController, "_stretchableObstacle");
         StretchableCube     _stretchableCoreOutside = ReflectionUtil.GetPrivateField <StretchableCube>(_stretchableObstacle, "_stretchableCoreOutside");
         StretchableCube     _stretchableCoreInside  = ReflectionUtil.GetPrivateField <StretchableCube>(_stretchableObstacle, "_stretchableCoreInside");
         //MeshRenderer _meshRenderer = ReflectionUtil.GetPrivateField<MeshRenderer>(_stretchableCoreOutside, "_meshRenderer");
         //MeshRenderer _meshRenderer2 = ReflectionUtil.GetPrivateField<MeshRenderer>(_stretchableCoreInside, "_meshRenderer");
         _stretchableCoreOutside.gameObject.layer = WallLayer;
         _stretchableCoreInside.gameObject.layer  = WallLayer;
     }
     catch (Exception ex)
     {
         Console.WriteLine(ex.Message + "\n" + ex.StackTrace);
     }
 }
Exemplo n.º 6
0
        private static void Postfix(ref ObstacleController __instance, StretchableObstacle ____stretchableObstacle, ref SimpleColorSO ____color)
        {
            try
            {
                CustomMaterial customMaterial = MaterialAssetLoader.CustomMaterialObjects[MaterialAssetLoader.SelectedMaterial];
                if (customMaterial.FileName != "DefaultMaterials")
                {
                    Renderer mesh  = __instance.gameObject.GetComponentInChildren <Renderer>();
                    Color    color = ____color.color;

                    if (customMaterial.Descriptor.Overlay)
                    {
                        GameObject overlay = MeshUtils.CreateOverlay(mesh, customMaterial.MaterialRenderer, customMaterial.Descriptor.OverlayOffset);
                        MaterialUtils.SetMaterialsColor(overlay?.GetComponent <Renderer>().materials, color);
                        if (customMaterial.Descriptor.ReplaceMesh)
                        {
                            MeshUtils.ReplaceMesh(overlay.GetComponent <MeshFilter>(), customMaterial.MaterialMeshFilter, customMaterial.Descriptor.MeshScaleMultiplier);
                            if (!customMaterial.Descriptor.ReplaceOnlyOverlayMesh)
                            {
                                MeshUtils.ReplaceMesh(__instance.gameObject.GetComponentInChildren <MeshFilter>(), customMaterial.MaterialMeshFilter, customMaterial.Descriptor.MeshScaleMultiplier);
                            }
                        }
                    }
                    else
                    {
                        MaterialUtils.ReplaceRenderer(mesh, customMaterial.MaterialRenderer);
                        MaterialUtils.SetMaterialsColor(mesh?.materials, color);
                        if (customMaterial.Descriptor.ReplaceMesh)
                        {
                            MeshUtils.ReplaceMesh(__instance.gameObject.GetComponentInChildren <MeshFilter>(), customMaterial.MaterialMeshFilter, customMaterial.Descriptor.MeshScaleMultiplier);
                        }
                    }
                }

                if (!Configuration.EnableObstacleFrame)
                {
                    ParametricBoxFrameController frame = ____stretchableObstacle.GetPrivateField <ParametricBoxFrameController>("_obstacleFrame");
                    frame.enabled = false;
                }
            }
            catch (Exception ex)
            {
                Logger.log.Error(ex);
            }
        }
Exemplo n.º 7
0
        private void HandleObstacleDidStartMovementEvent(BeatmapObjectSpawnController obstacleSpawnController, ObstacleController obstacleController)
        {
            try {
                StretchableObstacle stretchableObstacle    = ReflectionUtil.GetField <StretchableObstacle>(obstacleController, "_stretchableObstacle");
                StretchableCube     stretchableCoreOutside = ReflectionUtil.GetField <StretchableCube>(stretchableObstacle, "_stretchableCoreOutside");
                StretchableCube     stretchableCoreInside  = ReflectionUtil.GetField <StretchableCube>(stretchableObstacle, "_stretchableCoreInside");
                bool didRecolour = VFX.VFXRainbowBarriers.IsRainbowWalls();

                ChromaHandleBarrierSpawnedEvent?.Invoke(ref stretchableObstacle, ref stretchableCoreOutside, ref stretchableCoreInside, ref obstacleSpawnController, ref obstacleController, ref didRecolour);

                if (!didRecolour)
                {
                    RecolourWall(stretchableCoreInside, obstacleController.obstacleData.time);
                    RecolourWall(stretchableCoreOutside, obstacleController.obstacleData.time);
                }
            } catch (Exception e) {
                ChromaLogger.Log(e);
            }
        }
Exemplo n.º 8
0
        public static void Init(ObstacleController __instance)
        {
            if (ColorController.isNull || !ColorController.instance.useCustomWallColor)
            {
                return;
            }

            Color color = ColorController.instance.wallColor;

            if (Helper.IsRainbow(color))
            {
                color = RainbowController.instance.GetWallColor();
            }

            StretchableObstacle stretchable = Helper.GetValue <StretchableObstacle>(__instance, "_stretchableObstacle");

            ParametricBoxFrameController frame = Helper.GetValue <ParametricBoxFrameController>(stretchable, "_obstacleFrame");

            stretchable.SetSizeAndColor(frame.width, frame.height, frame.length, color);
        }
Exemplo n.º 9
0
 public virtual void HandleObstacleDidStartMovementEvent(BeatmapObjectSpawnController obstacleSpawnController, ObstacleController obstacleController)
 {
     try
     {
         StretchableObstacle _stretchableObstacle = ReflectionUtil.GetPrivateField <StretchableObstacle>(obstacleController, "_stretchableObstacle");
         StretchableCube     _stretchableCore     = ReflectionUtil.GetPrivateField <StretchableCube>(_stretchableObstacle, "_stretchableCore");
         Transform           _obstacleCore        = ReflectionUtil.GetPrivateField <Transform>(_stretchableObstacle, "_obstacleCore");
         //MeshRenderer _meshRenderer = ReflectionUtil.GetPrivateField<MeshRenderer>(_stretchableCoreOutside, "_meshRenderer");
         //MeshRenderer _meshRenderer2 = ReflectionUtil.GetPrivateField<MeshRenderer>(_stretchableCoreInside, "_meshRenderer");
         Logger.log.Debug("Setting stretchableCore layer to: " + Plugin.WallLayer + " from: " + _stretchableCore.gameObject.layer);
         Logger.log.Debug("Setting obstacleCore layer to: " + Plugin.WallLayer + " from: " + _obstacleCore.gameObject.layer);
         Logger.log.Debug("ObstacleController has layer: " + obstacleController.gameObject.layer);
         Logger.log.Debug("_stretchableObstacle has layer: " + _stretchableObstacle.gameObject.layer);
         _stretchableCore.gameObject.layer = Plugin.WallLayer;
         _obstacleCore.gameObject.layer    = Plugin.WallLayer;
     }
     catch (Exception ex)
     {
         Logger.log.Error(ex);
     }
 }
Exemplo n.º 10
0
        internal ObstacleColorizer(ObstacleControllerBase obstacleController)
        {
            StretchableObstacle stretchableObstacle = obstacleController.GetComponent <StretchableObstacle>();

            _obstacleFrame                    = _obstacleFrameAccessor(ref stretchableObstacle);
            _obstacleFakeGlow                 = _obstacleFakeGlowAccessor(ref stretchableObstacle);
            _addColorMultiplier               = _addColorMultiplierAccessor(ref stretchableObstacle);
            _obstacleCoreLerpToWhiteFactor    = _obstacleCoreLerpToWhiteFactorAccessor(ref stretchableObstacle);
            _materialPropertyBlockControllers = _materialPropertyBlockControllersAccessor(ref stretchableObstacle);

            if (obstacleController is ObstacleController trueObstacleController)
            {
                OriginalColor = _colorManagerAccessor(ref trueObstacleController).obstaclesColor;
            }
            else
            {
                // Fallback
                OriginalColor = Color.white;
            }

            Colorizers.Add(obstacleController, this);
        }
Exemplo n.º 11
0
        private void HandleObstacleDidStartMovementEvent(BeatmapObjectSpawnController obstacleSpawnController, ObstacleController obstacleController)
        {
            try {
                StretchableObstacle             stretchableObstacle = ReflectionUtil.GetField <StretchableObstacle>(obstacleController, "_stretchableObstacle");
                StretchableCube                 stretchableCore     = ReflectionUtil.GetField <StretchableCube>(stretchableObstacle, "_stretchableCore");
                ParametricBoxFrameController    frameController     = ReflectionUtil.GetField <ParametricBoxFrameController>(stretchableObstacle, "_obstacleFrame");
                ParametricBoxFakeGlowController fakeGlowController  = ReflectionUtil.GetField <ParametricBoxFakeGlowController>(stretchableObstacle, "_obstacleFakeGlow");
                float time  = obstacleController.obstacleData.time;
                Color color = ColourManager.GetBarrierColour(time);
                frameController.color    = color;
                fakeGlowController.color = color;
                bool didRecolour = VFX.VFXRainbowBarriers.IsRainbowWalls();

                ChromaHandleBarrierSpawnedEvent?.Invoke(ref stretchableObstacle, ref obstacleSpawnController, ref obstacleController, ref didRecolour);

                if (!didRecolour && color != ColourManager.DefaultBarrierColour && color != Color.clear)
                {
                    RecolourWall(stretchableCore, ColourManager.GetCorrectedBarrierColour(time));
                }
            } catch (Exception e) {
                ChromaLogger.Log(e);
            }
        }
        static void Postfix(ref ObstacleController __instance, ObstacleData obstacleData, float worldRotation, Vector3 startPos,
                            Vector3 midPos, Vector3 endPos, float move1Duration, float move2Duration, float singleLineWidth,
                            ref Vector3 ____startPos, ref Vector3 ____endPos, ref Vector3 ____midPos, ref StretchableObstacle ____stretchableObstacle, ref Bounds ____bounds, ref ColorManager ____colorManager, ref float height)
        {
            if (!Plugin.active)
            {
                return;
            }
            if (obstacleData.width >= 1000 || (((int)obstacleData.obstacleType >= 1000 && (int)obstacleData.obstacleType <= 4000) || ((int)obstacleData.obstacleType >= 4001 && (int)obstacleData.obstacleType <= 4005000)))
            {
                Mode mode        = ((int)obstacleData.obstacleType >= 4001 && (int)obstacleData.obstacleType <= 4100000) ? Mode.preciseHeightStart : Mode.preciseHeight;
                int  obsHeight   = 0;
                int  startHeight = 0;
                if (mode == Mode.preciseHeightStart)
                {
                    int value = (int)obstacleData.obstacleType;
                    value      -= 4001;
                    obsHeight   = value / 1000;
                    startHeight = value % 1000;
                    //     Console.WriteLine(height + "<---Height       StartHeight---> " + startHeight);
                }
                else
                {
                    int value = (int)obstacleData.obstacleType;
                    obsHeight = value - 1000;
                }
                float num = 0;
                if ((obstacleData.width >= 1000) || (mode == Mode.preciseHeightStart))
                {
                    float width = (float)obstacleData.width - 1000;
                    float precisionLineWidth = singleLineWidth / 1000;
                    num = width * precisionLineWidth;                      //Change y of b for start height
                    Vector3 b = new Vector3((num - singleLineWidth) * 0.5f, 4 * ((float)startHeight / 1000), 0f);
                    ____startPos = startPos + b;
                    ____midPos   = midPos + b;
                    ____endPos   = endPos + b;
                }
                else
                {
                    num = (float)obstacleData.width * singleLineWidth;
                }

                float num2       = (____endPos - ____midPos).magnitude / move2Duration;
                float length     = num2 * obstacleData.duration;
                float multiplier = 1f;
                if ((int)obstacleData.obstacleType >= 1000)
                {
                    multiplier = (float)obsHeight / 1000f;
                }
                ____stretchableObstacle.SetSizeAndColor(Mathf.Abs(num * 0.98f), Mathf.Abs(height * multiplier), Mathf.Abs(length), ____colorManager.GetObstacleEffectColor());
                ____bounds = ____stretchableObstacle.bounds;
                //  ____stretchableObstacle.transform.localRotation *= Quaternion.Euler(new Vector3(0, 0, 180f));
            }
        }
Exemplo n.º 13
0
        public static bool Prefix(ObstacleController __instance, ObstacleData obstacleData, Vector3 startPos, Vector3 midPos, Vector3 endPos, float move1Duration, float move2Duration, float startTimeOffset, float singleLineWidth, float height, ref bool ____initialized, ref ObstacleData ____obstacleData, ref float ____obstacleDuration, ref Vector3 ____startPos, ref Vector3 ____midPos, ref Vector3 ____endPos, ref float ____move1Duration, ref float ____move2Duration, ref float ____startTimeOffset, ref StretchableObstacle ____stretchableObstacle, ref Bounds ____bounds, ref bool ____passedThreeQuartersOfMove2Reported, ref bool ____passedAvoidedMarkReported, ref float ____passedAvoidedMarkTime, ref float ____finishMovementTime, ref Action <ObstacleController> ___didInitEvent, ref SimpleColorSO ____color)
        {
            if (!Plugin.active)
            {
                return(true);
            }

            ____initialized      = true;
            ____obstacleData     = obstacleData;
            ____obstacleDuration = obstacleData.duration;
            float   num    = obstacleData.width * singleLineWidth;
            Vector3 vector = __instance.transform.rotation * new Vector3((num - singleLineWidth) * 0.5f, 0f, 0f);

            ____startPos        = startPos + vector;
            ____midPos          = midPos + vector;
            ____midPos.y        = ____startPos.y;
            ____endPos          = endPos + vector;
            ____endPos.y        = ____startPos.y;
            ____move1Duration   = move1Duration;
            ____move2Duration   = move2Duration;
            ____startTimeOffset = startTimeOffset;
            float length = (____endPos - ____midPos).magnitude / move2Duration * obstacleData.duration;

            ____stretchableObstacle.SetSizeAndColor(num * 0.98f, height, length, ____color);
            ____bounds = ____stretchableObstacle.bounds;
            ____passedThreeQuartersOfMove2Reported = false;
            ____passedAvoidedMarkReported          = false;
            ____passedAvoidedMarkTime = ____move1Duration + ____move2Duration * 0.5f + ____obstacleDuration + 0.15f;
            ____finishMovementTime    = ____move1Duration + ____move2Duration + ____obstacleDuration;
            ___didInitEvent?.Invoke(__instance);

            return(false);
        }