Moved VoxelType to its own file and renamed block.gd => block_node.gd

master
Marc Gilleron 2016-04-27 03:33:03 +02:00
parent 3d97573449
commit 8c3d6e4c4e
6 changed files with 311 additions and 480 deletions

View File

@ -1,53 +1,2 @@
extends MeshInstance
var voxel_map = null
var _normal_material = null
var _spawn_material = null
var _normal_pos = Vector3(0,0,0)
var _anim_time = 0
func _ready():
pass
func spawn():
# _spawn_material = FixedMaterial.new()
# _spawn_material.set_texture(FixedMaterial.PARAM_DIFFUSE, voxel_map.material.get_texture(FixedMaterial.PARAM_DIFFUSE))
# _spawn_material.set_parameter(FixedMaterial.PARAM_DIFFUSE, Color(1,1,1,0.5))
# _spawn_material.set_flag(FixedMaterial.FLAG_USE_ALPHA, true)
#_spawn_material.set_blend_mode(Material.BLEND_MODE_MIX)
#set_material_override(_spawn_material)
#set_material_override(voxel_map.material)
_normal_pos = get_translation()
set_process(true)
func _process(delta):
_anim_time += delta
var k = _anim_time
if k < 1.0:
var pos = _normal_pos
pos.y -= (1-k)*(1-k) * 64.0
set_translation(pos)
else:
set_translation(_normal_pos)
set_process(false)
# var color = _spawn_material.get_parameter(FixedMaterial.PARAM_DIFFUSE)
# if color.a < 1.0:
# color.a += (0.1*delta)
# if color.a >= 1.0:
# set_material_override(voxel_map.material)
# set_process(false)
# _spawn_material = null
# else:
# color.r = color.a
# color.g = color.a
# color.b = color.a
# _spawn_material.set_parameter(FixedMaterial.PARAM_DIFFUSE, color)

View File

@ -1,6 +1,7 @@
[gd_scene load_steps=2 format=1]
[ext_resource path="res://block.gd" type="Script" id=1]
[ext_resource path="res://block_node.gd" type="Script" id=1]
[node name="Block" type="MeshInstance"]

53
block_node.gd Normal file
View File

@ -0,0 +1,53 @@
extends MeshInstance
var voxel_map = null
var _normal_material = null
var _spawn_material = null
var _normal_pos = Vector3(0,0,0)
var _anim_time = 0
func _ready():
pass
func spawn():
# _spawn_material = FixedMaterial.new()
# _spawn_material.set_texture(FixedMaterial.PARAM_DIFFUSE, voxel_map.material.get_texture(FixedMaterial.PARAM_DIFFUSE))
# _spawn_material.set_parameter(FixedMaterial.PARAM_DIFFUSE, Color(1,1,1,0.5))
# _spawn_material.set_flag(FixedMaterial.FLAG_USE_ALPHA, true)
#_spawn_material.set_blend_mode(Material.BLEND_MODE_MIX)
#set_material_override(_spawn_material)
#set_material_override(voxel_map.material)
_normal_pos = get_translation()
set_process(true)
func _process(delta):
_anim_time += delta
var k = _anim_time
if k < 1.0:
var pos = _normal_pos
pos.y -= (1-k)*(1-k) * 64.0
set_translation(pos)
else:
set_translation(_normal_pos)
set_process(false)
# var color = _spawn_material.get_parameter(FixedMaterial.PARAM_DIFFUSE)
# if color.a < 1.0:
# color.a += (0.1*delta)
# if color.a >= 1.0:
# set_material_override(voxel_map.material)
# set_process(false)
# _spawn_material = null
# else:
# color.r = color.a
# color.g = color.a
# color.b = color.a
# _spawn_material.set_parameter(FixedMaterial.PARAM_DIFFUSE, color)

View File

