Memoji character (11 expressions) on the engine's motion; Claude limit shows time to reset; ChatGPT weekly limit from Codex logs

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
maksarsanjeev
2026-10-06 22:16:53 +03:00
parent 8a8dd98e06
commit fbf90fd4fb
23 changed files with 358 additions and 89 deletions
+9 -16
View File
@@ -24,6 +24,7 @@ struct DesktopBotView: View {
@ObservedObject var appState: AppState
/// Engine owned by DesktopMochiController; controller calls methods on it directly.
let engine: BotEngine
@State private var fader = MemojiFader()
@ObservedObject var viewState: DesktopBotViewState
var body: some View {
@@ -59,23 +60,15 @@ struct DesktopBotView: View {
var c = ctx
engine.applyDance(&c, size: size)
// Rigid roll when outfit is present (matches BotCanvasView)
if engine.outfit != .none && engine.outfitPresence > 0.05 && abs(engine.roll) > 0.001 {
let center = engine.bodyCenter(size: size)
var rigidCtx = c
rigidCtx.translateBy(x: center.x, y: center.y)
rigidCtx.rotate(by: .radians(engine.roll))
rigidCtx.translateBy(x: -center.x, y: -center.y)
engine.drawHandsBehind(context: rigidCtx, size: size)
engine.drawOutfitBehind(context: rigidCtx, size: size)
engine.draw(context: rigidCtx, size: size)
engine.drawOutfitFront(context: rigidCtx, size: size)
} else {
engine.drawHandsBehind(context: c, size: size)
engine.drawOutfitBehind(context: c, size: size)
engine.draw(context: c, size: size)
engine.drawOutfitFront(context: c, size: size)
// BroV: the Memoji is the character. The engine's box (file upload morph)
// fades in only while morphing; hands and outfits are not drawn.
if engine.morph > 0.02 {
var boxCtx = c
boxCtx.opacity = Double(min(1, engine.morph * 2))
engine.draw(context: boxCtx, size: size)
}
engine.drawMemoji(context: c, size: size, fader: fader,
opacity: Double(max(0, 1 - engine.morph * 2)))
engine.drawHandsAndExtras(context: c, size: size)
}
}