package funkin.util.plugins; import flixel.FlxBasic; /** * A plugin which adds functionality to display several universally important values * in the Flixel variable watch window. */ class WatchPlugin extends FlxBasic { public function new() { super(); } public static function initialize():Void { FlxG.plugins.addPlugin(new WatchPlugin()); } public override function update(elapsed:Float):Void { super.update(elapsed); var stateClassName = Type.getClassName(Type.getClass(FlxG.state)); FlxG.watch.addQuick("currentState", stateClassName); var subStateClassNames = []; var subState = FlxG.state.subState; while (subState != null) { subStateClassNames.push(Type.getClassName(Type.getClass(subState))); subState = subState.subState; } FlxG.watch.addQuick("currentSubStates", subStateClassNames.join(", ")); FlxG.watch.addQuick("songPosition", Conductor.instance.songPosition); FlxG.watch.addQuick("songPositionNoOffset", Conductor.instance.songPosition + Conductor.instance.instrumentalOffset); FlxG.watch.addQuick("musicLength", FlxG.sound?.music?.length ?? 0.0); FlxG.watch.addQuick("musicTime", FlxG.sound?.music?.time ?? 0.0); FlxG.watch.addQuick("bpm", Conductor.instance.bpm); FlxG.watch.addQuick("currentMeasureTime", Conductor.instance.currentMeasureTime); FlxG.watch.addQuick("currentBeatTime", Conductor.instance.currentBeatTime); FlxG.watch.addQuick("currentStepTime", Conductor.instance.currentStepTime); } public override function destroy():Void { super.destroy(); } }