assetScanner.cpp 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. /*
  2. * Copyright (c) Contributors to the Open 3D Engine Project.
  3. * For complete copyright and license terms please see the LICENSE at the root of this distribution.
  4. *
  5. * SPDX-License-Identifier: Apache-2.0 OR MIT
  6. *
  7. */
  8. #include "native/AssetManager/assetScanner.h"
  9. namespace AssetProcessor
  10. {
  11. AssetScanner::AssetScanner(PlatformConfiguration* config, QObject* parent)
  12. : QObject(parent)
  13. , m_assetScannerWorker(config)
  14. , m_status(AssetScanningStatus::Unknown)
  15. {
  16. m_assetScannerWorker.moveToThread( &m_assetWorkerScannerThread );
  17. QObject::connect(&m_assetScannerWorker, &AssetScannerWorker::FilesFound, this, &AssetScanner::FilesFound);
  18. QObject::connect(&m_assetScannerWorker, &AssetScannerWorker::FoldersFound, this, &AssetScanner::FoldersFound);
  19. QObject::connect(&m_assetScannerWorker, &AssetScannerWorker::ExcludedFound, this, &AssetScanner::ExcludedFound);
  20. QObject::connect(&m_assetScannerWorker, &AssetScannerWorker::ScanningStateChanged, this,
  21. [this](AssetProcessor::AssetScanningStatus status)
  22. {
  23. if (m_status == status)
  24. {
  25. return;
  26. }
  27. m_status = status;
  28. Q_EMIT AssetScanningStatusChanged(status);
  29. });
  30. }
  31. AssetScanner::~AssetScanner()
  32. {
  33. StopScan();
  34. m_assetWorkerScannerThread.quit();
  35. m_assetWorkerScannerThread.wait();
  36. }
  37. void AssetScanner::StartScan()
  38. {
  39. if (!m_workerCreated)
  40. {
  41. m_workerCreated = true;
  42. m_assetWorkerScannerThread.setObjectName("AssetScannerWorker");
  43. m_assetWorkerScannerThread.start();
  44. }
  45. QMetaObject::invokeMethod(&m_assetScannerWorker, "StartScan", Qt::QueuedConnection);
  46. }
  47. void AssetScanner::StopScan()
  48. {
  49. QMetaObject::invokeMethod(&m_assetScannerWorker, "StopScan", Qt::DirectConnection);
  50. }
  51. AssetProcessor::AssetScanningStatus AssetScanner::status() const
  52. {
  53. return m_status;
  54. }
  55. }
  56. #include "native/AssetManager/moc_assetScanner.cpp"