Implement playable Mac client and rendering validation
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
# EffectLib TwoSideRenderer / ThreeSideRenderer angles, carried per face in UV2.
|
||||
# One particle simulation drives every face (no independent emitter randomness).
|
||||
extends RefCounted
|
||||
|
||||
static func build(size: Vector2, billboard: int) -> Mesh:
|
||||
if billboard not in [4, 5]:
|
||||
var quad := QuadMesh.new()
|
||||
quad.size = size
|
||||
return quad
|
||||
var angles := [-30.0, 30.0] if billboard == 4 else [0.0, -60.0, 60.0]
|
||||
var vertices := PackedVector3Array()
|
||||
var normals := PackedVector3Array()
|
||||
var uv := PackedVector2Array()
|
||||
var uv2 := PackedVector2Array()
|
||||
var corners := [Vector2(0, 0), Vector2(0, 1), Vector2(1, 1),
|
||||
Vector2(0, 0), Vector2(1, 1), Vector2(1, 0)]
|
||||
for angle in angles:
|
||||
for corner in corners:
|
||||
vertices.append(Vector3((corner.x - 0.5) * size.x, (0.5 - corner.y) * size.y, 0))
|
||||
normals.append(Vector3(0, 0, 1))
|
||||
uv.append(corner)
|
||||
uv2.append(Vector2(deg_to_rad(angle), 0))
|
||||
var arrays := []
|
||||
arrays.resize(Mesh.ARRAY_MAX)
|
||||
arrays[Mesh.ARRAY_VERTEX] = vertices
|
||||
arrays[Mesh.ARRAY_NORMAL] = normals
|
||||
arrays[Mesh.ARRAY_TEX_UV] = uv
|
||||
arrays[Mesh.ARRAY_TEX_UV2] = uv2
|
||||
var mesh := ArrayMesh.new()
|
||||
mesh.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, arrays)
|
||||
return mesh
|
||||
Reference in New Issue
Block a user