Browse Source

getAbsPath() now gives unique paths despite duplicate names

trethaller 4 years ago
parent
commit
910d5ed4a9
1 changed files with 18 additions and 8 deletions
  1. 18 8
      hrt/prefab/Prefab.hx

+ 18 - 8
hrt/prefab/Prefab.hx

@@ -428,15 +428,25 @@ class Prefab {
 		Returns the absolute name path for this prefab
 		Returns the absolute name path for this prefab
 	**/
 	**/
 	public function getAbsPath() {
 	public function getAbsPath() {
-		var p = this;
-		var path = [];
-		while(p.parent != null) {
-			var n = p.name;
-			if( n == null ) n = getDefaultName();
-			path.unshift(n);
-			p = p.parent;
+		var path = name != null ? name : getDefaultName();
+		if(parent != null) {
+			var suffix = 0;
+			for(i in 0...parent.children.length) {
+				var c = parent.children[i];
+				if(c == this)
+					break;
+				else {
+					var cname = c.name != null ? c.name : c.getDefaultName();
+					if(cname == path)
+						++suffix;
+				}
+			}
+			if(suffix > 0)
+				path += "-" + suffix;
+
+			path = parent.getAbsPath() + "." + path;
 		}
 		}
-		return path.join('.');
+		return path;
 	}
 	}
 
 
 	/**
 	/**