DEKI/ENGINE docs
Deki 0.19.0
Modular C++ 2D engine for embedded displays and desktop
Loading...
Searching...
No Matches
Deki::SetupComponent Class Referenceabstract

Base class for components that need asynchronous setup at boot. More...

#include <deki/SetupComponent.h>

Inherits Deki::Component.

Public Types

enum class  SetupPhase { EditorLoad , PlayStart }
using SetupCallback = std::function<void(bool success)>
using EditorAutoFactory = SetupComponent* (*)()

Public Member Functions

 SetupComponent ()=default
virtual ~SetupComponent ()=default
virtual void Setup (SetupCallback onComplete)=0
 Starts the setup.
virtual const char * GetSetupName () const =0
 Readable name for the log.
Public Member Functions inherited from Deki::Component
 Component ()
virtual ~Component ()=default
 Component (const Component &)=delete
Component & operator= (const Component &)=delete
ComponentType GetType () const
 The class's type id (TypeId<T>()), 0 for an instance with no type info.
ComponentType GetBaseType () const
 The direct component base's type id, so GetComponent<Base>() finds subclasses.
const ComponentTypeInfo * GetTypeInfo () const
 The class entry this instance runs through.
void SetTypeInfo (const ComponentTypeInfo *info)
 Attaches the class entry.
bool DeclaresUpdate () const
 True when this class (or a reflected base) declares Update(), as the codegen read it from the class declaration.
Object * GetOwner () const
void SetOwner (Object *owner)
virtual void Awake ()
 Called once, after AssetRefs and ObjectRefs are resolved.
virtual void Start ()
 Called once before the first Update, after every component's Awake has run.
virtual void Update ()
 Called every frame, only on classes that declare it.
bool HasAwoken () const
bool HasStarted () const
void MarkAwoken ()
void MarkStarted ()
virtual void LoadAssets ()
 Loads the assets this component needs (sprites, fonts, ...).
virtual void UnloadAssets ()
 Drops this component's asset pointers before shutdown.
virtual void RuntimeUpdate (float deltaTime)
 Engine-driven per-frame work (physics, animation, ...), separate from the script-facing Update(): it runs in every mode, including the editor in edit mode, on components whose NeedsRuntimeUpdate() is true.
virtual void OnAssetRefResolved (const char *propertyName, void *asset, const char *guid)
 Called after LifecycleManager resolves the AssetRef field propertyName to asset, loaded from guid.
virtual bool NeedsAssetLoading () const
 True when LoadAssets() should be called.
virtual bool NeedsRuntimeUpdate () const
 True when RuntimeUpdate() should be called each frame.
bool Deserialize (SceneFormat::SceneMsgPackParser &parser, uint32_t mapSize)
 Reads this component's fields from the MessagePack map the parser is at (mapSize key-value pairs), through the codegen's hash-switch deserializer.
void ResolveObjectRefs (Scene *scene)
 Points every ObjectRef field at its object in scene (ObjectRef.id -> ObjectRef.resolved).
void RemapObjectRefs (const std::unordered_map< uint32_t, uint32_t > &idRemap)
 Rewrites ObjectRef ids through idRemap (old id -> new id), after Instantiate() gave the copies new ids.
bool HasRefsResolved () const
void MarkRefsResolved ()
void ResetRefsResolved ()
virtual void OnPropertyChanged (const char *propertyName)
 Called when the editor changes the field propertyName, after both Execute() and Undo() of ModifyComponentPropertyCommand.

Static Public Member Functions

static SETUP_COMPONENT_API void RegisterEditorAutoFactory (EditorAutoFactory factory, SetupPhase phase=SetupPhase::EditorLoad)
static SETUP_COMPONENT_API void ClearEditorAutoFactories ()
static SETUP_COMPONENT_API void RunEditorAutoSetups (SetupPhase phase)

Additional Inherited Members

Protected Attributes inherited from Deki::Component
Object * m_Owner
const ComponentTypeInfo * m_TypeInfo
bool m_RefsResolved
bool m_HasAwoken
bool m_HasStarted

Detailed Description

Base class for components that need asynchronous setup at boot.

Derive from it to take part in the boot sequence; PlatformSetupComponent lists them with ObjectRef<SetupComponent> and runs them in order.

DEKI_CATEGORY("System") class MyHardwareComponent : public Deki::SetupComponent { public: void Setup(SetupCallback onComplete) override { bool success = InitializeHardware(); onComplete(success); }

const char* GetSetupName() const override { return "My Hardware"; } };

Member Typedef Documentation

◆ SetupCallback

using Deki::SetupComponent::SetupCallback = std::function<void(bool success)>

◆ EditorAutoFactory

Member Enumeration Documentation

◆ SetupPhase

Enumerator
EditorLoad 
PlayStart 

Constructor & Destructor Documentation

◆ SetupComponent()

Deki::SetupComponent::SetupComponent ( )
default

◆ ~SetupComponent()

virtual Deki::SetupComponent::~SetupComponent ( )
virtualdefault

Member Function Documentation

◆ Setup()

virtual void Deki::SetupComponent::Setup ( SetupCallback onComplete)
pure virtual

Starts the setup.

When it finishes, call onComplete with true on success or false on failure.

◆ GetSetupName()

virtual const char * Deki::SetupComponent::GetSetupName ( ) const
pure virtual

Readable name for the log.

◆ RegisterEditorAutoFactory()

SETUP_COMPONENT_API void Deki::SetupComponent::RegisterEditorAutoFactory ( EditorAutoFactory factory,
SetupPhase phase = SetupPhase::EditorLoad )
static

◆ ClearEditorAutoFactories()

SETUP_COMPONENT_API void Deki::SetupComponent::ClearEditorAutoFactories ( )
static

◆ RunEditorAutoSetups()

SETUP_COMPONENT_API void Deki::SetupComponent::RunEditorAutoSetups ( SetupPhase phase)
static

The documentation for this class was generated from the following file: