private void OnScanStateChanged() { if (m_spatialUnderstanding.ScanState == SpatialUnderstanding.ScanStates.Done) { m_spatialUnderstandingState = SpatialUnderstandingState.WaitingForMeshImport; } }
public void StopScanning() { if (m_spatialMappingManager.IsObserverRunning()) { m_spatialMappingManager.StopObserver(); } m_spatialUnderstandingState = SpatialUnderstandingState.FinalizeScan; }
private void Update() { if (m_scanningComplete) { return; } switch (m_spatialUnderstandingState) { case SpatialUnderstandingState.FinalizeScan: //TODO: timeout? if (!m_spatialUnderstanding.ScanStatsReportStillWorking) { Debug.Log("Finalizing scan..."); m_spatialUnderstanding.RequestFinishScan(); m_spatialUnderstandingState = SpatialUnderstandingState.WaitingForScanCompletion; } break; case SpatialUnderstandingState.WaitingForMeshImport: //TODO: timeout? if (m_spatialUnderstanding.UnderstandingCustomMesh.IsImportActive == false) { Debug.Log("Found " + m_spatialUnderstanding.UnderstandingCustomMesh.GetMeshFilters().Count + " meshes (import active=" + m_spatialUnderstanding.UnderstandingCustomMesh.IsImportActive + ")"); if (!visualizeSpatialMeshes) { HideSpatialMappingMeshes(); } if (!visualizeSpatialUnderstandingMeshes) { SetSpatialUnderstandingMaterial(occlusionMaterial); } SurfacePlaneDeformationManager.Instance.SetSpatialMeshFilters(m_spatialUnderstanding.UnderstandingCustomMesh.GetMeshFilters()); m_spatialUnderstandingState = SpatialUnderstandingState.WaitingForPlacementSolverInit; } break; case SpatialUnderstandingState.WaitingForPlacementSolverInit: //TODO: error checking and timeout? if (!m_placementSolverInitialized) { m_placementSolverInitialized = (SpatialUnderstandingDllObjectPlacement.Solver_Init() == 1); Debug.Log("Placement Solver initialization " + (m_placementSolverInitialized ? "succeeded" : "FAILED")); if (m_placementSolverInitialized) { if (OnScanComplete != null) { OnScanComplete(); } m_scanningComplete = true; m_spatialUnderstandingState = SpatialUnderstandingState.Finished; } } break; default: break; } }
public void StartScanning() { // Start spatial mapping (SpatialUnderstanding requires this, too) if (!m_spatialMappingManager.IsObserverRunning()) { m_spatialMappingManager.StartObserver(); } m_spatialMappingManager.DrawVisualMeshes = visualizeSpatialMeshes; m_spatialUnderstanding.ScanStateChanged += OnScanStateChanged; m_spatialUnderstanding.RequestBeginScanning(); m_spatialUnderstandingState = SpatialUnderstandingState.Scanning; m_spatialMappingManager.SetSurfaceMaterial(renderingMaterial); }
public void StopScanning() { if (m_spatialMappingManager.IsObserverRunning()) { m_spatialMappingManager.StopObserver(); } if (useSpatialUnderstanding) { m_spatialUnderstandingState = SpatialUnderstandingState.FinalizeScan; } else { CreatePlanes(); m_scanningComplete = true; } }
//TODO: if time limited, take an optional callback public void StartScanning() { // Start spatial mapping (SpatialUnderstanding requires this, too) if (!m_spatialMappingManager.IsObserverRunning()) { m_spatialMappingManager.StartObserver(); } // If we are only using spatial mapping, visualize the meshes during the scanning // phase if (useSpatialUnderstanding) { m_spatialMappingManager.DrawVisualMeshes = visualizeSpatialMeshes; m_spatialUnderstanding.ScanStateChanged += OnScanStateChanged; m_spatialUnderstanding.RequestBeginScanning(); m_spatialUnderstandingState = SpatialUnderstandingState.Scanning; } else { m_spatialMappingManager.DrawVisualMeshes = true; } m_spatialMappingManager.SetSurfaceMaterial(renderingMaterial); }
private void Update() { if (m_scanningComplete) { return; } switch (m_spatialUnderstandingState) { case SpatialUnderstandingState.StartScanning: // Start spatial mapping (SpatialUnderstanding requires this, too) if (!m_spatialMappingManager.IsObserverRunning()) { m_spatialMappingManager.StartObserver(); } m_spatialMappingManager.DrawVisualMeshes = visualizeSpatialMeshes; m_spatialUnderstanding.ScanStateChanged += OnScanStateChanged; m_spatialUnderstanding.RequestBeginScanning(); m_spatialMappingManager.SetSurfaceMaterial(renderingMaterial); m_spatialUnderstandingState = SpatialUnderstandingState.Scanning; break; case SpatialUnderstandingState.FinalizeScan: //TODO: timeout? if (!m_spatialUnderstanding.ScanStatsReportStillWorking) { Debug.Log("Finalizing scan..."); m_spatialUnderstanding.RequestFinishScan(); m_spatialUnderstandingState = SpatialUnderstandingState.WaitingForScanCompletion; } break; case SpatialUnderstandingState.WaitingForMeshImport: //TODO: timeout? if (m_spatialUnderstanding.UnderstandingCustomMesh.IsImportActive == false) { Debug.Log("Found " + m_spatialUnderstanding.UnderstandingCustomMesh.GetMeshFilters().Count + " meshes (import active=" + m_spatialUnderstanding.UnderstandingCustomMesh.IsImportActive + ")"); if (!visualizeSpatialMeshes) { DisableSpatialMappingMeshes(); } ApplyVisualizationSettings(); //SurfacePlaneDeformationManager.Instance.SetSpatialMeshFilters(m_spatialUnderstanding.UnderstandingCustomMesh.GetMeshFilters()); m_spatialUnderstandingState = SpatialUnderstandingState.WaitingForPlacementSolverInit; } break; case SpatialUnderstandingState.WaitingForPlacementSolverInit: //TODO: error checking and timeout? if (!m_placementSolverInitialized) { m_placementSolverInitialized = (SpatialUnderstandingDllObjectPlacement.Solver_Init() == 1); Debug.Log("Placement Solver initialization " + (m_placementSolverInitialized ? "succeeded" : "FAILED")); if (m_placementSolverInitialized) { if (OnScanComplete != null) { OnScanComplete(); } m_scanningComplete = true; m_spatialUnderstandingState = SpatialUnderstandingState.Finished; } } break; default: break; } }
public void StartScanning() { // So that this can be called from within another object's Start() method // (possibly before our own Start() function is called) m_spatialUnderstandingState = SpatialUnderstandingState.StartScanning; }