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/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…
Reference in New Issue