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)); }
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}"); } }
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); } }
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); } }
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); } }
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); } }
private void RecolourWall(StretchableCube wall, Color color) { CustomUI.Utilities.UIUtilities.PrintHierarchy(wall.transform.parent); foreach (Transform component in wall.transform.parent) { foreach (Transform child in component.transform) { try { MeshRenderer ren = child.GetComponent <MeshRenderer>(); if (ren.material.color != Color.clear) { ren.material.color = color; } } catch (Exception) { // This doesn't have a color // It could be the Collider } } } MeshRenderer r = wall.GetComponent <MeshRenderer>(); r.material.SetColor("_AddColor", color); }
public static void Postfix(StretchableCube __instance) { __instance.gameObject.layer = WallLayerMask; }