Expand per-part fur customization

Load authored pattern masks by body component, add custom fur colors and the themed picker UI, and advance the signed profile protocol to version 6.
This commit is contained in:
Alexander Sellite 2026-08-15 14:27:53 -04:00
parent 64c2acb773
commit 84695c473b
27 changed files with 1337 additions and 327 deletions

View file

@ -1,7 +1,7 @@
class_name NetworkProtocol
extends RefCounted
const PROTOCOL_VERSION: int = 5
const PROTOCOL_VERSION: int = 6
const GAME_BUILD: String = "prealpha"
const MAX_GAME_VERSION_LENGTH: int = 64
const MAX_DISPLAY_NAME_LENGTH: int = 24
@ -256,30 +256,17 @@ static func validate_client_hello(data: Variant) -> String:
static func client_profile_fields(data: Dictionary) -> Array:
var appearance: Dictionary = data.get("cosmetic_snapshot", {})
return [
var result: Array = [
str(data.get("game_version", "")),
str(data.get("client_nonce", "")),
str(data.get("identity_fingerprint", "")),
str(data.get("local_profile_id", "")),
str(data.get("display_name", "")),
str(appearance.get("species", "")),
CharacterCustomizationCatalog.character_scale_percent(
appearance.get(
CharacterCustomizationCatalog.SCALE_CATEGORY_ID,
CharacterCustomizationCatalog.DEFAULT_CHARACTER_SCALE,
)
),
str(appearance.get("fur_pattern", "")),
str(appearance.get("fur_style", "")),
str(appearance.get("fur_color_2", "")),
str(appearance.get("fur_color_3", "")),
str(appearance.get("fur_color_4", "")),
str(appearance.get("ears", "")),
str(appearance.get("eyes", "")),
str(appearance.get("nose", "")),
str(appearance.get("mouth", "")),
str(appearance.get("tail", "")),
]
result.append_array(
CharacterCustomizationCatalog.appearance_signature_values(appearance)
)
return result
static func make_server_hello(