Implement playable Mac client and rendering validation

This commit is contained in:
shen
2026-09-11 14:58:22 +08:00
parent 1ab68bd06e
commit 374d4165d8
233 changed files with 6546 additions and 284 deletions
+31
View File
@@ -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