Fix TerrainInstance size limits
This commit is contained in:
parent
5c4ff2b4ca
commit
422361b278
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/aspect="keep_height"
|
||||
|
||||
[editor]
|
||||
|
||||
version_control/plugin_name="GitPlugin"
|
||||
version_control/autoload_on_startup=true
|
||||
|
||||
[editor_plugins]
|
||||
|
||||
enabled=PackedStringArray()
|
||||
|
||||
[input]
|
||||
|
||||
player_controller_left={
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
@tool
|
||||
class_name TerrainInstance3D extends GeometryInstance3D
|
||||
|
||||
const _TERRAIN_MAX := 1024
|
||||
|
||||
var _mesh := PlaneMesh.new()
|
||||
|
||||
var _material := ShaderMaterial.new()
|
||||
|
@ -14,18 +16,22 @@ var size: Vector2i = Vector2i.ZERO:
|
|||
return size
|
||||
|
||||
set(value):
|
||||
var width := value.x
|
||||
var height := value.y
|
||||
var width := clampi(value.x, 0, _TERRAIN_MAX)
|
||||
var height := clampi(value.y, 0, _TERRAIN_MAX)
|
||||
|
||||
if (width != 0) and (height != 0):
|
||||
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_depth = height
|
||||
self._mesh.size = 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._mesh.surface_set_material(0, self._material)
|
||||
RenderingServer.instance_set_base(self.get_instance(), self._mesh)
|
||||
|
|
Loading…
Reference in New Issue