/src/away3d/loaders/misc/ResourceDependency.as

http://github.com/away3d/away3d-core-fp11 · ActionScript · 129 lines · 84 code · 19 blank · 26 comment · 3 complexity · f3278592c68e8b5dd53bc4025713ecda MD5 · raw file

  1. package away3d.loaders.misc
  2. {
  3. import away3d.arcane;
  4. import away3d.library.assets.IAsset;
  5. import away3d.loaders.parsers.ParserBase;
  6. import flash.net.URLRequest;
  7. use namespace arcane;
  8. /**
  9. * ResourceDependency represents the data required to load, parse and resolve additional files ("dependencies")
  10. * required by a parser, used by ResourceLoadSession.
  11. *
  12. */
  13. public class ResourceDependency
  14. {
  15. private var _id:String;
  16. private var _req:URLRequest;
  17. private var _assets:Vector.<IAsset>;
  18. private var _parentParser:ParserBase;
  19. private var _data:*;
  20. private var _retrieveAsRawData:Boolean;
  21. private var _suppressAssetEvents:Boolean;
  22. private var _dependencies:Vector.<ResourceDependency>;
  23. arcane var loader:SingleFileLoader;
  24. arcane var success:Boolean;
  25. public function ResourceDependency(id:String, req:URLRequest, data:*, parentParser:ParserBase, retrieveAsRawData:Boolean = false, suppressAssetEvents:Boolean = false)
  26. {
  27. _id = id;
  28. _req = req;
  29. _parentParser = parentParser;
  30. _data = data;
  31. _retrieveAsRawData = retrieveAsRawData;
  32. _suppressAssetEvents = suppressAssetEvents;
  33. _assets = new Vector.<IAsset>();
  34. _dependencies = new Vector.<ResourceDependency>();
  35. }
  36. public function get id():String
  37. {
  38. return _id;
  39. }
  40. public function get assets():Vector.<IAsset>
  41. {
  42. return _assets;
  43. }
  44. public function get dependencies():Vector.<ResourceDependency>
  45. {
  46. return _dependencies;
  47. }
  48. public function get request():URLRequest
  49. {
  50. return _req;
  51. }
  52. public function get retrieveAsRawData():Boolean
  53. {
  54. return _retrieveAsRawData;
  55. }
  56. public function get suppresAssetEvents():Boolean
  57. {
  58. return _suppressAssetEvents;
  59. }
  60. /**
  61. * The data containing the dependency to be parsed, if the resource was already loaded.
  62. */
  63. public function get data():*
  64. {
  65. return _data;
  66. }
  67. /**
  68. * @private
  69. * Method to set data after having already created the dependency object, e.g. after load.
  70. */
  71. arcane function setData(data:*):void
  72. {
  73. _data = data;
  74. }
  75. /**
  76. * The parser which is dependent on this ResourceDependency object.
  77. */
  78. public function get parentParser():ParserBase
  79. {
  80. return _parentParser;
  81. }
  82. /**
  83. * Resolve the dependency when it's loaded with the parent parser. For example, a dependency containing an
  84. * ImageResource would be assigned to a Mesh instance as a BitmapMaterial, a scene graph object would be added
  85. * to its intended parent. The dependency should be a member of the dependencies property.
  86. */
  87. public function resolve():void
  88. {
  89. if (_parentParser)
  90. _parentParser.resolveDependency(this);
  91. }
  92. /**
  93. * Resolve a dependency failure. For example, map loading failure from a 3d file
  94. */
  95. public function resolveFailure():void
  96. {
  97. if (_parentParser)
  98. _parentParser.resolveDependencyFailure(this);
  99. }
  100. /**
  101. * Resolve the dependencies name
  102. */
  103. public function resolveName(asset:IAsset):String
  104. {
  105. if (_parentParser)
  106. return _parentParser.resolveDependencyName(this, asset);
  107. return asset.name;
  108. }
  109. }
  110. }