PageRenderTime 48ms CodeModel.GetById 18ms app.highlight 25ms RepoModel.GetById 0ms app.codeStats 0ms

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