break-utopia/modules/break_utopia/destructable_object.cpp

20 lines
745 B
C++

#include "destructable_object.h"
#include "break_utopia/level_status.h"
#include "break_utopia/macros.h"
#include "core/object/object.h"
#include "scene/resources/packed_scene.h"
void DestructableObject::_bind_methods() {
BIND_HPROPERTY(Variant::OBJECT, destroyed_object, PROPERTY_HINT_RESOURCE_TYPE, "PackedScene");
}
void DestructableObject::damaged(int level) {
if (this->destroyed_object.is_valid()) {
Node3D *instance{ cast_to<Node3D>(this->destroyed_object->instantiate()) };
instance->set_position(get_global_position());
instance->set_rotation(get_global_rotation());
get_tree()->get_current_scene()->add_child(instance);
}
get_owner()->queue_free();
LevelStatus::get_instance()->notify_object_destroyed(get_defense());
}