Pārlūkot izejas kodu

added recursive=true parameter to getMaterials()

Nicolas Cannasse 4 gadi atpakaļ
vecāks
revīzija
72ca84a19e
3 mainītis faili ar 12 papildinājumiem un 8 dzēšanām
  1. 2 2
      h3d/scene/Mesh.hx
  2. 5 3
      h3d/scene/MultiMaterial.hx
  3. 5 3
      h3d/scene/Object.hx

+ 2 - 2
h3d/scene/Mesh.hx

@@ -73,10 +73,10 @@ class Mesh extends Object {
 		return super.getMaterialByName(name);
 	}
 
-	override function getMaterials( ?a : Array<h3d.mat.Material> ) {
+	override function getMaterials( ?a : Array<h3d.mat.Material>, recursive = true ) {
 		if( a == null ) a = [];
 		if( material != null && a.indexOf(material) < 0 ) a.push(material);
-		return super.getMaterials(a);
+		return super.getMaterials(a, recursive);
 	}
 
 	#if (hxbit && !macro && heaps_enable_serialize)

+ 5 - 3
h3d/scene/MultiMaterial.hx

@@ -38,13 +38,15 @@ class MultiMaterial extends Mesh {
 		return super.getMaterialByName(name);
 	}
 
-	override function getMaterials( ?a : Array<h3d.mat.Material> ) {
+	override function getMaterials( ?a : Array<h3d.mat.Material>, recursive = true ) {
 		if( a == null ) a = [];
 		for( m in materials )
 			if( m != null && a.indexOf(m) < 0 )
 				a.push(m);
-		for( o in children )
-			o.getMaterials(a);
+		if( recursive ) {
+			for( o in children )
+				o.getMaterials(a);
+		}
 		return a;
 	}
 

+ 5 - 3
h3d/scene/Object.hx

@@ -324,10 +324,12 @@ class Object implements hxd.impl.Serializable {
 	/**
 		Return all materials in the tree.
 	**/
-	public function getMaterials( ?a : Array<h3d.mat.Material> ) {
+	public function getMaterials( ?a : Array<h3d.mat.Material>, recursive = true ) {
 		if( a == null ) a = [];
-		for( o in children )
-			o.getMaterials(a);
+		if( recursive ) {
+			for( o in children )
+				o.getMaterials(a);
+		}
 		return a;
 	}