Interior algorithm taking its shape
This commit is contained in:
@@ -0,0 +1,459 @@
|
||||
extends Spatial
|
||||
|
||||
|
||||
# Declare member variables here. Examples:
|
||||
# var a = 2
|
||||
# var b = "text"
|
||||
|
||||
var wall = preload("res://scenes/maps/wall.escn")
|
||||
var window = preload("res://scenes/maps/window.tscn")
|
||||
var door = preload("res://scenes/maps/door.tscn")
|
||||
var entry = preload("res://scenes/maps/door-outside.tscn")
|
||||
var fl = preload("res://scenes/maps/floor.escn")
|
||||
|
||||
const FLAG_WALL_LEFT = (1 << 0)
|
||||
const FLAG_WALL_UP = (1 << 1)
|
||||
const FLAG_WALL_RIGHT = (1 << 2)
|
||||
const FLAG_WALL_DOWN = (1 << 3)
|
||||
const FLAG_FLOOR = (1 << 4)
|
||||
const FLAG_ENTRY_LEFT = (1 << 5)
|
||||
const FLAG_ENTRY_UP = (1 << 6)
|
||||
const FLAG_ENTRY_RIGHT = (1 << 7)
|
||||
const FLAG_ENTRY_DOWN = (1 << 8)
|
||||
const FLAG_WINDOW_LEFT = (1 << 9)
|
||||
const FLAG_WINDOW_UP = (1 << 10)
|
||||
const FLAG_WINDOW_RIGHT = (1 << 11)
|
||||
const FLAG_WINDOW_DOWN = (1 << 12)
|
||||
const FLAG_DOOR_LEFT = (1 << 13)
|
||||
const FLAG_DOOR_UP = (1 << 14)
|
||||
const FLAG_DOOR_RIGHT = (1 << 15)
|
||||
const FLAG_DOOR_DOWN = (1 << 16)
|
||||
const FLAG_WALL_MASK = (FLAG_WALL_LEFT | FLAG_WALL_UP | FLAG_WALL_RIGHT | FLAG_WALL_DOWN)
|
||||
const FLAG_ENTRY_MASK = (FLAG_ENTRY_LEFT | FLAG_ENTRY_UP | FLAG_ENTRY_RIGHT | FLAG_ENTRY_DOWN)
|
||||
const FLAG_WINDOW_MASK = (FLAG_WINDOW_LEFT | FLAG_WINDOW_UP | FLAG_WINDOW_RIGHT | FLAG_WINDOW_DOWN)
|
||||
const FLAG_DOOR_MASK = (FLAG_DOOR_LEFT | FLAG_DOOR_UP | FLAG_DOOR_RIGHT | FLAG_DOOR_DOWN)
|
||||
const FLAG_LEFT_MASK = (FLAG_WALL_LEFT | FLAG_ENTRY_LEFT | FLAG_WINDOW_LEFT | FLAG_DOOR_LEFT)
|
||||
const FLAG_UP_MASK = (FLAG_WALL_UP | FLAG_ENTRY_UP | FLAG_WINDOW_UP | FLAG_DOOR_UP)
|
||||
const FLAG_RIGHT_MASK = (FLAG_WALL_RIGHT | FLAG_ENTRY_RIGHT | FLAG_WINDOW_RIGHT | FLAG_DOOR_RIGHT)
|
||||
const FLAG_DOWN_MASK = (FLAG_WALL_DOWN | FLAG_ENTRY_DOWN | FLAG_WINDOW_DOWN | FLAG_DOOR_DOWN)
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
var rnd: RandomNumberGenerator
|
||||
var contour = [
|
||||
Vector2(-10, -10), Vector2(-8, -10), Vector2(-8, -8), Vector2(-6, -8), Vector2(-6, -10),
|
||||
Vector2(10, -10), Vector2(10, -8), Vector2(8, -8), Vector2(8, -6), Vector2(10, -6),
|
||||
Vector2(10, 10), Vector2(8, 10), Vector2(8, 8), Vector2(6, 8), Vector2(6, 10),
|
||||
Vector2(-10, 10), Vector2(-10, 8), Vector2(-8, 8), Vector2(-8, 6), Vector2(-10, 6), Vector2(-15, 2),
|
||||
]
|
||||
var wall_length = 2.0
|
||||
var grid_areas = []
|
||||
var grid_walls = []
|
||||
var grid_rect: = Rect2()
|
||||
var grid_size = 2.0
|
||||
var size_x:int = 0
|
||||
var size_y:int = 0
|
||||
var windows = []
|
||||
|
||||
var enterance
|
||||
var spaces = [
|
||||
"entry",
|
||||
"window",
|
||||
"corridoor"
|
||||
]
|
||||
var walls_tiles = []
|
||||
#var adj = {
|
||||
# "entry": ["hall"],
|
||||
# "hall": ["hall1", "kitchen", "toilet1", "bathroom1", "hall2"],
|
||||
#}
|
||||
func init_grid():
|
||||
$debug.begin(Mesh.PRIMITIVE_LINES)
|
||||
for k in range(contour.size()):
|
||||
var p1 = contour[k]
|
||||
var p2 = contour[(k + 1) % contour.size()]
|
||||
$debug.add_vertex(Vector3(p1.x, 3.0, p1.y))
|
||||
$debug.add_vertex(Vector3(p2.x, 3.0, p2.y))
|
||||
$debug.end()
|
||||
for x in contour:
|
||||
grid_rect = grid_rect.expand(x)
|
||||
size_x = grid_rect.size.x / grid_size + 2
|
||||
size_y = grid_rect.size.y / grid_size + 2
|
||||
grid_areas.resize(size_x * size_y)
|
||||
grid_walls.resize(size_x * size_y)
|
||||
for t in range(size_x * size_y):
|
||||
grid_areas[t] = 0
|
||||
grid_walls[t] = 0
|
||||
# for e in adj.keys():
|
||||
# if !e in spaces:
|
||||
# spaces.push_back(e)
|
||||
|
||||
var cur_pos: = Vector2()
|
||||
func init_walls():
|
||||
for y in range(size_y):
|
||||
for x in range(size_x):
|
||||
var point_flags = 0
|
||||
var px = float(x) * grid_size + grid_rect.position.x - grid_size
|
||||
var py = float(y) * grid_size + grid_rect.position.y - grid_size
|
||||
var p0 = Vector2(px - 0.1, py - 0.1)
|
||||
var p1 = Vector2(px - 0.1 + grid_size + 0.1, py)
|
||||
var p2 = Vector2(px + grid_size + 0.1, py + grid_size + 0.1)
|
||||
var p3 = Vector2(px - 0.1, py + grid_size + 0.1)
|
||||
var p4 = p0 + Vector2(grid_size * 0.5, grid_size * 0.5) + Vector2(0.1, 0.1)
|
||||
var p01 = p0.linear_interpolate(p1, 0.5)
|
||||
var p12 = p1.linear_interpolate(p2, 0.5)
|
||||
var p23 = p2.linear_interpolate(p3, 0.5)
|
||||
var p30 = p3.linear_interpolate(p0, 0.5)
|
||||
if Geometry.is_point_in_polygon(p0, PoolVector2Array(contour)):
|
||||
point_flags |= 1
|
||||
if Geometry.is_point_in_polygon(p1, PoolVector2Array(contour)):
|
||||
point_flags |= 2
|
||||
if Geometry.is_point_in_polygon(p2, PoolVector2Array(contour)):
|
||||
point_flags |= 4
|
||||
if Geometry.is_point_in_polygon(p3, PoolVector2Array(contour)):
|
||||
point_flags |= 8
|
||||
if Geometry.is_point_in_polygon(p4, PoolVector2Array(contour)):
|
||||
point_flags |= 16
|
||||
if Geometry.is_point_in_polygon(p01, PoolVector2Array(contour)):
|
||||
point_flags |= 32
|
||||
if Geometry.is_point_in_polygon(p12, PoolVector2Array(contour)):
|
||||
point_flags |= 64
|
||||
if Geometry.is_point_in_polygon(p23, PoolVector2Array(contour)):
|
||||
point_flags |= 128
|
||||
if Geometry.is_point_in_polygon(p30, PoolVector2Array(contour)):
|
||||
point_flags |= 256
|
||||
if point_flags == 0:
|
||||
grid_areas[y * size_x + x] = 0xffff
|
||||
else:
|
||||
grid_areas[y * size_x + x] = 0
|
||||
grid_walls[y * size_x + x] = point_flags
|
||||
func convert_walls():
|
||||
$debug.begin(Mesh.PRIMITIVE_LINES)
|
||||
for y in range(size_y):
|
||||
for x in range(size_x):
|
||||
var left = false
|
||||
var right = false
|
||||
var up = false
|
||||
var down = false
|
||||
var f = false
|
||||
var point_flags = grid_walls[y * size_x + x]
|
||||
var px = float(x) * grid_size + grid_rect.position.x - grid_size
|
||||
var py = float(y) * grid_size + grid_rect.position.y - grid_size
|
||||
var p0 = Vector2(px, py)
|
||||
var p1 = Vector2(px + grid_size, py)
|
||||
var p2 = Vector2(px + grid_size, py + grid_size)
|
||||
var p3 = Vector2(px, py + grid_size)
|
||||
$debug.add_vertex(Vector3(p0.x, 0.1, p0.y))
|
||||
$debug.add_vertex(Vector3(p1.x, 0.1, p1.y))
|
||||
$debug.add_vertex(Vector3(p1.x, 0.1, p1.y))
|
||||
$debug.add_vertex(Vector3(p2.x, 0.1, p2.y))
|
||||
$debug.add_vertex(Vector3(p2.x, 0.1, p2.y))
|
||||
$debug.add_vertex(Vector3(p3.x, 0.1, p3.y))
|
||||
$debug.add_vertex(Vector3(p3.x, 0.1, p3.y))
|
||||
$debug.add_vertex(Vector3(p0.x, 0.1, p0.y))
|
||||
match(point_flags):
|
||||
0x1ff:
|
||||
f = true
|
||||
0x01, 0x02, 0x4, 0x08, 0x108, 0x84, 0x8c, 0x88, 0x0, 0x22, 0x23, 0x21, 0x046:
|
||||
f = false
|
||||
0x109, 0x101, 0x12b, 0x18d, 0x042, 0x06, 0xe4, 0x67, 0x40, 0x64, 0xc6:
|
||||
f = false
|
||||
0x80, 0xc, 0x1ce, 0x100, 0x1a9, 0x9, 0x161, 0x3, 0x20:
|
||||
f = false
|
||||
0xd6, 0xde:
|
||||
f = true
|
||||
up = true
|
||||
left = true
|
||||
0x19c, 0x1de, 0x1df, 0x1da:
|
||||
f = true
|
||||
up = true
|
||||
0x19a, 0x19b, 0x198:
|
||||
f = true
|
||||
up = true
|
||||
right = true
|
||||
0xf4, 0xf6, 0xf7, 0xff, 0xfe, 0x1fe:
|
||||
f = true
|
||||
left = true
|
||||
0x1b3, 0x1bb, 0x1bf, 0x199, 0x1bd, 0x1b9:
|
||||
f = true
|
||||
right = true
|
||||
0x1fd, 0x1fb, 0x1f7, 0x1f6:
|
||||
f = true
|
||||
0x72, 0x76:
|
||||
f = true
|
||||
left = true
|
||||
down = true
|
||||
0x73, 0x152, 0x173, 0x17b, 0x177, 0x172, 0x17f:
|
||||
f = true
|
||||
down = true
|
||||
0x131, 0x133, 0x139:
|
||||
f = true
|
||||
right = true
|
||||
down = true
|
||||
0x52, 0x56:
|
||||
f = true
|
||||
down = true
|
||||
up = true
|
||||
left = true
|
||||
0x96:
|
||||
f = true
|
||||
left = true
|
||||
right = true
|
||||
up = true
|
||||
0x11a, 0x110:
|
||||
f = true
|
||||
up = true
|
||||
right = true
|
||||
down = true
|
||||
0x33:
|
||||
f = true
|
||||
left = true
|
||||
right = true
|
||||
down = true
|
||||
_:
|
||||
if point_flags & 0x10 != 0:
|
||||
print("%03x" % (point_flags))
|
||||
else:
|
||||
print("skip %03x" % (point_flags))
|
||||
if up:
|
||||
if y > 0:
|
||||
if grid_walls[(y - 1) * size_x + x] & 16 != 0:
|
||||
up = false
|
||||
if down:
|
||||
if y < size_y - 1:
|
||||
if grid_walls[(y + 1) * size_x + x] & 16 != 0:
|
||||
down = false
|
||||
if left:
|
||||
if x > 0:
|
||||
if grid_walls[y * size_x + x - 1] & 16 != 0:
|
||||
left = false
|
||||
if right:
|
||||
if x < size_x - 1:
|
||||
if grid_walls[y * size_x + x + 1] & 16 != 0:
|
||||
right = false
|
||||
if !up && f:
|
||||
if y > 0:
|
||||
if grid_walls[(y - 1) * size_x + x] & 16 == 0:
|
||||
up = true
|
||||
if !down && f:
|
||||
if y < size_y - 1:
|
||||
if grid_walls[(y + 1) * size_x + x] & 16 == 0:
|
||||
down = true
|
||||
if !left && f:
|
||||
if x > 0:
|
||||
if grid_walls[y * size_x + x - 1] & 16 == 0:
|
||||
left = true
|
||||
if !right && f:
|
||||
if x < size_x - 1:
|
||||
if grid_walls[y * size_x + x + 1] & 16 == 0:
|
||||
right = true
|
||||
point_flags = 0
|
||||
if left:
|
||||
point_flags |= 1
|
||||
if up:
|
||||
point_flags |= 2
|
||||
if right:
|
||||
point_flags |= 4
|
||||
if down:
|
||||
point_flags |= 8
|
||||
if f:
|
||||
point_flags |= 16
|
||||
grid_walls[y * size_x + x] = point_flags
|
||||
if point_flags & 0xf != 0:
|
||||
walls_tiles.push_back(y * size_x + x)
|
||||
$debug.end()
|
||||
func create_entry_door():
|
||||
var tile = walls_tiles[rnd.randi() % walls_tiles.size()]
|
||||
var point_flags = grid_walls[tile]
|
||||
var flags = [
|
||||
[1, 32],
|
||||
[2, 64],
|
||||
[4, 128],
|
||||
[8, 256]
|
||||
]
|
||||
var rflags = []
|
||||
for p in flags:
|
||||
if point_flags & p[0] != 0:
|
||||
rflags.push_back(p)
|
||||
var f = rflags[rnd.randi() % rflags.size()]
|
||||
point_flags &= ~f[0]
|
||||
point_flags |= f[1]
|
||||
grid_walls[tile] = point_flags
|
||||
func create_windows(pwindow: float):
|
||||
for tile in walls_tiles:
|
||||
var point_flags = grid_walls[tile]
|
||||
var flags = [
|
||||
[1, 512],
|
||||
[2, 1024],
|
||||
[4, 2048],
|
||||
[8, 4096]
|
||||
]
|
||||
var rflags = []
|
||||
for p in flags:
|
||||
if point_flags & p[0] != 0:
|
||||
if rnd.randf() > pwindow:
|
||||
rflags.push_back(p)
|
||||
for f in rflags:
|
||||
point_flags &= ~f[0]
|
||||
point_flags |= f[1]
|
||||
grid_walls[tile] = point_flags
|
||||
func tile_distance(tile1: int, tile2: int):
|
||||
var last_x = tile1 % size_x
|
||||
var last_y = int(tile1 / size_x)
|
||||
var cur_x = tile2 % size_x
|
||||
var cur_y = int(tile2 / size_x)
|
||||
var dst = Vector2(cur_x - last_x, cur_y - last_y).length()
|
||||
return int(dst)
|
||||
|
||||
func create_areas(min_d: int = 4):
|
||||
var created_roots = []
|
||||
for t in range(grid_walls.size()):
|
||||
if grid_walls[t] & FLAG_FLOOR:
|
||||
grid_areas[t] = 0x0
|
||||
else:
|
||||
grid_areas[t] = 0xffff
|
||||
var p = walls_tiles.duplicate()
|
||||
var area_code: int = 1
|
||||
while p.size() > 0:
|
||||
var tile = p.pop_front()
|
||||
print("tile ", tile)
|
||||
var point_flags = grid_walls[tile]
|
||||
for t in [FLAG_ENTRY_MASK, FLAG_WINDOW_MASK]:
|
||||
if (point_flags & t != 0):
|
||||
if created_roots.empty():
|
||||
print("p")
|
||||
grid_areas[tile] = area_code
|
||||
area_code += 1
|
||||
created_roots.push_back(tile)
|
||||
else:
|
||||
print("pp")
|
||||
var mdst = 1000000000
|
||||
for e in created_roots:
|
||||
var dst = tile_distance(e, tile)
|
||||
if mdst > dst:
|
||||
mdst = dst
|
||||
print(mdst)
|
||||
if mdst >= min_d:
|
||||
grid_areas[tile] = area_code
|
||||
area_code += 1
|
||||
created_roots.push_back(tile)
|
||||
func grow_areas_left():
|
||||
for k in range(grid_areas.size()):
|
||||
pass
|
||||
print(grid_areas)
|
||||
print(grid_walls)
|
||||
func build_area_walls():
|
||||
for tile in range(grid_areas.size()):
|
||||
var code = grid_areas[tile]
|
||||
var point_flags = grid_walls[tile]
|
||||
var old_point_flags = point_flags
|
||||
if code == 0xffff:
|
||||
continue
|
||||
if (point_flags & FLAG_FLOOR) == 0:
|
||||
continue
|
||||
var x = tile % size_x
|
||||
var y = int(tile / size_x)
|
||||
var leftm = point_flags & FLAG_LEFT_MASK
|
||||
var rightm = point_flags & FLAG_RIGHT_MASK
|
||||
var upm = point_flags & FLAG_UP_MASK
|
||||
var downm = point_flags & FLAG_DOWN_MASK
|
||||
if (leftm == 0) && x > 0:
|
||||
var left_code = grid_areas[tile - 1]
|
||||
if code != left_code:
|
||||
var left_flags = grid_walls[tile - 1]
|
||||
if (point_flags & FLAG_LEFT_MASK == 0) && (left_flags & FLAG_RIGHT_MASK == 0):
|
||||
point_flags |= FLAG_WALL_LEFT
|
||||
print("left ", leftm)
|
||||
if (rightm == 0) && x < size_x - 1:
|
||||
var right_code = grid_areas[tile + 1]
|
||||
if code != right_code:
|
||||
var right_flags = grid_walls[tile + 1]
|
||||
if (point_flags & FLAG_RIGHT_MASK == 0) && (right_flags & FLAG_LEFT_MASK == 0):
|
||||
point_flags |= FLAG_WALL_RIGHT
|
||||
print("right ", rightm)
|
||||
if upm == 0 && y > 0:
|
||||
var up_code = grid_areas[tile - size_x]
|
||||
if code != up_code:
|
||||
var up_flags = grid_walls[tile - size_x]
|
||||
if (point_flags & FLAG_UP_MASK == 0) && (up_flags & FLAG_DOWN_MASK == 0):
|
||||
point_flags |= FLAG_WALL_UP
|
||||
print("up ", upm)
|
||||
if downm == 0 && y < size_y - 1:
|
||||
var down_code = grid_areas[tile + size_x]
|
||||
if code != down_code:
|
||||
var down_flags = grid_walls[tile + size_x]
|
||||
if (point_flags & FLAG_DOWN_MASK == 0) && (down_flags & FLAG_UP_MASK == 0):
|
||||
point_flags |= FLAG_WALL_DOWN
|
||||
print("down ", downm)
|
||||
if old_point_flags != point_flags:
|
||||
print("point flags %04x" % (old_point_flags), " after %04x" % (point_flags))
|
||||
grid_walls[tile] = point_flags
|
||||
|
||||
func instance_wall(what, p0, p1):
|
||||
var obj = what.instance()
|
||||
add_child(obj)
|
||||
var v = p1 - p0
|
||||
var xform = Transform().rotated(Vector3(0, 1, 0), -v.angle())
|
||||
var p = p0 + v * 0.5
|
||||
xform.origin = Vector3(p.x, 0, p.y)
|
||||
obj.transform = xform
|
||||
func display_walls():
|
||||
for y in range(size_y):
|
||||
for x in range(size_x):
|
||||
var point_flags = grid_walls[y * size_x + x]
|
||||
var px = float(x) * grid_size + grid_rect.position.x - grid_size
|
||||
var py = float(y) * grid_size + grid_rect.position.y - grid_size
|
||||
var p0 = Vector2(px, py)
|
||||
var p1 = Vector2(px + grid_size, py)
|
||||
var p2 = Vector2(px + grid_size, py + grid_size)
|
||||
var p3 = Vector2(px, py + grid_size)
|
||||
var obje
|
||||
var objects = {
|
||||
FLAG_WALL_MASK: wall,
|
||||
FLAG_ENTRY_MASK: entry,
|
||||
FLAG_WINDOW_MASK: window,
|
||||
FLAG_DOOR_MASK: door
|
||||
}
|
||||
for k in objects.keys():
|
||||
if point_flags & k != 0:
|
||||
obje = objects[k]
|
||||
if point_flags & (k & FLAG_LEFT_MASK) != 0:
|
||||
instance_wall(obje, p3, p0)
|
||||
if point_flags & (k & FLAG_UP_MASK) != 0:
|
||||
instance_wall(obje, p0, p1)
|
||||
if point_flags & (k & FLAG_RIGHT_MASK) != 0:
|
||||
instance_wall(obje, p1, p2)
|
||||
if point_flags & (k & FLAG_DOWN_MASK) != 0:
|
||||
instance_wall(obje, p2, p3)
|
||||
|
||||
if point_flags & FLAG_FLOOR != 0:
|
||||
var fd = fl.instance()
|
||||
add_child(fd)
|
||||
var xform = Transform()
|
||||
var p = p0
|
||||
xform.origin = Vector3(p.x, 0, p.y)
|
||||
fd.transform = xform
|
||||
|
||||
|
||||
func _ready():
|
||||
rnd = RandomNumberGenerator.new()
|
||||
rnd.seed = OS.get_unix_time()
|
||||
|
||||
var state = 0
|
||||
func _process(delta):
|
||||
match(state):
|
||||
0:
|
||||
init_grid()
|
||||
init_walls()
|
||||
convert_walls()
|
||||
create_entry_door()
|
||||
create_windows(0.0)
|
||||
create_areas(4)
|
||||
build_area_walls()
|
||||
display_walls()
|
||||
# place_flats()
|
||||
# grow_flats()
|
||||
# draw_grid()
|
||||
# draw_walls()
|
||||
# print(grid)
|
||||
# for k in range(150):
|
||||
# build_corridor()
|
||||
state = 1
|
||||
@@ -0,0 +1,19 @@
|
||||
extends Camera
|
||||
|
||||
|
||||
# Declare member variables here. Examples:
|
||||
# var a = 2
|
||||
# var b = "text"
|
||||
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready():
|
||||
pass # Replace with function body.
|
||||
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(delta):
|
||||
if Input.is_action_pressed("walk_forward"):
|
||||
global_translate(Vector3(0, 0, -1) * 10.0 * delta)
|
||||
if Input.is_action_pressed("walk_back"):
|
||||
global_translate(Vector3(0, 0, 1) * 10.0 * delta)
|
||||
@@ -0,0 +1,38 @@
|
||||
[gd_scene load_steps=6 format=2]
|
||||
|
||||
[ext_resource path="res://city/building.gd" type="Script" id=1]
|
||||
[ext_resource path="res://city/cam.gd" type="Script" id=2]
|
||||
|
||||
[sub_resource type="SpatialMaterial" id=1]
|
||||
albedo_color = Color( 0.180392, 0.737255, 0.490196, 1 )
|
||||
|
||||
[sub_resource type="PlaneMesh" id=2]
|
||||
material = SubResource( 1 )
|
||||
size = Vector2( 200, 200 )
|
||||
|
||||
[sub_resource type="SpatialMaterial" id=3]
|
||||
flags_unshaded = true
|
||||
flags_vertex_lighting = true
|
||||
vertex_color_use_as_albedo = true
|
||||
params_line_width = 3.0
|
||||
params_point_size = 3.0
|
||||
|
||||
[node name="contour_building_gen" type="Spatial"]
|
||||
|
||||
[node name="cam" type="Camera" parent="."]
|
||||
transform = Transform( 1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, 0, 10, 10 )
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="MeshInstance" type="MeshInstance" parent="."]
|
||||
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.843487, 0 )
|
||||
mesh = SubResource( 2 )
|
||||
material/0 = null
|
||||
|
||||
[node name="building" type="Spatial" parent="."]
|
||||
script = ExtResource( 1 )
|
||||
|
||||
[node name="debug" type="ImmediateGeometry" parent="building"]
|
||||
material_override = SubResource( 3 )
|
||||
|
||||
[node name="DirectionalLight" type="DirectionalLight" parent="."]
|
||||
transform = Transform( 1, 0, 0, 0, 0.866025, 0.5, 0, -0.5, 0.866025, 0, 20, 0 )
|
||||
@@ -0,0 +1,21 @@
|
||||
extends Spatial
|
||||
|
||||
|
||||
var graph = {
|
||||
"entry": ["corridoor", "stairs"],
|
||||
"corridoor": ["corridoor", "flat-door"]
|
||||
}
|
||||
|
||||
# Declare member variables here. Examples:
|
||||
# var a = 2
|
||||
# var b = "text"
|
||||
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready():
|
||||
pass # Replace with function body.
|
||||
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
#func _process(delta):
|
||||
# pass
|
||||
@@ -0,0 +1,6 @@
|
||||
[gd_scene load_steps=2 format=2]
|
||||
|
||||
[ext_resource path="res://city/spaces_building_gen.gd" type="Script" id=1]
|
||||
|
||||
[node name="spaces_building_gen" type="Spatial"]
|
||||
script = ExtResource( 1 )
|
||||
@@ -0,0 +1,35 @@
|
||||
extends Node2D
|
||||
|
||||
var graph = {
|
||||
"entry": ["corridoor", "stairs"],
|
||||
"corridoor": ["corridoor", "flat-door"]
|
||||
}
|
||||
|
||||
var grid = []
|
||||
|
||||
var spaces = []
|
||||
# Declare member variables here. Examples:
|
||||
# var a = 2
|
||||
# var b = "text"
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
var space_color = []
|
||||
var xdim = 10
|
||||
var ydim = 10
|
||||
func _ready():
|
||||
$Camera2D.current = true
|
||||
grid.resize(10 * 10)
|
||||
for e in graph.keys():
|
||||
for k in [e] + graph[e]:
|
||||
if !k in spaces:
|
||||
spaces.push_back(k)
|
||||
space_color.push_back(Color(randf(), randf(), randf(), 1))
|
||||
|
||||
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
#func _process(delta):
|
||||
# pass
|
||||
|
||||
func _draw():
|
||||
draw_rect(Rect2(-10, -10, 20, 20), Color(1, 0, 0, 1))
|
||||
@@ -0,0 +1,8 @@
|
||||
[gd_scene load_steps=2 format=2]
|
||||
|
||||
[ext_resource path="res://city/spaces_building_gen_2d.gd" type="Script" id=1]
|
||||
|
||||
[node name="spaces_building_gen_2d" type="Node2D"]
|
||||
script = ExtResource( 1 )
|
||||
|
||||
[node name="Camera2D" type="Camera2D" parent="."]
|
||||
@@ -0,0 +1,140 @@
|
||||
[gd_scene load_steps=1 format=2]
|
||||
|
||||
[sub_resource id=1 type="Shader"]
|
||||
|
||||
resource_name = "Shader Nodetree"
|
||||
code = "shader_type spatial;
|
||||
render_mode blend_mix, depth_draw_always, cull_back, diffuse_burley, specular_schlick_ggx;
|
||||
|
||||
|
||||
|
||||
void node_bsdf_principled(vec4 color, float subsurface, vec4 subsurface_color,
|
||||
float metallic, float specular, float roughness, float clearcoat,
|
||||
float clearcoat_roughness, float anisotropy, float transmission,
|
||||
float IOR, out vec3 albedo, out float sss_strength_out,
|
||||
out float metallic_out, out float specular_out,
|
||||
out float roughness_out, out float clearcoat_out,
|
||||
out float clearcoat_gloss_out, out float anisotropy_out,
|
||||
out float transmission_out, out float ior) {
|
||||
metallic = clamp(metallic, 0.0, 1.0);
|
||||
transmission = clamp(transmission, 0.0, 1.0);
|
||||
|
||||
subsurface = subsurface * (1.0 - metallic);
|
||||
|
||||
albedo = mix(color.rgb, subsurface_color.rgb, subsurface);
|
||||
sss_strength_out = subsurface;
|
||||
metallic_out = metallic;
|
||||
specular_out = pow((IOR - 1.0)/(IOR + 1.0), 2)/0.08;
|
||||
roughness_out = roughness;
|
||||
clearcoat_out = clearcoat * (1.0 - transmission);
|
||||
clearcoat_gloss_out = 1.0 - clearcoat_roughness;
|
||||
anisotropy_out = clamp(anisotropy, 0.0, 1.0);
|
||||
transmission_out = (1.0 - transmission) * (1.0 - metallic);
|
||||
ior = IOR;
|
||||
}
|
||||
|
||||
void vertex () {
|
||||
}
|
||||
|
||||
void fragment () {
|
||||
|
||||
// node: 'Principled BSDF'
|
||||
// type: 'ShaderNodeBsdfPrincipled'
|
||||
// input sockets handling
|
||||
vec4 node0_in0_basecolor = vec4(0.06881529837846756, 0.005524288397282362,
|
||||
0.003115540137514472, 1.0);
|
||||
float node0_in1_subsurface = float(0.0);
|
||||
vec3 node0_in2_subsurfaceradius = vec3(1.0, 0.20000000298023224,
|
||||
0.10000000149011612);
|
||||
vec4 node0_in3_subsurfacecolor = vec4(0.800000011920929, 0.800000011920929,
|
||||
0.800000011920929, 1.0);
|
||||
float node0_in4_metallic = float(0.0);
|
||||
float node0_in5_specular = float(0.5);
|
||||
float node0_in6_speculartint = float(0.0);
|
||||
float node0_in7_roughness = float(0.4000000059604645);
|
||||
float node0_in8_anisotropic = float(0.0);
|
||||
float node0_in9_anisotropicrotation = float(0.0);
|
||||
float node0_in10_sheen = float(0.0);
|
||||
float node0_in11_sheentint = float(0.5);
|
||||
float node0_in12_clearcoat = float(0.0);
|
||||
float node0_in13_clearcoatroughness = float(0.029999999329447746);
|
||||
float node0_in14_ior = float(1.4500000476837158);
|
||||
float node0_in15_transmission = float(0.0);
|
||||
float node0_in16_transmissionroughness = float(0.0);
|
||||
vec4 node0_in17_emission = vec4(0.0, 0.0, 0.0, 1.0);
|
||||
float node0_in18_alpha = float(1.0);
|
||||
vec3 node0_in19_normal = NORMAL;
|
||||
vec3 node0_in20_clearcoatnormal = vec3(0.0, 0.0, 0.0);
|
||||
vec3 node0_in21_tangent = TANGENT;
|
||||
// output sockets definitions
|
||||
vec3 node0_bsdf_out0_albedo;
|
||||
float node0_bsdf_out1_sss_strength;
|
||||
float node0_bsdf_out3_specular;
|
||||
float node0_bsdf_out2_metallic;
|
||||
float node0_bsdf_out4_roughness;
|
||||
float node0_bsdf_out5_clearcoat;
|
||||
float node0_bsdf_out6_clearcoat_gloss;
|
||||
float node0_bsdf_out7_anisotropy;
|
||||
float node0_bsdf_out8_transmission;
|
||||
float node0_bsdf_out9_ior;
|
||||
|
||||
node_bsdf_principled(node0_in0_basecolor, node0_in1_subsurface,
|
||||
node0_in3_subsurfacecolor, node0_in4_metallic, node0_in5_specular,
|
||||
node0_in7_roughness, node0_in12_clearcoat, node0_in13_clearcoatroughness,
|
||||
node0_in8_anisotropic, node0_in15_transmission, node0_in14_ior,
|
||||
node0_bsdf_out0_albedo, node0_bsdf_out1_sss_strength, node0_bsdf_out2_metallic,
|
||||
node0_bsdf_out3_specular, node0_bsdf_out4_roughness, node0_bsdf_out5_clearcoat,
|
||||
node0_bsdf_out6_clearcoat_gloss, node0_bsdf_out7_anisotropy,
|
||||
node0_bsdf_out8_transmission, node0_bsdf_out9_ior);
|
||||
|
||||
|
||||
ALBEDO = node0_bsdf_out0_albedo;
|
||||
SSS_STRENGTH = node0_bsdf_out1_sss_strength;
|
||||
SPECULAR = node0_bsdf_out3_specular;
|
||||
METALLIC = node0_bsdf_out2_metallic;
|
||||
ROUGHNESS = node0_bsdf_out4_roughness;
|
||||
CLEARCOAT = node0_bsdf_out5_clearcoat;
|
||||
CLEARCOAT_GLOSS = node0_bsdf_out6_clearcoat_gloss;
|
||||
NORMAL = node0_in19_normal;
|
||||
// uncomment it when you need it
|
||||
// TRANSMISSION = vec3(1.0, 1.0, 1.0) * node0_bsdf_out8_transmission;
|
||||
// uncomment it when you are modifing TANGENT
|
||||
// TANGENT = normalize(cross(cross(node0_in21_tangent, NORMAL), NORMAL));
|
||||
// BINORMAL = cross(TANGENT, NORMAL);
|
||||
// uncomment it when you have tangent(UV) set
|
||||
// ANISOTROPY = node0_bsdf_out7_anisotropy;
|
||||
}
|
||||
"
|
||||
|
||||
[sub_resource id=2 type="ShaderMaterial"]
|
||||
|
||||
resource_name = ""
|
||||
shader = SubResource(1)
|
||||
|
||||
[sub_resource id=3 type="ArrayMesh"]
|
||||
|
||||
resource_name = "floor"
|
||||
surfaces/0 = {
|
||||
"material":SubResource(2),
|
||||
"primitive":4,
|
||||
"arrays":[
|
||||
Vector3Array(1.99, 2.23517e-08, 0.01, 0.01, 2.23517e-08, 1.99, 0.01, 2.23517e-08, 0.01, 0.0, -0.19, 1.99, 0.0, -0.00999998, 0.01, 0.0, -0.00999998, 1.99, 1.99, -0.19, 2.0, 0.01, -0.00999998, 2.0, 1.99, -0.00999998, 2.0, 0.01, -0.2, 0.01, 1.99, -0.2, 1.99, 1.99, -0.2, 0.01, 2.0, -0.19, 0.01, 2.0, -0.00999998, 1.99, 2.0, -0.00999998, 0.01, 1.99, -0.19, 0.0, 1.99, -0.2, 0.01, 2.0, -0.19, 0.01, 1.99, 2.23517e-08, 0.01, 1.99, -0.00999998, 0.0, 2.0, -0.00999998, 0.01, 2.0, -0.19, 1.99, 1.99, -0.2, 1.99, 1.99, -0.19, 2.0, 2.0, -0.00999998, 1.99, 1.99, -0.00999998, 2.0, 1.99, 2.23517e-08, 1.99, 0.01, -0.19, 0.0, 0.0, -0.19, 0.01, 0.01, -0.2, 0.01, 0.0, -0.00999998, 0.01, 0.01, -0.00999998, 0.0, 0.01, 2.23517e-08, 0.01, 0.0, -0.19, 1.99, 0.01, -0.19, 2.0, 0.01, -0.2, 1.99, 0.01, 2.23517e-08, 1.99, 0.01, -0.00999998, 2.0, 0.0, -0.00999998, 1.99, 0.01, 2.23517e-08, 1.99, 0.0, -0.00999998, 0.01, 0.01, 2.23517e-08, 0.01, 0.01, 2.23517e-08, 0.01, 1.99, -0.00999998, 0.0, 1.99, 2.23517e-08, 0.01, 2.0, -0.00999998, 0.01, 1.99, -0.19, 0.0, 2.0, -0.19, 0.01, 0.01, -0.19, 2.0, 0.0, -0.00999998, 1.99, 0.01, -0.00999998, 2.0, 1.99, -0.00999998, 2.0, 2.0, -0.19, 1.99, 1.99, -0.19, 2.0, 0.01, -0.00999998, 0.0, 0.0, -0.19, 0.01, 0.01, -0.19, 0.0, 0.01, -0.2, 1.99, 1.99, -0.19, 2.0, 1.99, -0.2, 1.99, 1.99, -0.2, 1.99, 2.0, -0.19, 0.01, 1.99, -0.2, 0.01, 1.99, 2.23517e-08, 1.99, 0.01, -0.00999998, 2.0, 0.01, 2.23517e-08, 1.99, 0.01, -0.2, 0.01, 0.0, -0.19, 1.99, 0.01, -0.2, 1.99, 1.99, -0.2, 0.01, 0.01, -0.19, 0.0, 0.01, -0.2, 0.01, 1.99, 2.23517e-08, 0.01, 2.0, -0.00999998, 1.99, 1.99, 2.23517e-08, 1.99, 0.01, -0.19, 0.0, 1.99, -0.00999998, 0.0, 0.01, -0.00999998, 0.0, 1.99, 2.23517e-08, 1.99, 0.0, -0.19, 0.01, 0.01, -0.19, 2.0, 0.01, -0.2, 1.99, 2.0, -0.19, 1.99, 0.0, -0.00999998, 1.99, 0.01, -0.00999998, 0.0, 2.0, -0.00999998, 0.01, 1.99, -0.00999998, 0.0, 1.99, -0.19, 0.0, 0.01, -0.19, 2.0, 0.0, -0.19, 1.99, 0.0, -0.00999998, 1.99, 1.99, -0.00999998, 2.0, 2.0, -0.00999998, 1.99, 2.0, -0.19, 1.99, 0.01, -0.00999998, 0.0, 0.0, -0.00999998, 0.01, 0.0, -0.19, 0.01, 0.01, -0.2, 1.99, 0.01, -0.19, 2.0, 1.99, -0.19, 2.0, 1.99, -0.2, 1.99, 2.0, -0.19, 1.99, 2.0, -0.19, 0.01, 1.99, 2.23517e-08, 1.99, 1.99, -0.00999998, 2.0, 0.01, -0.00999998, 2.0, 0.01, -0.2, 0.01, 0.0, -0.19, 0.01, 0.0, -0.19, 1.99, 1.99, -0.19, 0.0, 2.0, -0.00999998, 0.01, 1.99, -0.19, 0.0),
|
||||
Vector3Array(0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, -0.577356, 0.577353, 0.577342, -0.577356, 0.577353, 0.577342, -0.577356, 0.577353, 0.577342, -0.577354, -0.577354, 0.577343, -0.577354, -0.577354, 0.577343, -0.577354, -0.577354, 0.577343, -0.577351, 0.577361, -0.577339, -0.577351, 0.577361, -0.577339, -0.577351, 0.577361, -0.577339, -0.577351, -0.577361, -0.577339, -0.577351, -0.577361, -0.577339, -0.577351, -0.577361, -0.577339, 0.577351, 0.57735, 0.57735, 0.577351, 0.57735, 0.57735, 0.577351, 0.57735, 0.57735, 0.57735, -0.57735, 0.57735, 0.57735, -0.57735, 0.57735, 0.57735, -0.57735, 0.57735, 0.577354, 0.577342, -0.577354, 0.577354, 0.577342, -0.577354, 0.577354, 0.577342, -0.577354, 0.577354, -0.577343, -0.577354, 0.577354, -0.577343, -0.577354, 0.577354, -0.577343, -0.577354, 0.707107, -0.707107, 0.0, 0.707107, -0.707107, 0.0, 0.707107, -0.707107, 0.0, 0.0, -0.707107, 0.707107, 0.0, -0.707107, 0.707107, 0.0, -0.707107, 0.707107, -0.707107, 0.0, 0.707107, -0.707107, 0.0, 0.707107, -0.707107, 0.0, 0.707107, 0.707106, 0.0, -0.707107, 0.707106, 0.0, -0.707107, 0.707106, 0.0, -0.707107, -0.707106, 0.0, -0.707107, -0.707106, 0.0, -0.707107, -0.707106, 0.0, -0.707107, 0.707107, 0.0, 0.707107, 0.707107, 0.0, 0.707107, 0.707107, 0.0, 0.707107, 0.0, 0.707101, -0.707112, 0.0, 0.707101, -0.707112, 0.0, 0.707101, -0.707112, -0.707106, 0.707107, 0.0, -0.707106, 0.707107, 0.0, -0.707106, 0.707107, 0.0, 0.0, -0.707102, -0.707112, 0.0, -0.707102, -0.707112, 0.0, -0.707102, -0.707112, 0.707106, 0.707108, 0.0, 0.707106, 0.707108, 0.0, 0.707106, 0.707108, 0.0, 0.0, 0.707107, 0.707107, 0.0, 0.707107, 0.707107, 0.0, 0.707107, 0.707107, -0.707107, -0.707106, 0.0, -0.707107, -0.707106, 0.0, -0.707107, -0.707106, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, -1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, -1.0, 0.0, 1.0, 0.0, -1.0, 0.0, 0.0, 0.707107, -0.707107, 0.0, 0.0, -0.707107, 0.707107, -0.707107, 0.0, 0.707107, -0.707107, 0.0, 0.707107, -0.707107, 0.0, 0.707107, 0.707106, 0.0, -0.707107, 0.707106, 0.0, -0.707107, 0.707106, 0.0, -0.707107, -0.707106, 0.0, -0.707107, -0.707106, 0.0, -0.707107, -0.707106, 0.0, -0.707107, 0.707107, 0.0, 0.707107, 0.707107, 0.0, 0.707107, 0.707107, 0.0, 0.707107, 0.0, 0.70711, -0.707104, 0.0, 0.70711, -0.707104, 0.0, 0.70711, -0.707104, -0.707108, 0.707105, 0.0, -0.707108, 0.707105, 0.0, -0.707108, 0.707105, 0.0, 0.0, -0.70711, -0.707103, 0.0, -0.70711, -0.707103, 0.0, -0.70711, -0.707103, 0.707108, 0.707106, 0.0, 0.707108, 0.707106, 0.0, 0.707108, 0.707106, 0.0, 0.0, 0.707107, 0.707107, -0.707107, -0.707106, 0.0, 0.0, 0.0, 1.0),
|
||||
FloatArray(-1.49949e-07, 0.0, 1.0, 1.0, -1.49949e-07, 0.0, 1.0, 1.0, -1.2163e-07, 0.0, 1.0, 1.0, 0.0, -1.0, -2.82773e-07, 1.0, 0.0, -1.0, -1.73203e-08, 1.0, 0.0, -1.0, -3.00093e-07, 1.0, 4.87539e-09, -1.0, 0.0, 1.0, 2.98626e-10, -1.0, 0.0, 1.0, 5.17401e-09, -1.0, 0.0, 1.0, -6.08149e-08, 0.0, -1.0, 1.0, -6.08149e-08, 0.0, -1.0, 1.0, -1.2163e-07, 0.0, -1.0, 1.0, 0.0, -1.0, 0.0, 1.0, 0.0, -1.0, 0.0, 1.0, 0.0, -1.0, 0.0, 1.0, 4.59712e-06, 0.707102, -0.707111, 1.0, 4.59712e-06, 0.707102, -0.707111, 1.0, 4.59712e-06, 0.707102, -0.707111, 1.0, -4.60837e-06, 0.707102, 0.707111, 1.0, -4.60837e-06, 0.707102, 0.707111, 1.0, -4.60837e-06, 0.707102, 0.707111, 1.0, -0.70711, -0.707103, -4.21548e-06, 1.0, -0.70711, -0.707103, -4.21548e-06, 1.0, -0.70711, -0.707103, -4.21548e-06, 1.0, 0.707111, -0.707103, 4.43916e-06, 1.0, 0.707111, -0.707103, 4.43916e-06, 1.0, 0.707111, -0.707103, 4.43916e-06, 1.0, -8.44653e-06, 0.707111, -0.707102, 1.0, -8.44653e-06, 0.707111, -0.707102, 1.0, -8.44653e-06, 0.707111, -0.707102, 1.0, -0.707103, -0.707111, -8.42933e-06, 1.0, -0.707103, -0.707111, -8.42933e-06, 1.0, -0.707103, -0.707111, -8.42933e-06, 1.0, 0.707102, -0.707112, 4.68611e-06, 1.0, 0.707102, -0.707112, 4.68611e-06, 1.0, 0.707102, -0.707112, 4.68611e-06, 1.0, -3.90413e-06, -0.707116, 0.707098, 1.0, -3.90413e-06, -0.707116, 0.707098, 1.0, -3.90413e-06, -0.707116, 0.707098, 1.0, -1.20532e-07, -1.20532e-07, 1.0, 1.0, -1.20416e-07, -1.20416e-07, 1.0, 1.0, -1.20415e-07, -1.20415e-07, 1.0, 1.0, 8.39109e-06, 0.707107, 0.707107, 1.0, 3.82867e-08, 0.707107, 0.707107, 1.0, 0.0, 0.707107, 0.707107, 1.0, 0.0, -1.0, 0.0, 1.0, 0.0, -1.0, 0.0, 1.0, 0.0, -1.0, 0.0, 1.0, 0.0, -1.0, 0.0, 1.0, 0.0, -1.0, 0.0, 1.0, 0.0, -1.0, 0.0, 1.0, 5.17402e-09, -1.0, -5.17401e-09, 1.0, 5.17402e-09, -1.0, -5.17401e-09, 1.0, 5.17402e-09, -1.0, -5.17401e-09, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, -0.707112, -0.707101, 1.0, 0.0, -0.707112, -0.707101, 1.0, 0.0, -0.707112, -0.707101, 1.0, -1.20414e-07, -1.20413e-07, -1.0, 1.0, -1.20414e-07, -1.20413e-07, -1.0, 1.0, -1.20414e-07, -1.20413e-07, -1.0, 1.0, -8.51452e-06, -0.707112, 0.707102, 1.0, -8.51452e-06, -0.707112, 0.707102, 1.0, -8.51452e-06, -0.707112, 0.707102, 1.0, 0.0, 0.0, -1.0, 1.0, 0.0, 0.0, -1.0, 1.0, 0.0, 0.0, -1.0, 1.0, -7.73467e-08, 0.707107, -0.707107, 1.0, -1.69517e-05, 0.707107, -0.707107, 1.0, -1.7029e-05, 0.707107, -0.707107, 1.0, -1.7859e-07, 1.7859e-07, 1.0, 1.0, -1.7827e-07, 1.7827e-07, 1.0, 1.0, -1.78268e-07, 1.78268e-07, 1.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, -1.78268e-07, 0.0, 1.0, 1.0, 0.0, -1.0, 0.0, 1.0, 0.0, -1.0, 0.0, 1.0, 0.0, 0.0, -1.0, 1.0, 0.0, -1.0, 0.0, 1.0, -1.20533e-07, -1.20533e-07, 1.0, 1.0, 8.42937e-06, 0.707107, 0.707107, 1.0, 0.0, -1.0, 0.0, 1.0, 0.0, -1.0, 0.0, 1.0, 0.0, -1.0, 0.0, 1.0, 0.0, -1.0, 0.0, 1.0, 0.0, -1.0, 0.0, 1.0, 0.0, -1.0, 0.0, 1.0, 0.0, -1.0, 0.0, 1.0, 0.0, -1.0, 0.0, 1.0, 0.0, -1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, -0.707104, -0.70711, 1.0, 0.0, -0.707104, -0.70711, 1.0, 0.0, -0.707104, -0.70711, 1.0, -1.20347e-07, -1.20348e-07, -1.0, 1.0, -1.20347e-07, -1.20348e-07, -1.0, 1.0, -1.20347e-07, -1.20348e-07, -1.0, 1.0, -1.97563e-07, -0.707103, 0.70711, 1.0, -1.97563e-07, -0.707103, 0.70711, 1.0, -1.97563e-07, -0.707103, 0.70711, 1.0, -1.20534e-07, 1.20534e-07, -1.0, 1.0, -1.20534e-07, 1.20534e-07, -1.0, 1.0, -1.20534e-07, 1.20534e-07, -1.0, 1.0, 0.0, 0.707107, -0.707107, 1.0, -1.78592e-07, 1.78592e-07, 1.0, 1.0, 0.0, 1.0, 0.0, 1.0),
|
||||
null, ; no Vertex Colors,
|
||||
Vector2Array(0.00357143, 0.9975, 0.710714, 0.5025, 0.00357151, 0.5025, 0.782143, 0.9975, 0.717857, 0.5025, 0.717857, 0.9975, 0.853571, 0.9975, 0.789286, 0.5025, 0.789286, 0.9975, 0.710714, 0.0025, 0.00357142, 0.4975, 0.710714, 0.4975, 0.996429, 0.9975, 0.932143, 0.5025, 0.932143, 0.9975, 0.860714, 0.9975, 0.857143, 0.9975, 0.860714, 1.0, 0.00357143, 0.9975, 4.25747e-10, 0.9975, 0.00357142, 1.0, 0.996429, 0.5025, 1.0, 0.5025, 0.996429, 0.5, 0.932143, 0.5025, 0.932143, 0.5, 0.928572, 0.5025, 0.860714, 0.5025, 0.860714, 0.5, 0.857143, 0.5025, 0.717857, 0.5025, 0.717857, 0.5, 0.714286, 0.5025, 0.782143, 0.9975, 0.782143, 1.0, 0.785714, 0.9975, 0.710714, 0.5025, 0.714285, 0.5025, 0.710714, 0.5, 0.710714, 0.5025, 0.00357151, 0.5, 0.00357151, 0.5025, 0.00357151, 0.5025, 4.25747e-10, 0.9975, 0.00357143, 0.9975, 0.932143, 0.9975, 0.996429, 1.0, 0.996429, 0.9975, 0.853571, 0.5025, 0.789286, 0.5, 0.789286, 0.5025, 0.789286, 0.9975, 0.853571, 1.0, 0.853571, 0.9975, 0.925, 0.5025, 0.860714, 0.5, 0.860714, 0.5025, 0.00357154, 0.0025, 5.81859e-10, 0.4975, 0.00357142, 0.4975, 0.00357142, 0.4975, 0.710714, 0.5, 0.710714, 0.4975, 0.710714, 0.9975, 0.714285, 0.5025, 0.710714, 0.5025, 0.710714, 0.0025, 0.00357154, 0.0, 0.00357154, 0.0025, 0.710714, 0.4975, 0.714285, 0.00250006, 0.710714, 0.0025, 0.00357143, 0.9975, 0.710714, 1.0, 0.710714, 0.9975, 0.860714, 0.5025, 0.925, 0.9975, 0.925, 0.5025, 0.710714, 0.9975, 0.782143, 0.5025, 0.853571, 0.5025, 0.00357154, 0.0025, 0.996429, 0.5025, 0.710714, 0.5, 8.47237e-08, 0.5025, 0.932143, 0.9975, 0.932143, 1.0, 0.996429, 1.0, 0.853571, 0.5025, 0.853571, 0.5, 0.789286, 0.5, 0.789286, 0.9975, 0.789286, 1.0, 0.853571, 1.0, 0.925, 0.5025, 0.925, 0.5, 0.860714, 0.5, 0.00357154, 0.0025, 1.1579e-07, 0.0025, 5.81859e-10, 0.4975, 0.00357142, 0.4975, 0.00357142, 0.5, 0.710714, 0.5, 0.710714, 0.9975, 0.714285, 0.9975, 0.714285, 0.5025, 0.710714, 0.0025, 0.710714, 5.96046e-08, 0.00357154, 0.0, 0.714285, 0.4975, 0.00357142, 1.0, 0.860714, 0.9975),
|
||||
null, ; No UV2,
|
||||
null, ; No Bones,
|
||||
null, ; No Weights,
|
||||
IntArray(0, 2, 1, 3, 5, 4, 6, 8, 7, 9, 11, 10, 12, 14, 13, 15, 17, 16, 18, 20, 19, 21, 23, 22, 24, 26, 25, 27, 29, 28, 30, 32, 31, 33, 35, 34, 36, 38, 37, 39, 41, 40, 42, 44, 43, 45, 47, 46, 48, 50, 49, 51, 53, 52, 54, 56, 55, 57, 59, 58, 60, 62, 61, 63, 65, 64, 66, 68, 67, 69, 71, 70, 72, 74, 73, 75, 77, 76, 0, 1, 78, 3, 4, 79, 6, 7, 80, 9, 10, 81, 12, 13, 82, 39, 40, 83, 42, 43, 84, 85, 87, 86, 88, 90, 89, 91, 93, 92, 94, 96, 95, 97, 99, 98, 100, 102, 101, 103, 105, 104, 106, 108, 107, 69, 70, 109, 72, 73, 110, 75, 76, 111)
|
||||
],
|
||||
"morph_arrays":[]
|
||||
}
|
||||
|
||||
[node type="Spatial" name="Scene"]
|
||||
|
||||
[node name="floor" type="MeshInstance" parent="."]
|
||||
|
||||
mesh = SubResource(3)
|
||||
visible = true
|
||||
transform = Transform(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0)
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user