Browse Source

overloading bindings for getComponent, createComponent, and getOrCreateComponent to be able to use generics, allowing one to write: let component = node.getComponent<Sprite2D>("Sprite2D"); instead of let component = <Sprite2D>node.getComponent("Sprite2D"). This also allows for stricter type-checking

Shaddock Heath 9 years ago
parent
commit
5aad54f6bd
1 changed files with 7 additions and 1 deletions
  1. 7 1
      Script/Packages/Atomic/Scene.json

+ 7 - 1
Script/Packages/Atomic/Scene.json

@@ -39,14 +39,20 @@
 			"getChildrenWithName(name:string, recursive?:boolean):Node[];",
 			"getChildrenWithName(name:string, recursive?:boolean):Node[];",
 			"getChildrenWithComponent(componentType:string, recursive?:boolean):Node[];",
 			"getChildrenWithComponent(componentType:string, recursive?:boolean):Node[];",
 			"getComponents(componentType?:string, recursive?:boolean):Component[];",
 			"getComponents(componentType?:string, recursive?:boolean):Component[];",
+			"getComponent<T extends Atomic.Component>(type: string): T;",
 			"getChildAtIndex(index:number):Node;",
 			"getChildAtIndex(index:number):Node;",
 			"createJSComponent(name:string, args?:{});",
 			"createJSComponent(name:string, args?:{});",
 			"getJSComponent(name:string, recursive?:boolean):JSComponent;",
 			"getJSComponent(name:string, recursive?:boolean):JSComponent;",
 			"createChildPrefab(childName:string, prefabPath:string):Node;",
 			"createChildPrefab(childName:string, prefabPath:string):Node;",
-			"loadPrefab(prefabPath:string):boolean;"
+			"loadPrefab(prefabPath:string):boolean;",
+			"createComponent<T extends Atomic.Component>(type: string, mode?: CreateMode, id?: number): T;",
+			"getOrCreateComponent<T extends Atomic.Component>(type: string, mode?: CreateMode, id?: number): T;"
 		],
 		],
 		"Scene" : [
 		"Scene" : [
 			"getMainCamera():Camera;"
 			"getMainCamera():Camera;"
+		],
+		"Component": [
+		    "getComponent<T extends Atomic.Component>(type: string):T;"
 		]
 		]
 	},
 	},
 	"haxe_decl" : {
 	"haxe_decl" : {