IN THIS ARTICLE
Data Classes
Note:This information is for developers of the Project Manager tool. If you’re a user working with Project Manager, please refer to the Project Manager User Guide.
Note:This contains brief summaries of various class’s functionality and role. If available, there are additional links in the table of contents, either with expanded information, or github links. All documentation reflects code as of commit (b79bd3df1f)
Overview
Class | Source Code | Description |
---|---|---|
TemplateInfo | header cpp file | Describes data fields to encapsulate a generic Template. |
ProjectTemplateInfo | header | Subclass of Template specific to Projects. Only difference is that this one includes Gems. |
SettingsInterface | header | Interface for interacting with the O3DE Settings Registry. |
Settings | header cpp file | Implementation for SettingsInterface to interact with O3DE Settings Registry. |
ProjectInfo | header cpp file | Contains data structure to describe a project, as recorded in project.json, inside ProjectManager . Also contains metadata for remote projects, or for checking if a project needs to be rebuilt. |
EngineInfo | header cpp file | Contains data structure to describe the current engine, as recorded in engine.json, inside ProjectManager . Also contains metadata for engine registration. |
ProjectManagerDefs | header | Contains various constants and preset strings. |
Settings
We specify the SettingsInterface
as a contract to ensure we implement the proper methods, and to enable global access to settings from a clean interface (
one example ). It also acts as a singleton interface for accessing Project Manager settings.
SettingsInterface
specifies the following functions as the contract to interact with O3DE Settings Registry:
Function | Description | Implementation |
---|---|---|
SettingsInterface::Get | Using a QString key, can either return the string or bool value. | code |
SettingsInterface::Set | Using a QString key, can either set a string or bool value for an entry. | code |
SettingsInterface::Remove | Removes a entry with QString key from the registry. | code |
SettingsInterface::Copy | Copies the value from one key to another. Can also optionally remove the original entry, acting as a “Move” command. | code |
SettingsInterface::GetProjectKey | Given a ProjectInfo instance, provides a key prefix for where that project should be in settings registry. | code |
SettingsInterface::GetProjectBuiltSuccessfully | Queries the latest build status of a given project, if successful or not. | code |
SettingsInterface::SetProjectBuiltSuccessfully | Sets the latest build status of a given project, if successful or not. | code |
All of these functions are pure virtual functions, which require implementation in a base implementation class, otherwise it results in a compilation error, thereby enforcing the contract.
The
Settings
class
inherits SettingsInterface
which uses
AZ::SettingsRegistryInterface
under the hood to interact with the O3DE Settings Registry.
This mirrors JSON so that values can be retrieved by key paths. For example, take a .setreg like:
{
"key":{
"subkey":{
"subsubkey":"value"
}
}
}
Then the value can be retrieved using the string key key/subkey/subsubkey
.
The ProjectManager::SettingsInterface
is similar to AZ::SettingsRegistryInterface
, except it overrides some of the behavior to look for configuration specific to Project Manager, instead of O3DE as a whole. It’s also modified to work with QString
, which the AZ
counterpart does not handle.
The Settings
class inherits from SettingsInterface::Registrar
. The
Registrar
is part of the AZ::Interface
in AzCore
.
The
implementation of Registrar
registers the interface globally, which indicates the singleton pattern.
Here are the remaining functions that Settings
also provides:
Function | Description |
---|---|
Settings::Save | Dumps the settings registry into a string stream. Then tries to open the ProjectManager.setreg file in the O3DE user path, and write the stream data into that file. |
Settings::GetBuiltSuccessfullyPaths | For each project path requested, fetches the build status. Returns the result as a set. |