Files
CodenameEngine/source/funkin/backend/system/framerate/MemoryCounter.hx
T
2026-04-01 19:51:11 +07:00

59 lines
1.4 KiB
Haxe

package funkin.backend.system.framerate;
import openfl.display.Sprite;
import openfl.text.TextField;
import openfl.text.TextFormat;
class MemoryCounter extends Sprite {
public var memoryText:TextField;
public var memoryPeakText:TextField;
public var memory:Float = 0;
public var memoryPeak:Float = 0;
public function new() {
super();
memoryText = new TextField();
memoryPeakText = new TextField();
for(label in [memoryText, memoryPeakText]) {
label.autoSize = LEFT;
label.x = 0;
label.y = 0;
label.text = "MEM";
label.multiline = label.wordWrap = false;
label.defaultTextFormat = Framerate.textFormat;
label.selectable = false;
addChild(label);
}
memoryPeakText.alpha = 0.5;
}
public function reload() {
for(label in [memoryText, memoryPeakText]) label.defaultTextFormat = Framerate.textFormat;
}
public override function __enterFrame(t:Float) {
if (alpha <= 0.05) return;
super.__enterFrame(t);
final mem = MemoryUtil.currentMemUsage();
if (mem == memory) {
updateLabelPosition();
return;
}
memory = mem;
if (memoryPeak < memory) memoryPeak = memory;
memoryText.text = CoolUtil.getSizeString(memory);
memoryPeakText.text = ' / ${CoolUtil.getSizeString(memoryPeak)}';
updateLabelPosition();
}
private inline function updateLabelPosition():Void
memoryPeakText.x = memoryText.x + memoryText.width;
}