Plugin.hx 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. package arm;
  2. // ArmorPaint plugin API
  3. @:keep
  4. class Plugin {
  5. public static var plugins: Map<String, Plugin> = [];
  6. static var pluginName: String;
  7. public var drawUI: zui.Zui->Void = null;
  8. public var draw: Void->Void = null;
  9. public var update: Void->Void = null;
  10. public var delete: Void->Void = null;
  11. public var version = "0.1";
  12. public var apiversion = "0.1";
  13. var name: String;
  14. public function new() {
  15. name = pluginName;
  16. plugins.set(name, this);
  17. }
  18. public static function start(plugin: String) {
  19. try {
  20. iron.data.Data.getBlob("plugins/" + plugin, function(blob: kha.Blob) {
  21. pluginName = plugin;
  22. #if js
  23. untyped __js__("(1, eval)({0})", blob.toString());
  24. #end
  25. iron.data.Data.deleteBlob("plugins/" + plugin);
  26. });
  27. }
  28. catch (e: Dynamic) { trace("Failed to load plugin '" + plugin + "'"); trace(e); }
  29. }
  30. public static function stop(plugin: String) {
  31. var p = plugins.get(plugin);
  32. if (p != null && p.delete != null) p.delete();
  33. plugins.remove(plugin);
  34. }
  35. }
  36. @:expose("iron")
  37. class IronBridge {
  38. public static var App = iron.App;
  39. public static var Scene = iron.Scene;
  40. public static var RenderPath = iron.RenderPath;
  41. public static var Time = iron.system.Time;
  42. public static var Input = iron.system.Input;
  43. public static var ArmPack = iron.system.ArmPack;
  44. public static var Object = iron.object.Object;
  45. public static var Data = iron.data.Data;
  46. }
  47. @:expose("arm")
  48. class ArmBridge {
  49. public static var Json = haxe.Json;
  50. public static var ReflectFields = Reflect.fields;
  51. public static var ReflectField = Reflect.field;
  52. public static var ReflectSetField = Reflect.setField;
  53. public static var StdIs = Std.is;
  54. public static var Bytes = haxe.io.Bytes;
  55. public static var BytesInput = haxe.io.BytesInput;
  56. public static var Blob = kha.Blob;
  57. public static var Image = kha.Image;
  58. public static var Scheduler = kha.Scheduler;
  59. public static var App = arm.App;
  60. public static var Config = arm.Config;
  61. public static var Context = arm.Context;
  62. public static var History = arm.History;
  63. public static var Layers = arm.Layers;
  64. public static var Log = arm.Log;
  65. public static var Operator = arm.Operator;
  66. public static var Plugin = arm.Plugin;
  67. public static var Project = arm.Project;
  68. public static var Res = arm.Res;
  69. public static var Path = arm.sys.Path;
  70. public static var File = arm.sys.File;
  71. public static var NodesMaterial = arm.node.NodesMaterial;
  72. public static var Material = arm.node.Material;
  73. public static var UITrait = arm.ui.UITrait;
  74. public static var UINodes = arm.ui.UINodes;
  75. public static var UIFiles = arm.ui.UIFiles;
  76. public static var UIMenu = arm.ui.UIMenu;
  77. public static var MeshUtil = arm.util.MeshUtil;
  78. public static var MaterialUtil = arm.util.MaterialUtil;
  79. public static var RenderUtil = arm.util.RenderUtil;
  80. public static var UVUtil = arm.util.UVUtil;
  81. public static var ViewportUtil = arm.util.ViewportUtil;
  82. public static function colorFromFloats(r: Float, g: Float, b: Float, a: Float): kha.Color {
  83. return kha.Color.fromFloats(r, g, b, a);
  84. }
  85. }
  86. @:expose("zui")
  87. class ZuiBridge {
  88. public static var Handle = zui.Zui.Handle;
  89. public static var Ext = zui.Ext;
  90. }
  91. @:keep
  92. class Keep {
  93. public static function keep() {
  94. var x = iron.system.ArmPack.decode;
  95. var x = iron.system.ArmPack.encode;
  96. #if arm_creator
  97. var x = arm.sys.Path.workingDir;
  98. var x = arm.sys.File.createDirectory;
  99. #end
  100. }
  101. }