![]() |
Open 3D Engine AzCore API Reference
2205.0
O3DE is an open-source, fully-featured, high-fidelity, modular 3D engine for building games and simulations, available to every industry.
|
#include <AzCore/Component/ComponentBus.h>
#include <AzCore/Component/NamedEntityId.h>
#include <AzCore/RTTI/ReflectContext.h>
#include <AzCore/Memory/Memory.h>
#include <AzCore/Memory/SystemAllocator.h>
#include <AzCore/Outcome/Outcome.h>
#include <AzCore/std/containers/unordered_set.h>
Classes | |
class | AZ::Component |
class | AZ::ComponentDescriptor |
struct | AZ::ComponentDescriptorBusTraits |
class | AZ::ComponentDescriptorHelper< ComponentClass > |
class | AZ::ComponentDescriptorDefault< ComponentClass > |
Namespaces | |
AZ | |
Reopen namespace to define DataPatch class. | |
Macros | |
#define | AZ_COMPONENT_BASE(_ComponentClass, ...) |
#define | AZ_COMPONENT_INTRUSIVE_DESCRIPTOR_TYPE(_ComponentClass) |
#define | AZ_COMPONENT(_ComponentClass, ...) |
Typedefs | |
typedef AZ::u32 | AZ::ComponentServiceType |
ID of a user-defined component service. The system uses it to build a dependency tree. | |
using | AZ::ImmutableEntityVector = AZStd::vector< AZ::Entity const * > |
using | AZ::ComponentTypeList = AZStd::vector< Uuid > |
List of Component class type IDs. | |
using | AZ::ComponentValidationResult = AZ::Outcome< void, AZStd::string > |
typedef AZ::EBus< ComponentDescriptor, ComponentDescriptorBusTraits > | AZ::ComponentDescriptorBus |
Header file for the Component base class. In Open 3D Engine's component entity system, each component defines a discrete
feature that can be attached to an entity.
#define AZ_COMPONENT | ( | _ComponentClass, | |
... | |||
) |
Declares a component with the default settings. The component derives from AZ::Component, is not templated, uses AZ::SystemAllocator, and so on. AZ_COMPONENT(_ComponentClass, _ComponentId, OtherBaseClases... Component) is included automatically.
The component that this macro creates has a static function called CreateDescriptor and a type called DescriptorType. Although you can delete the descriptor, keep in mind that you cannot use component instances without a descriptor. This is because descriptors are released when the component application closes or a module is unloaded. Descriptors must have access to AZ::ComponentDescriptor::Reflect, AZ::ComponentDescriptor::GetProvidedServices, and other descriptor services.
You are not required to use the AZ_COMPONENT macro if you want to implement your own creation functions by calling AZ_CLASS_ALLOCATOR, AZ_RTTI, and so on.
#define AZ_COMPONENT_BASE | ( | _ComponentClass, | |
... | |||
) |
Includes the core component code required to make a component work. This macro is typically included in other macros, such as AZ_COMPONENT, to create a component.
#define AZ_COMPONENT_INTRUSIVE_DESCRIPTOR_TYPE | ( | _ComponentClass | ) |
Declares a descriptor class.
Unless you are implementing very advanced internal functionality, we recommend using AZ_COMPONENT instead of this macro. This macro enables you to implement a static function in the Component class instead of writing a descriptor. It defines a CreateDescriptorFunction that you can call to register a descriptor. (Only one descriptor can exist per environment.) This macro fails silently if you implement the functions with the wrong signatures.