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

125 lines
4.8 KiB

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")