Allow objects in BBNode
This commit is contained in:
parent
9ec1675db2
commit
fe81b90dc1
|
@ -30,12 +30,12 @@ Variant BBNode::get_value(Object *p_agent, const Ref<Blackboard> &p_blackboard,
|
|||
ERR_FAIL_COND_V_MSG(agent == nullptr, Variant(), "BBNode: p_agent must be a Node.");
|
||||
return agent->get_node(val);
|
||||
} else {
|
||||
Node *node = Object::cast_to<Node>(val);
|
||||
if (unlikely(node == nullptr && val.get_type() != Variant::NIL)) {
|
||||
Object *obj = val;
|
||||
if (unlikely(obj == nullptr && val.get_type() != Variant::NIL)) {
|
||||
WARN_PRINT("BBNode: Unexpected variant type of a blackboard variable.");
|
||||
return p_default;
|
||||
} else {
|
||||
return node;
|
||||
return obj;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -59,7 +59,7 @@ int BTCallMethod::_tick(double p_delta) {
|
|||
ERR_FAIL_COND_V_MSG(method == StringName(), FAILURE, "BTCallMethod: Method Name is not set.");
|
||||
ERR_FAIL_COND_V_MSG(node_param.is_null(), FAILURE, "BTCallMethod: Node parameter is not set.");
|
||||
Object *obj = node_param->get_value(get_agent(), get_blackboard());
|
||||
ERR_FAIL_COND_V_MSG(obj == nullptr, FAILURE, "BTCallMethod: Failed to get node: " + node_param->to_string());
|
||||
ERR_FAIL_COND_V_MSG(obj == nullptr, FAILURE, "BTCallMethod: Failed to get object: " + node_param->to_string());
|
||||
|
||||
const Variant **argptrs = nullptr;
|
||||
|
||||
|
|
|
@ -4,6 +4,8 @@
|
|||
Node-type parameter to be used with BT tasks. See [BBParam].
|
||||
</brief_description>
|
||||
<description>
|
||||
Node-type parameter to be used with BT tasks. See [BBParam].
|
||||
If blackboard is chosen as source, it allows any [Object]-extended type.
|
||||
</description>
|
||||
<tutorials>
|
||||
</tutorials>
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<class name="BTCallMethod" inherits="BTAction" version="4.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../doc/class.xsd">
|
||||
<brief_description>
|
||||
BT action that calls a method on the specified [Node].
|
||||
BT action that calls a method on a specified [Node] or [Object].
|
||||
</brief_description>
|
||||
<description>
|
||||
BTCallMethod calls a method on the specified [Node] and returns [code]SUCCESS[/code].
|
||||
Returns [code]FAILURE[/code] if the action fails executing the node's method.
|
||||
BTCallMethod calls a method on a specified [Node] or [Object] and returns [code]SUCCESS[/code].
|
||||
Returns [code]FAILURE[/code] if the action fails executing the method.
|
||||
</description>
|
||||
<tutorials>
|
||||
</tutorials>
|
||||
|
@ -14,10 +14,10 @@
|
|||
Arguments to pass to the method call.
|
||||
</member>
|
||||
<member name="method" type="StringName" setter="set_method" getter="get_method" default="&""">
|
||||
Node's method that will be called.
|
||||
Method that will be called.
|
||||
</member>
|
||||
<member name="node" type="BBNode" setter="set_node_param" getter="get_node_param">
|
||||
Node parameter that will be used to get the node instance.
|
||||
Parameter that will be used to get the node/object instance.
|
||||
</member>
|
||||
</members>
|
||||
</class>
|
||||
|
|
Loading…
Reference in New Issue