extends GridMap @onready var camera = $Camera3D @onready var entities = [] func _ready(): setFloor() # setGridChunk(0, ChunkWidth, 0, ChunkHeight) func setFloor(): for mz in range(0, Global.world.width - 1): for mx in range(0, Global.world.height - 1): var bloc = Global.world.get_bloc(Vector2(mx, mz)) var my: float = bloc.y var meshID var mesh_rotation if bloc.type != 0: var neighbours = Global.world.get_neighbours_4_at_same_height(Vector2(mx, mz)) if neighbours == Global.directions_4.RIGHT: meshID = Global.bloc_sides_id.SIDE_3 mesh_rotation = Global.GRID_ROTATION[3] elif neighbours == Global.directions_4.LEFT: meshID = Global.bloc_sides_id.SIDE_3 mesh_rotation = Global.GRID_ROTATION[1] elif neighbours == Global.directions_4.LEFT + Global.directions_4.RIGHT: meshID = Global.bloc_sides_id.SIDE_2_OPPOSITE mesh_rotation = Global.GRID_ROTATION[0] elif neighbours == Global.directions_4.BOTTOM: meshID = Global.bloc_sides_id.SIDE_3 mesh_rotation = Global.GRID_ROTATION[0] elif neighbours == Global.directions_4.BOTTOM + Global.directions_4.RIGHT: meshID = Global.bloc_sides_id.SIDE_2_ANGLE mesh_rotation = Global.GRID_ROTATION[3] elif neighbours == Global.directions_4.BOTTOM + Global.directions_4.LEFT: meshID = Global.bloc_sides_id.SIDE_2_ANGLE mesh_rotation = Global.GRID_ROTATION[0] elif neighbours == Global.directions_4.BOTTOM + Global.directions_4.LEFT + Global.directions_4.RIGHT: meshID = Global.bloc_sides_id.SIDE_1 mesh_rotation = Global.GRID_ROTATION[0] elif neighbours == Global.directions_4.TOP: meshID = Global.bloc_sides_id.SIDE_3 mesh_rotation = Global.GRID_ROTATION[2] elif neighbours == Global.directions_4.TOP + Global.directions_4.RIGHT: meshID = Global.bloc_sides_id.SIDE_2_ANGLE mesh_rotation = Global.GRID_ROTATION[2] elif neighbours == Global.directions_4.TOP + Global.directions_4.LEFT: meshID = Global.bloc_sides_id.SIDE_2_ANGLE mesh_rotation = Global.GRID_ROTATION[1] elif neighbours == Global.directions_4.TOP + Global.directions_4.LEFT + Global.directions_4.RIGHT: meshID = Global.bloc_sides_id.SIDE_1 mesh_rotation = Global.GRID_ROTATION[2] elif neighbours == Global.directions_4.TOP + Global.directions_4.BOTTOM: meshID = Global.bloc_sides_id.SIDE_2_OPPOSITE mesh_rotation = Global.GRID_ROTATION[1] elif neighbours == Global.directions_4.TOP + Global.directions_4.BOTTOM + Global.directions_4.RIGHT: meshID = Global.bloc_sides_id.SIDE_1 mesh_rotation = Global.GRID_ROTATION[3] elif neighbours == Global.directions_4.TOP + Global.directions_4.BOTTOM + Global.directions_4.LEFT: meshID = Global.bloc_sides_id.SIDE_1 mesh_rotation = Global.GRID_ROTATION[1] elif neighbours == Global.directions_4.TOP + Global.directions_4.BOTTOM + Global.directions_4.LEFT + Global.directions_4.RIGHT: meshID = Global.bloc_sides_id.SIDE_0 mesh_rotation = Global.GRID_ROTATION[0] elif neighbours == 0: meshID = Global.bloc_sides_id.SIDE_4 mesh_rotation = Global.GRID_ROTATION[0] set_cell_item( Vector3(mx, my, mz) , meshID, mesh_rotation) if bloc.entity != -1: var entity = Global.world.entities[bloc.entity] var mesh_instance = MeshInstance3D.new() mesh_instance.mesh = CapsuleMesh.new() mesh_instance.translate(map_to_local(Vector3(bloc.x, bloc.y, bloc.z))) entity.moving.connect(_on_entity_moving) entities.append(mesh_instance) add_child(entities[entities.size()-1]) Global.world.entities[bloc.entity].move(0) # #func setEntities(columnStart: float, columnEnd: float, rowStart: float, rowEnd: float) -> void: # if columnStart < 0 : # columnStart = 0 # if rowStart < 0 : # rowStart = 0 # if columnEnd > Global.world.width - 1 : # columnEnd =Global.world.width - 2 # if rowEnd > Global.world.height - 1 : # rowEnd = Global.world.height - 2 # ## var multimesh = MultiMesh.new() # ## multimesh.transform_format = MultiMesh.TRANSFORM_3D # var instances = [] # for mz in range(rowStart, rowEnd): # for mx in range(columnStart, columnEnd): # var bloc = Global.world.get_bloc(Vector2(mx, mz)) # if bloc.entity != -1: # instances.append(map_to_local(Vector3(bloc.x, bloc.y, bloc.z))) # # # multimesh.instance_count = instances.size() # for instance_index in multimesh.instance_count: # var transform := Transform3D() # transform.origin = instances[instance_index] # # multimesh.set_instance_transform(instance_index, transform) # # if instances.size(): # var multimesh_instance = MultiMeshInstance3D.new() # multimesh_instance.multimesh = multimesh # multimeshInstances.append(multimesh_instance) # add_child(multimeshInstances[multimeshInstances.size()-1]) # #func _on_map_update_timer_timeout(): # pass ## generateGridChunk(camera.global_transform.origin) func _on_entity_moving(): pass # print("bonsoir")