Handles
Los punteros como Enemy*, devueltos por spawn, findAt y closest, valen solo dentro del paso actual. Si la instancia se destruye, el puntero guardado pasa a apuntar a basura, y usarlo hace que el juego se caiga.
Un handle es una referencia segura: cuando la instancia desaparece, simplemente queda vacío.
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 si el jugador fue destruido angle = -angleTo(*p); } }
private: brasa::Handle<Player> target_;};| Función | Qué hace |
|---|---|
Handle<T> handle<T>() const |
Crea un handle para esta instancia. |
T* get() const |
La instancia, o nullptr si ya fue destruida. |
if (handle) |
El handle vale true mientras la instancia existe. |
La cámara usa handles para seguir a una instancia: scene().camera.follow(handle());.
