feat: hit effect scenes are now preloaded

This commit is contained in:
Sara 2025-07-28 22:21:16 +02:00
parent 5a4ac26c72
commit adcbf41a48
4 changed files with 35 additions and 4 deletions

View file

@ -14,9 +14,9 @@ void HitscanMuzzle::instantiate_impact_effect() {
if (get_collider() == nullptr) {
return;
}
Ref<PackedScene> effect_scene{ get_collider()->call("get_impact_effect") };
if (!effect_scene.is_valid()) {
effect_scene = this->impact_effect;
Ref<PackedScene> effect_scene{ this->impact_effect };
if (get_collider()->has_method("get_impact_effect")) {
effect_scene = get_collider()->call("get_impact_effect");
}
Node *effect_as_node{ effect_scene->instantiate() };
if (Node3D * effect{ cast_to<Node3D>(effect_as_node) }) {
@ -39,7 +39,9 @@ void HitscanMuzzle::try_deal_damage() {
void HitscanMuzzle::ready() {
this->home_transform = get_transform();
this->impact_effect = ResourceLoader::load("res://objects/effects/bullet_impact.tscn");
if (!this->impact_effect.is_valid()) {
if (this->impact_effect.is_valid()) {
PRELOAD_SCENE(this->impact_effect);
} else {
print_error("HitscanMuzzle::ready: impact effect is invalid");
}
set_enabled(false);