private static int Player_RedDashUpdate(On.Celeste.Player.orig_RedDashUpdate orig, Player self) { DreamBooster dreamBooster = self.LastBooster as DreamBooster; if (dreamBooster != null) { bool inSolid = self.CollideCheck <Solid, DreamBlock>(); // Prevent the player from jumping or dashing out of the DreamBooster. May be reset in IL hook below. // If for whatever reason this becomes an actual option for DreamBoosters, this will need to be changed. if (inSolid) { self.LastBooster.Ch9HubTransition = true; } dreamBooster.LoopingSfxParam("dream_tunnel", Util.ToInt(inSolid)); if (Vector2.Distance(self.Center, dreamBooster.Start) >= dreamBooster.Length) { self.Position = dreamBooster.Target; self.SceneAs <Level>().DirectionalShake(dreamBooster.Dir, 0.175f); return(0); } } int ret = orig(self); if (dreamBooster != null) { self.LastBooster.Ch9HubTransition = false; } return(ret); }
public DreamBoosterPathRenderer(DreamBooster booster, float alpha) { Depth = Depths.DreamBlocks + 1; dreamBooster = booster; Alpha = Percent = alpha; perp = dreamBooster.Dir.Perpendicular(); }