Handles
Ponteiros como Enemy*, devolvidos por spawn, findAt e closest, valem só dentro do passo atual. Se a instância for destruída, o ponteiro guardado passa a apontar para lixo, e usar isso derruba o jogo.
Um handle é uma referência segura: quando a instância some, ele simplesmente fica vazio.
class Turret : public brasa::Entity {public: void onSpawn() override { if (Player* p = closest<Player>()) target_ = p->handle<Player>(); } void onUpdate() override { if (Player* p = target_.get()) { // nullptr se o jogador foi destruído angle = -angleTo(*p); } }
private: brasa::Handle<Player> target_;};| Função | O que faz |
|---|---|
Handle<T> handle<T>() const |
Cria um handle para esta instância. |
T* get() const |
A instância, ou nullptr se ela já foi destruída. |
if (handle) |
O handle vale true enquanto a instância existe. |
A câmera usa handles para seguir uma instância: scene().camera.follow(handle());.
