optimize adding additional jigsaw sprites

This commit is contained in:
2022-08-18 18:38:08 +00:00
parent abfa8edcd6
commit e304c31b78
2 changed files with 25 additions and 1 deletions

View File

@@ -29,6 +29,19 @@ class DragToSelectPlugin extends FlxBasic {
super(); super();
} }
public function clearEnabledSprites(?state:FlxState) {
if (state == null) state = FlxG.state;
dragStates[state].enabledSprites = [];
dragStates[state].selectedSprites = [];
}
// Don't use this on a whole list of sprites! It will be O(N^2)
public function disableSprite(s: KissExtendedSprite, ?state:FlxState) {
if (state == null) state = FlxG.state;
dragStates[state].enabledSprites.remove(s);
dragStates[state].selectedSprites.remove(s);
}
public function enableSprite(s:KissExtendedSprite, ?state:FlxState, ?camera:FlxCamera) { public function enableSprite(s:KissExtendedSprite, ?state:FlxState, ?camera:FlxCamera) {
if (state == null) state = FlxG.state; if (state == null) state = FlxG.state;
if (camera == null) camera = FlxG.camera; if (camera == null) camera = FlxG.camera;

View File

@@ -115,8 +115,19 @@ class KissExtendedSprite extends flixel.addons.display.FlxExtendedSprite {
plugin.enableSprite(this, state, thisCamera()); plugin.enableSprite(this, state, thisCamera());
_dragToSelectEnabled = true; _dragToSelectEnabled = true;
} }
public function disableDragToSelect(?state:FlxState) {
var plugin = FlxG.plugins.get(DragToSelectPlugin);
plugin.disableSprite(this, state);
_dragToSelectEnabled = false;
}
override function update(elapsed:Float) { public override function destroy() {
if (_dragToSelectEnabled)
disableDragToSelect();
super.destroy();
}
public override function update(elapsed:Float) {
#if debug #if debug
// color = (mouseOver && pixelPerfect(_dragPixelPerfectAlpha)) ? FlxColor.LIME : FlxColor.WHITE; // color = (mouseOver && pixelPerfect(_dragPixelPerfectAlpha)) ? FlxColor.LIME : FlxColor.WHITE;
#end #end