Editor Terrain Size Options #1
							
								
								
									
										
											BIN
										
									
								
								editor.scn
									 (Stored with Git LFS)
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								editor.scn
									 (Stored with Git LFS)
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							| @ -53,6 +53,15 @@ window/size/viewport_height=800 | |||||||
| window/stretch/mode="canvas_items" | window/stretch/mode="canvas_items" | ||||||
| window/stretch/aspect="keep_height" | window/stretch/aspect="keep_height" | ||||||
| 
 | 
 | ||||||
|  | [editor] | ||||||
|  | 
 | ||||||
|  | version_control/plugin_name="GitPlugin" | ||||||
|  | version_control/autoload_on_startup=true | ||||||
|  | 
 | ||||||
|  | [editor_plugins] | ||||||
|  | 
 | ||||||
|  | enabled=PackedStringArray() | ||||||
|  | 
 | ||||||
| [input] | [input] | ||||||
| 
 | 
 | ||||||
| player_controller_left={ | player_controller_left={ | ||||||
|  | |||||||
| @ -1,6 +1,8 @@ | |||||||
| @tool | @tool | ||||||
| class_name TerrainInstance3D extends GeometryInstance3D | class_name TerrainInstance3D extends GeometryInstance3D | ||||||
| 
 | 
 | ||||||
|  | const _TERRAIN_MAX := 1024 | ||||||
|  | 
 | ||||||
| var _mesh := PlaneMesh.new() | var _mesh := PlaneMesh.new() | ||||||
| 
 | 
 | ||||||
| var _material := ShaderMaterial.new() | var _material := ShaderMaterial.new() | ||||||
| @ -14,18 +16,22 @@ var size: Vector2i = Vector2i.ZERO: | |||||||
| 		return size | 		return size | ||||||
| 
 | 
 | ||||||
| 	set(value): | 	set(value): | ||||||
| 		var width := value.x | 		var width := clampi(value.x, 0, _TERRAIN_MAX) | ||||||
| 		var height := value.y | 		var height := clampi(value.y, 0, _TERRAIN_MAX) | ||||||
| 
 | 
 | ||||||
| 		if (width != 0) and (height != 0): |  | ||||||
| 		if (width != size.x) or (height != size.y): | 		if (width != size.x) or (height != size.y): | ||||||
|  | 			if (width == 0) and (height == 0): | ||||||
|  | 				RenderingServer.instance_set_base(self.get_instance(), RID()) | ||||||
|  | 
 | ||||||
|  | 			else: | ||||||
| 				self._mesh.subdivide_width = width | 				self._mesh.subdivide_width = width | ||||||
| 				self._mesh.subdivide_depth = height | 				self._mesh.subdivide_depth = height | ||||||
| 				self._mesh.size = value | 				self._mesh.size = value | ||||||
| 
 | 
 | ||||||
| 				self._material.set_shader_parameter("SIZE", Vector2(value)) | 				self._material.set_shader_parameter("SIZE", Vector2(value)) | ||||||
|  | 				RenderingServer.instance_set_base(self.get_instance(), self._mesh) | ||||||
| 
 | 
 | ||||||
| 		size = value | 		size = Vector2i(width, height) | ||||||
| 
 | 
 | ||||||
| ## | ## | ||||||
| ## | ## | ||||||
| @ -161,4 +167,3 @@ func _init() -> void: | |||||||
| 	self._material.shader = preload("res://terrain_shader.gdshader") | 	self._material.shader = preload("res://terrain_shader.gdshader") | ||||||
| 
 | 
 | ||||||
| 	self._mesh.surface_set_material(0, self._material) | 	self._mesh.surface_set_material(0, self._material) | ||||||
| 	RenderingServer.instance_set_base(self.get_instance(), self._mesh) |  | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user