// Must be overwritten to compensate for rotation private static bool Prefix(MirroredObstacleController __instance, ObstacleController ____followedObstacle, Transform ____transform, Transform ____followedTransform) { // do not reflection walls above the mirror if (____followedTransform.position.y < 0) { // idk how to hide it without disabling the update ____transform.position = new Vector3(0, 100, 0); return(false); } Vector3 position = ____followedTransform.position; Quaternion quaternion = ____followedTransform.rotation; position.y = -position.y; quaternion = quaternion.Reflect(Vector3.up); ____transform.SetPositionAndRotation(position, quaternion); if (____transform.localScale != ____followedTransform.localScale) { ____transform.localScale = ____followedTransform.localScale; } if (CutoutManager.ObstacleCutoutEffects.TryGetValue(__instance, out CutoutAnimateEffectWrapper cutoutAnimateEffect)) { if (CutoutManager.ObstacleCutoutEffects.TryGetValue(____followedObstacle, out CutoutAnimateEffectWrapper followedCutoutAnimateEffect)) { cutoutAnimateEffect.SetCutout(followedCutoutAnimateEffect.Cutout); } } return(false); }
private static void Postfix(MirroredObstacleController __instance, ObstacleController ____followedObstacle) { __instance.ColorizeObstacle(____followedObstacle.GetObstacleColorizer().Color); }