133 lines
4.6 KiB
GDScript
133 lines
4.6 KiB
GDScript
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)
|
|
$BuildingAreas/B_area_N/Collision.disabled = true
|
|
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)
|
|
$BuildingAreas/B_area_S/Collision.disabled = true
|
|
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)
|
|
$BuildingAreas/B_area_W/Collision.disabled = true
|
|
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)
|
|
$BuildingAreas/B_area_E/Collision.disabled = true
|
|
|
|
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
|