extends Node3D var exits: Array = [false, false, false, false] const STREET_WIDTH: float = 40 func _ready() -> void: $Mesh.mesh.size.x = Global.chunk_size $Mesh.mesh.size.y = Global.chunk_size #var building_area = Area3D.new() #var building_collision = CollisionShape3D.new() #var box_shape = BoxShape3D.new() #var box_mesh = BoxMesh.new() #var building_mesh = MeshInstance3D.new() #var building_collision_center = Vector3((-STREET_WIDTH/2-Global.chunk_size/2)/2+Global.chunk_size, 0, (STREET_WIDTH/2-Global.chunk_size/2)/2+Global.chunk_size) #building_collision.position = building_collision_center #box_shape.size = Vector3(Global.chunk_size/2-STREET_WIDTH/2, 20, Global.chunk_size/2-STREET_WIDTH/2) #box_mesh.size = Vector3(Global.chunk_size/2-STREET_WIDTH/2, 20, Global.chunk_size/2-STREET_WIDTH/2) #building_collision.shape = box_shape #building_mesh.mesh = box_mesh #$BuildingAreas.add_child(building_area) # #building_area.add_child(building_collision) #building_collision.add_child(building_mesh) func update() -> void: var i = 0 for exit in exits: if not exit: i += 1 continue if i == 0: #n #$n.position.y = 1 var vertices = PackedVector3Array() vertices.push_back(Vector3(-STREET_WIDTH/2, 0.5, -Global.chunk_size/2)) vertices.push_back(Vector3(STREET_WIDTH/2 , 0.5, -Global.chunk_size/2)) vertices.push_back(Vector3(-STREET_WIDTH/2, 0.5, 0)) vertices.push_back(Vector3(STREET_WIDTH/2, 0.5, -Global.chunk_size/2)) vertices.push_back(Vector3(STREET_WIDTH/2, 0.5, 0)) vertices.push_back(Vector3(-STREET_WIDTH/2, 0.5, 0)) # Initialize the ArrayMesh. var arr_mesh = ArrayMesh.new() var arrays = [] arrays.resize(Mesh.ARRAY_MAX) arrays[Mesh.ARRAY_VERTEX] = vertices # Create the Mesh. arr_mesh.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, arrays) var m = MeshInstance3D.new() m.mesh = arr_mesh add_child(m) if i == 1: #s #$s.position.y = 1 var vertices = PackedVector3Array() vertices.push_back(Vector3(-STREET_WIDTH/2, 0.5, 0)) vertices.push_back(Vector3(STREET_WIDTH/2, 0.5, 0)) vertices.push_back(Vector3(-STREET_WIDTH/2, 0.5, Global.chunk_size/2)) vertices.push_back(Vector3(STREET_WIDTH/2, 0.5, 0)) vertices.push_back(Vector3(STREET_WIDTH/2, 0.5, Global.chunk_size/2)) vertices.push_back(Vector3(-STREET_WIDTH/2, 0.5, Global.chunk_size/2)) # Initialize the ArrayMesh. var arr_mesh = ArrayMesh.new() var arrays = [] arrays.resize(Mesh.ARRAY_MAX) arrays[Mesh.ARRAY_VERTEX] = vertices # Create the Mesh. arr_mesh.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, arrays) var m = MeshInstance3D.new() m.mesh = arr_mesh add_child(m) if i == 2: #w #$w.position.y = 1 var vertices = PackedVector3Array() vertices.push_back(Vector3(-Global.chunk_size/2, 0.5, -STREET_WIDTH/2)) vertices.push_back(Vector3(0, 0.5, -STREET_WIDTH/2)) vertices.push_back(Vector3(-Global.chunk_size/2, 0.5, STREET_WIDTH/2)) vertices.push_back(Vector3(0, 0.5, -STREET_WIDTH/2)) vertices.push_back(Vector3(0, 0.5, STREET_WIDTH/2)) vertices.push_back(Vector3(-Global.chunk_size/2, 0.5, STREET_WIDTH/2)) # Initialize the ArrayMesh. var arr_mesh = ArrayMesh.new() var arrays = [] arrays.resize(Mesh.ARRAY_MAX) arrays[Mesh.ARRAY_VERTEX] = vertices # Create the Mesh. arr_mesh.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, arrays) var m = MeshInstance3D.new() m.mesh = arr_mesh add_child(m) if i == 3: #e #$e.position.y = 1 var vertices = PackedVector3Array() vertices.push_back(Vector3(0, 0.5, -STREET_WIDTH/2)) vertices.push_back(Vector3(Global.chunk_size/2, 0.5, -STREET_WIDTH/2)) vertices.push_back(Vector3(0, 0.5, STREET_WIDTH/2)) vertices.push_back(Vector3(Global.chunk_size/2, 0.5, -STREET_WIDTH/2)) vertices.push_back(Vector3(Global.chunk_size/2, 0.5, STREET_WIDTH/2)) vertices.push_back(Vector3(0, 0.5, STREET_WIDTH/2)) # Initialize the ArrayMesh. var arr_mesh = ArrayMesh.new() var arrays = [] arrays.resize(Mesh.ARRAY_MAX) arrays[Mesh.ARRAY_VERTEX] = vertices # Create the Mesh. arr_mesh.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, arrays) var m = MeshInstance3D.new() m.mesh = arr_mesh add_child(m) var center_mesh = MeshInstance3D.new() center_mesh.position = Vector3(0,0.6,0) center_mesh.mesh = PlaneMesh.new() center_mesh.mesh.size = Vector2(STREET_WIDTH,STREET_WIDTH) add_child(center_mesh) i += 1