private static Color getRainbowSpinnerHue(On.Celeste.CrystalStaticSpinner.orig_GetHue orig, CrystalStaticSpinner self, Vector2 position) { RainbowSpinnerColorAreaController controller = self.CollideFirst <RainbowSpinnerColorAreaController>(position); if (controller != null) { // apply the color from the controller we are in. return(RainbowSpinnerColorController.getModHue(controller.colors, controller.gradientSize, self.Scene, position, controller.loopColors, controller.center, controller.gradientSpeed)); } else { // we are not in a controller; apply the vanilla color. return(orig(self, position)); } }
private static Color getRainbowSpinnerHue(On.Celeste.CrystalStaticSpinner.orig_GetHue orig, CrystalStaticSpinner self, Vector2 position) { if (transitionProgress == -1f) { // no transition is ongoing. // if only nextSpinnerController is defined, move it into spinnerControllerOnScreen. if (spinnerControllerOnScreen == null) { spinnerControllerOnScreen = nextSpinnerController; nextSpinnerController = null; } return(getModHue(spinnerControllerOnScreen.colors, spinnerControllerOnScreen.gradientSize, self.Scene, self.Position)); } else { // get the spinner color in the room we're coming from. Color fromRoomColor; if (spinnerControllerOnScreen != null) { fromRoomColor = getModHue(spinnerControllerOnScreen.colors, spinnerControllerOnScreen.gradientSize, self.Scene, self.Position); } else { fromRoomColor = orig(self, position); } // get the spinner color in the room we're going to. Color toRoomColor; if (nextSpinnerController != null) { toRoomColor = getModHue(nextSpinnerController.colors, nextSpinnerController.gradientSize, self.Scene, self.Position); } else { toRoomColor = orig(self, position); } // transition smoothly between both. return(Color.Lerp(fromRoomColor, toRoomColor, transitionProgress)); } }
private static Color getRainbowSpinnerHue(On.Celeste.CrystalStaticSpinner.orig_GetHue orig, CrystalStaticSpinner self, Vector2 position) { return(getEntityHue(() => orig(self, position), self, position)); }