feat(launcher): AV-Live-Body row dans menubar
Ajoute une ProcessRow AV-Live-Body toujours visible dans le menubar (sauf en mode bodyMesh ou la ligne est deja affichee). L'utilisateur peut maintenant lancer la fenetre RealityKit a la demande depuis n'importe quel mode pour acceder au panel de reglages visuels (touche S). Le guard 'useMultiHMR' dans startBodyApp est supprime : sans worker Multi-HMR la fenetre affichera juste la cam et un fond vide pour le mesh, mais le panel reste utilisable pour tester les sliders / toggles.
This commit is contained in:
@@ -74,15 +74,6 @@ struct MenuBarContent: View {
|
||||
.toggleStyle(.switch)
|
||||
.font(.caption)
|
||||
.padding(.horizontal, 4)
|
||||
if processManager.bodyAppRunning {
|
||||
ProcessRow(
|
||||
title: "AV-Live-Body",
|
||||
subtitle: "RealityKit SMPL-X mesh renderer",
|
||||
isRunning: true,
|
||||
start: processManager.startBodyApp,
|
||||
stop: processManager.stopBodyApp
|
||||
)
|
||||
}
|
||||
} else {
|
||||
ProcessRow(
|
||||
title: "Oscilloscope",
|
||||
@@ -114,6 +105,19 @@ struct MenuBarContent: View {
|
||||
stop: processManager.stopDataFeeds
|
||||
)
|
||||
|
||||
// AV-Live-Body — toujours disponible, lancable a la demande
|
||||
// depuis n'importe quel mode (le worker Multi-HMR doit tourner
|
||||
// pour qu'il recoive des vertices, sinon fenetre vide).
|
||||
if processManager.mode != .bodyMesh {
|
||||
ProcessRow(
|
||||
title: "AV-Live-Body",
|
||||
subtitle: "RealityKit mesh + cam (touche S = panel)",
|
||||
isRunning: processManager.bodyAppRunning,
|
||||
start: processManager.startBodyApp,
|
||||
stop: processManager.stopBodyApp
|
||||
)
|
||||
}
|
||||
|
||||
if processManager.mode == .full {
|
||||
HStack {
|
||||
Button(action: processManager.openBrowser) {
|
||||
|
||||
@@ -690,7 +690,9 @@ final class ProcessManager: ObservableObject {
|
||||
/// Lance l'app SwiftPM AV-Live-Body (RealityKit) qui ecoute les
|
||||
/// vertices SMPL-X sur :57130. Necessite useMultiHMR=true.
|
||||
func startBodyApp() {
|
||||
guard useMultiHMR else { return }
|
||||
// Lancable a la demande depuis n'importe quel mode. Si Multi-HMR
|
||||
// n'est pas actif, la fenetre affichera juste la cam (pas de mesh)
|
||||
// mais le panel S et les reglages restent fonctionnels.
|
||||
guard bodyAppProc == nil else { return }
|
||||
let pkgDir = URL(fileURLWithPath: metalVizDir)
|
||||
.deletingLastPathComponent()
|
||||
|
||||
Reference in New Issue
Block a user