Some checks failed
API contract / OpenAPI type drift (push) Has been cancelled
- ClientAvatar가 리그 레지스트리(v3/rigs)로 P1을 판정해 그림 영역을 ClientAvatarV3로 그린다(로드 중·실패 시 기존 SVG, VITE_AVATAR_V3=0이면 끔) - 발화 구동 공용 모듈 speechDriver: Lab과 세션이 함께 쓰고, TTS AudioBuffer를 오디오 시계로 표본해 립싱크·발화 동반층·지문 cue를 돌린다 - Session: TTS 재생 시작 시 발화(원문·버퍼·시작 시각) 전달, 음성 실패 시 텍스트 타이밍 발화, 정지 경로에서 해제, 개방도·겉표정 강도 전달 - 정지 화면(시작 전·썸네일)도 한 프레임을 그리고, 박스 실측 폭으로 상반신/얼굴 크롭을 고른다 - 세션 발화 E2E(오디오·실패 경로), P1 레이아웃 게이트, P1 표정 시험을 v3 기대로 갱신
16 lines
803 B
TypeScript
16 lines
803 B
TypeScript
/* =====================================================================
|
|
아바타 v3 리그 레지스트리 — 결정문 §8.5 "분기". 페르소나 코드 → 리노컷
|
|
리그. 지금은 P1만 있고 나머지는 null(기존 SVG로 남는다). 빌드 플래그
|
|
VITE_AVATAR_V3=0 이면 항상 null(기본은 켜짐).
|
|
===================================================================== */
|
|
|
|
import type { LinocutRig } from "../linocutRig";
|
|
import { P1_LINOCUT_RIG } from "./p1Rig";
|
|
|
|
const LINOCUT_RIGS: Partial<Record<string, LinocutRig>> = { P1: P1_LINOCUT_RIG };
|
|
|
|
export function linocutRigFor(code: string | null | undefined): LinocutRig | null {
|
|
if (import.meta.env.VITE_AVATAR_V3 === "0") return null;
|
|
if (!code) return null;
|
|
return LINOCUT_RIGS[code.toUpperCase()] ?? null;
|
|
}
|