Browse Source

Fix Terrain dispose error
Fix empty field for mesh generator

ShiroSmith 6 năm trước cách đây
mục cha
commit
31c3e71305
2 tập tin đã thay đổi với 12 bổ sung1 xóa
  1. 4 0
      hide/prefab/l3d/MeshGenerator.hx
  2. 8 1
      hide/prefab/terrain/TerrainEditor.hx

+ 4 - 0
hide/prefab/l3d/MeshGenerator.hx

@@ -247,6 +247,8 @@ class MeshGenerator extends Object3D {
 			');
 			var select = rootElement.find("select");
 			fillSelectMenu(ctx, select, mp.socketType);
+			if(select.find('option[value="${mp.mesh}"]').length == 0)
+				new hide.Element('<option>').attr("value", mp.mesh).text(extractMeshName(mp.mesh)).appendTo(select);
 			select.change(function(_) {
 				mp.mesh = select.val();
 				mp.parts = createMeshParts(getSocketListFromHMD(getHMD(ctx.rootContext, mp.mesh)));
@@ -267,6 +269,8 @@ class MeshGenerator extends Object3D {
 			for( cmp in mp.parts ) {
 				var select = rootElement.find('.${mp.parts.indexOf(cmp)}');
 				fillSelectMenu(ctx, select, cmp.socketType);
+				if(select.find('option[value="${cmp.mesh}"]').length == 0)
+					new hide.Element('<option>').attr("value", cmp.mesh).text(extractMeshName(cmp.mesh)).appendTo(select);
 				select.change(function(_) {
 					var mp = mp.parts[mp.parts.indexOf(cmp)];
 					mp.mesh = select.val();

+ 8 - 1
hide/prefab/terrain/TerrainEditor.hx

@@ -157,7 +157,8 @@ class TerrainEditor {
 			uvTex.depthBuffer = new h3d.mat.DepthBuffer(uvTex.width, uvTex.height);
 		}
 
-		customScene.addChild(terrainPrefab.terrain);
+		@:privateAccess customScene.children = [];
+		@:privateAccess customScene.children.push(terrainPrefab.terrain); // Prevent OnRemove() call
 		customScene.camera = mainScene.camera;
 		brushPreview.reset();
 
@@ -802,6 +803,12 @@ class TerrainEditor {
 	}
 
 	function refreshSurfaces( props : hide.Element, ctx : EditContext ) {
+
+		if( currentSurface == null )
+			props.find('div[name="Params"]').hide();
+		else
+			props.find('div[name="Params"]').show();
+
 		var surfacesContainer = props.find(".terrain-surfaces");
 		surfacesContainer.empty();
 		for( i in 0 ... terrainPrefab.terrain.surfaces.length ){