@ -2,14 +2,6 @@
extends Node
const BLOCK_SIZE = 16
const SIDE_LEFT = 0
const SIDE_RIGHT = 1
const SIDE_BOTTOM = 2
const SIDE_TOP = 3
const SIDE_BACK = 4
const SIDE_FRONT = 5
const SORT_TIME = 1
const TILE_SIZE = 16
@ -19,6 +11,8 @@ var min_y = -2
var max_y = 2
var view_radius = 8
var VoxelType = preload("voxel_type.gd")
var _side_normals = [
Vector3(-1,0,0),
Vector3(1,0,0),
@ -120,242 +114,6 @@ class BlockRequest:
# line[x] = 0
class VoxelType:
const GEOM_EMPTY = 0
const GEOM_CUBE = 1
const GEOM_XQUAD = 2
const GEOM_MODEL = 3
const GEOM_LIQUID = 4
var id = 0
var name = "default"
var cube_side_uv4 = []
var is_transparent = false
var geom_type = GEOM_CUBE
# Mesh that will always be included in the voxel
var model_vertices = []
var model_uv = []
# Parts of the mesh that will appear only if connected sides are transparent
var model_side_vertices = []
var model_side_uv = []
var model_normals = []
func _init(id, name):
self.id = id
self.name = name
cube_side_uv4.resize(6)
set_all_atlas_pos(Vector2(0,0))
func set_side_atlas_pos(side, pos):
var s = 1.0 / 4.0
# Apply a tiny padding to avoid tiling artefacts
var e = 0.001
cube_side_uv4[side] = [
s * (pos + Vector2(e,e)),
s * (pos + Vector2(1-e,e)),
s * (pos + Vector2(e,1-e)),
s * (pos + Vector2(1-e,1-e))
]
return self
func set_all_atlas_pos(pos):
for i in range(0, 6):
set_side_atlas_pos(i, pos)
return self
func set_tbs_atlas_pos(top_pos, bottom_pos, sides_pos):
set_side_atlas_pos(SIDE_LEFT, sides_pos)
set_side_atlas_pos(SIDE_RIGHT, sides_pos)
set_side_atlas_pos(SIDE_FRONT, sides_pos)
set_side_atlas_pos(SIDE_BACK, sides_pos)
set_side_atlas_pos(SIDE_TOP, top_pos)
set_side_atlas_pos(SIDE_BOTTOM, bottom_pos)
return self
func set_geom(g):
geom_type = g
return self
func set_transparent(trans):
is_transparent = trans
return self
func compile():
if geom_type == GEOM_CUBE:
model_side_vertices = _make_cube_vertex_offsets()
model_side_uv = _make_cube_side_uv6(cube_side_uv4)
elif geom_type == GEOM_LIQUID:
model_side_vertices = _make_cube_vertex_offsets(15.0 / 16.0)
model_side_uv = _make_cube_side_uv6(cube_side_uv4)
elif geom_type == GEOM_XQUAD:
var uv = cube_side_uv4
model_uv = [
uv[0][2],
uv[0][0],
uv[0][1],
uv[0][2],
uv[0][1],
uv[0][3],
uv[0][3],
uv[0][2],
uv[0][1],
uv[0][2],
uv[0][0],
uv[0][1]
]
model_vertices = [
Vector3(0,0,0),
Vector3(0,1,0),
Vector3(1,1,1),
Vector3(0,0,0),
Vector3(1,1,1),
Vector3(1,0,1),
Vector3(1,0,0),
Vector3(0,0,1),
Vector3(1,1,0),
Vector3(0,0,1),
Vector3(0,1,1),
Vector3(1,1,0)
]
model_normals = [
Vector3(-0.7, 0.0, 0.7),
Vector3(-0.7, 0.0, 0.7),
Vector3(-0.7, 0.0, 0.7),
Vector3(-0.7, 0.0, 0.7),
Vector3(-0.7, 0.0, 0.7),
Vector3(-0.7, 0.0, 0.7),
Vector3(0.7, 0.0, 0.7),
Vector3(0.7, 0.0, 0.7),
Vector3(0.7, 0.0, 0.7),
Vector3(0.7, 0.0, 0.7),
Vector3(0.7, 0.0, 0.7),
Vector3(0.7, 0.0, 0.7)
]
else:
print("Unknown voxel geometry type")
static func _make_cube_vertex_offsets(sy=1):
var a = [
[
# LEFT
Vector3(0,0,0),
Vector3(0,sy,0),
Vector3(0,sy,1),
Vector3(0,0,0),
Vector3(0,sy,1),
Vector3(0,0,1),
],
[
# RIGHT
Vector3(1,0,0),
Vector3(1,sy,1),
Vector3(1,sy,0),
Vector3(1,0,0),
Vector3(1,0,1),
Vector3(1,sy,1)
],
[
# BOTTOM
Vector3(0,0,0),
Vector3(1,0,1),
Vector3(1,0,0),
Vector3(0,0,0),
Vector3(0,0,1),
Vector3(1,0,1)
],
[
# TOP
Vector3(0,sy,0),
Vector3(1,sy,0),
Vector3(1,sy,1),
Vector3(0,sy,0),
Vector3(1,sy,1),
Vector3(0,sy,1)
],
[
# BACK
Vector3(0,0,0),
Vector3(1,0,0),
Vector3(1,sy,0),
Vector3(0,0,0),
Vector3(1,sy,0),
Vector3(0,sy,0),
],
[
# FRONT
Vector3(1,0,1),
Vector3(0,0,1),
Vector3(1,sy,1),
Vector3(0,0,1),
Vector3(0,sy,1),
Vector3(1,sy,1)
]
]
return a
static func _make_cube_side_uv6(sides_uv4):
var uvs = sides_uv4
var uv6 = [
[
uvs[SIDE_LEFT][2],
uvs[SIDE_LEFT][0],
uvs[SIDE_LEFT][1],
uvs[SIDE_LEFT][2],
uvs[SIDE_LEFT][1],
uvs[SIDE_LEFT][3]
],
[
uvs[SIDE_RIGHT][2],
uvs[SIDE_RIGHT][1],
uvs[SIDE_RIGHT][0],
uvs[SIDE_RIGHT][2],
uvs[SIDE_RIGHT][3],
uvs[SIDE_RIGHT][1]
],
[
uvs[SIDE_BOTTOM][0],
uvs[SIDE_BOTTOM][3],
uvs[SIDE_BOTTOM][1],
uvs[SIDE_BOTTOM][0],
uvs[SIDE_BOTTOM][2],
uvs[SIDE_BOTTOM][3]
],
[
uvs[SIDE_TOP][0],
uvs[SIDE_TOP][1],
uvs[SIDE_TOP][3],
uvs[SIDE_TOP][0],
uvs[SIDE_TOP][3],
uvs[SIDE_TOP][2]
],
[
uvs[SIDE_BACK][2],
uvs[SIDE_BACK][3],
uvs[SIDE_BACK][1],
uvs[SIDE_BACK][2],
uvs[SIDE_BACK][1],
uvs[SIDE_BACK][0]
],
[
uvs[SIDE_FRONT][3],
uvs[SIDE_FRONT][2],
uvs[SIDE_FRONT][1],
uvs[SIDE_FRONT][2],
uvs[SIDE_FRONT][0],
uvs[SIDE_FRONT][1]
],
]
return uv6
func _ready():
_camera = get_parent().get_node("Camera")
@ -638,7 +396,7 @@ func generate_random(cubes, offset):
cubes[z][y][x] = air
return empty
func _is_face_visible(vt, other_vt):
return other_vt.id == 0 or (other_vt.is_transparent and other_vt != vt)
@ -687,28 +445,7 @@ func make_mesh(cubes, st_solid, st_transparent):
st.add_uv(uvs[vi])
st.add_normal(normals[vi])
st.add_vertex(pos + vertices[vi])
# elif voxel_type.geom_type == VoxelType.GEOM_XQUAD:
# var pos = Vector3(x,y,z)-Vector3(1,1,1)
# pos.x += rand_range(-0.15, 0.15)
# pos.z += rand_range(-0.15, 0.15)
# var uvs = voxel_type.cube_side_uv4[0]
#
# st.add_normal(Vector3(-0.7,0,0.7))
# st.add_uv(uvs[2]); st.add_vertex(pos)
# st.add_uv(uvs[0]); st.add_vertex(pos+Vector3(0,1,0))
# st.add_uv(uvs[1]); st.add_vertex(pos+Vector3(1,1,1))
# st.add_uv(uvs[2]); st.add_vertex(pos)
# st.add_uv(uvs[1]); st.add_vertex(pos+Vector3(1,1,1))
# st.add_uv(uvs[3]); st.add_vertex(pos+Vector3(1,0,1))
#
# st.add_normal(Vector3(0.7,0,0.7))
# st.add_uv(uvs[3]); st.add_vertex(pos+Vector3(1,0,0))
# st.add_uv(uvs[2]); st.add_vertex(pos+Vector3(0,0,1))
# st.add_uv(uvs[1]); st.add_vertex(pos+Vector3(1,1,0))
# st.add_uv(uvs[2]); st.add_vertex(pos+Vector3(0,0,1))
# st.add_uv(uvs[0]); st.add_vertex(pos+Vector3(0,1,1))
# st.add_uv(uvs[1]); st.add_vertex(pos+Vector3(1,1,0))

View File

@ -1,9 +1,8 @@
[gd_scene load_steps=10 format=1]
[gd_scene load_steps=7 format=1]
[ext_resource path="res://debug_camera.gd" type="Script" id=1]
[ext_resource path="res://generator.gd" type="Script" id=2]
[ext_resource path="res://terrain.png" type="Texture" id=3]
[ext_resource path="res://block.gd" type="Script" id=4]
[sub_resource type="FixedMaterial" id=1]
@ -81,44 +80,7 @@ textures/glow_tc = 0
textures/normal_tc = 0
textures/shade_param_tc = 0
[sub_resource type="FixedMaterial" id=3]
flags/visible = true
flags/double_sided = false
flags/invert_faces = false
flags/unshaded = false
flags/on_top = false
flags/lightmap_on_uv2 = true
flags/colarray_is_srgb = true
params/blend_mode = 0
params/depth_draw = 1
params/line_width = 1.0
fixed_flags/use_alpha = false
fixed_flags/use_color_array = false
fixed_flags/use_point_size = false
fixed_flags/discard_alpha = false
fixed_flags/use_xy_normalmap = false
params/diffuse = Color( 1, 1, 1, 1 )
params/specular = Color( 0, 0, 0, 1 )
params/emission = Color( 0, 0, 0, 1 )
params/specular_exp = 40
params/detail_mix = 1.0
params/normal_depth = 1
params/shader = 0
params/shader_param = 0.5
params/glow = 0
params/point_size = 1.0
uv_xform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )
textures/diffuse_tc = 0
textures/detail_tc = 0
textures/specular_tc = 0
textures/emission_tc = 0
textures/specular_exp_tc = 0
textures/glow_tc = 0
textures/normal_tc = 0
textures/shade_param_tc = 0
[sub_resource type="Environment" id=4]
[sub_resource type="Environment" id=3]
ambient_light/enabled = true
ambient_light/color = Color( 0.378906, 0.378906, 0.378906, 1 )
@ -162,22 +124,12 @@ bcs/contrast = 1.0
bcs/saturation = 1.0
srgb/enabled = false
[sub_resource type="Animation" id=5]
length = 1.0
loop = false
step = 0.1
tracks/0/type = "value"
tracks/0/path = NodePath(".")
tracks/0/interp = 1
tracks/0/keys = { "cont":true, "times":FloatArray( ), "transitions":FloatArray( ), "values":[ ] }
[node name="Node" type="Node"]
[node name="Camera" type="Camera" parent="."]
_import_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )
transform/local = Transform( 0.815509, -0.351713, 0.459612, 0, 0.794154, 0.607717, -0.578744, -0.495599, 0.64764, 18.1809, 22.9505, 25.3826 )
transform/local = Transform( 0.815509, -0.351713, 0.459612, 0, 0.794154, 0.607717, -0.578744, -0.495599, 0.64764, 18.1809, 4.88061, 25.3826 )
projection = 0
fov = 80.0
near = 0.1
@ -189,6 +141,7 @@ environment = null
h_offset = 0.0
v_offset = 0.0
script/script = ExtResource( 1 )
__meta__ = { "_editor_collapsed":true }
sensitivity = 0.4
min_angle = -90
max_angle = 90
@ -261,125 +214,16 @@ phase_2/color = Color( 0, 0, 0, 1 )
phase_3/pos = 1.0
phase_3/color = Color( 0, 0, 0, 1 )
[node name="TestCube" type="TestCube" parent="."]
_import_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )
transform/local = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -3.63175, 0, 0 )
layers = 1
geometry/visible = true
geometry/material_override = null
geometry/cast_shadow = true
geometry/receive_shadows = true
geometry/range_begin = 0.0
geometry/range_end = 0.0
geometry/extra_cull_margin = 0.0
geometry/billboard = false
geometry/billboard_y = false
geometry/depth_scale = false
geometry/visible_in_all_rooms = false
geometry/use_baked_light = false
geometry/baked_light_tex_id = 0
[node name="TestCube1" type="TestCube" parent="."]
_import_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )
transform/local = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -3.63175, 0, 2.12836 )
layers = 1
geometry/visible = true
geometry/material_override = null
geometry/cast_shadow = true
geometry/receive_shadows = true
geometry/range_begin = 0.0
geometry/range_end = 0.0
geometry/extra_cull_margin = 0.0
geometry/billboard = false
geometry/billboard_y = false
geometry/depth_scale = false
geometry/visible_in_all_rooms = false
geometry/use_baked_light = false
geometry/baked_light_tex_id = 0
[node name="TestCube2" type="TestCube" parent="."]
_import_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )
transform/local = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -1.39143, 0, 0 )
layers = 1
geometry/visible = true
geometry/material_override = null
geometry/cast_shadow = true
geometry/receive_shadows = true
geometry/range_begin = 0.0
geometry/range_end = 0.0
geometry/extra_cull_margin = 0.0
geometry/billboard = false
geometry/billboard_y = false
geometry/depth_scale = false
geometry/visible_in_all_rooms = false
geometry/use_baked_light = false
geometry/baked_light_tex_id = 0
[node name="TestCube3" type="TestCube" parent="."]
_import_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )
transform/local = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -3.63175, 2.18131, 0 )
layers = 1
geometry/visible = true
geometry/material_override = null
geometry/cast_shadow = true
geometry/receive_shadows = true
geometry/range_begin = 0.0
geometry/range_end = 0.0
geometry/extra_cull_margin = 0.0
geometry/billboard = false
geometry/billboard_y = false
geometry/depth_scale = false
geometry/visible_in_all_rooms = false
geometry/use_baked_light = false
geometry/baked_light_tex_id = 0
[node name="VoxelMap" type="Node" parent="."]
script/script = ExtResource( 2 )
material = SubResource( 1 )
transparent_material = SubResource( 2 )
[node name="Block" type="MeshInstance" parent="."]
_import_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )
visibility/visible = false
layers = 1
geometry/visible = true
geometry/material_override = SubResource( 3 )
geometry/cast_shadow = true
geometry/receive_shadows = true
geometry/range_begin = 0.0
geometry/range_end = 0.0
geometry/extra_cull_margin = 0.0
geometry/billboard = false
geometry/billboard_y = false
geometry/depth_scale = false
geometry/visible_in_all_rooms = false
geometry/use_baked_light = false
geometry/baked_light_tex_id = 0
mesh/mesh = null
mesh/skeleton = NodePath("..")
script/script = ExtResource( 4 )
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
_import_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )
environment = SubResource( 4 )
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
playback/process_mode = 1
playback/default_blend_time = 0.0
root/root = NodePath("..")
anims/NewAnim = SubResource( 5 )
playback/active = true
playback/speed = 1.0
blend_times = [ ]
autoplay = ""
environment = SubResource( 3 )
[node name="DirectionalLight" type="DirectionalLight" parent="."]

