package funkin.ui.title; import flixel.FlxSprite; import funkin.shaderslmfao.BlendModesShader; import openfl.display.BitmapData; import flixel.FlxCamera; import flixel.FlxG; import flixel.graphics.frames.FlxFrame.FlxFrameAngle; class FlxSpriteOverlay extends FlxSprite { var blendShader:BlendModesShader; var dipshitBitmap:BitmapData; var temp:FlxSprite; public function new(x:Float, y:Float) { super(x, y); temp = new FlxSprite().makeGraphic(FlxG.width, FlxG.height, 0xFF000000); blendShader = new BlendModesShader(); dipshitBitmap = new BitmapData(2180, 1720, true, 0xFFCC00CC); } override function drawComplex(camera:FlxCamera):Void { _frame.prepareMatrix(_matrix, FlxFrameAngle.ANGLE_0, checkFlipX(), checkFlipY()); _matrix.translate(-origin.x, -origin.y); _matrix.scale(scale.x, scale.y); if (bakedRotationAngle <= 0) { updateTrig(); if (angle != 0) _matrix.rotateWithTrig(_cosAngle, _sinAngle); } getScreenPosition(_point, camera).subtractPoint(offset); _point.add(origin.x, origin.y); _matrix.translate(_point.x, _point.y); if (isPixelPerfectRender(camera)) { _matrix.tx = Math.floor(_matrix.tx); _matrix.ty = Math.floor(_matrix.ty); } var sprRect = getScreenBounds(); dipshitBitmap.draw(camera.canvas, camera.canvas.transform.matrix); blendShader.setCamera(dipshitBitmap); FlxG.bitmapLog.add(dipshitBitmap); camera.drawPixels(_frame, framePixels, _matrix, colorTransform, blend, antialiasing, blendShader); } function copyToFlash(rect):openfl.geom.Rectangle { var flashRect = new openfl.geom.Rectangle(); flashRect.x = rect.x; flashRect.y = rect.y; flashRect.width = rect.width; flashRect.height = rect.height; return flashRect; } override public function isSimpleRender(?camera:FlxCamera):Bool { if (FlxG.renderBlit) { return super.isSimpleRender(camera); } else { return false; } } }