Example #1
0
        private void RecolourWall(StretchableCube wall, float time)
        {
            Color color = ColourManager.GetBarrierColour(time);

            if (color == ColourManager.DefaultBarrierColour || color == Color.clear)
            {
                return;
            }

            foreach (Transform component in wall.transform.parent.parent)
            {
                foreach (Transform child in component.transform)
                {
                    MeshRenderer ren = child.GetComponent <MeshRenderer>();
                    if (ren.material.color != Color.clear)
                    {
                        ren.material.color = color;
                    }
                }
            }

            MeshRenderer r   = wall.GetComponent <MeshRenderer>();
            float        cor = (3f * ColourManager.barrierColourCorrectionScale) + 1;//4f * ColourManager.barrierColourCorrectionScale;

            r.material.SetColor("_AddColor", (color / (4f * ColourManager.barrierColourCorrectionScale)).ColorWithAlpha(0f));
        }
Example #2
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);
            }
        }