32 lines
725 B
GDScript
32 lines
725 B
GDScript
# MultiMeshInstance with Level-of-Detail support
|
|
class_name LODMultiMeshInstance
|
|
extends MultiMeshInstance
|
|
|
|
# -- signals --
|
|
# -- enums --
|
|
# -- constants --
|
|
# -- exported variables --
|
|
export (Resource) var lod_config = LODConfig.new()
|
|
# -- public variables --
|
|
# -- private variables --
|
|
# -- onready variables --
|
|
|
|
# -- preloads --
|
|
|
|
# -- virtual methods --
|
|
|
|
func _ready():
|
|
if multimesh:
|
|
multimesh.mesh = lod_config.min_detail_mesh
|
|
add_to_group("thunderk-lod")
|
|
|
|
# -- public methods --
|
|
|
|
func update_lod(camera_location: Vector3):
|
|
var dist = global_transform.origin.distance_to(camera_location)
|
|
var lod_mesh = lod_config.get_lod_mesh(dist)
|
|
if multimesh.mesh != lod_mesh:
|
|
multimesh.mesh = lod_mesh
|
|
|
|
# -- private methods --
|