Bläddra i källkod

Adding optional filters to ContextShared.hx and Object3D.hx getObjects functions.

clementlandrin 9 månader sedan
förälder
incheckning
bf4a6d09e3
2 ändrade filer med 6 tillägg och 2 borttagningar
  1. 3 1
      hrt/prefab/ContextShared.hx
  2. 3 1
      hrt/prefab/Object3D.hx

+ 3 - 1
hrt/prefab/ContextShared.hx

@@ -218,12 +218,14 @@ class ContextShared {
 		}
 	}
 
-	public function getObjects<T:h3d.scene.Object>( p : Prefab, c: Class<T> ) : Array<T> {
+	public function getObjects<T:h3d.scene.Object>( p : Prefab, c: Class<T>, ?filter : h3d.scene.Object -> Bool ) : Array<T> {
 		var root = p.to(Object3D)?.local3d;
 		if(root == null) return [];
 		var childObjs = getChildrenRoots(root, p, []);
 		var ret = [];
 		function rec(o : h3d.scene.Object) {
+			if ( filter != null && !filter(o) )
+				return;
 			var m = Std.downcast(o, c);
 			if(m != null) {
 				if(ret.contains(m))

+ 3 - 1
hrt/prefab/Object3D.hx

@@ -205,12 +205,14 @@ class Object3D extends Prefab {
 		Returns the list of all h3d.scene.Object created by this prefab (but not
 		the ones created by its children)
 	**/
-	public function getObjects<T:h3d.scene.Object>(c: Class<T> ) : Array<T> {
+	public function getObjects<T:h3d.scene.Object>(c: Class<T>, filter : h3d.scene.Object -> Bool ) : Array<T> {
 		var root = Object3D.getLocal3d(this);
 		if(root == null) return [];
 		var childObjs = Prefab.getChildrenRoots(root, this, []);
 		var ret = [];
 		function rec(o : h3d.scene.Object) {
+			if ( filter != null && !filter(o) )
+				return;
 			var m = Std.downcast(o, c);
 			if(m != null) {
 				ret.push(m);