feat(observation): add dynamic camera sources

This commit is contained in:
DCCONSTRUCTIONS
2026-07-16 20:56:41 +03:00
parent 05bdab24a5
commit a281faf923
15 changed files with 1592 additions and 52 deletions
+6 -3
View File
@@ -29,6 +29,7 @@ import { LandingStage } from "./components/LandingStage";
import { useDevicePluginHost } from "./core/device-plugins/DevicePluginHost";
import { useMissionRuntime } from "./core/runtime/MissionRuntimeContext";
import type { ViewerSettings } from "./core/runtime/contracts";
import { useObservationLayout } from "./core/observation/useObservationLayout";
import {
rootById,
roots,
@@ -132,6 +133,7 @@ export default function App() {
const activeSceneWindow = sceneWindowOrder[sceneWindowOrder.length - 1] ?? null;
const automaticSourceUrl = runtime.state?.spatialSource?.url.trim() ?? "";
const effectiveSourceUrl = sourceUrl || automaticSourceUrl;
const observationLayout = useObservationLayout(runtime.state?.observationSources ?? []);
useEffect(() => {
const remote = runtime.state?.viewerSettings;
@@ -238,7 +240,7 @@ export default function App() {
if (activeDefinition?.kind === "spatial") {
actions.push(
{ label: "Настроить источник", icon: "network", onClick: openSource },
{ label: "Настроить визуальный движок", icon: "network", onClick: openSource },
{ label: "Настроить отображение", icon: "sliders", onClick: openDisplay },
{ label: "Открыть слои", icon: "list", onClick: openLayers },
);
@@ -370,6 +372,7 @@ export default function App() {
backendStatus={runtime.backendStatus}
sourceUrl={effectiveSourceUrl}
sceneSettings={sceneSettings}
observationLayout={observationLayout}
navigation={{
openView,
openSource,
@@ -384,8 +387,8 @@ export default function App() {
<Window
open={sourceWindowOpen}
title="Источники"
subtitle="Потоки и записи пространственной сцены"
title="Визуальный движок"
subtitle="Rerun gRPC и записи пространственной сцены"
placement="end"
draggable
closeOnBackdrop={false}