public Border(Vector2f position, Vector2f size, Vector2i sizeMultiplier, Texture borderTexture) : base(position, size)
        {
            borderTexture.Repeated = true;

            BorderComponent = new SpriteComponent(position, size, borderTexture, new Color(255, 255, 255, 255));
            BorderComponent.SetTextureRectSize(new Vector2i((int)Size.X * sizeMultiplier.X, (int)Size.Y * sizeMultiplier.Y));

            RenderLayer = RenderLayer.Border;
            RenderView  = RenderView.Game;
        }
        public Weather(Texture weatherTexture, float speedModifier, string musicType, float intensity, AnimationType animationType, string type) : base(animationType == AnimationType.Shaded ? new Vector2f(0, 0) : new Vector2f(-64, -64), new Vector2f(64, 64))
        {
            SpeedModifier = speedModifier;
            Intensity     = intensity;
            AnimationType = animationType;
            Type          = type;
            ComplexShader = AnimationType == AnimationType.Shaded ? new WeatherShader(Intensity) : null;

            weatherTexture.Repeated = true;

            PositionOffset = new Vector2f(0, 0);

            WeatherComponent = new SpriteComponent(Position, Size, weatherTexture, new Color(255, 255, 255, 255));
            WeatherComponent.SetTextureRectSize(new Vector2i(5 * 20 * 64 + (animationType == AnimationType.Animated ? 2 * 64 : 0), 5 * 20 * 64 + (animationType == AnimationType.Animated ? 2 * 64 : 0)));

            MusicManager.Instance.PlayRandomMusic(musicType);

            RenderLayer = RenderLayer.Weather;
            RenderView  = RenderView.Game;

            RegisterTickable();
        }