private void Init(TweenMode mode, Ease.Easer easer, float duration, bool start) { #if DEBUG if (duration <= 0) { throw new Exception("Tween duration cannot be less than zero"); } #else if (duration <= 0) { duration = .000001f; } #endif UseRawDeltaTime = false; Mode = mode; Easer = easer; Duration = duration; TimeLeft = 0; Percent = 0; Active = false; if (start) { Start(); } }
public EntityMover(EntityData data, Vector2 offset) : base(data.Position + offset) { Collider = new Hitbox(data.Width, data.Height); Types = FrostModule.GetTypes(data.Attr("types", "")).ToList(); isBlacklist = data.Bool("blacklist"); pauseTime = data.Float("pauseTimeLength", 0f); pauseTimer = data.Float("startPauseTimeLength", 0f); relativeMode = data.Bool("relativeMovementMode", false); onEndSFX = data.Attr("onEndSFX", ""); if (isBlacklist) { // Some basic types we don't want to move D: foreach (Type type in new List <Type>() { typeof(Player), typeof(SolidTiles), typeof(BackgroundTiles), typeof(SpeedrunTimerDisplay), typeof(StrawberriesCounter) }) { Types.Add(type); } } endNode = data.FirstNodeNullable(offset).GetValueOrDefault(); easer = EaseHelper.GetEase(data.Attr("easing", "CubeInOut")); duration = data.Float("moveDuration", 1f); mustCollide = data.Bool("mustCollide", true); distance = new Vector2(endNode.X - Position.X, endNode.Y - Position.Y); }
static public Tween Set(Entity entity, TweenMode tweenMode, float duration, Ease.Easer easer, Action <Tween> onUpdate, Action <Tween> onComplete = null) { Tween tween = Tween.Create(tweenMode, easer, duration, true); tween.OnUpdate += onUpdate; tween.OnComplete += onComplete; entity.Add(tween); return(tween); }
static public Tween Create(TweenMode mode, Ease.Easer easer = null, float duration = 1f, bool start = false) { Tween tween; if (cached.Count == 0) { tween = new Tween(); } else { tween = cached.Pop(); } tween.OnUpdate = tween.OnComplete = tween.OnStart = null; tween.Init(mode, easer, duration, start); return(tween); }
public CustomDreamBlockV2(EntityData data, Vector2 offset) : base(data, offset) { ActiveBackColor = ColorHelper.GetColor(data.Attr("activeBackColor", "Black")); DisabledBackColor = ColorHelper.GetColor(data.Attr("disabledBackColor", "1f2e2d")); ActiveLineColor = ColorHelper.GetColor(data.Attr("activeLineColor", "White")); DisabledLineColor = ColorHelper.GetColor(data.Attr("disabledLineColor", "6a8480")); DashSpeed = data.Float("speed", 240f); AllowRedirects = data.Bool("allowRedirects"); AllowRedirectsInSameDir = data.Bool("allowSameDirectionDash"); SameDirectionSpeedMultiplier = data.Float("sameDirectionSpeedMultiplier", 1f); node = data.FirstNodeNullable(new Vector2?(offset)); moveSpeedMult = data.Float("moveSpeedMult", 1f); easer = EaseHelper.GetEase(data.Attr("moveEase", "SineInOut")); ConserveSpeed = data.Bool("conserveSpeed", false); // legacy fastMoving = data.Bool("fastMoving", false); }
public static Ease.Easer Follow(Ease.Easer first, Ease.Easer second) { return((Ease.Easer)(t => (double)t > 0.5 ? (float)((double)second((float)((double)t * 2.0 - 1.0)) / 2.0 + 0.5) : first(t * 2f) / 2f)); }
public static Ease.Easer Invert(Ease.Easer easer) { return((Ease.Easer)(t => 1f - easer(1f - t))); }
private void Init(TweenMode mode, Ease.Easer easer, float duration, bool start) { #if DEBUG if (duration <= 0) throw new Exception("Tween duration cannot be less than zero"); #else if (duration <= 0) duration = .000001f; #endif Mode = mode; Easer = easer; Duration = duration; TimeLeft = 0; Percent = 0; Active = false; if (start) Start(); }
static public Tween Position(Entity entity, Vector2 targetPosition, float duration, Ease.Easer easer, TweenMode tweenMode = TweenMode.Oneshot) { Vector2 startPosition = entity.Position; Tween tween = Tween.Create(tweenMode, easer, duration, true); tween.OnUpdate = (t) => { entity.Position = Vector2.Lerp(startPosition, targetPosition, t.Eased); }; entity.Add(tween); return(tween); }