/src/aerys/minko/type/parser/collada/resource/controller/Controller.as

https://bitbucket.org/HopeSky/mars_nd2d · ActionScript · 80 lines · 67 code · 13 blank · 0 comment · 7 complexity · 759d645ee4d7d8fec59a865f4f87019e MD5 · raw file

  1. package aerys.minko.type.parser.collada.resource.controller
  2. {
  3. import aerys.minko.ns.minko_collada;
  4. import aerys.minko.type.parser.collada.ColladaDocument;
  5. import aerys.minko.type.parser.collada.instance.IInstance;
  6. import aerys.minko.type.parser.collada.instance.InstanceController;
  7. import aerys.minko.type.parser.collada.resource.IResource;
  8. use namespace minko_collada;
  9. public class Controller implements IResource
  10. {
  11. private static const NS : Namespace = new Namespace("http://www.collada.org/2005/11/COLLADASchema");
  12. private var _document : ColladaDocument;
  13. private var _id : String;
  14. private var _name : String;
  15. private var _skin : Skin;
  16. private var _morph : Morph;
  17. public function get id() : String { return _id; }
  18. public function get name() : String { return _name; }
  19. public function get skin() : Skin { return _skin; }
  20. public function get morph() : Morph { return _morph; }
  21. public static function fillStoreFromXML(xmlDocument : XML,
  22. document : ColladaDocument,
  23. store : Object) : void
  24. {
  25. var xmlControllerLibrary : XML = xmlDocument..NS::library_controllers[0];
  26. if (!xmlControllerLibrary)
  27. return;
  28. var xmlControllers : XMLList = xmlControllerLibrary.NS::controller;
  29. for each (var xmlController : XML in xmlControllers)
  30. {
  31. var controller : Controller = Controller.createFromXML(xmlController, document);
  32. store[controller.id] = controller;
  33. }
  34. }
  35. public static function createFromXML(xmlController : XML,
  36. document : ColladaDocument) : Controller
  37. {
  38. var id : String = xmlController.@id;
  39. var name : String = xmlController.@name;
  40. var skin : Skin = null;
  41. var morph : Morph = null;
  42. if (xmlController.NS::skin.length() == 1)
  43. skin = Skin.createFromXML(xmlController.NS::skin[0], document);
  44. else if (xmlController.NS::morph.length() == 1)
  45. morph = Morph.createFromXML(xmlController.NS::morph[0], document);
  46. else
  47. throw new Error('Invalid Controller');
  48. return new Controller(id, name, skin, morph, document);
  49. }
  50. public function Controller(id : String,
  51. name : String,
  52. skin : Skin,
  53. morph : Morph,
  54. document : ColladaDocument)
  55. {
  56. _id = id;
  57. _name = name;
  58. _skin = skin;
  59. _morph = morph;
  60. _document = document;
  61. }
  62. public function createInstance() : IInstance
  63. {
  64. return new InstanceController(_document, _id);
  65. }
  66. }
  67. }