Scripted Asset LIbraries
This commit is contained in:
@@ -66,7 +66,7 @@ class FlxAnimate extends flxanimate.FlxAnimate {
|
||||
}
|
||||
|
||||
rMatrix.translate(_point.x, _point.y);
|
||||
camera.drawPixels(limb, null, rMatrix, colorTransform, blend, antialiasing);
|
||||
camera.drawPixels(limb, null, rMatrix, colorTransform, blend, antialiasing, shaderEnabled ? shader : null);
|
||||
#if FLX_DEBUG
|
||||
FlxBasic.visibleCount++;
|
||||
#end
|
||||
|
||||
@@ -0,0 +1,126 @@
|
||||
package funkin.backend.assets;
|
||||
|
||||
import funkin.backend.scripting.Script;
|
||||
import lime.utils.AssetLibrary;
|
||||
import lime.utils.Assets as LimeAssets;
|
||||
|
||||
import lime.media.AudioBuffer;
|
||||
import lime.graphics.Image;
|
||||
import lime.text.Font;
|
||||
import lime.utils.Bytes;
|
||||
|
||||
#if MOD_SUPPORT
|
||||
import sys.FileStat;
|
||||
import sys.FileSystem;
|
||||
#end
|
||||
|
||||
using StringTools;
|
||||
|
||||
class ScriptedAssetLibrary extends ModsFolderLibrary {
|
||||
public var script:Script;
|
||||
public var scriptName:String;
|
||||
private static var nullValue:Dynamic = {};
|
||||
|
||||
public function new(scriptName:String, args:Array<Dynamic> = null, folderPath:String="./assets/", libName:String="assets") {
|
||||
super(folderPath, libName);
|
||||
|
||||
this.scriptName = scriptName;
|
||||
script = Script.create(Paths.script("data/library/" + scriptName));
|
||||
script.setParent(this);
|
||||
script.set("NULL", nullValue); // hackyway
|
||||
script.load();
|
||||
if(args == null) args = [];
|
||||
script.call("create", args);
|
||||
trace(script);
|
||||
}
|
||||
|
||||
#if MOD_SUPPORT
|
||||
public override function getEditedTime(asset:String):Null<Float> {
|
||||
var result:Dynamic = script.call("getEditedTime", [asset]);
|
||||
if(result != null) {
|
||||
return result == nullValue ? null : result;
|
||||
}
|
||||
return super.getEditedTime(asset);
|
||||
}
|
||||
|
||||
public override function getAudioBuffer(id:String):AudioBuffer {
|
||||
var result:Dynamic = script.call("getAudioBuffer", [id]);
|
||||
if(result != null) {
|
||||
return result == nullValue ? null : result;
|
||||
}
|
||||
return super.getAudioBuffer(id);
|
||||
}
|
||||
|
||||
public override function getBytes(id:String):Bytes {
|
||||
var result:Dynamic = script.call("getBytes", [id]);
|
||||
if(result != null) {
|
||||
return result == nullValue ? null : result;
|
||||
}
|
||||
return super.getBytes(id);
|
||||
}
|
||||
|
||||
public override function getFont(id:String):Font {
|
||||
var result:Dynamic = script.call("getFont", [id]);
|
||||
if(result != null) {
|
||||
return result == nullValue ? null : result;
|
||||
}
|
||||
return super.getFont(id);
|
||||
}
|
||||
|
||||
public override function getImage(id:String):Image {
|
||||
var result:Dynamic = script.call("getImage", [id]);
|
||||
if(result != null) {
|
||||
return result == nullValue ? null : result;
|
||||
}
|
||||
return super.getImage(id);
|
||||
}
|
||||
|
||||
public override function getPath(id:String):String {
|
||||
var result:Dynamic = script.call("getPath", [id]);
|
||||
if(result != null) {
|
||||
return result == nullValue ? null : result;
|
||||
}
|
||||
return super.getPath(id);
|
||||
}
|
||||
|
||||
public override function __getFiles(folder:String, folders:Bool = false) {
|
||||
var result:Dynamic = script.call("__getFiles", [folder, folders]);
|
||||
if(result != null) {
|
||||
return result == nullValue ? null : result;
|
||||
}
|
||||
return super.__getFiles(folder, folders);
|
||||
}
|
||||
|
||||
public override function exists(asset:String, type:String):Bool {
|
||||
var result:Dynamic = script.call("exists", [asset, type]);
|
||||
if(result != null) {
|
||||
return result == nullValue ? false : result;
|
||||
}
|
||||
return super.exists(asset, type);
|
||||
}
|
||||
|
||||
private override function getAssetPath() {
|
||||
var result:Dynamic = script.call("getAssetPath", []);
|
||||
if(result != null) {
|
||||
return result == nullValue ? null : result;
|
||||
}
|
||||
return super.getAssetPath();
|
||||
}
|
||||
|
||||
private override function __isCacheValid(cache:Map<String, Dynamic>, asset:String, isLocalCache:Bool = false) {
|
||||
var result:Dynamic = script.call("__isCacheValid", [cache, asset, isLocalCache]);
|
||||
if(result != null) {
|
||||
return result == nullValue ? false : result;
|
||||
}
|
||||
return super.__isCacheValid(cache, asset, isLocalCache);
|
||||
}
|
||||
|
||||
private override function __parseAsset(asset:String):Bool {
|
||||
var result:Dynamic = script.call("__parseAsset", [asset]);
|
||||
if(result != null) {
|
||||
return result == nullValue ? false : result;
|
||||
}
|
||||
return super.__parseAsset(asset);
|
||||
}
|
||||
#end
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
package funkin.backend.system.framerate;
|
||||
|
||||
import funkin.backend.assets.IModsAssetLibrary;
|
||||
import funkin.backend.assets.ScriptedAssetLibrary;
|
||||
|
||||
class AssetTreeInfo extends FramerateCategory {
|
||||
public function new() {
|
||||
@@ -20,7 +21,9 @@ class AssetTreeInfo extends FramerateCategory {
|
||||
if (al.__proxy != null) l = al.__proxy;
|
||||
}
|
||||
|
||||
if (l is IModsAssetLibrary)
|
||||
if (l is ScriptedAssetLibrary)
|
||||
text += '${Type.getClassName(Type.getClass(l))} - ${cast(l, ScriptedAssetLibrary).scriptName} (${cast(l, ScriptedAssetLibrary).libName} | ${cast(l, ScriptedAssetLibrary).prefix})\n';
|
||||
else if (l is IModsAssetLibrary)
|
||||
text += '${Type.getClassName(Type.getClass(l))} - ${cast(l, IModsAssetLibrary).libName} (${cast(l, IModsAssetLibrary).prefix})\n';
|
||||
else
|
||||
text += Std.string(e) + "\n";
|
||||
|
||||
Reference in New Issue
Block a user