Ver código fonte

Render props: add render props edition to model view & fix toggle popup

lviguier 1 ano atrás
pai
commit
29a698e1b4
3 arquivos alterados com 40 adições e 17 exclusões
  1. 5 4
      hide/comp/SceneEditor.hx
  2. 3 1
      hide/view/FXEditor.hx
  3. 32 12
      hide/view/Model.hx

+ 5 - 4
hide/comp/SceneEditor.hx

@@ -651,16 +651,17 @@ class RenderPropsPopup extends Popup {
 			return;
 			return;
 		}
 		}
 
 
-		// Render props edition parameter for prefab view
-		if (Std.downcast(view, hide.view.Prefab) != null) {
-			var prefabView : hide.view.Prefab = cast view;
+		// Render props edition parameter for prefab, fx and model view
+		var view : Dynamic = Std.downcast(view, hide.view.Prefab)??Std.downcast(view, hide.view.Model)??Std.downcast(view, hide.view.FXEditor);
+		if (view != null) {
 			var rpEditionEl = new Element('<div><input type="checkbox" id="cb-rp-edition"/><label>Edit render props</label></div>').insertBefore(popup.children().first());
 			var rpEditionEl = new Element('<div><input type="checkbox" id="cb-rp-edition"/><label>Edit render props</label></div>').insertBefore(popup.children().first());
 			var cb = rpEditionEl.find('input');
 			var cb = rpEditionEl.find('input');
 			cb.prop('checked', Ide.inst.currentConfig.get("sceneeditor.renderprops.edit", false));
 			cb.prop('checked', Ide.inst.currentConfig.get("sceneeditor.renderprops.edit", false));
 			cb.on('change', function(){
 			cb.on('change', function(){
 				var v = cb.prop('checked');
 				var v = cb.prop('checked');
 				Ide.inst.currentConfig.set("sceneeditor.renderprops.edit", v);
 				Ide.inst.currentConfig.set("sceneeditor.renderprops.edit", v);
-				prefabView.setRenderPropsEditionVisibility(v);
+
+				view.setRenderPropsEditionVisibility(v);
 			});
 			});
 
 
 			rpEditionEl.find('label').css({ 'padding-left' : '8px' });
 			rpEditionEl.find('label').css({ 'padding-left' : '8px' });

+ 3 - 1
hide/view/FXEditor.hx

@@ -380,8 +380,10 @@ class FXEditor extends hide.view.FileView {
 			return;
 			return;
 
 
 		// Save render props
 		// Save render props
-		if (Ide.inst.currentConfig.get("sceneeditor.renderprops.edit", false) && sceneEditor.renderPropsRoot != null)
+		if (Ide.inst.currentConfig.get("sceneeditor.renderprops.edit", false) && sceneEditor.renderPropsRoot != null) {
 			sceneEditor.renderPropsRoot.save();
 			sceneEditor.renderPropsRoot.save();
+			Ide.inst.quickMessage("Render props saved!");
+		}
 
 
 		@:privateAccess var content = ide.toJSON(cast(data, hrt.prefab.Prefab).serialize());
 		@:privateAccess var content = ide.toJSON(cast(data, hrt.prefab.Prefab).serialize());
 		var newSign = ide.makeSignature(content);
 		var newSign = ide.makeSignature(content);

+ 32 - 12
hide/view/Model.hx

@@ -34,7 +34,14 @@ class Model extends FileView {
 	var highlightSelection : Bool = true;
 	var highlightSelection : Bool = true;
 
 
 	override function save() {
 	override function save() {
+		// Save render props
+		if (Ide.inst.currentConfig.get("sceneeditor.renderprops.edit", false) && sceneEditor.renderPropsRoot != null) {
+			sceneEditor.renderPropsRoot.save();
+			Ide.inst.quickMessage("Render props saved!");
+		}
+
 		if(!modified) return;
 		if(!modified) return;
+
 		// Save current Anim data
 		// Save current Anim data
 		if( currentAnimation != null ) {
 		if( currentAnimation != null ) {
 			var hideData = loadProps();
 			var hideData = loadProps();
@@ -99,8 +106,14 @@ class Model extends FileView {
 					<div class="tabs">
 					<div class="tabs">
 						<div class="tab expand" name="Model" icon="sitemap">
 						<div class="tab expand" name="Model" icon="sitemap">
 							<div class="hide-block">
 							<div class="hide-block">
-							<input type="button" style="width:312px" value="Save render props"/>
-								<div class="hide-scene-tree hide-list">
+							<div class="render-props-edition">
+								<div class="hide-toolbar">
+									<div class="toolbar-label">
+										<div class="icon ico ico-sun-o"></div>
+										Render props
+									</div>
+								</div>
+								<div class="hide-scenetree"></div>
 								</div>
 								</div>
 							</div>
 							</div>
 							<div class="props hide-scroll">
 							<div class="props hide-scroll">
@@ -140,27 +153,23 @@ class Model extends FileView {
 		});
 		});
 
 
 		element.find(".hide-scene-tree").first().append(sceneEditor.tree.element);
 		element.find(".hide-scene-tree").first().append(sceneEditor.tree.element);
+		element.find(".render-props-edition").find('.hide-scenetree').append(sceneEditor.renderPropsTree.element);
 		element.find(".props").first().append(sceneEditor.properties.element);
 		element.find(".props").first().append(sceneEditor.properties.element);
 		element.find(".heaps-scene").first().append(sceneEditor.scene.element);
 		element.find(".heaps-scene").first().append(sceneEditor.scene.element);
 		sceneEditor.view.keys.register("sceneeditor.focus", {name: "Focus Selection", category: "Scene"},
 		sceneEditor.view.keys.register("sceneeditor.focus", {name: "Focus Selection", category: "Scene"},
 			function() {if (lastSelectedObject != null) refreshSelectionHighlight(lastSelectedObject);});
 			function() {if (lastSelectedObject != null) refreshSelectionHighlight(lastSelectedObject);});
 		sceneEditor.tree.element.addClass("small");
 		sceneEditor.tree.element.addClass("small");
-		var e = element.find("input[value=\"Save render props\"]");
-		function callback(ev : js.jquery.Event) : Void {
-			if( !canSave() )
-				return;
-			var toSave = root.children[0];
-			@:privateAccess toSave.save();
-
-			save();
-		}
+		sceneEditor.renderPropsTree.element.addClass("small");
 
 
-		e.on("click", callback);
+		var rpEditionvisible = Ide.inst.currentConfig.get("sceneeditor.renderprops.edit", false);
+		setRenderPropsEditionVisibility(rpEditionvisible);
 	}
 	}
 
 
 	override function onActivate() {
 	override function onActivate() {
 		if (tools != null)
 		if (tools != null)
 			tools.refreshToggles();
 			tools.refreshToggles();
+
+		setRenderPropsEditionVisibility(Ide.inst.currentConfig.get("sceneeditor.renderprops.edit", false));
 	}
 	}
 
 
 	inline function get_scene() return sceneEditor.scene;
 	inline function get_scene() return sceneEditor.scene;
@@ -1135,6 +1144,17 @@ class Model extends FileView {
 			cameraMove();
 			cameraMove();
 	}
 	}
 
 
+	public function setRenderPropsEditionVisibility(visible : Bool) {
+		var renderPropsEditionEl = this.element.find('.render-props-edition');
+
+		if (!visible) {
+			renderPropsEditionEl.css({ display : 'none' });
+			return;
+		}
+
+		renderPropsEditionEl.css({ display : 'block' });
+	}
+
 	static var _ = FileTree.registerExtension(Model,["hmd","fbx"],{ icon : "cube" });
 	static var _ = FileTree.registerExtension(Model,["hmd","fbx"],{ icon : "cube" });
 
 
 }
 }