Library.hx 1011 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package hide.prefab;
  2. class Library extends Prefab {
  3. var inRec = false;
  4. public function new() {
  5. super(null);
  6. type = "prefab";
  7. }
  8. // hacks to use directly non-recursive api
  9. override function load( obj : Dynamic ) {
  10. if( inRec )
  11. return;
  12. var children : Array<Dynamic> = obj.children;
  13. if( children != null )
  14. for( v in children )
  15. Prefab.loadRec(v, this);
  16. }
  17. override function reload(v:Dynamic) {
  18. inRec = true;
  19. super.reload(v);
  20. inRec = false;
  21. }
  22. override function save() {
  23. if( inRec )
  24. return {};
  25. inRec = true;
  26. var obj = saveRec();
  27. inRec = false;
  28. return obj;
  29. }
  30. override function makeInstance(ctx:Context):Context {
  31. if( inRec )
  32. return ctx;
  33. inRec = true;
  34. makeInstanceRec(ctx);
  35. inRec = false;
  36. return ctx;
  37. }
  38. static var registeredElements = new Map<String,Class<Prefab>>();
  39. public static function register( type : String, cl : Class<Prefab> ) {
  40. registeredElements.set(type, cl);
  41. return true;
  42. }
  43. }