Resource.hx 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. package hrt.prefab;
  2. class Resource extends hxd.res.Resource {
  3. var lib : Prefab;
  4. var cacheVersion : Int;
  5. override function watch( onChanged: Null<Void -> Void> ) {
  6. if( entry == null )
  7. return;
  8. if( onChanged == null ) {
  9. super.watch(null);
  10. return;
  11. }
  12. super.watch(function() {
  13. if( lib != null ) {
  14. var data = try haxe.Json.parse(entry.getText()) catch( e : Dynamic ) return; // parsing error (conflict ?)
  15. lib.reload(data);
  16. onPrefabLoaded(lib);
  17. }
  18. onChanged();
  19. });
  20. }
  21. public function load() : Prefab {
  22. if( lib != null && cacheVersion == CACHE_VERSION )
  23. return lib;
  24. var data = haxe.Json.parse(entry.getText());
  25. lib = Library.create(entry.extension);
  26. lib.loadData(data);
  27. cacheVersion = CACHE_VERSION;
  28. onPrefabLoaded(lib);
  29. watch(function() {}); // auto lib reload
  30. return lib;
  31. }
  32. public static function make( p : Prefab ) {
  33. if( p == null ) throw "assert";
  34. var r = new Resource(null);
  35. r.lib = p;
  36. return r;
  37. }
  38. public static var CACHE_VERSION = 0;
  39. public static dynamic function onPrefabLoaded(p:Prefab) {
  40. }
  41. }