55 lines
1.7 KiB
C++
55 lines
1.7 KiB
C++
/**
|
|
* bt_check_trigger.cpp
|
|
* =============================================================================
|
|
* Copyright 2021-2023 Serhii Snitsaruk
|
|
*
|
|
* Use of this source code is governed by an MIT-style
|
|
* license that can be found in the LICENSE file or at
|
|
* https://opensource.org/licenses/MIT.
|
|
* =============================================================================
|
|
*/
|
|
|
|
#include "bt_check_trigger.h"
|
|
|
|
#include "bt_condition.h"
|
|
#include "modules/limboai/util/limbo_utility.h"
|
|
|
|
#include "core/variant/variant.h"
|
|
|
|
void BTCheckTrigger::set_variable(String p_variable) {
|
|
variable = p_variable;
|
|
emit_changed();
|
|
}
|
|
|
|
PackedStringArray BTCheckTrigger::get_configuration_warnings() const {
|
|
PackedStringArray warnings = BTCondition::get_configuration_warnings();
|
|
if (variable.is_empty()) {
|
|
warnings.append("Variable is not set.");
|
|
}
|
|
return warnings;
|
|
}
|
|
|
|
String BTCheckTrigger::_generate_name() const {
|
|
if (variable.is_empty()) {
|
|
return "CheckTrigger ???";
|
|
}
|
|
return "CheckTrigger " + LimboUtility::get_singleton()->decorate_var(variable);
|
|
}
|
|
|
|
int BTCheckTrigger::_tick(double p_delta) {
|
|
ERR_FAIL_COND_V_MSG(variable.is_empty(), FAILURE, "BBCheckVar: `variable` is not set.");
|
|
Variant trigger_value = get_blackboard()->get_var(variable, false);
|
|
if (trigger_value == Variant(true)) {
|
|
get_blackboard()->set_var(variable, false);
|
|
return SUCCESS;
|
|
}
|
|
return FAILURE;
|
|
}
|
|
|
|
void BTCheckTrigger::_bind_methods() {
|
|
ClassDB::bind_method(D_METHOD("set_variable", "p_variable"), &BTCheckTrigger::set_variable);
|
|
ClassDB::bind_method(D_METHOD("get_variable"), &BTCheckTrigger::get_variable);
|
|
|
|
ADD_PROPERTY(PropertyInfo(Variant::STRING, "variable"), "set_variable", "get_variable");
|
|
}
|