Menu
Lumberyard
C++ API Reference (Version 1.10)

Component.h File Reference

Open 3D Engine (O3DE), the successor to Lumberyard, is now available in Developer Preview. Download O3DE or visit the AWS Game Tech blog to learn more.

Header file for the Component base class. More...

Classes

class AZ::Component
Base class for all components. More...
class AZ::ComponentDescriptor
Provides an interface through which the system can get the details of a component and reflect the component data to a variety of contexts. More...
struct AZ::ComponentDescriptorBusTraits
Describes the properties of the component descriptor event bus. More...
class AZ::ComponentDescriptorHelper< ComponentClass >
Helps you create a custom implementation of a descriptor. More...
class AZ::ComponentDescriptorDefault< ComponentClass >
Default descriptor implementation. More...

Namespaces

AZ

Macros

#define AZ_COMPONENT_BASE (_ComponentClass, ...)
Includes the core component code required to make a component work. More...
#define AZ_COMPONENT_INTRUSIVE_DESCRIPTOR_TYPE (_ComponentClass)
Declares a descriptor class. More...
#define AZ_COMPONENT (_ComponentClass, ...)
Declares a component with the default settings. More...

Typedefs

typedef AZ::u32 AZ::ComponentServiceType
ID of a user-defined component service. The system uses it to build a dependency tree. More...
using AZ::ComponentTypeList = AZStd::vector< Uuid >
List of Component class type IDs. More...
typedef AZ::EBus < ComponentDescriptor, ComponentDescriptorBusTraits > AZ::ComponentDescriptorBus

Detailed Description

Header file for the Component base class.

In Lumberyard's component entity system, each component defines a discrete feature that can be attached to an entity.

Macro Definition Documentation

AZ_COMPONENT

#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.

AZ_COMPONENT_BASE

#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.

AZ_COMPONENT_INTRUSIVE_DESCRIPTOR_TYPE

#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.