public override void DrawSprites(RoomCamera.SpriteLeaser sLeaser, RoomCamera rCam, float timeStacker, Vector2 camPos) { Vector2 vector = Vector2.Lerp(this.lastPos, this.pos, timeStacker); Vector2 vector2 = Vector2.Lerp(this.lastLastLastPos, this.lastLastPos, timeStacker); if (Custom.DistLess(vector, vector2, 9f)) { vector2 = vector + Custom.DirVec(vector, vector2) * 12f; } vector2 = Vector2.Lerp(vector, vector2, Mathf.InverseLerp(0f, 0.1f, 1f)); Vector2 a = Custom.PerpendicularVector((vector - vector2).normalized); (sLeaser.sprites[0] as TriangleMesh).MoveVertice(0, vector + a * (this.depth + (this.depth * 0.1f)) - camPos); (sLeaser.sprites[0] as TriangleMesh).MoveVertice(1, vector - a * (this.depth + (this.depth * 0.1f)) - camPos); (sLeaser.sprites[0] as TriangleMesh).MoveVertice(2, vector2 - camPos); sLeaser.sprites[1].x = vector.x - camPos.x; sLeaser.sprites[1].y = vector.y - camPos.y; sLeaser.sprites[1].rotation = UnityEngine.Random.value * 360f; if (Downpour.rainbow) { sLeaser.sprites[0].color = Color.Lerp(color, Color.Lerp(rCam.PixelColorAtCoordinate(this.pos), rCam.PixelColorAtCoordinate(this.lastLastLastPos), 0.5f), 0.36f); } else { sLeaser.sprites[0].color = Color.Lerp(new Color(1f, 1f, 1f), Color.Lerp(rCam.currentPalette.fogColor, Color.Lerp(rCam.PixelColorAtCoordinate(this.pos), rCam.PixelColorAtCoordinate(this.lastLastLastPos), 0.5f), 0.83f), 0.95f); } //If background drops encounter a depth in the room texture lower than their own depth value, treat it as a collision. if (backgroundDrop && !reset && !this.collision && rCam.IsViewedByCameraPosition(rCam.cameraNumber, this.pos) && rCam.DepthAtCoordinate(this.pos) < this.depth) { splashCounter = 1f; timeToDie = true; sLeaser.sprites[1].color = Color.Lerp(color, rCam.PixelColorAtCoordinate(this.pos), 0.7f); this.collision = true; } if (splashCounter > 0f && !backgroundDrop) { sLeaser.sprites[1].color = Color.Lerp(color, rCam.PixelColorAtCoordinate(this.pos), 0.2f); } if (splashCounter > 0f) { //If splash counter is greater than 0 adjust the scale of the splash sprite based on whether its a background drop or not. if (backgroundDrop) { sLeaser.sprites[1].scale = Mathf.Lerp(0f, this.depth * 0.4f, splashCounter); this.vel.y = 0f; this.vel.x = 0f; } else { sLeaser.sprites[1].scale = Mathf.Lerp(0f, UnityEngine.Random.Range(0.25f, 0.42f), splashCounter); } sLeaser.sprites[0].alpha = 0f; } else { sLeaser.sprites[1].scale = 0f; sLeaser.sprites[0].alpha = this.alpha; } //Delete raindrop if it falls a certain distance below the currently viewed room camera if (this.pos.y < (rCam.pos.y - 100f) || (splashCounter <= 0f && timeToDie)) { this.reset = true; } base.DrawSprites(sLeaser, rCam, timeStacker, camPos); }