247
voxel_type.gd Normal file
View File

@ -0,0 +1,247 @@
# TODO Move this to VoxelMap
# Still here, because accessing constants from another script don't work... (issue 4457)
const ATLAS_SIZE = 4
const SIDE_LEFT = 0
const SIDE_RIGHT = 1
const SIDE_BOTTOM = 2
const SIDE_TOP = 3
const SIDE_BACK = 4
const SIDE_FRONT = 5
const GEOM_EMPTY = 0
const GEOM_CUBE = 1
const GEOM_XQUAD = 2
const GEOM_MODEL = 3
const GEOM_LIQUID = 4
var id = 0
var name = "default"
var cube_side_uv4 = []
var is_transparent = false
var geom_type = GEOM_CUBE
# Mesh that will always be included in the voxel
var model_vertices = []
var model_uv = []
# Parts of the mesh that will appear only if connected sides are transparent
var model_side_vertices = []
var model_side_uv = []
var model_normals = []
func _init(id, name):
self.id = id
self.name = name
cube_side_uv4.resize(6)
set_all_atlas_pos(Vector2(0,0))
func set_side_atlas_pos(side, pos):
var s = 1.0 / float(ATLAS_SIZE)
# Apply a tiny padding to avoid tiling artefacts
var e = 0.001
cube_side_uv4[side] = [
s * (pos + Vector2(e,e)),
s * (pos + Vector2(1-e,e)),
s * (pos + Vector2(e,1-e)),
s * (pos + Vector2(1-e,1-e))
]
return self
func set_all_atlas_pos(pos):
for i in range(0, 6):
set_side_atlas_pos(i, pos)
return self
func set_tbs_atlas_pos(top_pos, bottom_pos, sides_pos):
set_side_atlas_pos(SIDE_LEFT, sides_pos)
set_side_atlas_pos(SIDE_RIGHT, sides_pos)
set_side_atlas_pos(SIDE_FRONT, sides_pos)
set_side_atlas_pos(SIDE_BACK, sides_pos)
set_side_atlas_pos(SIDE_TOP, top_pos)
set_side_atlas_pos(SIDE_BOTTOM, bottom_pos)
return self
func set_geom(g):
geom_type = g
return self
func set_transparent(trans):
is_transparent = trans
return self
func compile():
if geom_type == GEOM_CUBE:
model_side_vertices = _make_cube_vertex_offsets()
model_side_uv = _make_cube_side_uv6(cube_side_uv4)
elif geom_type == GEOM_LIQUID:
model_side_vertices = _make_cube_vertex_offsets(15.0 / 16.0)
model_side_uv = _make_cube_side_uv6(cube_side_uv4)
elif geom_type == GEOM_XQUAD:
var uv = cube_side_uv4
model_uv = [
uv[0][2],
uv[0][0],
uv[0][1],
uv[0][2],
uv[0][1],
uv[0][3],
uv[0][3],
uv[0][2],
uv[0][1],
uv[0][2],
uv[0][0],
uv[0][1]
]
model_vertices = [
Vector3(0,0,0),
Vector3(0,1,0),
Vector3(1,1,1),
Vector3(0,0,0),
Vector3(1,1,1),
Vector3(1,0,1),
Vector3(1,0,0),
Vector3(0,0,1),
Vector3(1,1,0),
Vector3(0,0,1),
Vector3(0,1,1),
Vector3(1,1,0)
]
model_normals = [
Vector3(-0.7, 0.0, 0.7),
Vector3(-0.7, 0.0, 0.7),
Vector3(-0.7, 0.0, 0.7),
Vector3(-0.7, 0.0, 0.7),
Vector3(-0.7, 0.0, 0.7),
Vector3(-0.7, 0.0, 0.7),
Vector3(0.7, 0.0, 0.7),
Vector3(0.7, 0.0, 0.7),
Vector3(0.7, 0.0, 0.7),
Vector3(0.7, 0.0, 0.7),
Vector3(0.7, 0.0, 0.7),
Vector3(0.7, 0.0, 0.7)
]
else:
print("Unknown voxel geometry type")
static func _make_cube_vertex_offsets(sy=1):
var a = [
[
# LEFT
Vector3(0,0,0),
Vector3(0,sy,0),
Vector3(0,sy,1),
Vector3(0,0,0),
Vector3(0,sy,1),
Vector3(0,0,1),
],
[
# RIGHT
Vector3(1,0,0),
Vector3(1,sy,1),
Vector3(1,sy,0),
Vector3(1,0,0),
Vector3(1,0,1),
Vector3(1,sy,1)
],
[
# BOTTOM
Vector3(0,0,0),
Vector3(1,0,1),
Vector3(1,0,0),
Vector3(0,0,0),
Vector3(0,0,1),
Vector3(1,0,1)
],
[
# TOP
Vector3(0,sy,0),
Vector3(1,sy,0),
Vector3(1,sy,1),
Vector3(0,sy,0),
Vector3(1,sy,1),
Vector3(0,sy,1)
],
[
# BACK
Vector3(0,0,0),
Vector3(1,0,0),
Vector3(1,sy,0),
Vector3(0,0,0),
Vector3(1,sy,0),
Vector3(0,sy,0),
],
[
# FRONT
Vector3(1,0,1),
Vector3(0,0,1),
Vector3(1,sy,1),
Vector3(0,0,1),
Vector3(0,sy,1),
Vector3(1,sy,1)
]
]
return a
static func _make_cube_side_uv6(sides_uv4):
var uvs = sides_uv4
var uv6 = [
[
uvs[SIDE_LEFT][2],
uvs[SIDE_LEFT][0],
uvs[SIDE_LEFT][1],
uvs[SIDE_LEFT][2],
uvs[SIDE_LEFT][1],
uvs[SIDE_LEFT][3]
],
[
uvs[SIDE_RIGHT][2],
uvs[SIDE_RIGHT][1],
uvs[SIDE_RIGHT][0],
uvs[SIDE_RIGHT][2],
uvs[SIDE_RIGHT][3],
uvs[SIDE_RIGHT][1]
],
[
uvs[SIDE_BOTTOM][0],
uvs[SIDE_BOTTOM][3],
uvs[SIDE_BOTTOM][1],
uvs[SIDE_BOTTOM][0],
uvs[SIDE_BOTTOM][2],
uvs[SIDE_BOTTOM][3]
],
[
uvs[SIDE_TOP][0],
uvs[SIDE_TOP][1],
uvs[SIDE_TOP][3],
uvs[SIDE_TOP][0],
uvs[SIDE_TOP][3],
uvs[SIDE_TOP][2]
],
[
uvs[SIDE_BACK][2],
uvs[SIDE_BACK][3],
uvs[SIDE_BACK][1],
uvs[SIDE_BACK][2],
uvs[SIDE_BACK][1],
uvs[SIDE_BACK][0]
],
[
uvs[SIDE_FRONT][3],
uvs[SIDE_FRONT][2],
uvs[SIDE_FRONT][1],
uvs[SIDE_FRONT][2],
uvs[SIDE_FRONT][0],
uvs[SIDE_FRONT][1]
],
]
return uv6