mirror of
https://github.com/RandomityGuy/MBHaxe.git
synced 2025-10-30 08:11:25 +00:00
33 lines
809 B
Haxe
33 lines
809 B
Haxe
package src;
|
|
|
|
import src.Console;
|
|
|
|
class Resource<T> {
|
|
public var resource:T;
|
|
public var identifier:String;
|
|
|
|
var referenceCount:Int = 0;
|
|
var resourceMap:Map<String, Resource<T>>;
|
|
var disposeFunc:T->Void;
|
|
|
|
public function new(resource:T, identifier:String, resList:Map<String, Resource<T>>, disposeFunc:T->Void) {
|
|
this.resource = resource;
|
|
this.resourceMap = resList;
|
|
this.disposeFunc = disposeFunc;
|
|
this.identifier = identifier;
|
|
}
|
|
|
|
public function acquire() {
|
|
this.referenceCount++;
|
|
// trace('Acquiring Resource ${this.identifier}: ${this.referenceCount}');
|
|
}
|
|
|
|
public function release() {
|
|
this.referenceCount--;
|
|
if (this.referenceCount == 0) {
|
|
disposeFunc(this.resource);
|
|
this.resourceMap.remove(this.identifier);
|
|
// trace('Releasing Resource ${this.identifier}');
|
|
}
|
|
}
|
|
}
|