12345678910111213141516171819202122232425262728293031323334353637 |
- /*
- * Copyright (c) Contributors to the Open 3D Engine Project.
- * For complete copyright and license terms please see the LICENSE at the root of this distribution.
- *
- * SPDX-License-Identifier: Apache-2.0 OR MIT
- *
- */
- #pragma once
- #include <AzCore/Component/Entity.h>
- #include <AzCore/Math/Uuid.h>
- #include <AzCore/std/containers/vector.h>
- #include <AzCore/std/smart_ptr/shared_ptr.h>
- namespace Blast
- {
- //! Abstracts away creation of an entity with components for convenience.
- class EntityProvider
- {
- public:
- static AZStd::shared_ptr<EntityProvider> Create();
- virtual ~EntityProvider() = default;
- //! Returns an entity with the specified components.
- //! @note If any of the components failed to be created, returns a nullptr instead.
- virtual AZStd::shared_ptr<AZ::Entity> CreateEntity(const AZStd::vector<AZ::Uuid>& componentIds) = 0;
- };
- class EntityProviderImpl : public EntityProvider
- {
- public:
- ~EntityProviderImpl() = default;
- AZStd::shared_ptr<AZ::Entity> CreateEntity(const AZStd::vector<AZ::Uuid>& componentIds) override;
- };
- } // namespace Blast
|