You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

46 lines
1.6 KiB
GDScript

1 year ago
extends Node3D
class_name Level
var level_instance_list: Array[LevelInstance]
1 year ago
var born_pos: Vector3
1 year ago
9 months ago
@onready var grid_block_material: Material = load("res://render/material/level_grid_block.tres") as Material
@onready var grass_material: Material = load("res://render/material/level_grass.tres") as Material
1 year ago
func init() -> void:
grid_block_material.set_shader_parameter("is_link", false)
grid_block_material.set_shader_parameter("is_target", true)
9 months ago
grid_block_material.set_shader_parameter("is_focus", true)
1 year ago
1 year ago
1 year ago
func get_level_instance_list() -> Array[LevelInstance]:
if not level_instance_list:
level_instance_list = []
var rooms_node: Node3D = %Levels as Node3D
9 months ago
var level_character: GridMap = %LevelGridCharacter as GridMap
level_character.visible = false
for rooms_node_child in rooms_node.get_children():
if not rooms_node_child is LevelArea:
continue
for rooms_node_child_child in rooms_node_child.get_children():
if rooms_node_child_child is LevelInstance:
rooms_node_child_child.level_area_cfg = rooms_node_child.cfg
rooms_node_child_child.set_level_range_visible(false)
level_instance_list.append(rooms_node_child_child)
9 months ago
rooms_node_child_child.init()
return level_instance_list
1 year ago
func get_born_pos() -> Vector3:
if not born_pos:
var born_pos_node: Node3D = %BornPos as Node3D
born_pos = born_pos_node.get_global_position()
return born_pos
1 year ago
func set_player_position(pos: Vector3) -> void:
grid_block_material.set_shader_parameter("target_position", pos)
grass_material.set_shader_parameter("character_position", pos)