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)); }
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); } }