Browse Source

define ground as "ground" | "terrain" | prefab.isGround

Nicolas Cannasse 4 years ago
parent
commit
30cf297153

+ 24 - 1
hide/comp/SceneEditor.hx

@@ -2372,6 +2372,24 @@ class SceneEditor {
 		return 0.;
 	}
 
+	/*
+
+		function getGroundPrefabs() {
+		var groundGroups = data.findAll(p -> if(p.name == "ground") p else null);
+		if( groundGroups.length == 0 )
+			return null;
+		var ret : Array<hrt.prefab.Prefab> = [];
+		for(group in groundGroups)
+			group.findAll(function(p) : hrt.prefab.Prefab {
+				if(p.name == "nocollide")
+					return null;
+				return p;
+			},ret);
+		return ret;
+	}
+
+	*/
+
 	function getGroundPrefabs() : Array<PrefabElement> {
 		function getAll(data:PrefabElement) {
 			var all = data.findAll((p) -> p);
@@ -2384,7 +2402,12 @@ class SceneEditor {
 			}
 			return all;
 		}
-		return getAll(sceneData);
+		var all = getAll(sceneData);
+		var grounds = [for( p in all ) if( p.getHideProps().isGround || p.name == "terrain" || p.name == "ground" ) p];
+		var results = [];
+		for( g in grounds )
+			results = results.concat(getAll(g));
+		return results;
 	}
 
 	public function projectToGround(ray: h3d.col.Ray, ?paintOn : hrt.prefab.Prefab ) {

+ 2 - 1
hide/prefab/HideProps.hx

@@ -3,7 +3,8 @@ package hide.prefab;
 typedef HideProps = {
 	var icon : String;
 	var name : String;
-	@:optional var fileSource : Array<String>;
+	var ?isGround : Bool;
+	var ?fileSource : Array<String>;
 	@:optional dynamic function allowChildren( type : String ) : Bool;
 	@:optional dynamic function allowParent( p : hrt.prefab.Prefab ) : Bool;
 	@:optional dynamic function onChildUpdate( p : hrt.prefab.Prefab ) : Void;

+ 0 - 21
hide/view/l3d/Level3D.hx

@@ -131,13 +131,6 @@ private class Level3DSceneEditor extends hide.comp.SceneEditor {
 		parent.onPrefabChange(p, pname);
 	}
 
-	override function getGroundPrefabs():Array<PrefabElement> {
-		var prefabs = parent.getGroundPrefabs();
-		if( prefabs != null )
-			return prefabs;
-		return super.getGroundPrefabs();
-	}
-
 	override function getNewContextMenu(current: PrefabElement, ?onMake: PrefabElement->Void=null, ?groupByType = true ) {
 		var newItems = super.getNewContextMenu(current, onMake, groupByType);
 
@@ -654,19 +647,5 @@ class Level3D extends FileView {
 		return null;
 	}
 
-	function getGroundPrefabs() {
-		var groundGroups = data.findAll(p -> if(p.name == "ground") p else null);
-		if( groundGroups.length == 0 )
-			return null;
-		var ret : Array<hrt.prefab.Prefab> = [];
-		for(group in groundGroups)
-			group.findAll(function(p) : hrt.prefab.Prefab {
-				if(p.name == "nocollide")
-					return null;
-				return p;
-			},ret);
-		return ret;
-	}
-
 	static var _ = FileTree.registerExtension(Level3D,["l3d"],{ icon : "sitemap", createNew : "Level3D" });
 }

+ 5 - 0
hrt/prefab/l3d/HeightMap.hx

@@ -598,6 +598,11 @@ class HeightMap extends Object3D {
 	}
 
 	#if editor
+
+	override function getHideProps() : HideProps {
+		return { icon : "industry", name : "HeightMap", isGround : true };
+	}
+
 	override function edit(ectx:EditContext) {
 		super.edit(ectx);
 		var ctx = ectx.getContext(this);

+ 1 - 1
hrt/prefab/terrain/Terrain.hx

@@ -577,7 +577,7 @@ class Terrain extends Object3D {
 	}
 
 	override function getHideProps() : HideProps {
-		return { icon : "industry", name : "Terrain" };
+		return { icon : "industry", name : "Terrain", isGround : true };
 	}
 
 	override function edit( ctx : EditContext ) {