Bladeren bron

minor refactor, automatize saveDisplayKey setup

Nicolas Cannasse 5 jaren geleden
bovenliggende
commit
6654802ffa

+ 11 - 7
hide/comp/SceneEditor.hx

@@ -108,7 +108,7 @@ class SceneEditor {
 	var hideGizmo = false;
 	var gizmo : hide.view.l3d.Gizmo;
 	static var customPivot : CustomPivot;
-	var interactives : Map<PrefabElement, h3d.scene.Interactive>;
+	var interactives : Map<PrefabElement, hxd.SceneEvents.Interactive>;
 	var ide : hide.Ide;
 	public var event(default, null) : hxd.WaitEvent;
 	var hideList : Map<PrefabElement, Bool> = new Map();
@@ -673,7 +673,8 @@ class SceneEditor {
 	public function refreshInteractive(elt : PrefabElement) {
 		var int = interactives.get(elt);
 		if(int != null) {
-			int.remove();
+			var i3d = Std.downcast(int, h3d.scene.Interactive);
+			if( i3d != null ) i3d.remove() else cast(int,h2d.Interactive).remove();
 			interactives.remove(elt);
 		}
 		makeInteractive(elt);
@@ -854,7 +855,7 @@ class SceneEditor {
 
 			if(K.isDown(K.MOUSE_LEFT)) {
 				var contexts = context.shared.contexts;
-				var all = getAllSelectable();
+				var all = getAllSelectable3D();
 				var inside = [];
 				for(elt in all) {
 					if(elt.to(Object3D) == null)
@@ -1021,7 +1022,8 @@ class SceneEditor {
 
 			var int = interactives.get(e);
 			if(int != null) {
-				int.remove();
+				var i3d = Std.downcast(int, h3d.scene.Interactive);
+				if( i3d != null ) i3d.remove() else cast(int,h2d.Interactive).remove();
 				interactives.remove(e);
 			}
 			for(ctx in getContexts(e)) {
@@ -1347,11 +1349,13 @@ class SceneEditor {
 		return o.visible && !isHidden(o) && (elt.parent != null ? isVisible(elt.parent) : true);
 	}
 
-	public function getAllSelectable() : Array<PrefabElement> {
+	public function getAllSelectable3D() : Array<PrefabElement> {
 		var ret = [];
 		for(elt in interactives.keys()) {
 			var i = interactives.get(elt);
-			var p : h3d.scene.Object = i;
+			var p : h3d.scene.Object = Std.downcast(i, h3d.scene.Interactive);
+			if( p == null )
+				continue;
 			while( p != null && p.visible )
 				p = p.parent;
 			if( p != null ) continue;
@@ -1361,7 +1365,7 @@ class SceneEditor {
 	}
 
 	public function selectAll() {
-		selectObjects(getAllSelectable());
+		selectObjects(getAllSelectable3D());
 	}
 
 	public function deselect() {

+ 0 - 1
hide/view/FXEditor.hx

@@ -205,7 +205,6 @@ class FXEditor extends FileView {
 	}
 
 	override function onDisplay() {
-		saveDisplayKey = "FXScene/" + getPath().split("\\").join("/").substr(0,-1);
 		currentTime = 0.;
 		xOffset = -timelineLeftMargin / xScale;
 		var content = sys.io.File.getContent(getPath());

+ 1 - 1
hide/view/FileTree.hx

@@ -73,7 +73,7 @@ class FileTree extends FileView {
 		tree = new hide.comp.IconTree(null,panel);
 		tree.async = true;
 		tree.allowRename = true;
-		tree.saveDisplayKey = "FileTree:" + getPath().split("\\").join("/").substr(0,-1);
+		tree.saveDisplayKey = saveDisplayKey;
 		tree.element.addClass("small");
 		tree.get = function(path) {
 			if( path == null ) path = "";

+ 5 - 0
hide/view/FileView.hx

@@ -21,6 +21,11 @@ class FileView extends hide.ui.View<{ path : String }> {
 			}, { checkDelete : true, keepOnRebuild : true });
 	}
 
+	override function rebuild() {
+		saveDisplayKey = Type.getClassName(Type.getClass(this)) + ":" + getPath().split("\\").join("/");
+		super.rebuild();
+	}
+
 	function onFileChanged( wasDeleted : Bool, rebuildView = true ) {
 		if( !wasDeleted ) {
 			// double check if content has changed

+ 1 - 1
hide/view/Prefab.hx

@@ -47,6 +47,7 @@ class Prefab extends FileView {
 	override function getDefaultContent() {
 		return haxe.io.Bytes.ofString(ide.toJSON(new hrt.prefab.Library().saveData()));
 	}
+
 	override function save() {
 		var content = ide.toJSON(data.saveData());
 		currentSign = haxe.crypto.Md5.encode(content);
@@ -55,7 +56,6 @@ class Prefab extends FileView {
 	}
 
 	override function onDisplay() {
-		saveDisplayKey = "Prefab:" + getPath().split("\\").join("/").substr(0,-1);
 		data = new hrt.prefab.Library();
 		var content = sys.io.File.getContent(getPath());
 		data.loadData(haxe.Json.parse(content));

+ 20 - 18
hide/view/l3d/Level3D.hx

@@ -320,7 +320,6 @@ class Level3D extends FileView {
 	function get_properties() return sceneEditor.properties;
 
 	override function onDisplay() {
-		saveDisplayKey = "Level3D:" + getPath().split("\\").join("/").substr(0,-1);
 		data = new hrt.prefab.l3d.Level3D();
 		var content = sys.io.File.getContent(getPath());
 		data.loadData(haxe.Json.parse(content));
@@ -427,6 +426,7 @@ class Level3D extends FileView {
 
 		statusText = new h2d.Text(hxd.res.DefaultFont.get(), scene.s2d);
 		statusText.setPosition(5, 5);
+		statusText.visible = tools.getDisplayState("");
 
 		posToolTip = new h2d.Text(hxd.res.DefaultFont.get(), scene.s2d);
 		posToolTip.dropShadow = { dx : 1, dy : 1, color : 0, alpha : 0.5 };
@@ -720,7 +720,9 @@ class Level3D extends FileView {
 			var inters = sceneEditor.getInteractives(p);
 			for(inter in inters) {
 				if(inter != null) {
-					inter.visible = interIsVisible;
+					var i3d = Std.downcast(inter,h3d.scene.Interactive);
+					if( i3d != null )
+						i3d.visible = interIsVisible;
 				}
 			}
 		}
@@ -752,7 +754,19 @@ class Level3D extends FileView {
 		return null;
 	}
 
-	public static function getLevelSheet() {
+	function getGroundPolys() {
+		var groundGroups = data.findAll(p -> if(p.name == "ground") p else null);
+		var ret = [];
+		for(group in groundGroups)
+			group.findAll(function(p) {
+				if(p.name == "nocollide")
+					return null;
+				return p.to(hrt.prefab.l3d.Polygon);
+			},ret);
+		return ret;
+	}
+
+	static function getLevelSheet() {
 		return Ide.inst.database.getSheet(Ide.inst.currentConfig.get("l3d.cdbLevel", "level"));
 	}
 
@@ -761,13 +775,13 @@ class Level3D extends FileView {
 		return types.find(t -> getCdbTypeId(t) == id);
 	}
 
-	public static function getCdbTypes() {
+	static function getCdbTypes() {
 		var levelSheet = getLevelSheet();
 		if(levelSheet == null) return [];
 		return [for(c in levelSheet.columns) if(c.type == TList) levelSheet.getSub(c)];
 	}
 
-	public static function getCdbTypeId(?p: PrefabElement, ?sheet: cdb.Sheet) : String {
+	static function getCdbTypeId(?p: PrefabElement, ?sheet: cdb.Sheet) : String {
 		if(p != null) {
 			if(p.props == null)
 				return null;
@@ -778,24 +792,12 @@ class Level3D extends FileView {
 		}
 	}
 
-	public static function getCdbModel(e:hrt.prefab.Prefab):cdb.Sheet {
+	static function getCdbModel(e:hrt.prefab.Prefab):cdb.Sheet {
 		var typeName : String = getCdbTypeId(e);
 		if(typeName == null)
 			return null;
 		return resolveCdbType(typeName);
 	}
 
-	function getGroundPolys() {
-		var groundGroups = data.findAll(p -> if(p.name == "ground") p else null);
-		var ret = [];
-		for(group in groundGroups)
-			group.findAll(function(p) {
-				if(p.name == "nocollide")
-					return null;
-				return p.to(hrt.prefab.l3d.Polygon);
-			},ret);
-		return ret;
-	}
-
 	static var _ = FileTree.registerExtension(Level3D,["l3d"],{ icon : "sitemap", createNew : "Level3D" });
 }

+ 1 - 2
hide/view/shadereditor/ShaderEditor.hx

@@ -49,7 +49,6 @@ class ShaderEditor extends hide.view.Graph {
 
 	override function onDisplay() {
 		super.onDisplay();
-		saveDisplayKey = "ShaderGraph:" + getPath().split("\\").join("/").substr(0,-1);
 		shaderGraph = new ShaderGraph(state.path);
 		addMenu = null;
 
@@ -1194,7 +1193,7 @@ class ShaderEditor extends hide.view.Graph {
 			}
 		}
 	}
-	
+
 	override function getDefaultContent() {
 		var p = { nodes: [], edges: [], parameters: [] };
 		return haxe.io.Bytes.ofString(ide.toJSON(p));

+ 1 - 1
hrt/prefab/l3d/Level3D.hx

@@ -29,7 +29,7 @@ class Level3D extends hrt.prefab.Library {
 	#if editor
 
 	override function getCdbModel(?p:hrt.prefab.Prefab) : cdb.Sheet {
-		return hide.view.l3d.Level3D.getCdbModel(p);
+		return @:privateAccess hide.view.l3d.Level3D.getCdbModel(p);
 	}
 
 	override function edit( ctx : EditContext ) {