public override void Update(FrameTick elapsedTime) { base.Update(elapsedTime); //get the new origin of the hitbox long add = UpdateTick(elapsedTime, Speed); int addedDist = Math.Min((int)add, MaxDistance * GraphicsManager.TileSize - DistanceTraveled); Loc newOrigin = MapLoc + Dir.GetLoc() * (addedDist * reverse); //set the new origin MapLoc = newOrigin; DistanceTraveled += addedDist; //update animation Emitter.SetupEmit(User, MapLoc, User.MapLoc, Dir, LocHeight); //update emittings (list of particles to emit here; place in main particle processor) Emitter.Update(DungeonScene.Instance, elapsedTime); //check to see if this hitbox needs to expire if (DistanceTraveled >= MaxDistance * GraphicsManager.TileSize) { if (Boomerang && reverse == 1) { reverse = -1; DistanceTraveled = GraphicsManager.TileSize / 2; } //else // Finished = true; } }
public override void Update(FrameTick elapsedTime) { base.Update(elapsedTime); //get the new origin of the hitbox from the owner MapLoc = User.MapLoc; if (HitboxDone) { timeLingered += elapsedTime; } //update animation Emitter.SetupEmit(User, MapLoc, StartPoint * GraphicsManager.TileSize, Dir, LocHeight); //update emittings (list of particles to emit here; place in main particle processor) Emitter.Update(DungeonScene.Instance, elapsedTime); }
public override void Update(FrameTick elapsedTime) { base.Update(elapsedTime); //update the position of the item in the sky long add = UpdateTick(elapsedTime, Speed); Loc diff = (EndPoint - StartPoint) * GraphicsManager.TileSize; DistanceTraveled += Math.Min((int)add, MaxDistance - DistanceTraveled); MapLoc = StartPoint * GraphicsManager.TileSize + diff * DistanceTraveled / MaxDistance; LocHeight = AnimMath.GetArc(MaxDistance / 2, MaxDistance, DistanceTraveled); //update animation Emitter.SetupEmit(User, MapLoc, User.MapLoc, User.CharDir, LocHeight); //update emittings (list of particles to emit here; place in main particle processor) Emitter.Update(DungeonScene.Instance, elapsedTime); }