WhiteBoxMeshAssetHandler.h 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  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. #pragma once
  9. #include <AzCore/Asset/AssetManager.h>
  10. #include <AzCore/Asset/AssetTypeInfoBus.h>
  11. namespace WhiteBox
  12. {
  13. namespace Pipeline
  14. {
  15. //! Asset handler for loading and initializing WhiteBoxMeshAsset assets.
  16. class WhiteBoxMeshAssetHandler
  17. : public AZ::Data::AssetHandler
  18. , private AZ::AssetTypeInfoBus::Handler
  19. {
  20. public:
  21. inline static constexpr char AssetFileExtension[] = "wbm";
  22. AZ_CLASS_ALLOCATOR(WhiteBoxMeshAssetHandler, AZ::SystemAllocator)
  23. WhiteBoxMeshAssetHandler();
  24. ~WhiteBoxMeshAssetHandler();
  25. void Register();
  26. void Unregister();
  27. // AZ::Data::AssetHandler ...
  28. AZ::Data::AssetPtr CreateAsset(const AZ::Data::AssetId& id, const AZ::Data::AssetType& type) override;
  29. AZ::Data::AssetHandler::LoadResult LoadAssetData(
  30. const AZ::Data::Asset<AZ::Data::AssetData>& asset, AZStd::shared_ptr<AZ::Data::AssetDataStream> stream,
  31. const AZ::Data::AssetFilterCB& assetLoadFilterCB) override;
  32. bool SaveAssetData(
  33. const AZ::Data::Asset<AZ::Data::AssetData>& asset, AZ::IO::GenericStream* stream) override;
  34. void DestroyAsset(AZ::Data::AssetPtr ptr) override;
  35. void GetHandledAssetTypes(AZStd::vector<AZ::Data::AssetType>& assetTypes) override;
  36. // AZ::AssetTypeInfoBus ...
  37. AZ::Data::AssetType GetAssetType() const override;
  38. void GetAssetTypeExtensions(AZStd::vector<AZStd::string>& extensions) override;
  39. const char* GetAssetTypeDisplayName() const override;
  40. const char* GetBrowserIcon() const override;
  41. const char* GetGroup() const override;
  42. AZ::Uuid GetComponentTypeId() const override;
  43. };
  44. } // namespace Pipeline
  45. } // namespace WhiteBox